#include "TTree.h"
#include "TFile.h"
#include <assert.h>
#include <iostream>
#include <fstream>
Go to the source code of this file.
Functions | |
bool | barrel_con2root () |
bool | endcap_con2root () |
bool | join () |
int | main () |
bool barrel_con2root | ( | ) |
Definition at line 12 of file convert2root.cxx.
References showlog::filelist, genRecEmupikp::i, ganga-rec::j, TrigConf::N, t(), and w.
Referenced by main().
00012 { 00013 //this method so bothered 00014 00015 TTree* t0=new TTree("EsTimeOffset","EsTimeOffset"); 00016 double offset[2]={0.};; 00017 char estbrname[20]; 00018 char estptname[20]; 00019 for(int i = 0; i<2; i++){ 00020 sprintf(estbrname, "Offset%d",i); 00021 sprintf(estptname, "Offset%d/D",i); 00022 t0->Branch(estbrname, &offset[i], estptname); 00023 } 00024 00025 ifstream inf0; 00026 ifstream inf01; 00027 inf0.open("calib_EsTimeOffset.txt",ios::in); 00028 inf01.open("EsTimeOffset.txt", ios::in); 00029 if(inf0.good() && inf01.good()) { 00030 try{ 00031 inf0 >> offset[0] ; 00032 inf01 >> offset[1] ; 00033 t0->Fill(); 00034 }catch(...) { 00035 return false; 00036 } 00037 } 00038 else { 00039 std::cerr<<"file: calib_estimeOffset.txt or est_estimeOffset can't be found!"<<std::endl; 00040 } 00041 inf0.close(); 00042 inf01.close(); 00043 00044 TTree* t=new TTree("BarTofPar","barrel parameters"); 00045 //create a full tree; 00046 double p[20]={0.};; 00047 char brname[20];//branch name 00048 char ptname[20];//pattern name 00049 for(int i=0;i<20;i++){ 00050 sprintf(brname,"P%d",i); 00051 sprintf(ptname,"p%d/D",i); 00052 t->Branch(brname,&p[i],ptname); 00053 } 00054 double w[4]; 00055 for(int i=0;i<4;i++){ 00056 sprintf(brname,"W%d",i); 00057 sprintf(ptname,"w%d/D",i); 00058 t->Branch(brname,&w[i],ptname); 00059 } 00060 double Atten[8]={0.}; 00061 for(int i=0;i<8;i++){ 00062 sprintf(brname, "Atten%d",i); 00063 sprintf(ptname, "Atten%d/D",i); 00064 t->Branch(brname, &Atten[i], ptname); 00065 } 00066 double Speed[2]={0.},Q0[1]={0.}; 00067 t->Branch("Speed0",&Speed[0],"Speed0/D"); 00068 t->Branch("Speed1",&Speed[1],"Speed1/D"); 00069 t->Branch("Q0",Q0,"Q0[1]/D"); 00070 double fitfun[20]={0.};; 00071 char fbrname1[5];//branch name 00072 char fptname1[5];//pattern name 00073 char fbrname2[5];//branch name 00074 char fptname2[5];//pattern name 00075 char fbrname3[10];//branch name 00076 char fptname3[10];//pattern name 00077 for(int i=0;i<5;i++){ 00078 sprintf(fbrname1,"FLeft%d",i); 00079 sprintf(fptname1,"fleft%d/D",i); 00080 t->Branch(fbrname1,&fitfun[i],fptname1); 00081 sprintf(fbrname2,"FRight%d",i); 00082 sprintf(fptname2,"fright%d/D",i); 00083 t->Branch(fbrname2,&fitfun[5+i],fptname2); 00084 } 00085 for(int i=0;i<10;i++){ 00086 sprintf(fbrname3,"FCounter%d",i); 00087 sprintf(fptname3,"fcounter%d/D",i); 00088 t->Branch(fbrname3,&fitfun[10+i],fptname3); 00089 } 00090 const int N=10; 00091 ifstream inf[N]; 00092 bool is_open[N]={false}; 00093 const char* filelist[N]={"calib_barrel_left.txt","calib_barrel_right.txt","calib_barrel_w.txt","calib_barrel_atten.txt","calib_barrel_veff.txt","calib_barrel_sigma.txt","calib_barrel_left1.txt","calib_barrel_right1.txt","calib_barrel_common.txt","calib_barrel_q0.txt"}; 00094 for(int m=0;m<N;m++){ 00095 inf[m].open(filelist[m],ios::in); 00096 if(inf[m].good()) 00097 is_open[m]=true; 00098 else 00099 std::cerr<<"file: "<<filelist[N]<<" can't be found!"<<std::endl; 00100 } 00101 try{ 00102 for(int k=0;k<176;k++){ 00103 //------------set p------------------------- 00104 if(is_open[0]&&is_open[1]){ 00105 for(int j=0;j<7;j++){ 00106 inf[0]>>p[j]; 00107 // cout<<p[j]<<' '; 00108 } 00109 for(int l=10;l<17;l++) 00110 inf[1]>>p[l]; 00111 } 00112 //--------------w pars--------------------- 00113 if(is_open[2]){ 00114 for(int j=0;j<4;j++) 00115 inf[2]>>w[j]; 00116 } 00117 //-----------atten lenght------------------ 00118 if(is_open[3]){ 00119 for(int j=0;j<2;j++){ 00120 inf[3]>>Atten[j]; 00121 } 00122 Atten[0]=1./Atten[0]; 00123 } 00124 //-------------speed----------------------- 00125 if(is_open[4]){ 00126 for(int j=0;j<2;j++){ 00127 inf[4]>>Speed[j]; 00128 } 00129 Speed[0]=1./Speed[0]; 00130 } 00131 if(is_open[5]){ 00132 for(int j=0; j<4; j++) { 00133 inf[5] >> fitfun[j]; 00134 } 00135 for(int j=5; j<9; j++) { 00136 inf[5] >> fitfun[j]; 00137 } 00138 for(int j=10; j<13; j++) { 00139 inf[5] >> fitfun[j]; 00140 } 00141 } 00142 //--------------Q0----------------- 00143 if(is_open[9]){ 00144 for(int j=2;j<5;j++){ 00145 inf[9] >> Atten[j]; 00146 } 00147 } 00148 //-------------Q0---------------------------- 00149 // for(int j=0;j<1;j++) 00150 // inf[5]>>Q0[j]; 00151 //-------------fill----------------------- 00152 t->Fill(); 00153 } 00154 }catch(...) { 00155 return false; 00156 } 00157 00158 TTree* t1=new TTree("BarTofParInner","barrel inner layer parameters"); 00159 //create a full tree; 00160 double p1[20]={0.};; 00161 char brname1[20];//branch name 00162 char ptname1[20];//pattern name 00163 for(int i=0;i<20;i++){ 00164 sprintf(brname1,"P%d",i); 00165 sprintf(ptname1,"p%d/D",i); 00166 t1->Branch(brname1,&p1[i],ptname1); 00167 } 00168 try{ 00169 for(int k=0;k<88;k++){ 00170 //------------set p------------------------- 00171 if(is_open[6]&&is_open[7]){ 00172 for(int j=0;j<7;j++){ 00173 inf[6]>>p1[j]; 00174 // cout<<p[j]<<' '; 00175 } 00176 for(int l=10;l<17;l++) 00177 inf[7]>>p1[l]; 00178 } 00179 t1->Fill(); 00180 } 00181 } catch(...) { 00182 return false; 00183 } 00184 00185 TTree* t2=new TTree("BarTofParCommon","common part of barrel"); 00186 double t0Offset[2]={0.},sigmaCorr[8]={0.}; 00187 for(int i=0;i<2;i++){ 00188 sprintf(brname,"t0offset%d",i); 00189 sprintf(ptname,"t0offset%d/D",i); 00190 t2->Branch(brname,&t0Offset[i],ptname); 00191 } 00192 for(int i=0;i<8;i++){ 00193 sprintf(brname,"sigmaCorr%d",i); 00194 sprintf(ptname,"sigmaCorr%d/D",i); 00195 t2->Branch(brname,&sigmaCorr[i],ptname); 00196 } 00197 try{ 00198 if(is_open[8]){ 00199 inf[8] >> sigmaCorr[0] >> sigmaCorr[1] >> t0Offset[0] >> t0Offset[1]; 00200 } 00201 t2->Fill(); 00202 } catch(...) { 00203 return false; 00204 } 00205 for(int m=0;m<N;m++) 00206 inf[m].close(); 00207 //------------------------------------------- 00208 TFile f("BarTofPar.root","RECREATE"); 00209 t0->Write(); 00210 t->Write(); 00211 t1->Write(); 00212 t2->Write(); 00213 f.Close(); 00214 delete t0; 00215 delete t; 00216 delete t1; 00217 delete t2; 00218 t0=NULL; 00219 t=NULL; 00220 t1=NULL; 00221 t2=NULL; 00222 return true; 00223 }
bool endcap_con2root | ( | ) |
Definition at line 229 of file convert2root.cxx.
References showlog::filelist, genRecEmupikp::i, ganga-rec::j, TrigConf::N, and t().
Referenced by main().
00229 { 00230 //this method so bothered 00231 00232 TTree* t0=new TTree("EsTimeOffset","EsTimeOffset"); 00233 double offset[2]={0.}; 00234 char estbrname[20]; 00235 char estptname[20]; 00236 for(int i = 0; i<2; i++){ 00237 sprintf(estbrname, "Offset%d",i); 00238 sprintf(estptname, "Offset%d/D",i); 00239 t0->Branch(estbrname, &offset[i], estptname); 00240 } 00241 00242 ifstream inf0; 00243 ifstream inf01; 00244 inf0.open("calib_estimeOffset.txt",ios::in); 00245 inf01.open("est_estimeOffset.txt", ios::in); 00246 if(inf0.good()&& inf01.good()) { 00247 try{ 00248 inf0 >> offset[0] ; 00249 inf01 >> offset[1] ; 00250 t0->Fill(); 00251 }catch(...) { 00252 return false; 00253 } 00254 } 00255 else { 00256 std::cerr<<"file: calib_estimeOffset.txt or est_estimeOffset can't be found!"<<std::endl; 00257 } 00258 inf0.close(); 00259 inf01.close(); 00260 00261 TTree* t=new TTree("EndTofPar","endcap parameters"); 00262 //create a full tree; 00263 double p[8]={0.};; 00264 char brname[8];//branch name 00265 char ptname[8];//pattern name 00266 for(int i=0;i<8;i++){ 00267 sprintf(brname,"P%d",i); 00268 sprintf(ptname,"p%d/D",i); 00269 t->Branch(brname,&p[i],ptname); 00270 } 00271 double Atten[5]={0.},Speed[3]={0.},Q0[1]={0.}; 00272 t->Branch("Atten0",&Atten[0],"Atten0/D"); 00273 t->Branch("Atten1",&Atten[1],"Atten1/D"); 00274 t->Branch("Atten2",&Atten[2],"Atten2/D"); 00275 t->Branch("Atten3",&Atten[3],"Atten3/D"); 00276 t->Branch("Atten4",&Atten[4],"Atten4/D"); 00277 t->Branch("Speed0",&Speed[0],"Speed0/D"); 00278 t->Branch("Speed1",&Speed[1],"Speed1/D"); 00279 t->Branch("Speed2",&Speed[2],"Speed2/D"); 00280 t->Branch("Q0",Q0,"Q0[1]/D"); 00281 const int N=3; 00282 ifstream inf[N]; 00283 bool is_open[N]={false}; 00284 const char* filelist[N]={"calib_endcap_left.txt","calib_endcap_atten.txt","calib_endcap_veff.txt"}; 00285 for(int m=0;m<N;m++){ 00286 inf[m].open(filelist[m],ios::in); 00287 if(inf[m].good()) 00288 is_open[m]=true; 00289 else{ 00290 std::cerr<<"File: "<<filelist[m]<<" can't be opened"<<std::endl; 00291 } 00292 } 00293 try{ 00294 for(int k=0;k<96;k++){ 00295 //------------set p------------------------- 00296 if(is_open[0]&&is_open[1]){ 00297 for(int j=0;j<5;j++){ 00298 inf[0]>>p[j]; 00299 // cout<<p[j]<<' '; 00300 } 00301 } 00302 //-----------atten lenght------------------ 00303 if(is_open[1]){ 00304 for(int j=0;j<3;j++){ 00305 inf[1]>>Atten[j]; 00306 } 00307 Atten[0]=1./Atten[0]; 00308 } 00309 //-------------speed----------------------- 00310 if(is_open[2]){ 00311 for(int j=0;j<3;j++){ 00312 inf[2]>>Speed[j]; 00313 } 00314 Speed[0]=1./Speed[0]; 00315 } 00316 //-------------Q0---------------------------- 00317 // for(int j=0;j<1;j++) 00318 // inf[5]>>Q0[j]; 00319 //-------------fill----------------------- 00320 t->Fill(); 00321 } 00322 } catch(...){ 00323 return false; 00324 } 00325 for(int m=0;m<N;m++) 00326 inf[m].close(); 00327 //------------------------------------------- 00328 TFile f("EndTofPar.root","RECREATE"); 00329 t0->Write(); 00330 t->Write(); 00331 f.Close(); 00332 delete t0; 00333 delete t; 00334 t=NULL; 00335 t=NULL; 00336 return true; 00337 }
bool join | ( | ) |
Definition at line 338 of file convert2root.cxx.
References f1, genRecEmupikp::i, and t().
Referenced by main().
00338 { 00339 00340 TTree* t0=new TTree("EsTimeOffset","EsTimeOffset"); 00341 double offset[2]={0.}; 00342 char estbrname[20]; 00343 char estptname[20]; 00344 for(int i = 0; i<2; i++){ 00345 sprintf(estbrname, "Offset%d",i); 00346 sprintf(estptname, "Offset%d/D",i); 00347 t0->Branch(estbrname, &offset[i], estptname); 00348 } 00349 00350 ifstream inf0; 00351 ifstream inf01; 00352 inf0.open("calib_estimeOffset.txt",ios::in); 00353 inf01.open("est_estimeOffset.txt", ios::in); 00354 if(inf0.good()&& inf01.good()) { 00355 try{ 00356 inf0 >> offset[0] ; 00357 inf01 >> offset[1] ; 00358 t0->Fill(); 00359 }catch(...) { 00360 return false; 00361 } 00362 } 00363 else { 00364 std::cerr<<"file: calib_estimeOffset.txt or est_estimeOffset can't be found!"<<std::endl; 00365 } 00366 inf0.close(); 00367 inf01.close(); 00368 00369 TFile f("EndTofPar.root"); 00370 TTree* t=(TTree*)f.Get("EndTofPar"); 00371 if(0==t) { std::cerr<<" can't get tree :EndTofPar in file EndTofPar.root"<<std::endl; return false;} 00372 TFile f1("BarTofPar.root"); 00373 TTree* t1=(TTree*)f1.Get("BarTofPar"); 00374 if(0==t1) { std::cerr<<" can't get tree :BarTofPar in file BarTofPar.root"<<std::endl; return false;} 00375 TTree* t2=(TTree*)f1.Get("BarTofParInner"); 00376 if(0==t2) { std::cerr<<" can't get tree :BarTofPar Inner Layer in file BarTofPar.root"<<std::endl; return false;} 00377 TTree* t3=(TTree*)f1.Get("BarTofParCommon"); 00378 if(0==t3) { std::cerr<<" can't get tree :BarTofPar Common in file BarTofPar.root"<<std::endl; return false;} 00379 TFile fnew("TofCalConst.root","RECREATE"); 00380 t0->Write(); 00381 t->Write(); 00382 t1->Write(); 00383 t2->Write(); 00384 t3->Write(); 00385 f.Close(); 00386 f1.Close(); 00387 fnew.Close(); 00388 t0=NULL; 00389 t=NULL; 00390 t1=NULL; 00391 t2=NULL; 00392 t3=NULL; 00393 return true; 00394 }
int main | ( | ) |
Definition at line 395 of file convert2root.cxx.
References barrel_con2root(), endcap_con2root(), and join().
00395 { 00396 barrel_con2root(); 00397 endcap_con2root(); 00398 join(); 00399 }