#include <DedxCalibEvent.h>
Inheritance diagram for DedxCalibEvent:
Public Member Functions | |
DedxCalibEvent (const std::string &name, ISvcLocator *pSvcLocator) | |
~DedxCalibEvent () | |
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 | |
NTuple::Tuple * | m_nt1 |
NTuple::Item< float > | m_ptrk |
NTuple::Item< float > | m_ptrk_t |
NTuple::Item< float > | m_costheta |
NTuple::Item< float > | m_sintheta |
NTuple::Item< float > | m_charge |
NTuple::Item< float > | m_runNO |
NTuple::Item< float > | m_runFlag |
NTuple::Item< float > | m_evtNO |
NTuple::Item< float > | m_t0 |
NTuple::Item< float > | m_trackId |
NTuple::Item< float > | m_poca_x |
NTuple::Item< float > | m_poca_y |
NTuple::Item< float > | m_poca_z |
NTuple::Item< float > | m_recalg |
NTuple::Item< float > | m_nhit |
NTuple::Item< float > | m_nhits |
NTuple::Item< float > | m_usedhit |
NTuple::Item< long > | m_nphlisthit |
NTuple::Array< double > | m_dEdx_hit |
NTuple::Array< double > | m_pathlength_hit |
NTuple::Array< double > | m_wid_hit |
NTuple::Array< double > | m_layid_hit |
NTuple::Array< double > | m_dd_in_hit |
NTuple::Array< double > | m_eangle_hit |
NTuple::Array< double > | m_zhit_hit |
NTuple::Item< float > | m_dEdx_meas_hit |
NTuple::Item< float > | m_dEdx_meas |
NTuple::Item< float > | m_dEdx_meas_esat |
NTuple::Item< float > | m_dEdx_meas_norun |
NTuple::Array< float > | m_probpid |
NTuple::Array< float > | m_expectid |
NTuple::Array< float > | m_sigmaid |
NTuple::Item< float > | m_parttype |
NTuple::Item< float > | m_chidedxe |
NTuple::Item< float > | m_chidedxmu |
NTuple::Item< float > | m_chidedxpi |
NTuple::Item< float > | m_chidedxk |
NTuple::Item< float > | m_chidedxp |
NTuple::Tuple * | m_nt2 |
NTuple::Item< float > | m_charge1 |
NTuple::Item< double > | m_phraw |
NTuple::Item< double > | m_exraw |
NTuple::Item< float > | m_wire |
NTuple::Item< float > | m_localwid |
NTuple::Item< float > | m_runNO1 |
NTuple::Item< float > | m_runFlag1 |
NTuple::Item< float > | m_doca_in |
NTuple::Item< float > | m_doca_ex |
NTuple::Item< float > | m_driftdist |
NTuple::Item< float > | m_eangle |
NTuple::Item< float > | m_zhit |
NTuple::Item< float > | m_costheta1 |
NTuple::Item< float > | m_pathL |
NTuple::Item< float > | m_layer |
NTuple::Item< float > | m_ptrk1 |
NTuple::Item< float > | m_ptrk_hit |
NTuple::Item< float > | m_t01 |
NTuple::Item< float > | m_tdc_raw |
NTuple::Item< float > | m_driftT |
NTuple::Item< float > | m_trackId1 |
Definition at line 8 of file DedxCalibEvent.h.
DedxCalibEvent::DedxCalibEvent | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
DedxCalibEvent::~DedxCalibEvent | ( | ) | [inline] |
void DedxCalibEvent::AnalyseHists | ( | ) | [inline, virtual] |
void DedxCalibEvent::BookHists | ( | ) | [inline, virtual] |
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(), DedxCalibMomentum::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 DedxCalibEvent::FillHists | ( | ) | [inline, virtual] |
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 DedxCalibEvent::genNtuple | ( | ) | [virtual] |
Implements DedxCalib.
Definition at line 120 of file DedxCalibEvent.cxx.
References abs, cos(), DstMdcTrack::err(), calibUtil::ERROR, Bes_Common::FATAL, DedxCalib::geosvc, RecMdcKalTrack::getFError(), DstMdcKalTrack::getFError(), RecMdcKalTrack::getFHelix(), DstMdcKalTrack::getFHelix(), DstMdcKalTrack::getZHelix(), DstMdcTrack::helix(), genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, IMdcGeomSvc::Layer(), MdcID::layer(), m_charge, m_charge1, m_chidedxe, m_chidedxk, m_chidedxmu, m_chidedxp, m_chidedxpi, m_costheta, m_costheta1, m_dd_in_hit, m_dEdx_hit, m_dEdx_meas, m_doca_ex, m_doca_in, m_driftdist, m_driftT, m_eangle, m_eangle_hit, DedxCalib::m_eventType, m_evtNO, m_expectid, m_exraw, m_layer, m_layid_hit, m_localwid, m_nhit, m_nhits, m_nphlisthit, m_nt1, m_nt2, m_parttype, m_pathL, m_pathlength_hit, m_phraw, M_PI, m_poca_x, m_poca_y, m_poca_z, m_probpid, m_ptrk, m_ptrk1, m_ptrk_hit, m_ptrk_t, m_recalg, m_runFlag, m_runFlag1, m_runNO, m_runNO1, m_sigmaid, m_sintheta, m_t0, m_t01, m_tdc_raw, m_trackId, m_trackId1, m_usedhit, m_wid_hit, m_wire, m_zhit, m_zhit_hit, msgSvc(), DedxCalib::ParticleFlag, PT0HighCut, PT0LowCut, RUN0, RUN1, RUN2, RUN3, RUN4, RUN5, RUN6, RUN7, sin(), delete_small_size::size, VR0CUT, VZ0CUT, MdcID::wire(), and MdcGeoLayer::Wirst().
00121 { 00122 MsgStream log(msgSvc(), name()); 00123 log << MSG::INFO << "DedxCalibEvent::genNtuple()" << endreq; 00124 00125 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00126 if (!eventHeader) 00127 { 00128 log << MSG::INFO << "Could not find Event Header" << endreq; 00129 return; 00130 } 00131 int eventNO = eventHeader->eventNumber(); 00132 int runNO = eventHeader->runNumber(); 00133 log << MSG::INFO << "now begin the event: runNO= "<<runNO<<" eventNO= "<< eventNO<< endreq; 00134 00135 int runFlag=0; //data type flag 00136 if(runNO<RUN0) runFlag =0; 00137 if(runNO>=RUN1 && runNO<RUN2) runFlag =1; 00138 if(runNO>=RUN2 && runNO<RUN3) runFlag =2; 00139 if(runNO>=RUN3 && runNO<RUN4) runFlag =3; 00140 if(runNO>=RUN4 && runNO<RUN5) runFlag =4; //jpsi 00141 if(runNO>=RUN5 && runNO<RUN6) runFlag =5; //psipp 00142 if(runNO>=RUN6 && runNO<RUN7) runFlag =6; //psi4040, psip, jpsi... 00143 if(runNO>=RUN7) runFlag =7; //psip 00144 00145 double tes = -999.0; 00146 int esTimeflag = -1; 00147 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00148 if( (!aevtimeCol) || (aevtimeCol->size()==0) ){ 00149 tes = -9999.0; 00150 esTimeflag = -1; 00151 }else{ 00152 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin(); 00153 for(; iter_evt!=aevtimeCol->end(); iter_evt++){ 00154 tes = (*iter_evt)->getTest(); 00155 esTimeflag = (*iter_evt)->getStat(); 00156 } 00157 } 00158 if(runFlag ==2) {if( tes>1000 ) return;} 00159 else if(runFlag ==3 ){if (tes>700 ) return;} 00160 else {if (tes>1400 ) return;} 00161 00162 SmartDataPtr<RecMdcDedxCol> newexCol(eventSvc(),"/Event/Recon/RecMdcDedxCol"); 00163 if (!newexCol) 00164 { 00165 log << MSG::FATAL << "Could not find RecMdcDedxCol" << endreq; 00166 return; 00167 } 00168 00169 Vint iGood; 00170 iGood.clear(); 00171 int nCharge = 0; 00172 double db=0,dz=0,pt0=0,charge0=0; 00173 for(RecMdcDedxCol::iterator it = newexCol->begin(); it != newexCol->end(); it++) 00174 { 00175 HepVector a; 00176 if((*it)->getMdcKalTrack()) 00177 { 00178 RecMdcKalTrack* trk = (*it)->getMdcKalTrack(); 00179 if(ParticleFlag>-1&&ParticleFlag<5) 00180 { 00181 DstMdcKalTrack* dstTrk = trk; 00182 a = dstTrk->getZHelix(ParticleFlag); 00183 } 00184 else 00185 a = trk->getZHelix(); 00186 } 00187 else if((*it)->getMdcTrack()) 00188 { 00189 RecMdcTrack* trk = (*it)->getMdcTrack(); 00190 a = trk->helix(); 00191 } 00192 else continue; 00193 db = a[0]; 00194 dz = a[3]; 00195 pt0 = fabs(1.0/a[2]); 00196 charge0 = ( a[2] > 0 )? 1 : -1; 00197 00198 //cout<<"db: "<<db<<" dz: "<<dz<<" pt0: "<<pt0<<" charge0: "<<charge0<<endl; 00199 if(fabs(dz) >= VZ0CUT) continue; 00200 if(db >= VR0CUT) continue; 00201 if(pt0 >= PT0HighCut) continue; 00202 if(pt0 <= PT0LowCut) continue; 00203 iGood.push_back((*it)->trackId()); 00204 nCharge += charge0; 00205 } 00206 //cout<<"iGood.size()= "<<iGood.size()<<" nCharge= "<<nCharge<<endl; 00207 if((m_eventType == "isBhabha")||(m_eventType == "isRadBhabha")) 00208 { 00209 if(iGood.size()!=2 || nCharge!=0 ) return; 00210 } 00211 00212 00213 //cout<<"begin to read RecMdcDedxCol!!!!"<<endl; 00214 double poca_x=0,poca_y=0,poca_z=0; 00215 float sintheta=0,costheta=0,ptrk=0,ptrk_t=0,charge=0,trackId=0; 00216 int Nhit=0,usedhit=0,Nhits=0,Nphlisthit=0; 00217 double dEdx_meas_hit=0, dEdx_meas=0,dEdx_meas_esat=0,dEdx_meas_norun=0; 00218 double dEdx_hit[100]={0},pathlength_hit[100]={0},wid_hit[100]={0},layid_hit[100]={0},dd_in_hit[100]={0},eangle_hit[100]={0},zhit_hit[100]={0}; 00219 int trk_recalg = -1; 00220 Identifier mdcid; 00221 00222 for(RecMdcDedxCol::iterator it = newexCol->begin(); it != newexCol->end(); it++) 00223 { 00224 //cout<<"in track iteration!!!!!!!!"<<endl; 00225 bool flag = false; 00226 for(int i = 0; i < iGood.size(); i++) 00227 { 00228 if((*it)->trackId()==iGood[i]) flag=true; 00229 } 00230 if(flag==false) continue; 00231 00232 HepVector a; 00233 HepSymMatrix tkErrM; 00234 if((*it)->getMdcKalTrack()) 00235 { 00236 //cout<<"can get MdcKalTrack!!!!!!!!!"<<endl; 00237 poca_x = (*it)->getMdcKalTrack()->x(); //get poca, default pid is pion; change pid using setPidType(); 00238 poca_y = (*it)->getMdcKalTrack()->y(); 00239 poca_z = (*it)->getMdcKalTrack()->z(); 00240 00241 RecMdcKalTrack* trk = (*it)->getMdcKalTrack(); 00242 //cout<<"ParticleFlag= "<<ParticleFlag<<endl; 00243 if(ParticleFlag>-1&&ParticleFlag<5) 00244 { 00245 DstMdcKalTrack* dstTrk = trk; 00246 a = dstTrk->getFHelix(ParticleFlag); 00247 tkErrM = dstTrk->getFError(ParticleFlag); 00248 } 00249 else 00250 { 00251 a = trk->getFHelix(); 00252 tkErrM = trk->getFError(); 00253 } 00254 } 00255 else if((*it)->getMdcTrack()) 00256 { 00257 poca_x = (*it)->getMdcTrack()->x(); 00258 poca_y = (*it)->getMdcTrack()->y(); 00259 poca_z = (*it)->getMdcTrack()->z(); 00260 00261 RecMdcTrack* trk = (*it)->getMdcTrack(); 00262 a = trk->helix(); 00263 tkErrM = trk->err(); 00264 } 00265 else continue; 00266 00267 sintheta = sin(M_PI_2 - atan(a[4])); 00268 costheta = cos(M_PI_2 - atan(a[4])); 00269 ptrk_t = 1.0/fabs( a[2] ); 00270 ptrk = ptrk_t*sqrt(1 + a[4]*a[4]); 00271 charge = ( a[2] > 0 )? 1 : -1; 00272 00273 Nhit = (*it)->numTotalHits(); //total hits on track used as sample; 00274 Nhits = ((*it)->getVecDedxHits()).size(); //dedx hits on this track, they are put in phlist if layid>3 00275 usedhit = (*it)->numGoodHits(); //hits after truncting phlist and used in cal dE/dx value; 00276 trk_recalg = (*it)->status(); 00277 trackId = (*it)->trackId(); 00278 00279 if(m_eventType == "isBhabha") 00280 { 00281 if(runFlag ==3 &&(ptrk>1.88 || ptrk<1.80)) continue; 00282 if(runFlag ==4 &&(ptrk>1.72 || ptrk<1.45)) continue; 00283 if(runFlag ==5 &&(ptrk>2.00 || ptrk<1.70)) continue; 00284 if(runFlag ==6 &&(ptrk>1.90 || ptrk<1.00)) continue; 00285 if(runFlag ==7 &&(ptrk>1.90 || ptrk<1.40)) continue; 00286 if(abs(costheta)>0.9) continue; 00287 00288 if(Nhit<20) continue; 00289 if(usedhit<6) continue; 00290 } 00291 00292 00293 int layid=0,localwid=0,w0id=0,wid=0,lr=0; 00294 double p_hit=0,adc_raw=0,tdc_raw=0,zhit=0,driftd=0,driftD=0,driftT=0,dd_in=0,dd_ex=0,eangle=0; 00295 double ph=0,pathlength=0,rphi_path=0; 00296 long k=0; 00297 00298 DedxHitRefVec gothits = (*it)->getVecDedxHits(); 00299 DedxHitRefVec::iterator it_gothit = gothits.begin(); 00300 for(;it_gothit!=gothits.end(); it_gothit++) 00301 { 00302 //cout<<"in hit iteration!!!!!!!!!!!!!!!!!!"<<endl; 00303 if((*it_gothit)->isMdcHitValid()) 00304 { 00305 RecMdcHit* itor = (*it_gothit)->getMdcHit(); 00306 mdcid = itor->getMdcId(); 00307 layid = MdcID::layer(mdcid); 00308 localwid = MdcID::wire(mdcid); 00309 w0id = geosvc->Layer(layid)->Wirst(); 00310 wid = w0id + localwid; 00311 adc_raw = itor->getAdc(); 00312 tdc_raw = itor->getTdc(); 00313 zhit = itor->getZhit(); 00314 00315 lr = itor->getFlagLR(); 00316 if(lr == 2) cout<<"lr = "<<lr<<endl; 00317 if(lr == 0 || lr == 2) driftD = itor->getDriftDistLeft(); 00318 else driftD = itor->getDriftDistRight(); 00319 driftd = abs(driftD); 00320 dd_in = itor->getDoca(); 00321 dd_ex = itor->getDoca(); 00322 if(lr == 0 || lr == 2 ) {dd_in = -abs(dd_in);dd_ex = -abs(dd_ex);} 00323 if(lr == 1 ) {dd_in = abs(dd_in);dd_ex = abs(dd_ex);} 00324 driftT = itor->getDriftT(); 00325 eangle = itor->getEntra(); 00326 eangle = eangle/M_PI; 00327 } 00328 else if((*it_gothit)->isMdcKalHelixSegValid()) 00329 { 00330 RecMdcKalHelixSeg* itor = (*it_gothit)->getMdcKalHelixSeg(); 00331 HepVector a_hit_in = itor->getHelixIncl(); 00332 p_hit = 1.0/fabs(a_hit_in(3))*sqrt(1+a_hit_in(5)*a_hit_in(5)); 00333 00334 mdcid = itor->getMdcId(); 00335 layid = MdcID::layer(mdcid); 00336 localwid = MdcID::wire(mdcid); 00337 w0id = geosvc->Layer(layid)->Wirst(); 00338 wid = w0id + localwid; 00339 adc_raw = itor->getAdc(); 00340 tdc_raw = itor->getTdc(); 00341 zhit = itor->getZhit(); 00342 00343 lr = itor->getFlagLR(); 00344 if(lr == 2) cout<<"lr = "<<lr<<endl; 00345 driftD = itor->getDD(); 00346 driftd = abs(driftD); 00347 driftT = itor->getDT(); 00348 dd_in = itor->getDocaIncl(); //getDocaIncl() include fit unused hit 00349 dd_ex = itor->getDocaExcl(); //getDocaExcl() exclude fit unused hit 00350 if(lr==-1 || lr == 2) {dd_in = dd_in; dd_ex = dd_ex;} 00351 else if(lr ==1) {dd_in = -dd_in; dd_ex = -dd_ex;} 00352 eangle = itor->getEntra(); 00353 eangle = eangle/M_PI; 00354 } 00355 else continue; 00356 00357 pathlength=(*it_gothit)->getPathLength(); 00358 rphi_path=pathlength*sintheta; 00359 ph = (*it_gothit)->getDedx(); 00360 if(layid>3) 00361 { 00362 dEdx_hit[k]=adc_raw; 00363 pathlength_hit[k]=pathlength; 00364 wid_hit[k]=wid; 00365 layid_hit[k]=layid; 00366 dd_in_hit[k]=dd_in; 00367 eangle_hit[k]=eangle; 00368 zhit_hit[k]=zhit; 00369 00370 k++; 00371 } 00372 00373 //cout<<"begin to Fill Ntuple n102!!!!!!!!!"<<endl; 00374 m_charge1 = charge; 00375 m_t01 = tes; 00376 m_driftT = driftT; 00377 m_tdc_raw = tdc_raw; 00378 m_phraw = adc_raw; 00379 m_exraw = ph; 00380 m_localwid = localwid; 00381 m_wire = wid; 00382 m_runNO1 = runNO; 00383 m_runFlag1 = runFlag; 00384 m_doca_in = dd_in; 00385 m_doca_ex = dd_ex; 00386 m_driftdist = driftD; 00387 m_eangle = eangle; 00388 m_zhit = zhit; 00389 m_costheta1 = costheta; 00390 m_pathL = pathlength; 00391 m_layer = layid; 00392 m_ptrk1 = ptrk; 00393 m_ptrk_hit = p_hit; 00394 m_trackId1 = trackId; 00395 00396 StatusCode status = m_nt2->write(); 00397 if ( status.isFailure() ) 00398 log << MSG::ERROR << "Cannot fill Ntuple n102" << endreq; 00399 } 00400 00401 Nphlisthit = k; //dedx hits on this track, exclude the first 3 layers 00402 dEdx_meas = (*it)->probPH(); 00403 //cout<<"dEdx_meas in reconstruction: "<<dEdx_meas<<endl; 00404 dEdx_meas_esat = (*it)->getDedxEsat(); 00405 dEdx_meas_norun = (*it)->getDedxNoRun(); 00406 dEdx_meas_hit = (*it)->getDedxHit(); 00407 //cout<<"dEdx_meas in calibration: "<<dEdx_meas<<endl; 00408 00409 //cout<<"begin to Fill Ntuple n103!!!!!!!"<<endl; 00410 m_poca_x = poca_x; 00411 m_poca_y = poca_y; 00412 m_poca_z = poca_z; 00413 m_ptrk_t=ptrk_t; 00414 m_ptrk=ptrk; 00415 m_sintheta=sintheta; 00416 m_costheta=costheta; 00417 m_charge=charge; 00418 m_runNO = runNO; 00419 m_runFlag = runFlag; 00420 m_evtNO = eventNO; 00421 m_t0 = tes; 00422 m_trackId = trackId; 00423 m_recalg = trk_recalg; 00424 00425 m_nhit=Nhit; 00426 m_nhits=Nhits; 00427 m_nphlisthit=Nphlisthit; 00428 m_usedhit=usedhit; 00429 for(int j=0; j<Nphlisthit; j++) 00430 { 00431 m_dEdx_hit[j]=dEdx_hit[j]; 00432 m_pathlength_hit[j]=pathlength_hit[j]; 00433 m_wid_hit[j]=wid_hit[j]; 00434 m_layid_hit[j]=layid_hit[j]; 00435 m_dd_in_hit[j]=dd_in_hit[j]; 00436 m_eangle_hit[j]=eangle_hit[j]; 00437 m_zhit_hit[j]=zhit_hit[j]; 00438 } 00439 00440 //m_dEdx_meas_hit = dEdx_meas_hit; 00441 m_dEdx_meas = dEdx_meas; 00442 //m_dEdx_meas_esat = dEdx_meas_esat; 00443 //m_dEdx_meas_norun = dEdx_meas_norun; 00444 00445 m_parttype = (*it)->particleId(); 00446 m_chidedxe=(*it)->chiE(); 00447 m_chidedxmu=(*it)->chiMu(); 00448 m_chidedxpi=(*it)->chiPi(); 00449 m_chidedxk=(*it)->chiK(); 00450 m_chidedxp=(*it)->chiP(); 00451 for(int i=0;i<5;i++) 00452 { 00453 m_probpid[i]= (*it)->getPidProb(i); 00454 m_expectid[i]= (*it)->getDedxExpect(i); 00455 m_sigmaid[i]= (*it)->getSigmaDedx(i); 00456 } 00457 StatusCode status = m_nt1->write(); 00458 if ( status.isFailure() ) 00459 { 00460 log << MSG::ERROR << "Cannot fill Ntuple n103" << endreq; 00461 } 00462 } 00463 //cout<<"track iteration ended!!!!!!!!!!"<<endl; 00464 }
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 DedxCalibEvent::initializing | ( | ) | [virtual] |
Implements DedxCalib.
Definition at line 30 of file DedxCalibEvent.cxx.
References Bes_Common::INFO, m_charge, m_charge1, m_chidedxe, m_chidedxk, m_chidedxmu, m_chidedxp, m_chidedxpi, m_costheta, m_costheta1, m_dd_in_hit, m_dEdx_hit, m_dEdx_meas, m_doca_ex, m_doca_in, m_driftdist, m_driftT, m_eangle, m_eangle_hit, m_evtNO, m_expectid, m_exraw, m_layer, m_layid_hit, m_localwid, m_nhit, m_nhits, m_nphlisthit, m_nt1, m_nt2, m_parttype, m_pathL, m_pathlength_hit, m_phraw, m_poca_x, m_poca_y, m_poca_z, m_probpid, m_ptrk, m_ptrk1, m_ptrk_hit, m_ptrk_t, m_recalg, m_runFlag, m_runFlag1, m_runNO, m_runNO1, m_sigmaid, m_sintheta, m_t0, m_t01, m_tdc_raw, m_trackId, m_trackId1, m_usedhit, m_wid_hit, m_wire, m_zhit, m_zhit_hit, msgSvc(), and ntupleSvc().
00031 { 00032 MsgStream log(msgSvc(), name()); 00033 log << MSG::INFO << "DedxCalibEvent::initializing()" << endreq; 00034 00035 StatusCode status; 00036 NTuplePtr nt1(ntupleSvc(),"FILE100/n103"); 00037 if ( nt1 ) 00038 m_nt1 = nt1; 00039 else 00040 { 00041 m_nt1= ntupleSvc()->book("FILE100/n103",CLID_ColumnWiseTuple,"dEdx per track"); 00042 if ( m_nt1 ) 00043 { 00044 status = m_nt1->addItem("ptrk",m_ptrk); 00045 status = m_nt1->addItem("ptrk_t",m_ptrk_t); 00046 status = m_nt1->addItem("sintheta",m_sintheta); 00047 status = m_nt1->addItem("costheta",m_costheta); 00048 status = m_nt1->addItem("charge",m_charge); 00049 status = m_nt1->addItem("runNO",m_runNO); 00050 status = m_nt1->addItem("runFlag",m_runFlag); 00051 status = m_nt1->addItem("evtNO",m_evtNO); 00052 status = m_nt1->addItem("t0",m_t0); 00053 status = m_nt1->addItem("trackId",m_trackId); 00054 status = m_nt1->addItem("poca_x",m_poca_x); 00055 status = m_nt1->addItem("poca_y",m_poca_y); 00056 status = m_nt1->addItem("poca_z",m_poca_z); 00057 status = m_nt1->addItem("recalg",m_recalg); 00058 status = m_nt1->addItem("nhit",m_nhit); 00059 status = m_nt1->addItem("nhits",m_nhits); 00060 status = m_nt1->addItem("usedhit",m_usedhit); 00061 00062 status = m_nt1->addItem("ndedxhit",m_nphlisthit,0,100); 00063 status = m_nt1->addIndexedItem("dEdx_hit",m_nphlisthit,m_dEdx_hit); 00064 status = m_nt1->addIndexedItem("pathlength_hit",m_nphlisthit,m_pathlength_hit); 00065 status = m_nt1->addIndexedItem("wid_hit",m_nphlisthit,m_wid_hit); 00066 status = m_nt1->addIndexedItem("layid_hit",m_nphlisthit,m_layid_hit); 00067 status = m_nt1->addIndexedItem("dd_in_hit",m_nphlisthit,m_dd_in_hit); 00068 status = m_nt1->addIndexedItem("eangle_hit",m_nphlisthit,m_eangle_hit); 00069 status = m_nt1->addIndexedItem("zhit_hit",m_nphlisthit,m_zhit_hit); 00070 00071 //status = m_nt1->addItem("dEdx_meas_hit", m_dEdx_meas_hit); 00072 status = m_nt1->addItem("dEdx_meas", m_dEdx_meas); 00073 //status = m_nt1->addItem("dEdx_meas_esat", m_dEdx_meas_esat); 00074 //status = m_nt1->addItem("dEdx_meas_norun", m_dEdx_meas_norun); 00075 00076 status = m_nt1->addItem("type",m_parttype); 00077 status = m_nt1->addItem("chidedx_e",m_chidedxe); 00078 status = m_nt1->addItem("chidedx_mu",m_chidedxmu); 00079 status = m_nt1->addItem("chidedx_pi",m_chidedxpi); 00080 status = m_nt1->addItem("chidedx_k",m_chidedxk); 00081 status = m_nt1->addItem("chidedx_p",m_chidedxp); 00082 status = m_nt1->addItem("partid",5,m_probpid); 00083 status = m_nt1->addItem("expectid",5,m_expectid); 00084 status = m_nt1->addItem("sigmaid",5,m_sigmaid); 00085 } 00086 } 00087 00088 NTuplePtr nt2(ntupleSvc(),"FILE100/n102"); 00089 if ( nt2 ) m_nt2 = nt2; 00090 else 00091 { 00092 m_nt2= ntupleSvc()->book("FILE100/n102",CLID_RowWiseTuple,"dE/dx per hit"); 00093 if ( m_nt2 ) 00094 { 00095 status = m_nt2->addItem("charge",m_charge1); 00096 status = m_nt2->addItem("adc_raw",m_phraw); 00097 status = m_nt2->addItem("exraw",m_exraw); 00098 status = m_nt2->addItem("runNO",m_runNO1); 00099 status = m_nt2->addItem("runFlag",m_runFlag1); 00100 status = m_nt2->addItem("wire",m_wire); 00101 status = m_nt2->addItem("doca_in",m_doca_in); 00102 status = m_nt2->addItem("doca_ex",m_doca_ex); 00103 status = m_nt2->addItem("driftdist",m_driftdist); 00104 status = m_nt2->addItem("eangle",m_eangle); 00105 status = m_nt2->addItem("zhit",m_zhit); 00106 status = m_nt2->addItem("costheta1",m_costheta1); 00107 status = m_nt2->addItem("path_rphi",m_pathL); 00108 status = m_nt2->addItem("layer",m_layer); 00109 status = m_nt2->addItem("ptrk1",m_ptrk1); 00110 status = m_nt2->addItem("ptrk_hit",m_ptrk_hit); 00111 status = m_nt2->addItem("t01",m_t01); 00112 status = m_nt2->addItem("tdc_raw",m_tdc_raw); 00113 status = m_nt2->addItem("driftT",m_driftT); 00114 status = m_nt2->addItem("localwid",m_localwid); 00115 status = m_nt2->addItem("trackId1",m_trackId1); 00116 } 00117 } 00118 }
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(), DedxCalibMomentum::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 DedxCalibMomentum::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 DedxCalibEvent::WriteHists | ( | ) | [inline, virtual] |
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(), DedxCalibMomentum::FillHists(), DedxCalibLayerGain::FillHists(), DedxCalibEAng::FillHists(), DedxCalibDocaEAng::FillHists(), DedxCalibCostheta::FillHists(), and DedxCalib::initialize().
IMdcGeomSvc* DedxCalib::geosvc [protected, inherited] |
int DedxCalib::m_calibflag [protected, inherited] |
Definition at line 51 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), and DedxCalib::initialize().
NTuple::Item<float> DedxCalibEvent::m_charge [private] |
NTuple::Item<float> DedxCalibEvent::m_charge1 [private] |
double DedxCalib::m_chi_ex[5] [protected, inherited] |
Definition at line 46 of file DedxCalib.h.
Referenced by DedxCalibMomentum::FillHists(), DedxCalibCostheta::FillHists(), and DedxCalib::set_dEdx().
NTuple::Item<float> DedxCalibEvent::m_chidedxe [private] |
NTuple::Item<float> DedxCalibEvent::m_chidedxk [private] |
NTuple::Item<float> DedxCalibEvent::m_chidedxmu [private] |
NTuple::Item<float> DedxCalibEvent::m_chidedxp [private] |
NTuple::Item<float> DedxCalibEvent::m_chidedxpi [private] |
NTuple::Item<float> DedxCalibEvent::m_costheta [private] |
NTuple::Item<float> DedxCalibEvent::m_costheta1 [private] |
std::string DedxCalib::m_curvefile [protected, inherited] |
Definition at line 56 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), and DedxCalib::getCurvePar().
NTuple::Array<double> DedxCalibEvent::m_dd_in_hit [private] |
double DedxCalib::m_dedx_exp[5] [protected, inherited] |
NTuple::Array<double> DedxCalibEvent::m_dEdx_hit [private] |
NTuple::Item<float> DedxCalibEvent::m_dEdx_meas [private] |
NTuple::Item<float> DedxCalibEvent::m_dEdx_meas_esat [private] |
Definition at line 50 of file DedxCalibEvent.h.
NTuple::Item<float> DedxCalibEvent::m_dEdx_meas_hit [private] |
Definition at line 48 of file DedxCalibEvent.h.
NTuple::Item<float> DedxCalibEvent::m_dEdx_meas_norun [private] |
Definition at line 51 of file DedxCalibEvent.h.
NTuple::Item<float> DedxCalibEvent::m_doca_ex [private] |
NTuple::Item<float> DedxCalibEvent::m_doca_in [private] |
NTuple::Item<float> DedxCalibEvent::m_driftdist [private] |
NTuple::Item<float> DedxCalibEvent::m_driftT [private] |
NTuple::Item<float> DedxCalibEvent::m_eangle [private] |
NTuple::Array<double> DedxCalibEvent::m_eangle_hit [private] |
std::string DedxCalib::m_eventType [protected, inherited] |
NTuple::Item<float> DedxCalibEvent::m_evtNO [private] |
double DedxCalib::m_ex_sigma[5] [protected, inherited] |
NTuple::Array<float> DedxCalibEvent::m_expectid [private] |
NTuple::Item<double> DedxCalibEvent::m_exraw [private] |
NTuple::Item<float> DedxCalibEvent::m_layer [private] |
NTuple::Array<double> DedxCalibEvent::m_layid_hit [private] |
NTuple::Item<float> DedxCalibEvent::m_localwid [private] |
NTuple::Item<float> DedxCalibEvent::m_nhit [private] |
NTuple::Item<float> DedxCalibEvent::m_nhits [private] |
NTuple::Item<long> DedxCalibEvent::m_nphlisthit [private] |
NTuple::Tuple* DedxCalibEvent::m_nt1 [private] |
NTuple::Tuple* DedxCalibEvent::m_nt2 [private] |
NTuple::Item<float> DedxCalibEvent::m_parttype [private] |
NTuple::Item<float> DedxCalibEvent::m_pathL [private] |
NTuple::Array<double> DedxCalibEvent::m_pathlength_hit [private] |
NTuple::Item<double> DedxCalibEvent::m_phraw [private] |
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] |
NTuple::Item<float> DedxCalibEvent::m_poca_x [private] |
NTuple::Item<float> DedxCalibEvent::m_poca_y [private] |
NTuple::Item<float> DedxCalibEvent::m_poca_z [private] |
NTuple::Array<float> DedxCalibEvent::m_probpid [private] |
NTuple::Item<float> DedxCalibEvent::m_ptrk [private] |
NTuple::Item<float> DedxCalibEvent::m_ptrk1 [private] |
NTuple::Item<float> DedxCalibEvent::m_ptrk_hit [private] |
NTuple::Item<float> DedxCalibEvent::m_ptrk_t [private] |
NTuple::Item<float> DedxCalibEvent::m_recalg [private] |
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(), DedxCalibMomentum::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(), DedxCalibMomentum::WriteHists(), DedxCalibLayerGain::WriteHists(), DedxCalibEAng::WriteHists(), DedxCalibDocaEAng::WriteHists(), and DedxCalibCostheta::WriteHists().
NTuple::Item<float> DedxCalibEvent::m_runFlag [private] |
NTuple::Item<float> DedxCalibEvent::m_runFlag1 [private] |
NTuple::Item<float> DedxCalibEvent::m_runNO [private] |
NTuple::Item<float> DedxCalibEvent::m_runNO1 [private] |
NTuple::Array<float> DedxCalibEvent::m_sigmaid [private] |
NTuple::Item<float> DedxCalibEvent::m_sintheta [private] |
NTuple::Item<float> DedxCalibEvent::m_t0 [private] |
NTuple::Item<float> DedxCalibEvent::m_t01 [private] |
NTuple::Item<float> DedxCalibEvent::m_tdc_raw [private] |
NTuple::Item<float> DedxCalibEvent::m_trackId [private] |
NTuple::Item<float> DedxCalibEvent::m_trackId1 [private] |
NTuple::Item<float> DedxCalibEvent::m_usedhit [private] |
NTuple::Array<double> DedxCalibEvent::m_wid_hit [private] |
NTuple::Item<float> DedxCalibEvent::m_wire [private] |
NTuple::Item<float> DedxCalibEvent::m_zhit [private] |
NTuple::Array<double> DedxCalibEvent::m_zhit_hit [private] |
int DedxCalib::ParticleFlag [protected, inherited] |
Definition at line 50 of file DedxCalib.h.
Referenced by DedxCalib::DedxCalib(), DedxCalibMomentum::FillHists(), DedxCalibCostheta::FillHists(), and 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(), DedxCalibMomentum::FillHists(), and DedxCalibCostheta::FillHists().
int DedxCalib::vFlag[3] [protected, inherited] |
Definition at line 41 of file DedxCalib.h.
Referenced by DedxCalibMomentum::FillHists(), DedxCalibCostheta::FillHists(), DedxCalib::getCurvePar(), and DedxCalib::set_dEdx().