00001 #include "GaudiKernel/MsgStream.h"
00002
00003 #include <sstream>
00004 #include <string>
00005 #include "TFile.h"
00006 #include "TF1.h"
00007 #include "TH1F.h"
00008 #include "TTree.h"
00009 #include "TStyle.h"
00010 #include "TCanvas.h"
00011
00012 #include "DedxCalibAlg/DedxCalibCostheta.h"
00013
00014 #define Size 700000
00015
00016 using namespace std;
00017
00018 const double StepCostheta = (CosthetaMax-CosthetaMin)/NumBinCostheta;
00019
00020 DedxCalibCostheta::DedxCalibCostheta(const std::string& name, ISvcLocator* pSvcLocator): DedxCalib(name, pSvcLocator){
00021 declareProperty("Debug", m_debug=false);
00022 declareProperty("DebugMin", m_debug_min=2);
00023 declareProperty("DebugMax", m_debug_max=2);
00024 }
00025
00026 void DedxCalibCostheta::BookHists()
00027 {
00028 MsgStream log(msgSvc(), name());
00029 log<<MSG::INFO<<"DedxCalibCostheta::BookHists()"<<endreq;
00030
00031 ReadRecFileList();
00032
00033 m_costheta = new TH1F*[NumBinCostheta];
00034 m_pos_costheta = new TH1F*[NumBinCostheta];
00035 m_neg_costheta = new TH1F*[NumBinCostheta];
00036 m_chi = new TH1F*[NumBinCostheta];
00037 m_pos_chi = new TH1F*[NumBinCostheta];
00038 m_neg_chi = new TH1F*[NumBinCostheta];
00039 stringstream hlabel;
00040 for(int i=0;i<NumBinCostheta;i++)
00041 {
00042 hlabel.str("");
00043 hlabel<<"dEdx_costheta"<<i;
00044 m_costheta[i]=new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinHistValue1, MaxHistValue1);
00045 hlabel.str("");
00046 hlabel<<"pos_dEdx_costheta"<<i;
00047 m_pos_costheta[i]=new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinHistValue1, MaxHistValue1);
00048 hlabel.str("");
00049 hlabel<<"neg_dEdx_costheta"<<i;
00050 m_neg_costheta[i]=new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinHistValue1, MaxHistValue1);
00051 hlabel.str("");
00052 hlabel<<"chi_costheta"<<i;
00053 m_chi[i]=new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinChiValue, MaxChiValue);
00054 hlabel.str("");
00055 hlabel<<"pos_chi_costheta"<<i;
00056 m_pos_chi[i]=new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinChiValue, MaxChiValue);
00057 hlabel.str("");
00058 hlabel<<"neg_chi_costheta"<<i;
00059 m_neg_chi[i]=new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), NumHistBins, MinChiValue, MaxChiValue);
00060 }
00061 hlabel.str("");
00062 hlabel<<"dEdxVsCostheta";
00063 m_dEdxVsCostheta = new TH1F(hlabel.str().c_str(),"dEdx vs costheta",NumBinCostheta, CosthetaMin, CosthetaMax);
00064 m_dEdxVsCostheta->GetXaxis()->SetTitle("cos#theta");
00065 m_dEdxVsCostheta->GetYaxis()->SetTitle("dE/dx");
00066 hlabel.str("");
00067 hlabel<<"pos_dEdxVsCostheta";
00068 m_pos_dEdxVsCostheta = new TH1F(hlabel.str().c_str(),"positron dEdx vs costheta",NumBinCostheta, CosthetaMin, CosthetaMax);
00069 m_pos_dEdxVsCostheta->GetXaxis()->SetTitle("cos#theta");
00070 m_pos_dEdxVsCostheta->GetYaxis()->SetTitle("dE/dx");
00071 hlabel.str("");
00072 hlabel<<"neg_dEdxVsCostheta";
00073 m_neg_dEdxVsCostheta = new TH1F(hlabel.str().c_str(),"electron dEdx vs costheta",NumBinCostheta, CosthetaMin, CosthetaMax);
00074 m_neg_dEdxVsCostheta->GetXaxis()->SetTitle("cos#theta");
00075 m_neg_dEdxVsCostheta->GetYaxis()->SetTitle("dE/dx");
00076
00077 Vec_dedx.clear();
00078 Vec_costheta.clear();
00079 }
00080
00081 void DedxCalibCostheta::FillHists()
00082 {
00083 MsgStream log(msgSvc(), name());
00084 log<<MSG::INFO<<"DedxCalibCostheta::FillHists()"<<endreq;
00085
00086 TFile* f;
00087 TTree* n103;
00088 string runlist;
00089
00090 int ndedxhit=0;
00091 double dEdx[100]={0},pathlength[100]={0},wid[100]={0},layid[100]={0},dd_in[100]={0},eangle[100]={0},zhit[100]={0};
00092 double dedx=0;
00093 float runNO=0,runFlag=0,costheta=0,tes=0,charge=0,recalg=0,ptrk=0,chidedx=0;
00094 int usedhit=0;
00095 vector<double> phlist;
00096 cout<<"m_recFileVector.size()= "<<m_recFileVector.size()<<endl;
00097 for(unsigned int i=0; i<m_recFileVector.size(); i++)
00098 {
00099 runlist = m_recFileVector[i];
00100 f = new TFile(runlist.c_str());
00101 n103 = (TTree*)f->Get("n103");
00102 n103-> SetBranchAddress("ndedxhit", &ndedxhit);
00103 n103-> SetBranchAddress("dEdx_hit",dEdx);
00104 n103-> SetBranchAddress("pathlength_hit",pathlength);
00105 n103-> SetBranchAddress("wid_hit",wid);
00106 n103-> SetBranchAddress("layid_hit",layid);
00107 n103-> SetBranchAddress("dd_in_hit",dd_in);
00108 n103-> SetBranchAddress("eangle_hit",eangle);
00109 n103-> SetBranchAddress("zhit_hit",zhit);
00110 n103-> SetBranchAddress("runNO",&runNO);
00111 n103-> SetBranchAddress("runFlag",&runFlag);
00112 n103-> SetBranchAddress("costheta",&costheta);
00113 n103-> SetBranchAddress("t0",&tes);
00114 n103-> SetBranchAddress("charge",&charge);
00115 n103-> SetBranchAddress("recalg",&recalg);
00116 n103-> SetBranchAddress("ndedxhit",&ndedxhit);
00117 n103-> SetBranchAddress("ptrk",&ptrk);
00118 n103-> SetBranchAddress("chidedx_e",&chidedx);
00119 for(int j=0;j<n103->GetEntries();j++)
00120 {
00121 phlist.clear();
00122 n103->GetEntry(j);
00123 if(costheta>CosthetaMax || costheta<CosthetaMin) continue;
00124 if(tes>1400) continue;
00125 for(int k=0;k<ndedxhit;k++)
00126 {
00127 dEdx[k] = exsvc->StandardHitCorrec(0,runFlag,2,runNO,pathlength[k],wid[k],layid[k],dEdx[k],dd_in[k],eangle[k],costheta);
00128 phlist.push_back(dEdx[k]);
00129 }
00130 dedx = cal_dedx_bitrunc(truncate, phlist);
00131 int iCos = (Int_t)floor((costheta-CosthetaMin)/StepCostheta);
00132 double pre_dedx = dedx;
00133 if(m_debug && iCos>=m_debug_min && iCos<=m_debug_max)
00134 cout << "before cor, dedx " << pre_dedx << " with cos(theta) " << costheta << endl;
00135 dedx = exsvc->StandardTrackCorrec(0, runFlag, 2, runNO, dedx, costheta, tes);
00136 if(m_debug && iCos>=m_debug_min && iCos<=m_debug_max)
00137 cout << "after cor, dedx " << dedx << " with gain " << pre_dedx/dedx << endl;
00138 m_costheta[iCos]->Fill(dedx);
00139 if(charge>0) m_pos_costheta[iCos]->Fill(dedx);
00140 if(charge<0) m_neg_costheta[iCos]->Fill(dedx);
00141
00142 usedhit = ndedxhit*truncate;
00143 set_dEdx(1,dedx,recalg,runFlag,usedhit,ptrk,acos(costheta),1.5,vFlag,tes);
00144 double chi = m_chi_ex[ParticleFlag];
00145
00146 m_chi[iCos]->Fill(chi);
00147 if(charge>0) m_pos_chi[iCos]->Fill(chi);
00148 if(charge<0) m_neg_chi[iCos]->Fill(chi);
00149
00150 Vec_dedx.push_back(dedx);
00151 Vec_costheta.push_back(costheta);
00152 }
00153 }
00154 }
00155
00156 void DedxCalibCostheta::AnalyseHists()
00157 {
00158 MsgStream log(msgSvc(), name());
00159 log<<MSG::INFO<<"DedxCalibCostheta::AnalyseHists()"<<endreq;
00160
00161 gStyle->SetOptFit(1111);
00162 for(int i=0; i<NumBinCostheta; i++)
00163 {
00164 if(m_debug) cout << "num of bin " << i << endl;
00165 if(m_costheta[i]->GetEntries()>100) m_costheta[i]->Fit("gaus", "Q" );
00166 if(m_pos_costheta[i]->GetEntries()>100) m_pos_costheta[i]->Fit("gaus", "Q" );
00167 if(m_neg_costheta[i]->GetEntries()>100) m_neg_costheta[i]->Fit("gaus", "Q" );
00168 if(m_chi[i]->GetEntries()>100) m_chi[i]->Fit("gaus", "Q" );
00169 if(m_pos_chi[i]->GetEntries()>100) m_pos_chi[i]->Fit("gaus", "Q" );
00170 if(m_neg_chi[i]->GetEntries()>100) m_neg_chi[i]->Fit("gaus", "Q" );
00171 }
00172 }
00173
00174 void DedxCalibCostheta::WriteHists()
00175 {
00176 MsgStream log(msgSvc(), name());
00177 log<<MSG::INFO<<"DedxCalibCostheta::WriteHists()"<<endreq;
00178
00179 double chientryNo[NumBinCostheta]={0},chimean[NumBinCostheta]={0},chimeanerr[NumBinCostheta]={0},chisigma[NumBinCostheta]={0},chisq[NumBinCostheta]={0};
00180 double pos_chientryNo[NumBinCostheta]={0},pos_chimean[NumBinCostheta]={0},pos_chimeanerr[NumBinCostheta]={0},pos_chisigma[NumBinCostheta]={0},pos_chisq[NumBinCostheta]={0};
00181 double neg_chientryNo[NumBinCostheta]={0},neg_chimean[NumBinCostheta]={0},neg_chimeanerr[NumBinCostheta]={0},neg_chisigma[NumBinCostheta]={0},neg_chisq[NumBinCostheta]={0};
00182 double fitentryNo[NumBinCostheta]={0},fitmean[NumBinCostheta]={0},fitmeanerr[NumBinCostheta]={0},fitsigma[NumBinCostheta]={0},gain[NumBinCostheta]={0},fitchisq[NumBinCostheta]={0};
00183 double pos_fitentryNo[NumBinCostheta]={0},pos_fitmean[NumBinCostheta]={0},pos_fitmeanerr[NumBinCostheta]={0},pos_fitsigma[NumBinCostheta]={0},pos_gain[NumBinCostheta]={0},pos_fitchisq[NumBinCostheta]={0};
00184 double neg_fitentryNo[NumBinCostheta]={0},neg_fitmean[NumBinCostheta]={0},neg_fitmeanerr[NumBinCostheta]={0},neg_fitsigma[NumBinCostheta]={0},neg_gain[NumBinCostheta]={0},neg_fitchisq[NumBinCostheta]={0};
00185 double cosBin[NumBinCostheta]={0};
00186
00187 for(int i=0;i<NumBinCostheta;i++)
00188 {
00189 cosBin[i] = (i+0.5)*StepCostheta + CosthetaMin;
00190
00191 chientryNo[i] = m_chi[i]->GetEntries();
00192 if(m_debug) cout << "get results at " << i << " bin with chi entries " << chientryNo[i] << endl;
00193 if(m_chi[i]->GetFunction("gaus"))
00194 {
00195 chimean[i] = m_chi[i]->GetFunction("gaus")->GetParameter(1);
00196 chimeanerr[i] = m_chi[i]->GetFunction("gaus")->GetParError(1);
00197 chisigma[i] = m_chi[i]->GetFunction("gaus")->GetParameter(2);
00198 chisq[i] = (m_chi[i]->GetFunction("gaus")->GetChisquare())/(m_chi[i]->GetFunction("gaus")->GetNDF());
00199 }
00200 pos_chientryNo[i] = m_pos_chi[i]->GetEntries();
00201 if(m_debug) cout << "get results at " << i << " bin with pos_chi entries " << pos_chientryNo[i] << endl;
00202 if(m_pos_chi[i]->GetFunction("gaus"))
00203 {
00204 pos_chimean[i] = m_pos_chi[i]->GetFunction("gaus")->GetParameter(1);
00205 pos_chimeanerr[i] = m_pos_chi[i]->GetFunction("gaus")->GetParError(1);
00206 pos_chisigma[i] = m_pos_chi[i]->GetFunction("gaus")->GetParameter(2);
00207 pos_chisq[i] = (m_pos_chi[i]->GetFunction("gaus")->GetChisquare())/(m_pos_chi[i]->GetFunction("gaus")->GetNDF());
00208 }
00209 neg_chientryNo[i] = m_neg_chi[i]->GetEntries();
00210 if(m_debug) cout << "get results at " << i << " bin with neg_chi entries " << neg_chientryNo[i] << endl;
00211 if(m_neg_chi[i]->GetFunction("gaus"))
00212 {
00213 neg_chimean[i] = m_neg_chi[i]->GetFunction("gaus")->GetParameter(1);
00214 neg_chimeanerr[i] = m_neg_chi[i]->GetFunction("gaus")->GetParError(1);
00215 neg_chisigma[i] = m_neg_chi[i]->GetFunction("gaus")->GetParameter(2);
00216 neg_chisq[i] = (m_neg_chi[i]->GetFunction("gaus")->GetChisquare())/(m_neg_chi[i]->GetFunction("gaus")->GetNDF());
00217 }
00218
00219 fitentryNo[i] = m_costheta[i]->GetEntries();
00220 if(m_debug) cout << "get results at " << i << " bin with fit entries " << fitentryNo[i] << endl;
00221 if(m_costheta[i]->GetFunction("gaus"))
00222 {
00223 fitmean[i] = m_costheta[i]->GetFunction("gaus")->GetParameter(1);
00224 fitmeanerr[i] = m_costheta[i]->GetFunction("gaus")->GetParError(1);
00225 fitsigma[i] = m_costheta[i]->GetFunction("gaus")->GetParameter(2);
00226 gain[i] = fitmean[i]/NormalMean;
00227 fitchisq[i] = (m_costheta[i]->GetFunction("gaus")->GetChisquare())/(m_costheta[i]->GetFunction("gaus")->GetNDF());
00228 }
00229 pos_fitentryNo[i] = m_pos_costheta[i]->GetEntries();
00230 if(m_debug) cout << "get results at " << i << " bin with pos_fit entries " << pos_fitentryNo[i] << endl;
00231 if(m_pos_costheta[i]->GetFunction("gaus"))
00232 {
00233 pos_fitmean[i] = m_pos_costheta[i]->GetFunction("gaus")->GetParameter(1);
00234 pos_fitmeanerr[i] = m_pos_costheta[i]->GetFunction("gaus")->GetParError(1);
00235 pos_fitsigma[i] = m_pos_costheta[i]->GetFunction("gaus")->GetParameter(2);
00236 pos_gain[i] = pos_fitmean[i]/NormalMean;
00237 pos_fitchisq[i] = (m_pos_costheta[i]->GetFunction("gaus")->GetChisquare())/(m_pos_costheta[i]->GetFunction("gaus")->GetNDF());
00238 }
00239 neg_fitentryNo[i] = m_neg_costheta[i]->GetEntries();
00240 if(m_debug) cout << "get results at " << i << " bin with neg_fit entries " << neg_fitentryNo[i] << endl;
00241 if(m_neg_costheta[i]->GetFunction("gaus"))
00242 {
00243 neg_fitmean[i] = m_neg_costheta[i]->GetFunction("gaus")->GetParameter(1);
00244 neg_fitmeanerr[i] = m_neg_costheta[i]->GetFunction("gaus")->GetParError(1);
00245 neg_fitsigma[i] = m_neg_costheta[i]->GetFunction("gaus")->GetParameter(2);
00246 neg_gain[i] = neg_fitmean[i]/NormalMean;
00247 neg_fitchisq[i] = (m_neg_costheta[i]->GetFunction("gaus")->GetChisquare())/(m_neg_costheta[i]->GetFunction("gaus")->GetNDF());
00248 }
00249
00250 if(fitentryNo[i]>100) m_dEdxVsCostheta -> SetBinContent(i+1,fitmean[i]);
00251 if(pos_fitentryNo[i]>100) m_pos_dEdxVsCostheta -> SetBinContent(i+1,pos_fitmean[i]);
00252 if(neg_fitentryNo[i]>100) m_neg_dEdxVsCostheta -> SetBinContent(i+1,neg_fitmean[i]);
00253 }
00254
00255 double dedx1[Size] = {0};
00256 double costheta1[Size] = {0};
00257 cout << "Vec_dedx.size() = " << Vec_dedx.size() << endl;
00258 for(unsigned int i=0;i<Size && i< Vec_dedx.size();i++)
00259 {
00260 dedx1[i] = Vec_dedx[i];
00261 costheta1[i] = Vec_costheta[i];
00262
00263 }
00264
00265 log<<MSG::INFO<<"begin generating root file!!! "<<endreq;
00266 TFile* f = new TFile(m_rootfile.c_str(), "RECREATE");
00267 for(int i=0;i<NumBinCostheta;i++)
00268 {
00269 m_chi[i]->Write();
00270 m_pos_chi[i]->Write();
00271 m_neg_chi[i]->Write();
00272 m_costheta[i]->Write();
00273 m_pos_costheta[i]->Write();
00274 m_neg_costheta[i]->Write();
00275 }
00276 m_dEdxVsCostheta->Write();
00277 m_pos_dEdxVsCostheta->Write();
00278 m_neg_dEdxVsCostheta->Write();
00279
00280 TTree *costhetacalib = new TTree("costhetacalib","costhetacalib");
00281 costhetacalib -> Branch("chientryNo",chientryNo,"chientryNo[80]/D");
00282 costhetacalib -> Branch("chimean",chimean,"chimean[80]/D");
00283 costhetacalib -> Branch("chimeanerr",chimeanerr,"chimeanerr[80]/D");
00284 costhetacalib -> Branch("chisigma",chisigma,"chisigma[80]/D");
00285 costhetacalib -> Branch("chisq",chisq,"chisq[80]/D");
00286 costhetacalib -> Branch("pos_chientryNo",pos_chientryNo,"pos_chientryNo[80]/D");
00287 costhetacalib -> Branch("pos_chimean",pos_chimean,"pos_chimean[80]/D");
00288 costhetacalib -> Branch("pos_chimeanerr",pos_chimeanerr,"pos_chimeanerr[80]/D");
00289 costhetacalib -> Branch("pos_chisigma",pos_chisigma,"pos_chisigma[80]/D");
00290 costhetacalib -> Branch("pos_chisq",pos_chisq,"pos_chisq[80]/D");
00291 costhetacalib -> Branch("neg_chientryNo",neg_chientryNo,"neg_chientryNo[80]/D");
00292 costhetacalib -> Branch("neg_chimean",neg_chimean,"neg_chimean[80]/D");
00293 costhetacalib -> Branch("neg_chimeanerr",neg_chimeanerr,"neg_chimeanerr[80]/D");
00294 costhetacalib -> Branch("neg_chisigma",neg_chisigma,"neg_chisigma[80]/D");
00295 costhetacalib -> Branch("neg_chisq",neg_chisq,"neg_chisq[80]/D");
00296 costhetacalib -> Branch("fitentryNo", fitentryNo, "fitentryNo[80]/D");
00297 costhetacalib -> Branch("fitmean", fitmean, "fitmean[80]/D");
00298 costhetacalib -> Branch("fitmeanerr", fitmeanerr, "fitmeanerr[80]/D");
00299 costhetacalib -> Branch("fitsigma", fitsigma, "fitsigma[80]/D");
00300 costhetacalib -> Branch("costheta", gain, "gain[80]/D");
00301 costhetacalib -> Branch("fitchisq", fitchisq, "fitchisq[80]/D");
00302 costhetacalib -> Branch("pos_fitentryNo", pos_fitentryNo, "pos_fitentryNo[80]/D");
00303 costhetacalib -> Branch("pos_fitmean", pos_fitmean, "pos_fitmean[80]/D");
00304 costhetacalib -> Branch("pos_fitmeanerr", pos_fitmeanerr, "pos_fitmeanerr[80]/D");
00305 costhetacalib -> Branch("pos_fitsigma", pos_fitsigma, "pos_fitsigma[80]/D");
00306 costhetacalib -> Branch("pos_gain", pos_gain, "pos_gain[80]/D");
00307 costhetacalib -> Branch("pos_fitchisq", pos_fitchisq, "pos_fitchisq[80]/D");
00308 costhetacalib -> Branch("neg_fitentryNo", neg_fitentryNo, "neg_fitentryNo[80]/D");
00309 costhetacalib -> Branch("neg_fitmean", neg_fitmean, "neg_fitmean[80]/D");
00310 costhetacalib -> Branch("neg_fitmeanerr", neg_fitmeanerr, "neg_fitmeanerr[80]/D");
00311 costhetacalib -> Branch("neg_fitsigma", neg_fitsigma, "neg_fitsigma[80]/D");
00312 costhetacalib -> Branch("neg_gain", neg_gain, "neg_gain[80]/D");
00313 costhetacalib -> Branch("neg_fitchisq", neg_fitchisq, "neg_fitchisq[80]/D");
00314 costhetacalib -> Branch("cosBin", cosBin, "cosBin[80]/D");
00315 costhetacalib -> Branch("costheta1",costheta1,"costheta1[700000]/D");
00316 costhetacalib -> Branch("dedx1",dedx1,"dedx1[700000]/D");
00317 costhetacalib -> Fill();
00318 costhetacalib -> Write();
00319
00320 TCanvas c1("c1", "canvas", 500, 400);
00321 c1.Print((m_rootfile+".ps[").c_str());
00322 costhetacalib -> Draw("dedx1:costheta1","dedx1>200 && dedx1<1000");
00323 c1.Print((m_rootfile+".ps").c_str());
00324 m_dEdxVsCostheta->Draw();
00325 c1.Print((m_rootfile+".ps").c_str());
00326 m_pos_dEdxVsCostheta->Draw();
00327 c1.Print((m_rootfile+".ps").c_str());
00328 m_neg_dEdxVsCostheta->Draw();
00329 c1.Print((m_rootfile+".ps").c_str());
00330 for(Int_t i=0;i<NumBinCostheta;i++)
00331 {
00332 m_chi[i]->Draw();
00333 c1.Print((m_rootfile+".ps").c_str());
00334 }
00335 for(Int_t i=0;i<NumBinCostheta;i++)
00336 {
00337 m_pos_chi[i]->Draw();
00338 c1.Print((m_rootfile+".ps").c_str());
00339 }
00340 for(Int_t i=0;i<NumBinCostheta;i++)
00341 {
00342 m_neg_chi[i]->Draw();
00343 c1.Print((m_rootfile+".ps").c_str());
00344 }
00345 for(Int_t i=0;i<NumBinCostheta;i++)
00346 {
00347 m_costheta[i]->Draw();
00348 c1.Print((m_rootfile+".ps").c_str());
00349 }
00350 for(Int_t i=0;i<NumBinCostheta;i++)
00351 {
00352 m_pos_costheta[i]->Draw();
00353 c1.Print((m_rootfile+".ps").c_str());
00354 }
00355 for(Int_t i=0;i<NumBinCostheta;i++)
00356 {
00357 m_neg_costheta[i]->Draw();
00358 c1.Print((m_rootfile+".ps").c_str());
00359 }
00360 c1.Print((m_rootfile+".ps]").c_str());
00361 f->Close();
00362
00363 for(Int_t i=0;i<NumBinCostheta;i++)
00364 {
00365 delete m_chi[i];
00366 delete m_pos_chi[i];
00367 delete m_neg_chi[i];
00368 delete m_costheta[i];
00369 delete m_pos_costheta[i];
00370 delete m_neg_costheta[i];
00371 }
00372 delete m_dEdxVsCostheta;
00373 delete m_pos_dEdxVsCostheta;
00374 delete m_neg_dEdxVsCostheta;
00375 }