#include <DedxCalibMomentum.h>
Inheritance diagram for DedxCalibMomentum:
Public Member Functions | |
DedxCalibMomentum (const std::string &name, ISvcLocator *pSvcLocator) | |
~DedxCalibMomentum () | |
void | initializing () |
void | BookHists () |
void | genNtuple () |
void | FillHists () |
void | AnalyseHists () |
void | WriteHists () |
StatusCode | initialize () |
StatusCode | execute () |
StatusCode | finalize () |
Protected Member Functions | |
double | cal_dedx_bitrunc (float truncate, std::vector< double > phlist) |
double | cal_dedx (float truncate, std::vector< double > phlist) |
void | getCurvePar () |
void | set_dEdx (int landau, float dEdx, int trkalg, int runflag, int dedxhit_use, float ptrk, float theta, float pl_rp, int vflag[3], double t0) |
void | ReadRecFileList () |
Protected Attributes | |
IMdcGeomSvc * | geosvc |
IDedxCorrecSvc * | exsvc |
float | truncate |
vector< double > | Curve_Para |
vector< double > | Sigma_Para |
int | vFlag [3] |
double | m_dedx_exp [5] |
double | m_ex_sigma [5] |
double | m_pid_prob [5] |
double | m_chi_ex [5] |
vector< string > | m_recFileVector |
int | ParticleFlag |
int | m_calibflag |
int | m_phShapeFlag |
std::string | m_eventType |
std::string | m_recFileList |
std::string | m_rootfile |
std::string | m_curvefile |
Private Attributes | |
TH1F ** | m_chi |
TH1F ** | m_pos_chi |
TH1F ** | m_neg_chi |
TH1F ** | m_dedx |
TH1F ** | m_pos_dedx |
TH1F ** | m_neg_dedx |
TH1F ** | m_hits |
vector< double > | Vec_dedx |
vector< double > | Vec_ptrk |
Definition at line 12 of file DedxCalibMomentum.h.
DedxCalibMomentum::DedxCalibMomentum | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
DedxCalibMomentum::~DedxCalibMomentum | ( | ) | [inline] |
void DedxCalibMomentum::AnalyseHists | ( | ) | [virtual] |
Implements DedxCalib.
Definition at line 148 of file DedxCalibMomentum.cxx.
References genRecEmupikp::i, Bes_Common::INFO, m_chi, m_dedx, m_neg_chi, m_neg_dedx, m_pos_chi, m_pos_dedx, msgSvc(), and nbins.
00149 { 00150 MsgStream log(msgSvc(), name()); 00151 log<<MSG::INFO<<"DedxCalibMomentum::AnalyseHists()"<<endreq; 00152 00153 gStyle->SetOptFit(1111); 00154 for(int i=0; i<nbins; i++) 00155 { 00156 m_dedx[i]->Fit("gaus", "Q" ); 00157 m_pos_dedx[i]->Fit("gaus", "Q" ); 00158 m_neg_dedx[i]->Fit("gaus", "Q" ); 00159 m_chi[i]->Fit("gaus", "Q" ); 00160 m_pos_chi[i]->Fit("gaus", "Q" ); 00161 m_neg_chi[i]->Fit("gaus", "Q" ); 00162 } 00163 }
void DedxCalibMomentum::BookHists | ( | ) | [virtual] |
Implements DedxCalib.
Definition at line 32 of file DedxCalibMomentum.cxx.
References chihist_max, chihist_min, dedxhist_max, dedxhist_min, hits_max, hits_min, genRecEmupikp::i, Bes_Common::INFO, m_chi, m_dedx, m_hits, m_neg_chi, m_neg_dedx, m_pos_chi, m_pos_dedx, msgSvc(), nbins, DedxCalib::ReadRecFileList(), Vec_dedx, and Vec_ptrk.
00033 { 00034 MsgStream log(msgSvc(), name()); 00035 log<<MSG::INFO<<"DedxCalibMomentum::BookHists()"<<endreq; 00036 00037 ReadRecFileList(); 00038 00039 m_chi = new TH1F*[nbins]; 00040 m_pos_chi = new TH1F*[nbins]; 00041 m_neg_chi = new TH1F*[nbins]; 00042 m_dedx = new TH1F*[nbins]; 00043 m_pos_dedx = new TH1F*[nbins]; 00044 m_neg_dedx = new TH1F*[nbins]; 00045 m_hits = new TH1F*[nbins]; 00046 00047 stringstream hlabel; 00048 for(int i=0;i<nbins;i++) 00049 { 00050 hlabel.str(""); 00051 hlabel<<"chi"<<i; 00052 m_chi[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), nbins, chihist_min, chihist_max); 00053 hlabel.str(""); 00054 hlabel<<"pos_chi"<<i; 00055 m_pos_chi[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), nbins, chihist_min, chihist_max); 00056 hlabel.str(""); 00057 hlabel<<"neg_chi"<<i; 00058 m_neg_chi[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), nbins, chihist_min, chihist_max); 00059 hlabel.str(""); 00060 hlabel<<"dedx"<<i; 00061 m_dedx[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), nbins, dedxhist_min, dedxhist_max); 00062 hlabel.str(""); 00063 hlabel<<"pos_dedx"<<i; 00064 m_pos_dedx[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), nbins, dedxhist_min, dedxhist_max); 00065 hlabel.str(""); 00066 hlabel<<"neg_dedx"<<i; 00067 m_neg_dedx[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), nbins, dedxhist_min, dedxhist_max); 00068 hlabel.str(""); 00069 hlabel<<"hits"<<i; 00070 m_hits[i] = new TH1F(hlabel.str().c_str(), hlabel.str().c_str(), nbins, hits_min, hits_max); 00071 } 00072 00073 Vec_dedx.clear(); 00074 Vec_ptrk.clear(); 00075 }
double DedxCalib::cal_dedx | ( | float | truncate, | |
std::vector< double > | phlist | |||
) | [protected, inherited] |
Definition at line 127 of file DedxCalib.cxx.
References genRecEmupikp::i.
00128 { 00129 sort(phlist.begin(),phlist.end()); 00130 int smpl = (int)(phlist.size()*(truncate+0.05)); 00131 int min_cut = 0; 00132 double qSum = 0; 00133 unsigned i = 0; 00134 for(vector<double>::iterator ql= phlist.begin();ql!=phlist.end();ql++) 00135 { 00136 i++; 00137 if(i<= smpl && i>=min_cut ) qSum += (*ql); 00138 } 00139 double trunc=-99; 00140 int usedhit = smpl-min_cut+1; 00141 if(usedhit>0) trunc=qSum/usedhit; 00142 00143 return trunc; 00144 }
double DedxCalib::cal_dedx_bitrunc | ( | float | truncate, | |
std::vector< double > | phlist | |||
) | [protected, inherited] |
Definition at line 108 of file DedxCalib.cxx.
References genRecEmupikp::i.
Referenced by DedxCalibLayerGain::AnalyseHists(), DedxCalibRunByRun::FillHists(), FillHists(), and DedxCalibCostheta::FillHists().
00109 { 00110 sort(phlist.begin(),phlist.end()); 00111 int smpl = (int)(phlist.size()*(truncate+0.05)); 00112 int min_cut = (int)( phlist.size()*0.05 + 0.5 ); 00113 double qSum = 0; 00114 unsigned i = 0; 00115 for(vector<double>::iterator ql= phlist.begin();ql!=phlist.end();ql++) 00116 { 00117 i++; 00118 if(i<= smpl && i>=min_cut ) qSum += (*ql); 00119 } 00120 double trunc=-99; 00121 int usedhit = smpl-min_cut+1; 00122 if(usedhit>0) trunc=qSum/usedhit; 00123 00124 return trunc; 00125 }
StatusCode DedxCalib::execute | ( | ) | [inherited] |
Definition at line 56 of file DedxCalib.cxx.
References DedxCalib::AnalyseHists(), DedxCalib::FillHists(), DedxCalib::genNtuple(), Bes_Common::INFO, msgSvc(), and DedxCalib::WriteHists().
00057 { 00058 MsgStream log(msgSvc(), name()); 00059 log << MSG::INFO << "DedxCalib execute()" << endreq; 00060 00061 genNtuple(); 00062 FillHists(); 00063 AnalyseHists(); 00064 WriteHists(); 00065 00066 return StatusCode::SUCCESS; 00067 }
void DedxCalibMomentum::FillHists | ( | ) | [virtual] |
Implements DedxCalib.
Definition at line 77 of file DedxCalibMomentum.cxx.
References bin_step, DedxCalib::cal_dedx_bitrunc(), DedxCalib::exsvc, genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, m_chi, DedxCalib::m_chi_ex, m_dedx, m_hits, m_neg_chi, m_neg_dedx, m_pos_chi, m_pos_dedx, DedxCalib::m_recFileVector, msgSvc(), DedxCalib::ParticleFlag, pMax, pMin, DedxCalib::set_dEdx(), IDedxCorrecSvc::StandardHitCorrec(), IDedxCorrecSvc::StandardTrackCorrec(), deljobs::string, DedxCalib::truncate, Vec_dedx, Vec_ptrk, and DedxCalib::vFlag.
00078 { 00079 MsgStream log(msgSvc(), name()); 00080 log<<MSG::INFO<<"DedxCalibMomentum::FillHists()"<<endreq; 00081 00082 TFile* f; 00083 TTree* n103; 00084 string runlist; 00085 00086 int ndedxhit=0; 00087 double dEdx[100]={0},pathlength[100]={0},wid[100]={0},layid[100]={0},dd_in[100]={0},eangle[100]={0},zhit[100]={0}; 00088 double dedx=0; 00089 float runNO=0,runFlag=0,costheta=0,tes=0,charge=0,recalg=0,ptrk=0,chidedx=0; 00090 int usedhit=0; 00091 vector<double> phlist; 00092 cout<<"m_recFileVector.size()= "<<m_recFileVector.size()<<endl; 00093 for(int i=0; i<m_recFileVector.size(); i++) 00094 { 00095 runlist = m_recFileVector[i]; 00096 f = new TFile(runlist.c_str()); 00097 n103 = (TTree*)f->Get("n103"); 00098 n103-> SetBranchAddress("ndedxhit", &ndedxhit); 00099 n103-> SetBranchAddress("dEdx_hit",dEdx); 00100 n103-> SetBranchAddress("pathlength_hit",pathlength); 00101 n103-> SetBranchAddress("wid_hit",wid); 00102 n103-> SetBranchAddress("layid_hit",layid); 00103 n103-> SetBranchAddress("dd_in_hit",dd_in); 00104 n103-> SetBranchAddress("eangle_hit",eangle); 00105 n103-> SetBranchAddress("zhit_hit",zhit); 00106 n103-> SetBranchAddress("runNO",&runNO); 00107 n103-> SetBranchAddress("runFlag",&runFlag); 00108 n103-> SetBranchAddress("costheta",&costheta); 00109 n103-> SetBranchAddress("t0",&tes); 00110 n103-> SetBranchAddress("charge",&charge); 00111 n103-> SetBranchAddress("recalg",&recalg); 00112 n103-> SetBranchAddress("ndedxhit",&ndedxhit); 00113 n103-> SetBranchAddress("ptrk",&ptrk); 00114 n103-> SetBranchAddress("chidedx_e",&chidedx); 00115 for(int j=0;j<n103->GetEntries();j++) 00116 { 00117 phlist.clear(); 00118 n103->GetEntry(j); 00119 if(ptrk>pMax || ptrk<pMin) continue; 00120 if(tes>1400) continue; 00121 for(int k=0;k<ndedxhit;k++) 00122 { 00123 dEdx[k] = exsvc->StandardHitCorrec(0,runFlag,2,runNO,pathlength[k],wid[k],layid[k],dEdx[k],dd_in[k],eangle[k],costheta); 00124 phlist.push_back(dEdx[k]); 00125 } 00126 dedx = cal_dedx_bitrunc(truncate, phlist); 00127 dedx = exsvc->StandardTrackCorrec(0, runFlag, 2, runNO, dedx, costheta, tes); 00128 int ipBin = (Int_t)floor((ptrk-pMin)/bin_step); 00129 m_dedx[ipBin]->Fill(dedx); 00130 if(charge>0) m_pos_dedx[ipBin]->Fill(dedx); 00131 if(charge<0) m_neg_dedx[ipBin]->Fill(dedx); 00132 00133 usedhit = ndedxhit*truncate; 00134 set_dEdx(1,dedx,recalg,runFlag,usedhit,ptrk,acos(costheta),1.5,vFlag,tes); 00135 double chi = m_chi_ex[ParticleFlag]; 00136 //cout<<"chidedx= "<<chidedx<<" particleType= "<<ParticleFlag<<" new chi= "<<chi<<endl; 00137 m_chi[ipBin]->Fill(chi); 00138 if(charge>0) m_pos_chi[ipBin]->Fill(chi); 00139 if(charge<0) m_neg_chi[ipBin]->Fill(chi); 00140 m_hits[ipBin]->Fill(usedhit); 00141 00142 Vec_dedx.push_back(dedx); 00143 Vec_ptrk.push_back(ptrk); 00144 } 00145 } 00146 }
StatusCode DedxCalib::finalize | ( | ) | [inherited] |
Definition at line 69 of file DedxCalib.cxx.
References Bes_Common::INFO, and msgSvc().
00070 { 00071 MsgStream log(msgSvc(), name()); 00072 log << MSG::INFO << "DedxCalib finalize()" << endreq; 00073 00074 return StatusCode::SUCCESS; 00075 }
void DedxCalibMomentum::genNtuple | ( | ) | [inline, virtual] |
void DedxCalib::getCurvePar | ( | ) | [protected, inherited] |
Definition at line 146 of file DedxCalib.cxx.
References DedxCalib::Curve_Para, genRecEmupikp::i, DedxCalib::m_curvefile, Sigma, DedxCalib::Sigma_Para, and DedxCalib::vFlag.
Referenced by DedxCalib::initialize().
00148 { 00149 if(m_curvefile=="no rootfile") 00150 { 00151 cout<<"no curve file! can not calculate chi!!! "<<endl; 00152 return; 00153 } 00154 00155 double Curve[100]; 00156 double Sigma[100]; 00157 int CurveSize,SigmaSize; 00158 TFile* f = new TFile(m_curvefile.c_str()); 00159 TTree *curve = (TTree*) f->Get("curve"); 00160 TTree *sigma = (TTree*) f->Get("sigma"); 00161 curve->SetBranchAddress("CurveSize",&CurveSize); 00162 curve->SetBranchAddress("curve",Curve); 00163 sigma->SetBranchAddress("SigmaSize",&SigmaSize); 00164 sigma->SetBranchAddress("sigma",Sigma); 00165 curve->GetEntry(0); 00166 sigma->GetEntry(0); 00167 00168 for(int i=0; i<CurveSize; i++) // get the dedx curve parameters 00169 { 00170 cout<<Curve[i]<<endl; 00171 if(i==0) vFlag[0] = (int) Curve[i]; //first element is dedx curve version 00172 else Curve_Para.push_back(Curve[i]); //dedx curve parameters 00173 } 00174 for(int i=0; i<SigmaSize; i++) 00175 { 00176 cout<<Sigma[i]<<endl; 00177 if(i==0) vFlag[1] = (int) Sigma[i]; //dedx sigma version: 2: psip; 3:jpsi 00178 else Sigma_Para.push_back(Sigma[i]); //dedx sigma parameters 00179 } 00180 //if(runflag>0) vFlag[2]=0; 00181 //else vFlag[2]=1; 00182 }
StatusCode DedxCalib::initialize | ( | ) | [inherited] |
Definition at line 24 of file DedxCalib.cxx.
References DedxCalib::BookHists(), calibUtil::ERROR, DedxCalib::exsvc, DedxCalib::geosvc, DedxCalib::getCurvePar(), Bes_Common::INFO, DedxCalib::initializing(), DedxCalib::m_calibflag, msgSvc(), and IDedxCorrecSvc::set_flag().
00025 { 00026 MsgStream log(msgSvc(), name()); 00027 log << MSG::INFO << "DedxCalib initialze()" << endreq; 00028 00029 StatusCode gesc = service("MdcGeomSvc", geosvc); 00030 if (gesc == StatusCode::SUCCESS) 00031 { 00032 log << MSG::INFO <<"MdcGeomSvc is running"<<endreq; 00033 } 00034 else 00035 { 00036 log << MSG::ERROR <<"MdcGeomSvc is failed"<<endreq; 00037 return StatusCode::SUCCESS; 00038 } 00039 00040 StatusCode scex = service("DedxCorrecSvc", exsvc); 00041 if (scex == StatusCode::SUCCESS) { 00042 log << MSG::INFO <<"Hi, DedxCorrectSvc is running"<<endl; 00043 } else { 00044 log << MSG::ERROR <<"DedxCorrectSvc is failed"<<endl; 00045 return StatusCode::SUCCESS; 00046 } 00047 exsvc->set_flag( m_calibflag ); 00048 00049 initializing(); 00050 BookHists(); 00051 getCurvePar(); 00052 00053 return StatusCode::SUCCESS; 00054 }
void DedxCalibMomentum::initializing | ( | ) | [inline, virtual] |
void DedxCalib::ReadRecFileList | ( | ) | [protected, inherited] |
Definition at line 89 of file DedxCalib.cxx.
References Bes_Common::INFO, DedxCalib::m_recFileList, DedxCalib::m_recFileVector, msgSvc(), and deljobs::string.
Referenced by DedxCalibWireGain::BookHists(), DedxCalibRunByRun::BookHists(), BookHists(), DedxCalibLayerGain::BookHists(), DedxCalibEAng::BookHists(), DedxCalibDocaEAng::BookHists(), and DedxCalibCostheta::BookHists().
00090 { 00091 00092 MsgStream log(msgSvc(), name()); 00093 log<<MSG::INFO<<"DedxCalib::ReadRecFileList()"<<endreq; 00094 00095 ifstream filea(m_recFileList.c_str(),ifstream::in); 00096 cout<<m_recFileList.c_str()<<endl; 00097 00098 string runlist; 00099 filea>>runlist; 00100 do 00101 { 00102 m_recFileVector.push_back(runlist); 00103 cout<<runlist.c_str()<<endl; 00104 filea>>runlist; 00105 }while(filea); 00106 }
void DedxCalib::set_dEdx | ( | int | landau, | |
float | dEdx, | |||
int | trkalg, | |||
int | runflag, | |||
int | dedxhit_use, | |||
float | ptrk, | |||
float | theta, | |||
float | pl_rp, | |||
int | vflag[3], | |||
double | t0 | |||
) | [protected, inherited] |
Definition at line 184 of file DedxCalib.cxx.
References DedxCalib::Curve_Para, dedx_pid_exp(), dedx_pid_exp_old(), DedxCalib::m_chi_ex, DedxCalib::m_dedx_exp, DedxCalib::m_ex_sigma, DedxCalib::m_pid_prob, DedxCalib::Sigma_Para, and DedxCalib::vFlag.
Referenced by FillHists(), and DedxCalibCostheta::FillHists().
00185 { 00186 //landau: 1:landau distribution; 0:gaus distribution 00187 //pl_rp: 1.5, not know what 00188 //getCurvePar(runflag); 00189 if(runflag>0) vFlag[2]=0; 00190 else vFlag[2]=1; 00191 00192 //some old data with old methods 00193 if(runflag ==1 || runflag ==2 ) 00194 dedx_pid_exp_old( landau, runflag, (float)dEdx, (int)dedxhit_use, 00195 (float)ptrk, (float)theta, (float)t0,(float)pl_rp, 00196 m_dedx_exp, m_ex_sigma, m_pid_prob, m_chi_ex); 00197 //for 2009 psip data and after 00198 else 00199 dedx_pid_exp( vflag, (float)dEdx, trkalg,(int)dedxhit_use, 00200 (float)ptrk, (float)theta, (float)t0,(float)pl_rp, 00201 m_dedx_exp, m_ex_sigma, m_pid_prob, m_chi_ex, Curve_Para, Sigma_Para); 00202 }
void DedxCalibMomentum::WriteHists | ( | ) | [virtual] |
Implements DedxCalib.
Definition at line 165 of file DedxCalibMomentum.cxx.
References bin_step, EvtCyclic3::c_str(), genRecEmupikp::i, Bes_Common::INFO, m_chi, m_dedx, m_hits, m_neg_chi, m_neg_dedx, m_pos_chi, m_pos_dedx, DedxCalib::m_rootfile, msgSvc(), nbins, pMin, Size, Vec_dedx, and Vec_ptrk.
00166 { 00167 MsgStream log(msgSvc(), name()); 00168 log<<MSG::INFO<<"DedxCalibMomentum::WriteHists()"<< endreq; 00169 00170 double chientryNo[nbins]={0},chimean[nbins]={0},chimeanerr[nbins]={0},chisigma[nbins]={0},chisq[nbins]={0}; 00171 double pos_chientryNo[nbins]={0},pos_chimean[nbins]={0},pos_chimeanerr[nbins]={0},pos_chisigma[nbins]={0},pos_chisq[nbins]={0}; 00172 double neg_chientryNo[nbins]={0},neg_chimean[nbins]={0},neg_chimeanerr[nbins]={0},neg_chisigma[nbins]={0},neg_chisq[nbins]={0}; 00173 double fitentryNo[nbins]={0},fitmean[nbins]={0},fitmeanerr[nbins]={0},fitsigma[nbins]={0},fitchisq[nbins]={0}; 00174 double pos_fitentryNo[nbins]={0},pos_fitmean[nbins]={0},pos_fitmeanerr[nbins]={0},pos_fitsigma[nbins]={0},pos_fitchisq[nbins]={0}; 00175 double neg_fitentryNo[nbins]={0},neg_fitmean[nbins]={0},neg_fitmeanerr[nbins]={0},neg_fitsigma[nbins]={0},neg_fitchisq[nbins]={0}; 00176 double hits_mean[nbins]={0},hits_sigma[nbins]={0}; 00177 double pBin[nbins]={0}; 00178 00179 for(int i=0;i<nbins;i++) 00180 { 00181 pBin[i] = (i+0.5)*bin_step + pMin; 00182 00183 chientryNo[i] = m_chi[i]->GetEntries(); 00184 if(chientryNo[i]>100) 00185 { 00186 chimean[i] = m_chi[i]->GetFunction("gaus")->GetParameter(1); 00187 chimeanerr[i] = m_chi[i]->GetFunction("gaus")->GetParError(1); 00188 chisigma[i] = m_chi[i]->GetFunction("gaus")->GetParameter(2); 00189 chisq[i] = (m_chi[i]->GetFunction("gaus")->GetChisquare())/(m_chi[i]->GetFunction("gaus")->GetNDF()); 00190 } 00191 pos_chientryNo[i] = m_pos_chi[i]->GetEntries(); 00192 if(pos_chientryNo[i]>100) 00193 { 00194 pos_chimean[i] = m_pos_chi[i]->GetFunction("gaus")->GetParameter(1); 00195 pos_chimeanerr[i] = m_pos_chi[i]->GetFunction("gaus")->GetParError(1); 00196 pos_chisigma[i] = m_pos_chi[i]->GetFunction("gaus")->GetParameter(2); 00197 pos_chisq[i] = (m_pos_chi[i]->GetFunction("gaus")->GetChisquare())/(m_pos_chi[i]->GetFunction("gaus")->GetNDF()); 00198 } 00199 neg_chientryNo[i] = m_neg_chi[i]->GetEntries(); 00200 if(neg_chientryNo[i]>100) 00201 { 00202 neg_chimean[i] = m_neg_chi[i]->GetFunction("gaus")->GetParameter(1); 00203 neg_chimeanerr[i] = m_neg_chi[i]->GetFunction("gaus")->GetParError(1); 00204 neg_chisigma[i] = m_neg_chi[i]->GetFunction("gaus")->GetParameter(2); 00205 neg_chisq[i] = (m_neg_chi[i]->GetFunction("gaus")->GetChisquare())/(m_neg_chi[i]->GetFunction("gaus")->GetNDF()); 00206 } 00207 00208 fitentryNo[i] = m_dedx[i]->GetEntries(); 00209 if(fitentryNo[i]>100) 00210 { 00211 fitmean[i] = m_dedx[i]->GetFunction("gaus")->GetParameter(1); 00212 fitmeanerr[i] = m_dedx[i]->GetFunction("gaus")->GetParError(1); 00213 fitsigma[i] = m_dedx[i]->GetFunction("gaus")->GetParameter(2); 00214 fitchisq[i] = (m_dedx[i]->GetFunction("gaus")->GetChisquare())/(m_dedx[i]->GetFunction("gaus")->GetNDF()); 00215 } 00216 pos_fitentryNo[i] = m_pos_dedx[i]->GetEntries(); 00217 if(pos_fitentryNo[i]>100) 00218 { 00219 pos_fitmean[i] = m_pos_dedx[i]->GetFunction("gaus")->GetParameter(1); 00220 pos_fitmeanerr[i] = m_pos_dedx[i]->GetFunction("gaus")->GetParError(1); 00221 pos_fitsigma[i] = m_pos_dedx[i]->GetFunction("gaus")->GetParameter(2); 00222 pos_fitchisq[i] = (m_pos_dedx[i]->GetFunction("gaus")->GetChisquare())/(m_pos_dedx[i]->GetFunction("gaus")->GetNDF()); 00223 } 00224 neg_fitentryNo[i] = m_neg_dedx[i]->GetEntries(); 00225 if(neg_fitentryNo[i]>100) 00226 { 00227 neg_fitmean[i] = m_neg_dedx[i]->GetFunction("gaus")->GetParameter(1); 00228 neg_fitmeanerr[i] = m_neg_dedx[i]->GetFunction("gaus")->GetParError(1); 00229 neg_fitsigma[i] = m_neg_dedx[i]->GetFunction("gaus")->GetParameter(2); 00230 neg_fitchisq[i] = (m_neg_dedx[i]->GetFunction("gaus")->GetChisquare())/(m_neg_dedx[i]->GetFunction("gaus")->GetNDF()); 00231 } 00232 00233 hits_mean[i] = m_hits[i]->GetMean(); 00234 hits_sigma[i] = m_hits[i]->GetRMS(); 00235 } 00236 00237 double dedx1[Size] = {0}; 00238 double ptrk1[Size] = {0}; 00239 cout << "Vec_dedx.size() = " << Vec_dedx.size() << endl; 00240 for(int i=0;i<Size && i< Vec_dedx.size();i++) 00241 { 00242 dedx1[i] = Vec_dedx[i]; 00243 ptrk1[i] = Vec_ptrk[i]; 00244 //cout<<"i= "<<i<<"dedx= "<<dedx1[i]<<" ptrk= "<<ptrk1[i]<<endl; 00245 } 00246 00247 log<<MSG::INFO<<"begin generating root file!!! "<<endreq; 00248 TFile* f = new TFile(m_rootfile.c_str(), "RECREATE"); 00249 for(int i=0;i<nbins;i++) 00250 { 00251 m_chi[i]->Write(); 00252 m_pos_chi[i]->Write(); 00253 m_neg_chi[i]->Write(); 00254 m_dedx[i]->Write(); 00255 m_pos_dedx[i]->Write(); 00256 m_neg_dedx[i]->Write(); 00257 m_hits[i]->Write(); 00258 } 00259 00260 TTree* momInfor = new TTree("momInfor","momInfor"); 00261 momInfor->Branch("chientryNo",chientryNo,"chientryNo[50]/D"); 00262 momInfor->Branch("chimean",chimean,"chimean[50]/D"); 00263 momInfor->Branch("chimeanerr",chimeanerr,"chimeanerr[50]/D"); 00264 momInfor->Branch("chisigma",chisigma,"chisigma[50]/D"); 00265 momInfor->Branch("chisq",chisq,"chisq[50]/D"); 00266 momInfor->Branch("pos_chientryNo",pos_chientryNo,"pos_chientryNo[50]/D"); 00267 momInfor->Branch("pos_chimean",pos_chimean,"pos_chimean[50]/D"); 00268 momInfor->Branch("pos_chimeanerr",pos_chimeanerr,"pos_chimeanerr[50]/D"); 00269 momInfor->Branch("pos_chisigma",pos_chisigma,"pos_chisigma[50]/D"); 00270 momInfor->Branch("pos_chisq",pos_chisq,"pos_chisq[50]/D"); 00271 momInfor->Branch("neg_chientryNo",neg_chientryNo,"neg_chientryNo[50]/D"); 00272 momInfor->Branch("neg_chimean",neg_chimean,"neg_chimean[50]/D"); 00273 momInfor->Branch("neg_chimeanerr",neg_chimeanerr,"neg_chimeanerr[50]/D"); 00274 momInfor->Branch("neg_chisigma",neg_chisigma,"neg_chisigma[50]/D"); 00275 momInfor->Branch("neg_chisq",neg_chisq,"neg_chisq[50]/D"); 00276 momInfor->Branch("fitentryNo",fitentryNo,"fitentryNo[50]/D"); 00277 momInfor->Branch("fitmean",fitmean,"fitmean[50]/D"); 00278 momInfor->Branch("fitmeanerr",fitmeanerr,"fitmeanerr[50]/D"); 00279 momInfor->Branch("fitsigma",fitsigma,"fitsigma[50]/D"); 00280 momInfor->Branch("fitchisq",fitchisq,"fitchisq[50]/D"); 00281 momInfor->Branch("pos_fitentryNo",pos_fitentryNo,"pos_fitentryNo[50]/D"); 00282 momInfor->Branch("pos_fitmean",pos_fitmean,"pos_fitmean[50]/D"); 00283 momInfor->Branch("pos_fitmeanerr",pos_fitmeanerr,"pos_fitmeanerr[50]/D"); 00284 momInfor->Branch("pos_fitsigma",pos_fitsigma,"pos_fitsigma[50]/D"); 00285 momInfor->Branch("pos_fitchisq",pos_fitchisq,"pos_fitchisq[50]/D"); 00286 momInfor->Branch("neg_fitentryNo",neg_fitentryNo,"neg_fitentryNo[50]/D"); 00287 momInfor->Branch("neg_fitmean",neg_fitmean,"neg_fitmean[50]/D"); 00288 momInfor->Branch("neg_fitmeanerr",neg_fitmeanerr,"neg_fitmeanerr[50]/D"); 00289 momInfor->Branch("neg_fitsigma",neg_fitsigma,"neg_fitsigma[50]/D"); 00290 momInfor->Branch("neg_fitchisq",neg_fitchisq,"neg_fitchisq[50]/D"); 00291 momInfor->Branch("hits_mean",hits_mean,"hits_mean[50]/D"); 00292 momInfor->Branch("hits_sigma",hits_sigma,"hits_sigma[50]/D"); 00293 momInfor->Branch("pBin",pBin,"pBin[50]/D"); 00294 momInfor-> Branch("ptrk1",ptrk1,"ptrk1[700000]/D"); 00295 momInfor-> Branch("dedx1",dedx1,"dedx1[700000]/D"); 00296 momInfor->Fill(); 00297 momInfor->Write(); 00298 00299 TCanvas c1("c1", "canvas", 500, 400); 00300 c1.Print((m_rootfile+".ps[").c_str()); 00301 momInfor -> Draw("dedx1:ptrk1","dedx1>200 && dedx1<1200"); 00302 c1.Print((m_rootfile+".ps").c_str()); 00303 for(Int_t i=0;i<nbins;i++) 00304 { 00305 m_chi[i]->Draw(); 00306 c1.Print((m_rootfile+".ps").c_str()); 00307 } 00308 for(Int_t i=0;i<nbins;i++) 00309 { 00310 m_pos_chi[i]->Draw(); 00311 c1.Print((m_rootfile+".ps").c_str()); 00312 } 00313 for(Int_t i=0;i<nbins;i++) 00314 { 00315 m_neg_chi[i]->Draw(); 00316 c1.Print((m_rootfile+".ps").c_str()); 00317 } 00318 for(Int_t i=0;i<nbins;i++) 00319 { 00320 m_dedx[i]->Draw(); 00321 c1.Print((m_rootfile+".ps").c_str()); 00322 } 00323 for(Int_t i=0;i<nbins;i++) 00324 { 00325 m_pos_dedx[i]->Draw(); 00326 c1.Print((m_rootfile+".ps").c_str()); 00327 } 00328 for(Int_t i=0;i<nbins;i++) 00329 { 00330 m_neg_dedx[i]->Draw(); 00331 c1.Print((m_rootfile+".ps").c_str()); 00332 } 00333 c1.Print((m_rootfile+".ps]").c_str()); 00334 f->Close(); 00335 00336 for(int i=0;i<nbins;i++) 00337 { 00338 delete m_chi[i]; 00339 delete m_pos_chi[i]; 00340 delete m_neg_chi[i]; 00341 delete m_dedx[i]; 00342 delete m_pos_dedx[i]; 00343 delete m_neg_dedx[i]; 00344 delete m_hits[i]; 00345 } 00346 }
vector<double> DedxCalib::Curve_Para [protected, inherited] |
Definition at line 39 of file DedxCalib.h.
Referenced by DedxCalib::getCurvePar(), and DedxCalib::set_dEdx().
IDedxCorrecSvc* DedxCalib::exsvc [protected, inherited] |
Definition at line 30 of file DedxCalib.h.
Referenced by DedxCalibWireGain::FillHists(), DedxCalibRunByRun::FillHists(), FillHists(), DedxCalibLayerGain::FillHists(), DedxCalibEAng::FillHists(), DedxCalibDocaEAng::FillHists(), DedxCalibCostheta::FillHists(), and DedxCalib::initialize().
IMdcGeomSvc* DedxCalib::geosvc [protected, inherited] |
Definition at line 29 of file DedxCalib.h.
Referenced by DedxCalibEvent::genNtuple(), and DedxCalib::initialize().
int DedxCalib::m_calibflag [protected, inherited] |
Definition at line 51 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), and DedxCalib::initialize().
TH1F** DedxCalibMomentum::m_chi [private] |
Definition at line 25 of file DedxCalibMomentum.h.
Referenced by AnalyseHists(), BookHists(), FillHists(), and WriteHists().
double DedxCalib::m_chi_ex[5] [protected, inherited] |
Definition at line 46 of file DedxCalib.h.
Referenced by FillHists(), DedxCalibCostheta::FillHists(), and DedxCalib::set_dEdx().
std::string DedxCalib::m_curvefile [protected, inherited] |
Definition at line 56 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), and DedxCalib::getCurvePar().
TH1F** DedxCalibMomentum::m_dedx [private] |
Definition at line 28 of file DedxCalibMomentum.h.
Referenced by AnalyseHists(), BookHists(), FillHists(), and WriteHists().
double DedxCalib::m_dedx_exp[5] [protected, inherited] |
std::string DedxCalib::m_eventType [protected, inherited] |
Definition at line 53 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), and DedxCalibEvent::genNtuple().
double DedxCalib::m_ex_sigma[5] [protected, inherited] |
TH1F** DedxCalibMomentum::m_hits [private] |
Definition at line 31 of file DedxCalibMomentum.h.
Referenced by BookHists(), FillHists(), and WriteHists().
TH1F** DedxCalibMomentum::m_neg_chi [private] |
Definition at line 27 of file DedxCalibMomentum.h.
Referenced by AnalyseHists(), BookHists(), FillHists(), and WriteHists().
TH1F** DedxCalibMomentum::m_neg_dedx [private] |
Definition at line 30 of file DedxCalibMomentum.h.
Referenced by AnalyseHists(), BookHists(), FillHists(), and WriteHists().
int DedxCalib::m_phShapeFlag [protected, inherited] |
Definition at line 52 of file DedxCalib.h.
Referenced by DedxCalibWireGain::AnalyseHists(), DedxCalibLayerGain::AnalyseHists(), DedxCalibEAng::AnalyseHists(), DedxCalibDocaEAng::AnalyseHists(), DedxCalib::DedxCalib(), DedxCalibWireGain::WriteHists(), DedxCalibLayerGain::WriteHists(), DedxCalibEAng::WriteHists(), and DedxCalibDocaEAng::WriteHists().
double DedxCalib::m_pid_prob[5] [protected, inherited] |
TH1F** DedxCalibMomentum::m_pos_chi [private] |
Definition at line 26 of file DedxCalibMomentum.h.
Referenced by AnalyseHists(), BookHists(), FillHists(), and WriteHists().
TH1F** DedxCalibMomentum::m_pos_dedx [private] |
Definition at line 29 of file DedxCalibMomentum.h.
Referenced by AnalyseHists(), BookHists(), FillHists(), and WriteHists().
std::string DedxCalib::m_recFileList [protected, inherited] |
Definition at line 54 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), and DedxCalib::ReadRecFileList().
vector<string> DedxCalib::m_recFileVector [protected, inherited] |
Definition at line 48 of file DedxCalib.h.
Referenced by DedxCalibRunByRun::BookHists(), DedxCalibWireGain::FillHists(), DedxCalibRunByRun::FillHists(), FillHists(), DedxCalibLayerGain::FillHists(), DedxCalibEAng::FillHists(), DedxCalibDocaEAng::FillHists(), DedxCalibCostheta::FillHists(), and DedxCalib::ReadRecFileList().
std::string DedxCalib::m_rootfile [protected, inherited] |
Definition at line 55 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), DedxCalibWireGain::WriteHists(), DedxCalibRunByRun::WriteHists(), WriteHists(), DedxCalibLayerGain::WriteHists(), DedxCalibEAng::WriteHists(), DedxCalibDocaEAng::WriteHists(), and DedxCalibCostheta::WriteHists().
int DedxCalib::ParticleFlag [protected, inherited] |
Definition at line 50 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), FillHists(), DedxCalibCostheta::FillHists(), and DedxCalibEvent::genNtuple().
vector<double> DedxCalib::Sigma_Para [protected, inherited] |
Definition at line 40 of file DedxCalib.h.
Referenced by DedxCalib::getCurvePar(), and DedxCalib::set_dEdx().
float DedxCalib::truncate [protected, inherited] |
Definition at line 33 of file DedxCalib.h.
Referenced by DedxCalibLayerGain::AnalyseHists(), DedxCalib::DedxCalib(), DedxCalibRunByRun::FillHists(), FillHists(), and DedxCalibCostheta::FillHists().
vector<double> DedxCalibMomentum::Vec_dedx [private] |
Definition at line 33 of file DedxCalibMomentum.h.
Referenced by BookHists(), FillHists(), and WriteHists().
vector<double> DedxCalibMomentum::Vec_ptrk [private] |
Definition at line 34 of file DedxCalibMomentum.h.
Referenced by BookHists(), FillHists(), and WriteHists().
int DedxCalib::vFlag[3] [protected, inherited] |
Definition at line 41 of file DedxCalib.h.
Referenced by FillHists(), DedxCalibCostheta::FillHists(), DedxCalib::getCurvePar(), and DedxCalib::set_dEdx().