/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Tof/EstTofCaliSvc/EstTofCaliSvc-00-00-10/test/convert2root.cxx File Reference

#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 ()


Function Documentation

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 }


Generated on Tue Nov 29 23:17:16 2016 for BOSS_7.0.2 by  doxygen 1.4.7