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"
00020 #include "CalibDataSvc/ICalibMetaCnvSvc.h"
00021
00022
00023 #include "CalibData/CalibModel.h"
00024 using namespace CalibData;
00025
00026
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;
00067 std::vector<CalibData::EndcapElec> tmpeTof;
00068
00069
00070 int cnt;
00071
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
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