/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Calibration/CalibSvc/CalibROOTCnv/CalibROOTCnv-00-01-13/src/cnv/RootTofQElecDataCnv.cxx

Go to the documentation of this file.
00001 #include "GaudiKernel/MsgStream.h"
00002 #include "RootTofQElecDataCnv.h"
00003 #include "CalibData/Tof/TofElecData.h"
00004 #include "CalibDataSvc/IInstrumentName.h"
00005 #include "TFile.h"
00006 #include "TTree.h"
00007 #include "TDirectory.h"
00008 #include "TObject.h"
00009 #include "TBuffer.h"
00010 
00011 #include "GaudiKernel/CnvFactory.h"
00012 #include "GaudiKernel/IOpaqueAddress.h"
00013 #include "GaudiKernel/DataObject.h"
00014 #include "GaudiKernel/IAddressCreator.h"
00015 #include "GaudiKernel/IDataProviderSvc.h"
00016 #include "GaudiKernel/IConversionSvc.h"
00017 #include "GaudiKernel/GenericAddress.h"
00018 
00019 #include "CalibDataSvc/ICalibTreeSvc.h"    //maybe
00020 #include "CalibDataSvc/ICalibMetaCnvSvc.h"
00021 
00022 // Temporary.  Hope to find a better way to do this
00023 #include "CalibData/CalibModel.h"
00024 using namespace CalibData;
00025 //static CnvFactory<RootTofElecDataCnv> TofCal_factory;
00026 //const  ICnvFactory& RootTofElecDataCnvFactory = TofCal_factory;
00027 
00028 
00029 
00030 RootTofElecDataCnv::RootTofElecDataCnv( ISvcLocator* svc) :
00031   RootCalBaseCnv(svc, CLID_TofQ_Elec) { 
00032 
00033 }
00034 
00035 
00036 const CLID& RootTofElecDataCnv::objType() const {
00037   return CLID_TofQ_Elec;
00038 }
00039 
00040 const CLID& RootTofElecDataCnv::classID() {
00041   return CLID_TofQ_Elec;
00042 }
00043 
00044 StatusCode RootTofElecDataCnv::i_createObj(const std::string& fname,
00045                                        DataObject*& refpObject) {
00046 
00047   MsgStream log(msgSvc(), "RootTofElecDataCnv");
00048   log<<MSG::DEBUG<<"SetProperty"<<endreq;
00049   StatusCode sc = openRead(fname);
00050   if(!sc)
00051     { log<<MSG::ERROR<<"unable to open files"<<endreq;
00052     }
00053 
00054   TTree *BarBoardNum=(TTree*)m_inFile -> Get("BarBoardNum");
00055   TTree *EndBoardNum= (TTree*)m_inFile -> Get("EndBoardNum");
00056   TTree *QElecBarParEast = (TTree*)m_inFile -> Get("QElecBarParEast");
00057   TTree *QElecBarParWest = (TTree*)m_inFile -> Get("QElecBarParWest");
00058   TTree *QElecEndPar = (TTree*)m_inFile -> Get("QElecEndPar");
00059   TTree *SimQElecBarParEast = (TTree*)m_inFile -> Get("SimQElecBarParEast");
00060   TTree *SimQElecBarParWest = (TTree*)m_inFile -> Get("SimQElecBarParWest");
00061   TTree *SimQElecEndPar = (TTree*)m_inFile -> Get("SimQElecEndPar");
00062 
00063   CalibData::BarrelElec bTof;
00064   CalibData::EndcapElec eTof;
00065 
00066   std::vector<CalibData::BarrelElec> tmpbTof;//; = new vector<CalibData::bTofCalibBase>;
00067   std::vector<CalibData::EndcapElec> tmpeTof;
00068 
00069     // Read in the object
00070   int cnt;
00071   // read btoftree ------------------------------------------------------------
00072   unsigned int num[4];
00073   double num1[4];
00074      BarBoardNum -> SetBranchAddress("Board", &num1[0]);
00075      BarBoardNum -> SetBranchAddress("Channel", &num1[1]);
00076      BarBoardNum -> SetBranchAddress("Crate", &num1[2]);
00077      BarBoardNum -> SetBranchAddress("Fee", &num1[3]);
00078   double p[11];
00079      QElecBarParEast->SetBranchAddress("P0",&p[0]);
00080      QElecBarParEast->SetBranchAddress("P1",&p[1]);
00081      QElecBarParEast->SetBranchAddress("P2",&p[2]);
00082      QElecBarParEast->SetBranchAddress("P3",&p[3]);
00083      QElecBarParEast->SetBranchAddress("P4",&p[4]);
00084      QElecBarParEast->SetBranchAddress("P5",&p[5]);
00085      QElecBarParEast->SetBranchAddress("P6",&p[6]);
00086      QElecBarParEast->SetBranchAddress("P7",&p[7]);
00087      QElecBarParEast->SetBranchAddress("P8",&p[8]);
00088      QElecBarParEast->SetBranchAddress("P9",&p[9]);
00089      QElecBarParEast->SetBranchAddress("P10",&p[10]);
00090    double p_w[11];
00091      QElecBarParWest->SetBranchAddress("P0",&p_w[0]);
00092      QElecBarParWest->SetBranchAddress("P1",&p_w[1]);
00093      QElecBarParWest->SetBranchAddress("P2",&p_w[2]);
00094      QElecBarParWest->SetBranchAddress("P3",&p_w[3]);
00095      QElecBarParWest->SetBranchAddress("P4",&p_w[4]);
00096      QElecBarParWest->SetBranchAddress("P5",&p_w[5]);
00097      QElecBarParWest->SetBranchAddress("P6",&p_w[6]);
00098      QElecBarParWest->SetBranchAddress("P7",&p_w[7]);
00099      QElecBarParWest->SetBranchAddress("P8",&p_w[8]);
00100      QElecBarParWest->SetBranchAddress("P9",&p_w[9]);
00101      QElecBarParWest->SetBranchAddress("P10",&p_w[10]);
00102       double p_se[11];
00103      SimQElecBarParEast->SetBranchAddress("P0",&p_se[0]);
00104      SimQElecBarParEast->SetBranchAddress("P1",&p_se[1]);
00105      SimQElecBarParEast->SetBranchAddress("P2",&p_se[2]);
00106      SimQElecBarParEast->SetBranchAddress("P3",&p_se[3]);
00107      SimQElecBarParEast->SetBranchAddress("P4",&p_se[4]);
00108      SimQElecBarParEast->SetBranchAddress("P5",&p_se[5]);
00109      SimQElecBarParEast->SetBranchAddress("P6",&p_se[6]);
00110      SimQElecBarParEast->SetBranchAddress("P7",&p_se[7]);
00111      SimQElecBarParEast->SetBranchAddress("P8",&p_se[8]);
00112      SimQElecBarParEast->SetBranchAddress("P9",&p_se[9]);
00113      SimQElecBarParEast->SetBranchAddress("P10",&p_se[10]);
00114        double p_sw[11];
00115      SimQElecBarParWest->SetBranchAddress("P0",&p_sw[0]);
00116      SimQElecBarParWest->SetBranchAddress("P1",&p_sw[1]);
00117      SimQElecBarParWest->SetBranchAddress("P2",&p_sw[2]);
00118      SimQElecBarParWest->SetBranchAddress("P3",&p_sw[3]);
00119      SimQElecBarParWest->SetBranchAddress("P4",&p_sw[4]);
00120      SimQElecBarParWest->SetBranchAddress("P5",&p_sw[5]);
00121      SimQElecBarParWest->SetBranchAddress("P6",&p_sw[6]);
00122      SimQElecBarParWest->SetBranchAddress("P7",&p_sw[7]);
00123      SimQElecBarParWest->SetBranchAddress("P8",&p_sw[8]);
00124      SimQElecBarParWest->SetBranchAddress("P9",&p_sw[9]);
00125      SimQElecBarParWest->SetBranchAddress("P10",&p_sw[10]);
00126 
00127      for(cnt=0; cnt<352; cnt++){
00128          BarBoardNum -> GetEntry(cnt);
00129           num[0]=num1[0];
00130            num[1]=num1[1];
00131           num[2]=num1[2];
00132            num[3]=num1[3];
00133          if(cnt%2!=0){
00134           bTof.setNumWest(num);
00135           }
00136          if(cnt%2==0){
00137           bTof.setNumEast(num);
00138          int kkk=cnt/2;
00139          QElecBarParEast->GetEntry(kkk);
00140          QElecBarParWest->GetEntry(kkk);
00141          SimQElecBarParEast->GetEntry(kkk);
00142          SimQElecBarParWest->GetEntry(kkk);
00143            bTof.setP1(p);
00144            bTof.setP2(p_w);
00145            bTof.setSimP1(p_se);
00146            bTof.setSimP2(p_sw);
00147           }           
00148          if(cnt%2!=0)
00149            tmpbTof.push_back(bTof);
00150           }
00151 
00152        //read etoftree
00153        EndBoardNum -> SetBranchAddress("Board", &num1[0]);
00154        EndBoardNum -> SetBranchAddress("Channel", &num1[1]);
00155        EndBoardNum -> SetBranchAddress("Crate", &num1[2]);
00156        EndBoardNum -> SetBranchAddress("Fee", &num1[3]);
00157        QElecEndPar-> SetBranchAddress("P0",&p[0]);
00158        QElecEndPar->SetBranchAddress("P1",&p[1]);
00159        QElecEndPar->SetBranchAddress("P2",&p[2]);
00160        QElecEndPar->SetBranchAddress("P3",&p[3]);
00161        QElecEndPar->SetBranchAddress("P4",&p[4]);
00162        QElecEndPar->SetBranchAddress("P5",&p[5]);
00163        QElecEndPar->SetBranchAddress("P6",&p[6]);
00164        QElecEndPar->SetBranchAddress("P7",&p[7]);
00165        QElecEndPar->SetBranchAddress("P8",&p[8]);
00166        QElecEndPar->SetBranchAddress("P9",&p[9]);
00167        QElecEndPar->SetBranchAddress("P10",&p[10]);
00168        SimQElecEndPar-> SetBranchAddress("P0",&p_w[0]);
00169        SimQElecEndPar->SetBranchAddress("P1",&p_w[1]);
00170        SimQElecEndPar->SetBranchAddress("P2",&p_w[2]);
00171        SimQElecEndPar->SetBranchAddress("P3",&p_w[3]);
00172        SimQElecEndPar->SetBranchAddress("P4",&p_w[4]);
00173        SimQElecEndPar->SetBranchAddress("P5",&p_w[5]);
00174        SimQElecEndPar->SetBranchAddress("P6",&p_w[6]);
00175        SimQElecEndPar->SetBranchAddress("P7",&p_w[7]);
00176        SimQElecEndPar->SetBranchAddress("P8",&p_w[8]);
00177        SimQElecEndPar->SetBranchAddress("P9",&p_w[9]);
00178        SimQElecEndPar->SetBranchAddress("P10",&p_w[10]);
00179         for(cnt=0; cnt<96; cnt++){
00180         EndBoardNum->GetEntry(cnt);
00181         QElecEndPar->GetEntry(cnt);
00182         SimQElecEndPar->GetEntry(cnt);
00183         num[0]=num1[0];
00184            num[1]=num1[1];
00185           num[2]=num1[2];
00186            num[3]=num1[3];
00187         eTof.setNum(num);
00188         eTof.setP(p);
00189         eTof.setSimP(p_w);
00190         tmpeTof.push_back(eTof);
00191    }
00192 
00193    CalibData::TofElecData *tmpObject = new CalibData::TofElecData(&tmpbTof,&tmpeTof);
00194 
00195   
00196       refpObject=tmpObject;
00197   delete BarBoardNum;
00198   delete EndBoardNum;
00199   delete QElecBarParEast;
00200   delete QElecBarParWest; 
00201   delete QElecEndPar; 
00202   delete SimQElecBarParEast;
00203   delete SimQElecBarParWest; 
00204   delete SimQElecEndPar; 
00205 
00206   return StatusCode::SUCCESS;
00207 
00208 
00209 }
00210 

Generated on Tue Nov 29 22:57:51 2016 for BOSS_7.0.2 by  doxygen 1.4.7