#include <DedxCalibDriftDist.h>
Inheritance diagram for DedxCalibDriftDist:
Public Member Functions | |
void | AnalyseHists () |
void | AnalyseHists () |
void | BookHists () |
void | BookHists () |
void | checkSelections () |
void | checkSelections () |
DedxCalibDriftDist (const std::string &name, ISvcLocator *pSvcLocator) | |
DedxCalibDriftDist (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 () |
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 |
Private Attributes | |
TObjArray * | m_caliblist |
TObjArray * | m_caliblist |
vector< TH1F * > | m_hist |
vector< TH1F * > | m_hist |
vector< TH1F * > | m_histcalib |
vector< TH1F * > | m_histcalib |
TObjArray * | m_list |
TObjArray * | m_list |
TRandom * | m_rand |
TRandom * | m_rand |
|
00028 : DedxCalib(name, pSvcLocator) 00029 { 00030 log<<MSG::INFO<<"DedxCalibDriftDist::DedxCalibDriftDist( )..."<<endreq; 00031 }
|
|
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00262 { 00263 log<<MSG::INFO<<"DedxCalibDriftDist::AnalyseHists( )..."<<endreq; 00264 00265 TF1* func; 00266 if(m_phshape_flag==0) { 00267 func = new TF1("mylan",mylan,1000,4000,4); 00268 func->SetParameters(10000.0,2010.1,300,-1.0); 00269 } else if(m_phshape_flag==1) { 00270 func = new TF1("landaun",landaun,1000,4000,3); 00271 func->SetParameters(2000.0,300.0); 00272 } else if(m_phshape_flag==2) { 00273 func = new TF1("land",Landau,1000,4000,2); 00274 func->SetParameters(2010.1,300); 00275 } else if(m_phshape_flag==3) { 00276 func = new TF1("vavi",Vavilov,1000,4000,2); 00277 func->SetParameters(3.1,0.4); 00278 } else if(m_phshape_flag==4) { 00279 func = new TF1("asym",AsymGauss,1000,4000,4); 00280 func->SetParameters(10000.0,2000.0,300.0,100.); 00281 } 00282 cout<<"check here 1 ------------------------------"<<endl; 00283 00284 00285 func->SetLineWidth(2.1); 00286 func->SetLineColor(2); 00287 Double_t entry, mean, rms; 00288 Double_t binmax; 00289 Double_t lp[3]; 00290 for(int hid=0; hid<43*NumBinDrifDist; hid++){ 00291 entry = m_hist[hid]->GetEntries(); 00292 mean = m_hist[hid]->GetMean(); 00293 rms = m_hist[hid]->GetRMS(); 00294 binmax = m_hist[hid]->GetMaximumBin(); 00295 lp[1] = m_hist[hid]->GetBinCenter(binmax); 00296 lp[2] = 200; 00297 lp[0] = (m_hist[hid]->GetBinContent(binmax)+m_hist[hid]->GetBinContent(binmax-1)+m_hist[hid]->GetBinContent(binmax+1))/3; 00298 00299 if(m_phshape_flag==0) { 00300 cout<<"check here 2 ------------------------------"<<endl; 00301 func->SetParameters(entry, mean, rms, -0.8); 00302 } else if(m_phshape_flag==1) { 00303 //func->SetParameters(entry, 0.7*mean, rms ); 00304 func->SetParameters(lp[0], lp[1], lp[2] ); 00305 } else if(m_phshape_flag==2) { 00306 func->SetParameters(0.7*mean, rms ); 00307 } else if(m_phshape_flag==3) { 00308 func->SetParameters(0.05, 0.6); 00309 } else if(m_phshape_flag==4) { 00310 func->SetParameters(entry, mean, rms, 1.0 ); 00311 } 00312 m_hist[hid]->Fit(func, "Q" ); 00313 } 00314 cout<<"check here 3 ------------------------------"<<endl; 00315 double fitmean[NumBinDrifDist], mean0; 00316 if(m_phshape_flag==0) { 00317 mean0 = m_hist[DrifDistStandard] -> GetFunction("mylan") -> GetParameter(1); 00318 } else if(m_phshape_flag==1) { 00319 mean0 = m_hist[DrifDistStandard] -> GetFunction("landaun") -> GetParameter(1); 00320 } else if(m_phshape_flag==2) { 00321 mean0 = m_hist[DrifDistStandard] -> GetFunction("land") -> GetParameter(1); 00322 } else if(m_phshape_flag==3) { 00323 mean0 = m_hist[DrifDistStandard] -> GetFunction("vavi") -> GetParameter(1); 00324 } else if(m_phshape_flag==4) { 00325 mean0 = m_hist[DrifDistStandard] -> GetFunction("asym") -> GetParameter(1); 00326 } 00327 00328 cout<<"NormalMean : "<<NormalMean<<endl; 00329 for(int lay=0; lay<43; lay++) { 00330 for(int bin=0; bin<NumBinDrifDist; bin++) { 00331 int hid=lay*NumBinDrifDist+bin; 00332 if(m_phshape_flag==0) { 00333 fitmean[bin] = m_hist[hid] -> GetFunction("mylan") -> GetParameter(1); 00334 } else if(m_phshape_flag==1) { 00335 fitmean[bin] = m_hist[hid] -> GetFunction("landaun") -> GetParameter(1); 00336 } else if(m_phshape_flag==2) { 00337 fitmean[bin] = m_hist[hid] -> GetFunction("land") -> GetParameter(1); 00338 } else if(m_phshape_flag==3) { 00339 fitmean[bin] = m_hist[hid] -> GetFunction("vavi") -> GetParameter(1); 00340 } else if(m_phshape_flag==4) { 00341 fitmean[bin] = m_hist[hid] -> GetFunction("asym") -> GetParameter(1); 00342 } 00343 00344 /*if(mean0) { 00345 fitmean[bin] = fitmean[bin]/mean0; 00346 } else { 00347 fitmean[bin] = fitmean[bin]/2000.0; 00348 }*/ 00349 cout<<"fitmean["<<bin<<"] : "<<fitmean[bin]<<endl; 00350 fitmean[bin] = fitmean[bin]/NormalMean; 00351 if(lay<8)m_histcalib[lay]->Fill(Iner_step*bin+Iner_step/2+Iner_DrifDistMin, fitmean[bin]); 00352 if(lay>=8)m_histcalib[lay]->Fill(Out_step*bin+Out_step/2+Out_DrifDistMin, fitmean[bin]); 00353 } 00354 } 00355 00356 TF1* parfunc; 00357 parfunc = new TF1("cheby3",ChebyP3,0.0,15.0,4); 00358 parfunc->SetParameters(10.0,1.0,3.1,0.4); 00359 parfunc->SetLineWidth(2.1); 00360 parfunc->SetLineColor(2); 00361 for(int lay=0; lay<43; lay++) { 00362 if(m_par_flag==0) m_histcalib[lay]->Fit(parfunc,"Q"); 00363 if(m_par_flag==1) m_histcalib[lay]->Fit("pol3","Q"); 00364 } 00365 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00095 { 00096 log<<MSG::INFO<<"DedxCalibDriftDist::BookHists( )..."<<endreq; 00097 log<<MSG::DEBUG<<" bookhist...1" <<endreq; 00098 m_list = new TObjArray(0); 00099 m_caliblist = new TObjArray(0); 00100 log<<MSG::DEBUG<<" bookhist...2" <<endreq; 00101 m_rand = new TRandom(); 00102 std::string hlabel; 00103 log<<MSG::DEBUG<<" bookhist...3" <<endreq; 00104 00105 for(int jj=0; jj<43; jj++) { 00106 for(int mm=0; mm<NumBinDrifDist; mm++) { 00107 std::ostringstream strout; 00108 strout << "Gain_Layer_" << jj <<"_DriftDist_"<<mm; 00109 hlabel = strout.str(); 00110 TH1F *ddg; 00111 if(jj<8) { 00112 ddg = new TH1F(hlabel.c_str(), hlabel.c_str(), NumHistBins,Iner_MinHistValue,Iner_MaxHistValue); 00113 ddg->GetXaxis()->SetTitle("dE/dx(eV/1.5cm)"); 00114 ddg->GetYaxis()->SetTitle("entries/(40eV/1.5cm)"); 00115 } else { 00116 ddg = new TH1F(hlabel.c_str(), hlabel.c_str(), NumHistBins,MinHistValue,MaxHistValue); 00117 ddg->GetXaxis()->SetTitle("dE/dx(eV/1.5cm)"); 00118 ddg->GetYaxis()->SetTitle("entries/(40eV/1.5cm)"); 00119 // wireg->Print("base"); 00120 } 00121 m_hist.push_back(ddg); 00122 m_list -> Add(ddg); 00123 } 00124 std::ostringstream strout2; 00125 strout2 << "DriftDist_Layer_" << jj ; 00126 hlabel = strout2.str(); 00127 TH1F *calib; 00128 if(jj<8) { 00129 calib = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinDrifDist, Iner_DrifDistMin, Iner_DrifDistMax); 00130 calib->GetXaxis()->SetTitle("drift distance(mm)"); 00131 calib->GetYaxis()->SetTitle("normalized dE/dx"); 00132 } else { 00133 calib = new TH1F(hlabel.c_str(), hlabel.c_str(), NumBinDrifDist, Out_DrifDistMin, Out_DrifDistMax); 00134 calib->GetXaxis()->SetTitle("drift distance(mm)"); 00135 calib->GetYaxis()->SetTitle("normalized dE/dx"); 00136 } 00137 // wireg->Print("base"); 00138 m_histcalib.push_back(calib); 00139 m_caliblist -> Add(calib); 00140 } 00141 log<<MSG::DEBUG<<" m_hist size..." <<m_hist.size()<<endreq; 00142 }
|
|
|
|
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. 00145 { 00146 log<<MSG::INFO<<"DedxCalibDriftDist::FillHists( )..."<<endreq; 00147 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00148 if (!eventHeader) { 00149 log << MSG::FATAL << "Could not find Event Header" << endreq; 00150 return; 00151 } 00152 int event = eventHeader->eventNumber(); 00153 int runNO = eventHeader->runNumber(); 00154 int typFlag; //data type flag: 0:MC data, 1: 2150, 2:2200 00155 if(runNO<0) typFlag =0; 00156 else if(runNO>=0 && runNO<5459) typFlag =1; 00157 else if(runNO>=5459 && runNO<8093) typFlag =2; 00158 else if(runNO>=8093 && runNO<9815) typFlag =3; 00159 else if(runNO>=9815 ) typFlag =4; 00160 00161 double tes; 00162 int esTimeflag = -1; 00163 SmartDataPtr<RecEsTimeCol> estimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00164 if( ! estimeCol) { 00165 log << MSG::WARNING << "Could not find EvTimeCol" << endreq; 00166 }else{ 00167 RecEsTimeCol::iterator iter_evt = estimeCol->begin(); 00168 for(; iter_evt!=estimeCol->end(); iter_evt++){ 00169 tes = (*iter_evt)->getTest(); 00170 esTimeflag = (*iter_evt)->getStat(); 00171 } 00172 } 00173 if(typFlag ==2) {if( tes>1000 ) return;} 00174 else if(typFlag ==3 ){if (tes>700 ) return;} 00175 else if(typFlag ==4 ){if (tes>1400 ) return;} 00176 00177 00178 //-------------------------- use inf of MDC Track --------------------------------// 00179 Identifier mdcid; 00180 SmartDataPtr<RecMdcTrackCol> trkCol(eventSvc(),"/Event/Recon/RecMdcTrackCol"); 00181 if (!trkCol) { 00182 log << MSG::WARNING << "Could not find RecMdcTrackCol" << endreq; 00183 return; 00184 } 00185 //if(trkCol->size() !=2 ) return; 00186 00187 int layid, hid, lr,localwid; 00188 double adc_raw, tdc_raw, costhe, zhit, ddl, ddr, dd, ph, sinenta, pathlength, sintheta, rphi_path; 00189 double m_driftd, driftd; 00190 log << MSG::INFO << "Begin to check RecMdcTrackCol"<<endreq; 00191 RecMdcTrackCol::iterator iter_trk = trkCol->begin(); 00192 for( ; iter_trk != trkCol->end(); iter_trk++) { 00193 HepVector a = (*iter_trk)->helix(); 00194 HepSymMatrix tkErrM = (*iter_trk)->err(); 00195 double m_d0E = tkErrM[0][0]; 00196 double m_phi0E = tkErrM[1][1]; 00197 double m_cpaE = tkErrM[2][2]; 00198 double m_z0E = tkErrM[3][3]; 00199 00200 HepPoint3D IP(0,0,0); 00201 Dedx_Helix exhel(IP, a); 00202 float m_Pt = 1.0/fabs( a(3) ); 00203 float m_P = m_Pt*sqrt(1 + a(5)*a(5)); 00204 //if(m_P>1.95||m_P<1.8) continue; 00205 00206 log << MSG::DEBUG << "hitList of this track:" << endreq; 00207 HitRefVec gothits = (*iter_trk)->getVecHits(); 00208 HitRefVec::iterator it_gothit = gothits.begin(); 00209 if(gothits.size()<20) StatusCode::SUCCESS; 00210 00211 for( ; it_gothit != gothits.end(); it_gothit++) { 00212 mdcid = (*it_gothit)->getMdcId(); 00213 layid = MdcID::layer(mdcid); 00214 localwid = MdcID::wire(mdcid); 00215 adc_raw = (*it_gothit)->getAdc(); 00216 //adc_raw = (*it_gothit)->getAdc()*1000000; 00217 tdc_raw = (*it_gothit)->getTdc(); 00218 zhit = (*it_gothit)->getZhit(); 00219 lr = (*it_gothit)->getFlagLR(); 00220 if(lr == 0 || lr == 2) m_driftd = (*it_gothit)->getDriftDistLeft(); 00221 if(lr == 1 ) m_driftd = (*it_gothit)->getDriftDistRight(); 00222 driftd = abs(m_driftd); 00223 dd = fabs((*it_gothit)->getDoca()); 00224 sinenta = sin((*it_gothit)->getEntra()); 00225 costhe = cos(M_PI_2-atan(a[4])); 00226 sintheta = sin(M_PI_2-atan(a[4])); 00227 int ntpFlag = 1; 00228 ph = exsvc->StandardCorrec(typFlag, ntpFlag, runNO, exhel, mdcid, adc_raw, dd, sinenta, zhit, costhe ); 00229 pathlength = exsvc->PathL(ntpFlag, exhel, layid, localwid, zhit); 00230 //ph = exsvc->StandardCorrec( exhel, mdcid, adc_raw, dd, sinenta, zhit, costhe ); 00231 //pathlength = exsvc->PathLCosmic(exhel, layid, localwid, zhit,m_z0E); 00232 //lr = (*it_gothit)->getFlagLR(); 00233 //if(lr == 0 || lr == 2) dd = fabs((*it_gothit)->getDriftDistLeft()); 00234 //if(lr == 1 ) dd = (*it_gothit)->getDriftDistRight(); 00235 rphi_path = pathlength * sintheta; 00236 //driftd>Iner_DriftDistCut 00237 //driftd>Out_DriftDistCut 00238 if(runNO<=5911 && runNO>=5854 && layid ==14) continue; 00239 if(layid <8) 00240 {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Iner_RPhi_PathMinCut || dd>Iner_DrifDistMax) continue;} 00241 else if(layid >= 8) 00242 {if(adc_raw<MinADCValuecut || adc_raw>MaxADCValuecut || rphi_path>RPhi_PathMaxCut || rphi_path<Out_RPhi_PathMinCut || dd>Out_DrifDistMax) continue;} 00243 00244 00245 for(int kk=0; kk<NumBinDrifDist; kk++) { 00246 if(layid<8) 00247 { 00248 if((dd>(Iner_step*kk+Iner_DrifDistMin))&&(dd<(Iner_step*(kk+1)+Iner_DrifDistMin))) hid=layid*NumBinDrifDist+kk; 00249 } 00250 if(layid>=8) 00251 { 00252 if((dd>(Out_step*kk+Out_DrifDistMin))&&(dd<(Out_step*(kk+1)+Out_DrifDistMin))) hid=layid*NumBinDrifDist+kk; 00253 } 00254 } 00255 m_hist[hid]->Fill(ph); 00256 } 00257 } 00258 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00368 { 00369 log<<MSG::INFO<<"DedxCalibDriftDist::FillHistsFromTree( )..."<<endreq; 00370 }
|
|
|
|
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. 00036 { 00037 log<<MSG::INFO<<"DedxCalibDriftDist::GetChargeOffCorr( )..."<<endreq; 00038 return 1.0; 00039 }
|
|
|
|
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. 00373 { 00374 log<<MSG::INFO<<"DedxCalibDriftDist::WriteCalibdEdxParameters( )..."<<endreq; 00375 }
|
|
Implements DedxCalib. |
|
Implements DedxCalib. 00043 { 00044 log<<MSG::INFO<<"DedxCalibDriftDist::WriteHists( )..."<<endreq; 00045 double mean[4][43]; 00046 for(int lay=0; lay<43; lay++) { 00047 if(m_par_flag==0) { 00048 mean[0][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(0); 00049 mean[1][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(1); 00050 mean[2][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(2); 00051 mean[3][lay] = m_histcalib[lay] -> GetFunction("cheby3") -> GetParameter(3); 00052 } 00053 if(m_par_flag==1) { 00054 mean[0][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(0); 00055 mean[1][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(1); 00056 mean[2][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(2); 00057 mean[3][lay] = m_histcalib[lay] -> GetFunction("pol3") -> GetParameter(3); 00058 } 00059 } 00060 00061 if(m_rootfile=="no rootfile") 00062 { 00063 log << MSG::ERROR<<"no sepcified calibration file path of docacalib "<<endreq; 00064 //return StatusCode::FAILURE; 00065 return; 00066 } 00067 //std::cout<<"m_rootfile = "<<m_rootfile<<endl; 00068 std::string rootpath_doca = m_rootfile; 00069 std::string hlabel_rootpath_doca; 00070 std::ostringstream strout; 00071 strout << rootpath_doca <<"/ddgcalib.root"; 00072 hlabel_rootpath_doca = strout.str(); 00073 std::cout<<"string doca : "<<hlabel_rootpath_doca.c_str()<<endl; 00074 00075 TFile fhist(hlabel_rootpath_doca.c_str(), "recreate"); 00076 TTree* ddg = new TTree("ddgcalib", "ddgcalib"); 00077 ddg -> Branch("ddg0", &mean[0], "ddg[43]/D"); 00078 ddg -> Branch("ddg1", &mean[1], "ddg[43]/D"); 00079 ddg -> Branch("ddg2", &mean[2], "ddg[43]/D"); 00080 ddg -> Branch("ddg3", &mean[3], "ddg[43]/D"); 00081 ddg -> Fill(); 00082 ddg -> Write(); 00083 m_list -> Write(); 00084 m_caliblist -> Write(); 00085 fhist.Close(); 00086 for(int i=0; i<43*NumBinDrifDist; i++) delete m_hist[i]; 00087 for(int i=0; i<43; i++) delete m_histcalib[i]; 00088 delete m_list; 00089 delete m_caliblist; 00090 //delete ddg; 00091 delete m_rand; 00092 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|