#include <DedxCalibTzero.h>
Inheritance diagram for DedxCalibTzero:
Public Member Functions | |
void | AnalyseHists () |
void | AnalyseHists () |
void | BookHists () |
void | BookHists () |
void | checkSelections () |
void | checkSelections () |
DedxCalibTzero (const std::string &name, ISvcLocator *pSvcLocator) | |
DedxCalibTzero (const std::string &name, ISvcLocator *pSvcLocator) | |
virtual StatusCode | execute () |
virtual StatusCode | execute () |
void | FillHists () |
void | FillHists () |
void | FillHistsFromTree () |
void | FillHistsFromTree () |
void | FillTestHists () |
void | FillTestHists () |
void | FillTree () |
void | FillTree () |
virtual StatusCode | finalize () |
virtual StatusCode | finalize () |
virtual Float_t | GetChargeOffCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z) |
virtual Float_t | GetChargeOffCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z) |
Float_t | GetChargeOnCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z) |
Float_t | GetChargeOnCorr (Int_t il, Int_t iw, Float_t ChargeIn, Float_t path, Float_t doca, Float_t EAngle, Float_t dipAngle, Float_t z) |
virtual StatusCode | initialize () |
virtual StatusCode | initialize () |
void | ReadBetheBlochParameters () |
void | ReadBetheBlochParameters () |
void | ReadCalibdEdxParameters () |
void | ReadCalibdEdxParameters () |
void | WriteCalibdEdxParameters () |
void | WriteCalibdEdxParameters () |
void | WriteHists () |
void | WriteHists () |
Public Attributes | |
TObjArray * | m_caliblist |
TObjArray * | m_caliblist |
vector< TH1F * > | m_hist_e |
vector< TH1F * > | m_hist_e |
vector< TH1F * > | m_histcalib |
vector< TH1F * > | m_histcalib |
TRandom * | m_rand |
TRandom * | m_rand |
TObjArray * | m_spacelist |
TObjArray * | m_spacelist |
Protected Attributes | |
int | calib_flag |
bool | ddgflag |
IDedxCorrecSvc * | exsvc |
IDedxCorrecSvc * | exsvc |
IMdcGeomSvc * | geosvc |
IMdcGeomSvc * | geosvc |
bool | ggsflag |
bool | layergflag |
MsgStream | log |
std::string | m_constrootfile |
int | m_correc_flag |
std::string | m_inputfile |
int | m_par_flag |
int | m_phshape_flag |
std::string | m_rootfile |
bool | wiregflag |
bool | zdepflag |
|
00028 : DedxCalib(name, pSvcLocator) 00029 { 00030 log<<MSG::INFO<<"DedxCalibTzero::DedxCalibTzero( )..."<<endreq; 00031 }
|
|
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00325 { 00326 log<<MSG::INFO<<"DedxCalibTzero::AnalyseHists( )..."<<endreq; 00327 00328 double fitmean=0; 00329 double fiterr=0; 00330 double fitsigma=0; 00331 double sigmaerr=0; 00332 00333 for(int bin=0; bin<NumBinT0; bin++) { 00334 m_hist_e[bin]->Fit("gaus", "Q" ); 00335 fitmean = m_hist_e[bin] -> GetFunction("gaus") -> GetParameter(1); 00336 fiterr = m_hist_e[bin] -> GetFunction("gaus") -> GetParError(1); 00337 fitsigma = m_hist_e[bin] -> GetFunction("gaus") -> GetParameter(2); 00338 sigmaerr = m_hist_e[bin] -> GetFunction("gaus") -> GetParError(2); 00339 fitmean = fitmean/NormalMean; 00340 fiterr = fiterr/NormalMean; 00341 fitsigma=fitsigma/NormalMean; 00342 sigmaerr=sigmaerr/NormalMean; 00343 00344 if(bin==0){ 00345 if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){ 00346 m_histcalib[0]->SetBinContent(1,fitmean); 00347 m_histcalib[0]->SetBinError(1,fiterr); 00348 } 00349 else{ 00350 m_histcalib[0]->SetBinContent(1,0.00); 00351 m_histcalib[0]->SetBinError(1,0.05); 00352 } 00353 } 00354 else if(bin==1){ 00355 if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){ 00356 m_histcalib[1]->SetBinContent(1,fitmean); 00357 m_histcalib[1]->SetBinError(1,fiterr); 00358 } 00359 else{ 00360 m_histcalib[1]->SetBinContent(1,0.00); 00361 m_histcalib[1]->SetBinError(1,0.05); 00362 } 00363 } 00364 else if(bin>=2 && bin<NumBinT0-3){ 00365 if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){ 00366 m_histcalib[2]->SetBinContent(bin-1,fitmean); 00367 m_histcalib[2]->SetBinError(bin-1,fiterr); 00368 } 00369 else{ 00370 m_histcalib[2]->SetBinContent(bin-1,0.00); 00371 m_histcalib[2]->SetBinError(bin-1,0.05); 00372 } 00373 //resolution 00374 if(fitmean>0){ 00375 m_histcalib[6]->SetBinContent(bin-1,fitsigma/fitmean); 00376 m_histcalib[6]->SetBinError(bin-1, sqrt( sigmaerr*sigmaerr/(fitmean*fitmean)+fitsigma*fitsigma*fiterr*fiterr/pow(fitmean,4) ) ); 00377 } 00378 else{ 00379 m_histcalib[6]->SetBinContent(bin-1,0); 00380 m_histcalib[6]->SetBinError(bin-1,0); 00381 } 00382 } 00383 else if(bin==NumBinT0-3){ 00384 if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){ 00385 m_histcalib[3]->SetBinContent(1,fitmean); 00386 m_histcalib[3]->SetBinError(1,fiterr); 00387 } 00388 else{ 00389 m_histcalib[3]->SetBinContent(1,0.00); 00390 m_histcalib[3]->SetBinError(1,0.05); 00391 } 00392 } 00393 else if(bin==NumBinT0-2){ 00394 if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){ 00395 m_histcalib[4]->SetBinContent(1,fitmean); 00396 m_histcalib[4]->SetBinError(1,fiterr); 00397 } 00398 else{ 00399 m_histcalib[4]->SetBinContent(1,0.00); 00400 m_histcalib[4]->SetBinError(1,0.05); 00401 } 00402 } 00403 else{ 00404 if(m_hist_e[bin]->GetEntries()>0 && fiterr<0.5*fitmean){ 00405 m_histcalib[5]->SetBinContent(1,fitmean); 00406 m_histcalib[5]->SetBinError(1,fiterr); 00407 } 00408 else{ 00409 m_histcalib[5]->SetBinContent(1,0.00); 00410 m_histcalib[5]->SetBinError(1,0.05); 00411 } 00412 } 00413 00414 00415 } 00416 00417 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00091 { 00092 log<<MSG::INFO<<"DedxCalibTzero::BookHists( )..."<<endreq; 00093 log<<MSG::DEBUG<<" bookhist...1" <<endreq; 00094 m_spacelist = new TObjArray(0); 00095 m_caliblist = new TObjArray(0); 00096 log<<MSG::DEBUG<<" bookhist...2" <<endreq; 00097 m_rand = new TRandom(); 00098 std::string hlabel; 00099 log<<MSG::DEBUG<<" bookhist...3" <<endreq; 00100 00101 for(int mm=0; mm<NumBinT0; mm++) { 00102 std::ostringstream strout; 00103 strout << "Dedx_Vs" <<"_T0_"<<mm; 00104 hlabel = strout.str(); 00105 TH1F *space_e = new TH1F(hlabel.c_str(), hlabel.c_str(), NumHistBins,MinHistValue,MaxHistValue); 00106 // wireg->Print("base"); 00107 space_e->GetXaxis()->SetTitle("dE/dx(eV/1.5cm)"); 00108 space_e->GetYaxis()->SetTitle("entries/(40eV/1.5cm)"); 00109 00110 m_hist_e.push_back(space_e); 00111 m_spacelist -> Add(space_e); 00112 } 00113 00114 std::ostringstream strout1; 00115 strout1 << "T0_Effect_1"; 00116 hlabel = strout1.str(); 00117 TH1F *calib1 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 0, 550); 00118 // wireg->Print("base"); 00119 calib1->GetXaxis()->SetTitle("T0"); 00120 calib1->GetYaxis()->SetTitle("normalized dE/dx"); 00121 00122 std::ostringstream strout2; 00123 strout2 << "T0_Effect_2"; 00124 hlabel = strout2.str(); 00125 TH1F *calib2 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 550, 600); 00126 // wireg->Print("base"); 00127 calib2->GetXaxis()->SetTitle("T0"); 00128 calib2->GetYaxis()->SetTitle("normalized dE/dx"); 00129 00130 00131 std::ostringstream strout3; 00132 strout3 << "T0_Effect_3"; 00133 hlabel = strout3.str(); 00134 TH1F *calib3 = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinT0-5, 600, 1200); 00135 // wireg->Print("base"); 00136 calib3->GetXaxis()->SetTitle("T0"); 00137 calib3->GetYaxis()->SetTitle("normalized dE/dx"); 00138 00139 std::ostringstream strout4; 00140 strout4 << "T0_Effect_4"; 00141 hlabel = strout4.str(); 00142 TH1F *calib4 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 1200,1250); 00143 // wireg->Print("base"); 00144 calib4->GetXaxis()->SetTitle("T0"); 00145 calib4->GetYaxis()->SetTitle("normalized dE/dx"); 00146 00147 00148 std::ostringstream strout5; 00149 strout5 << "T0_Effect_5"; 00150 hlabel = strout5.str(); 00151 TH1F *calib5 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 1250,1300); 00152 // wireg->Print("base"); 00153 calib5->GetXaxis()->SetTitle("T0"); 00154 calib5->GetYaxis()->SetTitle("normalized dE/dx"); 00155 00156 std::ostringstream strout6; 00157 strout6 << "T0_Effect_6"; 00158 hlabel = strout6.str(); 00159 TH1F *calib6 = new TH1F(hlabel.c_str(), hlabel.c_str(), 1, 1300,1500); 00160 // wireg->Print("base"); 00161 calib6->GetXaxis()->SetTitle("T0"); 00162 calib6->GetYaxis()->SetTitle("normalized dE/dx"); 00163 00164 std::ostringstream strout7; 00165 strout7 << "dedx resoltuion vs t0"; 00166 hlabel = strout7.str(); 00167 TH1F *calib7 = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinT0-5, 600,1200); 00168 // wireg->Print("base"); 00169 calib7->GetXaxis()->SetTitle("T0"); 00170 calib7->GetYaxis()->SetTitle("dE/dx resolution"); 00171 00172 m_histcalib.push_back(calib1); 00173 m_histcalib.push_back(calib2); 00174 m_histcalib.push_back(calib3); 00175 m_histcalib.push_back(calib4); 00176 m_histcalib.push_back(calib5); 00177 m_histcalib.push_back(calib6); 00178 m_histcalib.push_back(calib7); 00179 00180 m_caliblist -> Add(calib1); 00181 m_caliblist -> Add(calib2); 00182 m_caliblist -> Add(calib3); 00183 m_caliblist -> Add(calib4); 00184 m_caliblist -> Add(calib5); 00185 m_caliblist -> Add(calib6); 00186 m_caliblist -> Add(calib7); 00187 00188 00189 }
|
|
|
|
00121 { 00122 log<<MSG::INFO<<"DedxCalib::checkSelections()...."<<endreq; 00123 }
|
|
|
|
00075 { 00076 00077 this->FillTree(); 00078 00079 this->FillHists(); 00080 return StatusCode::SUCCESS; 00081 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00192 { 00193 log<<MSG::INFO<<"DedxCalibTzero::FillHists( )..."<<endreq; 00194 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00195 if (!eventHeader) { 00196 log << MSG::FATAL << "Could not find Event Header" << endreq; 00197 return; 00198 } 00199 int event = eventHeader->eventNumber(); 00200 int runNO = eventHeader->runNumber(); 00201 int typFlag; //data type flag: 0:MC data, 1: 2150, 2:2200 00202 if(runNO<0) typFlag =0; 00203 else if(runNO>=0 && runNO<5459) typFlag =1; 00204 else if(runNO>=5459 && runNO<8093) typFlag =2; 00205 else if(runNO>=8093) typFlag =3; 00206 00207 double t0=-99; 00208 int esTimeflag = -1; 00209 SmartDataPtr<RecEsTimeCol> estimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00210 if( ! estimeCol) { 00211 log << MSG::WARNING << "Could not find EvTimeCol" << endreq; 00212 } 00213 else{ 00214 RecEsTimeCol::iterator iter_evt = estimeCol->begin(); 00215 for(; iter_evt!=estimeCol->end(); iter_evt++){ 00216 t0 = (*iter_evt)->getTest(); 00217 esTimeflag = (*iter_evt)->getStat(); 00218 } 00219 } 00220 00221 00222 Identifier mdcid; 00223 SmartDataPtr<RecMdcTrackCol> trkCol(eventSvc(),"/Event/Recon/RecMdcTrackCol"); 00224 if (!trkCol) { 00225 log << MSG::WARNING << "Could not find RecMdcTrackCol" << endreq; 00226 return; 00227 } 00228 int layid, hid, localwid, lr; 00229 double adc_raw, costhe, zhit, driftdist, dd, ph, sinenta,eangle, dipan, pathlength, sintheta, rphi_path; 00230 double m_driftd, driftd; 00231 double m_P, logp; 00232 log << MSG::INFO << "Begin to check RecMdcTrackCol"<<endreq; 00233 RecMdcTrackCol::iterator iter_trk = trkCol->begin(); 00234 for( ; iter_trk != trkCol->end(); iter_trk++) { 00235 HepVector a = (*iter_trk)->helix(); 00236 HepSymMatrix tkErrM = (*iter_trk)->err(); 00237 double m_d0E = tkErrM[0][0]; 00238 double m_phi0E = tkErrM[1][1]; 00239 double m_cpaE = tkErrM[2][2]; 00240 double m_z0E = tkErrM[3][3]; 00241 00242 vector<double> phlist; 00243 HepPoint3D IP(0,0,0); 00244 Dedx_Helix exhel(IP, a); 00245 //QvsDipAngP->Reset(); 00246 log << MSG::DEBUG << "hitList of this track:" << endreq; 00247 HitRefVec gothits = (*iter_trk)->getVecHits(); 00248 HitRefVec::iterator it_gothit = gothits.begin(); 00249 00250 //double m_Pt = 1.0/fabs(a[2]); 00251 //m_P = m_Pt*sqrt(1 + (a[4]*a[4])); 00252 //if(a(3)==0) continue; 00253 //float m_Pt = 1.0/fabs( a(3) ); 00254 //m_P = m_Pt*sqrt(1 + a(5)*a(5)); 00255 00256 m_P=(*iter_trk)->p(); 00257 00258 if(m_P>1.95||m_P<1.8) continue; 00259 for( ; it_gothit != gothits.end(); it_gothit++) { 00260 mdcid = (*it_gothit)->getMdcId(); 00261 layid = MdcID::layer(mdcid); 00262 localwid = MdcID::wire(mdcid); 00263 adc_raw = (*it_gothit)->getAdc(); 00264 zhit = (*it_gothit)->getZhit(); 00265 lr = (*it_gothit)->getFlagLR(); 00266 if(lr == 0 || lr == 2) m_driftd = (*it_gothit)->getDriftDistLeft(); 00267 if(lr == 1 ) m_driftd = (*it_gothit)->getDriftDistRight(); 00268 driftd = abs(m_driftd); 00269 dd = fabs((*it_gothit)->getDoca()); 00270 sinenta = sin((*it_gothit)->getEntra()); 00271 costhe = cos(M_PI_2-atan(a[4])); 00272 sintheta = sin(M_PI_2-atan(a[4])); 00273 eangle = (*it_gothit)->getEntra(); 00274 eangle = eangle/M_PI; 00275 int ntpFlag = 1; 00276 ph = exsvc->StandardHitCorrec(0,typFlag, ntpFlag, runNO, exhel, mdcid, adc_raw, dd, eangle, zhit, costhe ); 00277 pathlength = exsvc->PathL(ntpFlag, exhel, layid, localwid, zhit); 00278 rphi_path = pathlength * sintheta; 00279 if(layid <8) continue; 00280 // {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Iner_RPhi_PathMinCut || driftd>Iner_DriftDistCut) continue;} 00281 else if(layid >= 8) 00282 {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Out_RPhi_PathMinCut || driftd>Out_DriftDistCut) continue;} 00283 if( ph>0 ) phlist.push_back(ph); 00284 } 00285 sort(phlist.begin(),phlist.end()); 00286 int nsampl = (int)( phlist.size()*Truncate ); 00287 int smpl = (int)(phlist.size()*(Truncate+0.05)); 00288 int min_cut = (int)( phlist.size()*0.05 + 0.5 ); 00289 double qSum = 0; 00290 unsigned i = 0; 00291 for(vector<double>::iterator ql= phlist.begin();ql!=phlist.end();ql++){ 00292 i++; 00293 if(i<= smpl && i>=min_cut ) qSum += (*ql); 00294 } 00295 float trunc=qSum/(smpl-min_cut+1); 00296 double m_dEdx = exsvc->StandardTrackCorrec(0, typFlag,1.0,runNO,trunc,costhe,t0); 00297 00298 if(t0> T0Max || t0<T0Min) continue; 00299 hid=0; 00300 //cout<<"bin step is"<<t0_step<<endl; 00301 if(t0>0 && t0<=550) 00302 m_hist_e[0]->Fill(m_dEdx); 00303 else if(t0>550 && t0<=600) 00304 m_hist_e[1]->Fill(m_dEdx); 00305 else if(t0>600 && t0<=1200){ 00306 for(int kk=0; kk<NumBinT0-5; kk++) { 00307 if((t0>=600+t0_step*kk)&&(costhe<600+t0_step*(kk+1))) { 00308 hid=kk+2; 00309 } 00310 } 00311 m_hist_e[hid]->Fill(m_dEdx); 00312 } 00313 else if(t0>1200 && t0<=1250) 00314 m_hist_e[NumBinT0-3]->Fill(m_dEdx); 00315 else if(t0>1250 && t0<=1300) 00316 m_hist_e[NumBinT0-2]->Fill(m_dEdx); 00317 else 00318 m_hist_e[NumBinT0-1]->Fill(m_dEdx); 00319 00320 phlist.clear(); 00321 } 00322 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00421 { 00422 log<<MSG::INFO<<"DedxCalibTzero::FillHistsFromTree( )..."<<endreq; 00423 }
|
|
|
|
00117 { 00118 log<<MSG::INFO<<"DedxCalib::FillTestHists()...."<<endreq; 00119 }
|
|
|
|
00105 { 00106 log<<MSG::INFO<<"DedxCalib::FillTree()...."<<endreq; 00107 }
|
|
|
|
00084 { 00085 00086 log << MSG::INFO << "DedxCalib finalize() ..." << endreq; 00087 this->AnalyseHists(); 00088 00089 this->WriteCalibdEdxParameters(); 00090 this->WriteHists(); 00091 00092 this->FillTestHists(); 00093 00094 00095 00096 return StatusCode::SUCCESS; 00097 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00035 { 00036 log<<MSG::INFO<<"DedxCalibTzero::GetChargeOffCorr( )..."<<endreq; 00037 return 1.0; 00038 }
|
|
|
|
00127 { 00128 00129 }
|
|
|
|
00035 { 00036 log << MSG::INFO << "DedxCalib initialze() ..." << endreq; 00037 /*StatusCode scint = Service::initialize(); 00038 if( scint.isFailure() ) return scint; 00039 IIncidentSvc* incsvc; 00040 scint = service("IncidentSvc", incsvc); 00041 int priority = 100; 00042 if( sc.isSuccess() ){ 00043 incsvc -> addListener(this, "BeginEvent", priority); 00044 //incsvc -> addListener(this, "NewRun", priority); 00045 }*/ 00046 00047 StatusCode sc = service("MdcGeomSvc", geosvc); 00048 if (sc == StatusCode::SUCCESS) { 00049 log << MSG::INFO <<"MdcGeomSvc is running"<<endl; 00050 } else { 00051 log << MSG::ERROR <<"MdcGeomSvc is failed"<<endl; 00052 return StatusCode::SUCCESS; 00053 } 00054 00055 StatusCode scex = service("DedxCorrecSvc", exsvc); 00056 if (scex == StatusCode::SUCCESS) { 00057 log << MSG::INFO <<"Hi, DedxCorrectSvc is running"<<endl; 00058 } else { 00059 log << MSG::ERROR <<"DedxCorrectSvc is failed"<<endl; 00060 return StatusCode::SUCCESS; 00061 } 00062 00063 exsvc->set_flag( calib_flag ); 00064 this->checkSelections(); 00065 log << MSG::INFO <<"DedxCalib: read correction parameters"<<endreq; 00066 this->ReadCalibdEdxParameters(); 00067 this->FillHistsFromTree(); 00068 00069 this->BookHists(); 00070 00071 return StatusCode::SUCCESS; 00072 }
|
|
|
|
|
|
|
|
00109 { 00110 log<<MSG::INFO<<"DedxCalib::ReadCalibdEdxParameters()...."<<endreq; 00111 }
|
|
Reimplemented from DedxCalib. |
|
Reimplemented from DedxCalib. 00426 { 00427 log<<MSG::INFO<<"DedxCalibTzero::WriteCalibdEdxParameters( )..."<<endreq; 00428 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00041 { 00042 log<<MSG::INFO<<"DedxCalibDipAngle::WriteHists( )..."<<endreq; 00043 00044 00045 TTree tree("t0calib","t0calib"); 00046 double tmp1[1]; 00047 double tmp2[1]; 00048 tree.Branch("t0",&tmp1,"t0/D"); 00049 tree.Branch("dedx",&tmp2,"dedx/D"); 00050 00051 tmp1[0]=m_histcalib[0]->GetBinCenter(1); 00052 tmp2[0]=m_histcalib[0]->GetBinContent(1); 00053 tree.Fill(); 00054 tmp1[0]=m_histcalib[1]->GetBinCenter(1); 00055 tmp2[0]=m_histcalib[1]->GetBinContent(1); 00056 tree.Fill(); 00057 for(int i=1;i<=(NumBinT0-5);i++){ 00058 tmp1[0]=m_histcalib[2]->GetBinCenter(i); 00059 tmp2[0]=m_histcalib[2]->GetBinContent(i); 00060 tree.Fill(); 00061 } 00062 tmp1[0]=m_histcalib[3]->GetBinCenter(1); 00063 tmp2[0]=m_histcalib[3]->GetBinContent(1); 00064 tree.Fill(); 00065 tmp1[0]=m_histcalib[4]->GetBinCenter(1); 00066 tmp2[0]=m_histcalib[4]->GetBinContent(1); 00067 tree.Fill(); 00068 tmp1[0]=m_histcalib[5]->GetBinCenter(1); 00069 tmp2[0]=m_histcalib[5]->GetBinContent(1); 00070 tree.Fill(); 00071 00072 TFile fhist("/ihepbatch/besd13/chunlei/calib/t0calib.root", "recreate"); 00073 tree.Write(); 00074 m_spacelist -> Write(); 00075 m_caliblist -> Write(); 00076 fhist.Close(); 00077 00078 00079 for(int i=0; i<NumBinT0; i++) delete m_hist_e[i]; 00080 for(int i=0; i<6; i++) delete m_histcalib[i]; 00081 delete m_spacelist; 00082 delete m_caliblist; 00083 //delete spcharge; 00084 delete m_rand; 00085 00086 00087 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|