#include <DQAKsKpi.h>
Public Member Functions | |
DQAKsKpi (const std::string &name, ISvcLocator *pSvcLocator) | |
DQAKsKpi (const std::string &name, ISvcLocator *pSvcLocator) | |
StatusCode | execute () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | finalize () |
StatusCode | initialize () |
StatusCode | initialize () |
Private Attributes | |
NTuple::Item< double > | m_4c_chi2 |
NTuple::Item< double > | m_4c_chi2 |
NTuple::Item< double > | m_4c_ks_cos |
NTuple::Item< double > | m_4c_ks_cos |
NTuple::Item< double > | m_4c_ks_p |
NTuple::Item< double > | m_4c_ks_p |
NTuple::Item< double > | m_4c_ks_px |
NTuple::Item< double > | m_4c_ks_px |
NTuple::Item< double > | m_4c_ks_py |
NTuple::Item< double > | m_4c_ks_py |
NTuple::Item< double > | m_4c_ks_pz |
NTuple::Item< double > | m_4c_ks_pz |
NTuple::Item< double > | m_4c_mkpi |
NTuple::Item< double > | m_4c_mkpi |
NTuple::Item< double > | m_4c_mks |
NTuple::Item< double > | m_4c_mks |
NTuple::Item< double > | m_4c_mksk |
NTuple::Item< double > | m_4c_mksk |
NTuple::Item< double > | m_4c_mkspi |
NTuple::Item< double > | m_4c_mkspi |
NTuple::Array< long > | m_charge |
NTuple::Array< long > | m_charge |
int | m_checkDedx |
int | m_checkTof |
NTuple::Item< double > | m_chi2_5c |
NTuple::Item< double > | m_chi2_5c |
NTuple::Item< double > | m_chi2_fs4c |
NTuple::Item< double > | m_chi2_fs4c |
NTuple::Array< float > | m_chie |
NTuple::Array< float > | m_chie |
NTuple::Array< float > | m_chik |
NTuple::Array< float > | m_chik |
NTuple::Array< float > | m_chimu |
NTuple::Array< float > | m_chimu |
NTuple::Array< float > | m_chip |
NTuple::Array< float > | m_chip |
NTuple::Array< float > | m_chipi |
NTuple::Array< float > | m_chipi |
NTuple::Array< double > | m_cost |
NTuple::Array< double > | m_cost |
double | m_cthcut |
NTuple::Array< float > | m_e_emc |
NTuple::Array< float > | m_e_emc |
double | m_energyThreshold |
NTuple::Item< long > | m_event |
NTuple::Item< long > | m_event |
double | m_gammaAngCut |
NTuple::Array< float > | m_ghit |
NTuple::Array< float > | m_ghit |
NTuple::Item< double > | m_mkpi_5c |
NTuple::Item< double > | m_mkpi_5c |
NTuple::Item< double > | m_mkpi_fs4c |
NTuple::Item< double > | m_mkpi_fs4c |
NTuple::Item< double > | m_mks_5c |
NTuple::Item< double > | m_mks_5c |
NTuple::Item< double > | m_mks_fs4c |
NTuple::Item< double > | m_mks_fs4c |
NTuple::Item< double > | m_mksk_5c |
NTuple::Item< double > | m_mksk_5c |
NTuple::Item< double > | m_mksk_fs4c |
NTuple::Item< double > | m_mksk_fs4c |
NTuple::Item< double > | m_mkspi_5c |
NTuple::Item< double > | m_mkspi_5c |
NTuple::Item< double > | m_mkspi_fs4c |
NTuple::Item< double > | m_mkspi_fs4c |
NTuple::Item< long > | m_ngch |
NTuple::Item< long > | m_ngch |
NTuple::Item< long > | m_nkm |
NTuple::Item< long > | m_nkm |
NTuple::Item< long > | m_nkp |
NTuple::Item< long > | m_nkp |
NTuple::Array< float > | m_normPH |
NTuple::Array< float > | m_normPH |
NTuple::Item< long > | m_np |
NTuple::Item< long > | m_np |
NTuple::Item< long > | m_npb |
NTuple::Item< long > | m_npb |
NTuple::Item< long > | m_npim |
NTuple::Item< long > | m_npim |
NTuple::Item< long > | m_npip |
NTuple::Item< long > | m_npip |
NTuple::Array< double > | m_p |
NTuple::Array< double > | m_p |
NTuple::Array< double > | m_pidchiDedx |
NTuple::Array< double > | m_pidchiDedx |
NTuple::Array< double > | m_pidchiTof1 |
NTuple::Array< double > | m_pidchiTof1 |
NTuple::Array< double > | m_pidchiTof2 |
NTuple::Array< double > | m_pidchiTof2 |
NTuple::Array< long > | m_pidcode |
NTuple::Array< long > | m_pidcode |
NTuple::Array< double > | m_pidprob |
NTuple::Array< double > | m_pidprob |
NTuple::Array< float > | m_probPH |
NTuple::Array< float > | m_probPH |
NTuple::Array< double > | m_px |
NTuple::Array< double > | m_px |
NTuple::Array< double > | m_py |
NTuple::Array< double > | m_py |
NTuple::Array< double > | m_pz |
NTuple::Array< double > | m_pz |
NTuple::Array< double > | m_qual_btof1 |
NTuple::Array< double > | m_qual_btof1 |
NTuple::Array< double > | m_qual_btof2 |
NTuple::Array< double > | m_qual_btof2 |
NTuple::Array< double > | m_qual_etof |
NTuple::Array< double > | m_qual_etof |
NTuple::Item< long > | m_runNo |
NTuple::Item< long > | m_runNo |
NTuple::Array< double > | m_te_btof1 |
NTuple::Array< double > | m_te_btof1 |
NTuple::Array< double > | m_te_btof2 |
NTuple::Array< double > | m_te_btof2 |
NTuple::Array< double > | m_te_etof |
NTuple::Array< double > | m_te_etof |
NTuple::Array< float > | m_thit |
NTuple::Array< float > | m_thit |
ITHistSvc * | m_thsvc |
ITHistSvc * | m_thsvc |
NTuple::Array< double > | m_tk_btof1 |
NTuple::Array< double > | m_tk_btof1 |
NTuple::Array< double > | m_tk_btof2 |
NTuple::Array< double > | m_tk_btof2 |
NTuple::Array< double > | m_tk_etof |
NTuple::Array< double > | m_tk_etof |
NTuple::Array< double > | m_tmu_btof1 |
NTuple::Array< double > | m_tmu_btof1 |
NTuple::Array< double > | m_tmu_btof2 |
NTuple::Array< double > | m_tmu_btof2 |
NTuple::Array< double > | m_tmu_etof |
NTuple::Array< double > | m_tmu_etof |
NTuple::Array< double > | m_tof_btof1 |
NTuple::Array< double > | m_tof_btof1 |
NTuple::Array< double > | m_tof_btof2 |
NTuple::Array< double > | m_tof_btof2 |
NTuple::Array< double > | m_tof_etof |
NTuple::Array< double > | m_tof_etof |
NTuple::Array< double > | m_tp_btof1 |
NTuple::Array< double > | m_tp_btof1 |
NTuple::Array< double > | m_tp_btof2 |
NTuple::Array< double > | m_tp_btof2 |
NTuple::Array< double > | m_tp_etof |
NTuple::Array< double > | m_tp_etof |
NTuple::Array< double > | m_tpi_btof1 |
NTuple::Array< double > | m_tpi_btof1 |
NTuple::Array< double > | m_tpi_btof2 |
NTuple::Array< double > | m_tpi_btof2 |
NTuple::Array< double > | m_tpi_etof |
NTuple::Array< double > | m_tpi_etof |
NTuple::Tuple * | m_tuple |
NTuple::Tuple * | m_tuple |
NTuple::Item< double > | m_vfit2_chi |
NTuple::Item< double > | m_vfit2_chi |
NTuple::Item< double > | m_vfit2_ct |
NTuple::Item< double > | m_vfit2_ct |
NTuple::Item< double > | m_vfit2_dl |
NTuple::Item< double > | m_vfit2_dl |
NTuple::Item< double > | m_vfit2_dle |
NTuple::Item< double > | m_vfit2_dle |
NTuple::Item< double > | m_vfit2_mks |
NTuple::Item< double > | m_vfit2_mks |
NTuple::Item< double > | m_vfitp_chi |
NTuple::Item< double > | m_vfitp_chi |
NTuple::Item< double > | m_vfitp_vr |
NTuple::Item< double > | m_vfitp_vr |
NTuple::Item< double > | m_vfitp_vx |
NTuple::Item< double > | m_vfitp_vx |
NTuple::Item< double > | m_vfitp_vy |
NTuple::Item< double > | m_vfitp_vy |
NTuple::Item< double > | m_vfitp_vz |
NTuple::Item< double > | m_vfitp_vz |
NTuple::Item< double > | m_vfits_chi |
NTuple::Item< double > | m_vfits_chi |
NTuple::Item< double > | m_vfits_vr |
NTuple::Item< double > | m_vfits_vr |
NTuple::Item< double > | m_vfits_vx |
NTuple::Item< double > | m_vfits_vx |
NTuple::Item< double > | m_vfits_vy |
NTuple::Item< double > | m_vfits_vy |
NTuple::Item< double > | m_vfits_vz |
NTuple::Item< double > | m_vfits_vz |
NTuple::Array< double > | m_vr |
NTuple::Array< double > | m_vr |
NTuple::Array< double > | m_vr0 |
NTuple::Array< double > | m_vr0 |
double | m_vr0cut |
double | m_vr1cut |
NTuple::Array< double > | m_vx |
NTuple::Array< double > | m_vx |
NTuple::Array< double > | m_vx0 |
NTuple::Array< double > | m_vx0 |
NTuple::Array< double > | m_vy |
NTuple::Array< double > | m_vy |
NTuple::Array< double > | m_vy0 |
NTuple::Array< double > | m_vy0 |
NTuple::Array< double > | m_vz |
NTuple::Array< double > | m_vz |
NTuple::Array< double > | m_vz0 |
NTuple::Array< double > | m_vz0 |
double | m_vz0cut |
double | m_vz1cut |
|
00065 : 00066 Algorithm(name, pSvcLocator) { 00067 00068 //Declare the properties 00069 declareProperty("Vr0cut", m_vr0cut=5.0); 00070 declareProperty("Vz0cut", m_vz0cut=20.0); 00071 declareProperty("Vr1cut", m_vr1cut=1.0); 00072 declareProperty("Vz1cut", m_vz1cut=5.0); 00073 declareProperty("Vctcut", m_cthcut=0.93); 00074 declareProperty("EnergyThreshold", m_energyThreshold=0.04); 00075 declareProperty("GammaAngCut", m_gammaAngCut=20.0); 00076 }
|
|
|
|
|
|
00244 { 00245 00246 MsgStream log(msgSvc(), name()); 00247 log << MSG::INFO << "in execute()" << endreq; 00248 00249 // DQA 00250 // Add the line below at the beginning of execute() 00251 setFilterPassed(false); 00252 00253 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00254 m_runNo = eventHeader->runNumber(); 00255 m_event=eventHeader->eventNumber(); 00256 log << MSG::DEBUG <<"run, evtnum = " 00257 << m_runNo << " , " 00258 << m_event <<endreq; 00259 00260 SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent); 00261 // m_nchrg = evtRecEvent->totalCharged(); 00262 // m_nneu = evtRecEvent->totalNeutral(); 00263 log << MSG::DEBUG <<"ncharg, nneu, tottks = " 00264 << evtRecEvent->totalCharged() << " , " 00265 << evtRecEvent->totalNeutral() << " , " 00266 << evtRecEvent->totalTracks() <<endreq; 00267 00268 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(), EventModel::EvtRec::EvtRecTrackCol); 00269 00270 if(evtRecEvent->totalNeutral()>100) { 00271 return StatusCode::SUCCESS; 00272 } 00273 00274 Vint iGood; 00275 iGood.clear(); 00276 00277 Hep3Vector xorigin(0,0,0); 00278 00279 IVertexDbSvc* vtxsvc; 00280 Gaudi::svcLocator()->service("VertexDbSvc", vtxsvc); 00281 if(vtxsvc->isVertexValid()){ 00282 double* dbv = vtxsvc->PrimaryVertex(); 00283 double* vv = vtxsvc->SigmaPrimaryVertex(); 00284 xorigin.setX(dbv[0]); 00285 xorigin.setY(dbv[1]); 00286 xorigin.setZ(dbv[2]); 00287 } 00288 00289 int nCharge = 0; 00290 for(int i = 0; i < evtRecEvent->totalCharged(); i++){ 00291 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i; 00292 if(!(*itTrk)->isMdcTrackValid()) continue; 00293 if (!(*itTrk)->isMdcKalTrackValid()) continue; 00294 RecMdcTrack *mdcTrk = (*itTrk)->mdcTrack(); 00295 00296 double pch =mdcTrk->p(); 00297 double x0 =mdcTrk->x(); 00298 double y0 =mdcTrk->y(); 00299 double z0 =mdcTrk->z(); 00300 double phi0=mdcTrk->helix(1); 00301 double xv=xorigin.x(); 00302 double yv=xorigin.y(); 00303 double Rxy=fabs((x0-xv)*cos(phi0)+(y0-yv)*sin(phi0)); 00304 00305 if(fabs(z0) >= m_vz0cut) continue; 00306 if(Rxy >= m_vr0cut) continue; 00307 // if(fabs(m_Vct)>=m_cthcut) continue; 00308 // iGood.push_back((*itTrk)->trackId()); 00309 iGood.push_back(i); 00310 nCharge += mdcTrk->charge(); 00311 } 00312 00313 // 00314 // Finish Good Charged Track Selection 00315 // 00316 int m_ngch = iGood.size(); 00317 log << MSG::DEBUG << "ngood, totcharge = " << m_ngch << " , " << nCharge << endreq; 00318 if((m_ngch != 4)||(nCharge!=0)){ 00319 return StatusCode::SUCCESS; 00320 } 00321 00322 // Particle ID 00323 // 00324 Vint ipip, ipim, ikp, ikm, ipp, ipm; 00325 ipip.clear(); 00326 ipim.clear(); 00327 ikp.clear(); 00328 ikm.clear(); 00329 ipp.clear(); 00330 ipm.clear(); 00331 00332 Vp4 p_pip, p_pim, p_kp, p_km, p_pp, p_pm ; 00333 p_pip.clear(); 00334 p_pim.clear(); 00335 p_kp.clear(); 00336 p_km.clear(); 00337 p_pp.clear(); 00338 p_pm.clear(); 00339 00340 ParticleID *pid = ParticleID::instance(); 00341 for(int i = 0; i < m_ngch; i++) { 00342 EvtRecTrackIterator itTrk = evtRecTrkCol->begin() + iGood[i]; 00343 // if(pid) delete pid; 00344 pid->init(); 00345 pid->setMethod(pid->methodProbability()); 00346 pid->setChiMinCut(4); 00347 pid->setRecTrack(*itTrk); 00348 pid->usePidSys(pid->useDedx()); // just use dedx PID 00349 // pid->usePidSys(pid->useDedx() | pid->useTof1() | pid->useTof2() | pid->useTofE() | pid->useTofQ()); // use PID sub-system 00350 pid->identify(pid->onlyPionKaonProton()); // seperater Pion/Kaon/Proton 00351 // pid->identify(pid->onlyPion() | pid->onlyKaon()); // seperater Pion/Kaon 00352 // pid->identify(pid->onlyPion()); 00353 // pid->identify(pid->onlyKaon()); 00354 pid->calculate(); 00355 if(!(pid->IsPidInfoValid())) continue; 00356 00357 RecMdcTrack* mdcTrk = (*itTrk)->mdcTrack(); 00358 RecMdcKalTrack* mdcKalTrk = 0 ; 00359 if((*itTrk)->isMdcKalTrackValid()) mdcKalTrk = (*itTrk)->mdcKalTrack(); 00360 00361 double prob_pi = pid->probPion(); 00362 double prob_K = pid->probKaon(); 00363 double prob_p = pid->probProton(); 00364 // std::cout << "prob "<< prob_pi << ", "<< prob_K << ", "<< prob_p << std::endl; 00365 HepLorentzVector ptrk; 00366 ptrk.setPx(mdcTrk->px()) ; 00367 ptrk.setPy(mdcTrk->py()) ; 00368 ptrk.setPz(mdcTrk->pz()) ; 00369 double p3 = ptrk.mag() ; 00370 00371 if (prob_pi > prob_K && prob_pi > prob_p) { 00372 m_pidcode[i]=2; 00373 m_pidprob[i]=pid->prob(2); 00374 m_pidchiDedx[i]=pid->chiDedx(2); 00375 m_pidchiTof1[i]=pid->chiTof1(2); 00376 m_pidchiTof2[i]=pid->chiTof2(2); 00377 ptrk.setE(sqrt(p3*p3 + xmass[2]*xmass[2])) ; 00378 if(mdcTrk->charge() > 0) { 00379 ipip.push_back(iGood[i]); 00380 p_pip.push_back(ptrk); 00381 } 00382 if (mdcTrk->charge() < 0) { 00383 ipim.push_back(iGood[i]); 00384 p_pim.push_back(ptrk); 00385 } 00386 } 00387 00388 if (prob_K > prob_pi && prob_K > prob_p) { 00389 m_pidcode[i]=3; 00390 m_pidprob[i]=pid->prob(3); 00391 m_pidchiDedx[i]=pid->chiDedx(3); 00392 m_pidchiTof1[i]=pid->chiTof1(3); 00393 m_pidchiTof2[i]=pid->chiTof2(3); 00394 ptrk.setE(sqrt(p3*p3 + xmass[3]*xmass[3])) ; 00395 if(mdcTrk->charge() > 0) { 00396 ikp.push_back(iGood[i]); 00397 p_kp.push_back(ptrk); 00398 } 00399 if (mdcTrk->charge() < 0) { 00400 ikm.push_back(iGood[i]); 00401 p_km.push_back(ptrk); 00402 } 00403 } 00404 00405 if (prob_p > prob_pi && prob_p > prob_K) { 00406 m_pidcode[i]=4; 00407 m_pidprob[i]=pid->prob(4); 00408 m_pidchiDedx[i]=pid->chiDedx(4); 00409 m_pidchiTof1[i]=pid->chiTof1(4); 00410 m_pidchiTof2[i]=pid->chiTof2(4); 00411 ptrk.setE(sqrt(p3*p3 + xmass[4]*xmass[4])) ; 00412 if(mdcTrk->charge() > 0) { 00413 ipp.push_back(iGood[i]); 00414 p_pp.push_back(ptrk); 00415 } 00416 if (mdcTrk->charge() < 0) { 00417 ipm.push_back(iGood[i]); 00418 p_pm.push_back(ptrk); 00419 } 00420 } 00421 } 00422 00423 m_npip= ipip.size() ; 00424 m_npim= ipim.size() ; 00425 m_nkp = ikp.size() ; 00426 m_nkm = ikm.size() ; 00427 m_np = ipp.size() ; 00428 m_npb = ipm.size() ; 00429 00430 // cout<<"m_npip*m_npim: "<<m_npip*m_npim<<endl; 00431 if( m_npip*m_npim != 2 ) { 00432 return StatusCode::SUCCESS; 00433 } 00434 // cout<<"m_nkp+m_nkm: "<<m_nkp+m_nkm<<endl; 00435 if( m_nkp+m_nkm != 1 ) { 00436 return StatusCode::SUCCESS; 00437 } 00438 // cout<<"haha"<<endl; 00439 00440 // Vertex Fit 00441 HepPoint3D vx(0., 0., 0.); 00442 HepSymMatrix Evx(3, 0); 00443 double bx = 1E+6; 00444 double by = 1E+6; 00445 double bz = 1E+6; 00446 Evx[0][0] = bx*bx; 00447 Evx[1][1] = by*by; 00448 Evx[2][2] = bz*bz; 00449 00450 VertexParameter vxpar; 00451 vxpar.setVx(vx); 00452 vxpar.setEvx(Evx); 00453 00454 VertexFit *vtxfit_s = VertexFit::instance(); // S second vertex 00455 VertexFit *vtxfit_p = VertexFit::instance(); // P primary vertex 00456 SecondVertexFit *vtxfit2 = SecondVertexFit::instance(); 00457 00458 RecMdcKalTrack *pi1KalTrk, *pi2KalTrk, *pi3KalTrk, *k1KalTrk; 00459 RecMdcKalTrack *pipKalTrk, *pimKalTrk, *piKalTrk, *kKalTrk; 00460 WTrackParameter wks,vwks; 00461 00462 double chi_temp = 999.0; 00463 double mks_temp = 10.0 ; 00464 bool okloop=false; 00465 for(unsigned int i1 = 0; i1 < m_npip; i1++) { //pion plus 00466 RecMdcKalTrack *pi1KalTrk = (*(evtRecTrkCol->begin()+ipip[i1]))-> mdcKalTrack(); 00467 pi1KalTrk->setPidType(RecMdcKalTrack::pion); 00468 WTrackParameter wpi1trk(xmass[2], pi1KalTrk->getZHelix(), pi1KalTrk->getZError()); 00469 00470 for(unsigned int i2 = 0; i2 < m_npim; i2++) { //pion minus 00471 RecMdcKalTrack *pi2KalTrk = (*(evtRecTrkCol->begin()+ipim[i2]))-> mdcKalTrack(); 00472 pi2KalTrk->setPidType(RecMdcKalTrack::pion); 00473 WTrackParameter wpi2trk(xmass[2], pi2KalTrk->getZHelix(), pi2KalTrk->getZError()); 00474 00475 vtxfit_s->init(); 00476 vtxfit_s->AddTrack(0, wpi1trk); 00477 vtxfit_s->AddTrack(1, wpi2trk); 00478 vtxfit_s->AddVertex(0, vxpar, 0, 1); 00479 00480 if(!(vtxfit_s->Fit(0))) continue; 00481 vtxfit_s->BuildVirtualParticle(0); 00482 m_vfits_chi = vtxfit_s->chisq(0); 00483 WTrackParameter wkshort = vtxfit_s->wVirtualTrack(0); 00484 VertexParameter vparks = vtxfit_s->vpar(0); 00485 00486 m_vfits_vx = (vparks.Vx())[0]; 00487 m_vfits_vy = (vparks.Vx())[1]; 00488 m_vfits_vz = (vparks.Vx())[2]; 00489 m_vfits_vr = sqrt(m_vfits_vx*m_vfits_vx + m_vfits_vy*m_vfits_vy) ; 00490 00491 if ( m_npip == 2 ) { 00492 int j = i1 ; 00493 int jj = ( i1 == 1 ) ? 0 : 1; 00494 pi3KalTrk = (*(evtRecTrkCol->begin()+ipip[jj]))->mdcKalTrack(); 00495 k1KalTrk = (*(evtRecTrkCol->begin()+ikm[0]))->mdcKalTrack(); 00496 } 00497 if (m_npim == 2 ) { 00498 int j = i2 ; 00499 int jj = ( i2 == 1 ) ? 0 : 1; 00500 pi3KalTrk = (*(evtRecTrkCol->begin()+ipim[jj]))->mdcKalTrack(); 00501 k1KalTrk = (*(evtRecTrkCol->begin()+ikp[0]))->mdcKalTrack(); 00502 } 00503 00504 pi3KalTrk->setPidType(RecMdcKalTrack::pion); 00505 WTrackParameter wpi3trk( xmass[2], pi3KalTrk->getZHelix(), pi3KalTrk->getZError()); 00506 k1KalTrk->setPidType(RecMdcKalTrack::kaon); 00507 WTrackParameter wk1trk( xmass[3], k1KalTrk->getZHelixK(), k1KalTrk->getZErrorK()); 00508 00509 vtxfit_p->init(); 00510 // vtxfit_p->AddTrack(0, wkshort); 00511 vtxfit_p->AddTrack(0, wpi3trk); 00512 vtxfit_p->AddTrack(1, wk1trk); 00513 vtxfit_p->AddVertex(0, vxpar, 0, 1); 00514 if(!(vtxfit_p->Fit(0))) continue; 00515 00516 m_vfitp_chi = vtxfit_p->chisq(0) ; 00517 00518 VertexParameter primaryVpar = vtxfit_p->vpar(0); 00519 m_vfitp_vx = (primaryVpar.Vx())[0]; 00520 m_vfitp_vy = (primaryVpar.Vx())[1]; 00521 m_vfitp_vz = (primaryVpar.Vx())[2]; 00522 m_vfitp_vr = sqrt(m_vfitp_vx*m_vfitp_vx + m_vfitp_vy*m_vfitp_vy); 00523 00524 vtxfit2->init(); 00525 vtxfit2->setPrimaryVertex(vtxfit_p->vpar(0)); 00526 vtxfit2->AddTrack(0, wkshort); 00527 vtxfit2->setVpar(vtxfit_s->vpar(0)); 00528 if(!vtxfit2->Fit()) continue; 00529 00530 if ( fabs(((vtxfit2->wpar()).p()).m()-mks0) < mks_temp ) { 00531 mks_temp = fabs(((vtxfit2->wpar()).p()).m()-mks0) ; 00532 00533 okloop = true; 00534 00535 wks = vtxfit2->wpar(); 00536 m_vfit2_mks = (wks.p()).m(); 00537 m_vfit2_chi = vtxfit2->chisq(); 00538 m_vfit2_ct = vtxfit2->ctau(); 00539 m_vfit2_dl = vtxfit2->decayLength(); 00540 m_vfit2_dle = vtxfit2->decayLengthError(); 00541 00542 pipKalTrk = pi1KalTrk ; 00543 pimKalTrk = pi2KalTrk ; 00544 piKalTrk = pi3KalTrk ; 00545 kKalTrk = k1KalTrk ; 00546 00547 } 00548 } 00549 } 00550 00551 if (! okloop ) { 00552 return StatusCode::SUCCESS; 00553 } 00554 00555 pipKalTrk->setPidType(RecMdcKalTrack::pion); 00556 pimKalTrk->setPidType(RecMdcKalTrack::pion); 00557 piKalTrk->setPidType(RecMdcKalTrack::pion); 00558 kKalTrk->setPidType(RecMdcKalTrack::kaon); 00559 00560 WTrackParameter wpip(xmass[2], pipKalTrk->getZHelix(), pipKalTrk->getZError()); //pi+ from Ks 00561 WTrackParameter wpim(xmass[2], pimKalTrk->getZHelix(), pimKalTrk->getZError()); //pi- from Ks 00562 WTrackParameter wpi(xmass[2], piKalTrk->getZHelix(), piKalTrk->getZError()); 00563 WTrackParameter wk(xmass[3], kKalTrk->getZHelixK(), kKalTrk->getZErrorK()); 00564 00565 // 00566 // check good charged track's infomation 00567 int ii ; 00568 for(int i = 0; i < m_ngch; i++ ){ 00569 00570 EvtRecTrackIterator itTrk = evtRecTrkCol->begin() + iGood[i]; 00571 if(!(*itTrk)->isMdcTrackValid()) continue; // MDC information 00572 RecMdcTrack* mdcTrk = (*itTrk)->mdcTrack(); 00573 RecMdcKalTrack *mdcKalTrk = (*itTrk)->mdcKalTrack(); 00574 00575 if ( mdcKalTrk == pipKalTrk ) { 00576 ii = 0 ; 00577 mdcKalTrk->setPidType(RecMdcKalTrack::pion); 00578 } 00579 if ( mdcKalTrk == pimKalTrk ) { 00580 ii = 1 ; 00581 mdcKalTrk->setPidType(RecMdcKalTrack::pion); 00582 } 00583 if ( mdcKalTrk == piKalTrk ) { 00584 ii = 2 ; 00585 mdcKalTrk->setPidType(RecMdcKalTrack::pion); 00586 } 00587 if ( mdcKalTrk == kKalTrk ) { 00588 ii = 3 ; 00589 mdcKalTrk->setPidType(RecMdcKalTrack::pion); 00590 } 00591 00592 m_charge[ii] = mdcTrk->charge(); 00593 double x0=mdcTrk->x(); 00594 double y0=mdcTrk->y(); 00595 double z0=mdcTrk->z(); 00596 double phi0=mdcTrk->helix(1); 00597 double xv=xorigin.x(); 00598 double yv=xorigin.y(); 00599 double zv=xorigin.z(); 00600 double rv=(x0-xv)*cos(phi0)+(y0-yv)*sin(phi0); 00601 00602 m_vx0[ii] = x0-xv ; 00603 m_vy0[ii] = y0-yv ; 00604 m_vz0[ii] = z0-zv ; 00605 m_vr0[ii] = rv ; 00606 00607 x0=mdcKalTrk->x(); 00608 y0=mdcKalTrk->y(); 00609 z0=mdcKalTrk->z(); 00610 rv=(x0-xv)*cos(phi0)+(y0-yv)*sin(phi0); 00611 00612 m_vx[ii] = x0-xv ; 00613 m_vy[ii] = y0-yv ; 00614 m_vz[ii] = z0-zv ; 00615 m_vr[ii] = rv ; 00616 00617 m_px[ii] = mdcKalTrk->px(); 00618 m_py[ii] = mdcKalTrk->py(); 00619 m_pz[ii] = mdcKalTrk->pz(); 00620 m_p[ii] = mdcKalTrk->p(); 00621 m_cost[ii] = mdcKalTrk->pz()/mdcKalTrk->p(); 00622 00623 double ptrk = mdcKalTrk->p() ; 00624 if((*itTrk)->isMdcDedxValid()) { // DEDX information 00625 RecMdcDedx* dedxTrk = (*itTrk)->mdcDedx(); 00626 m_probPH[ii]= dedxTrk->probPH(); 00627 m_normPH[ii]= dedxTrk->normPH(); 00628 00629 m_chie[ii] = dedxTrk->chiE(); 00630 m_chimu[ii] = dedxTrk->chiMu(); 00631 m_chipi[ii] = dedxTrk->chiPi(); 00632 m_chik[ii] = dedxTrk->chiK(); 00633 m_chip[ii] = dedxTrk->chiP(); 00634 m_ghit[ii] = dedxTrk->numGoodHits(); 00635 m_thit[ii] = dedxTrk->numTotalHits(); 00636 } 00637 00638 if((*itTrk)->isEmcShowerValid()) { 00639 RecEmcShower *emcTrk = (*itTrk)->emcShower(); 00640 m_e_emc[ii] = emcTrk->energy(); 00641 } 00642 00643 if((*itTrk)->isTofTrackValid()) { //TOF information 00644 SmartRefVector<RecTofTrack> tofTrkCol = (*itTrk)->tofTrack(); 00645 00646 SmartRefVector<RecTofTrack>::iterator iter_tof = tofTrkCol.begin(); 00647 00648 for(;iter_tof != tofTrkCol.end(); iter_tof++ ) { 00649 TofHitStatus *status = new TofHitStatus; 00650 status->setStatus((*iter_tof)->status()); 00651 00652 if(!(status->is_barrel())){//endcap 00653 if( !(status->is_counter()) ) continue; // ? 00654 if( status->layer()!=0 ) continue;//layer1 00655 double path=(*iter_tof)->path(); // ? 00656 double tof = (*iter_tof)->tof(); 00657 double ph = (*iter_tof)->ph(); 00658 double rhit = (*iter_tof)->zrhit(); 00659 double qual = 0.0 + (*iter_tof)->quality(); 00660 double cntr = 0.0 + (*iter_tof)->tofID(); 00661 double texp[5]; 00662 for(int j = 0; j < 5; j++) { 00663 double gb = ptrk/xmass[j]; 00664 double beta = gb/sqrt(1+gb*gb); 00665 texp[j] = path /beta/velc; 00666 } 00667 00668 m_qual_etof[ii] = qual; 00669 m_tof_etof[ii] = tof ; 00670 } 00671 else {//barrel 00672 if( !(status->is_counter()) ) continue; // ? 00673 if(status->layer()==1){ //layer1 00674 double path=(*iter_tof)->path(); // ? 00675 double tof = (*iter_tof)->tof(); 00676 double ph = (*iter_tof)->ph(); 00677 double rhit = (*iter_tof)->zrhit(); 00678 double qual = 0.0 + (*iter_tof)->quality(); 00679 double cntr = 0.0 + (*iter_tof)->tofID(); 00680 double texp[5]; 00681 for(int j = 0; j < 5; j++) { 00682 double gb = ptrk/xmass[j]; 00683 double beta = gb/sqrt(1+gb*gb); 00684 texp[j] = path /beta/velc; 00685 } 00686 00687 m_qual_btof1[ii] = qual; 00688 m_tof_btof1[ii] = tof ; 00689 } 00690 00691 if(status->layer()==2){//layer2 00692 double path=(*iter_tof)->path(); // ? 00693 double tof = (*iter_tof)->tof(); 00694 double ph = (*iter_tof)->ph(); 00695 double rhit = (*iter_tof)->zrhit(); 00696 double qual = 0.0 + (*iter_tof)->quality(); 00697 double cntr = 0.0 + (*iter_tof)->tofID(); 00698 double texp[5]; 00699 for(int j = 0; j < 5; j++) { 00700 double gb = ptrk/xmass[j]; 00701 double beta = gb/sqrt(1+gb*gb); 00702 texp[j] = path /beta/velc; 00703 } 00704 00705 m_qual_btof2[ii] = qual; 00706 m_tof_btof2[ii] = tof ; 00707 } 00708 } 00709 } 00710 } 00711 } 00712 00713 // Kinamatic Fit 00714 KinematicFit * kmfit = KinematicFit::instance(); 00715 00716 double ecms = 3.097; 00717 double chisq = 9999.; 00718 m_4c_chi2 = 9999.; 00719 m_4c_mks = 10.0; 00720 m_4c_mkspi = 10.0; 00721 m_4c_mksk = 10.0; 00722 m_4c_mkpi = 10.0; 00723 m_4c_ks_px = 10.0; 00724 m_4c_ks_py = 10.0; 00725 m_4c_ks_pz = 10.0; 00726 m_4c_ks_p = 10.0; 00727 m_4c_ks_cos= 10.0; 00728 00729 kmfit->init(); 00730 kmfit->AddTrack(0, wpi); 00731 kmfit->AddTrack(1, wk); 00732 kmfit->AddTrack(2, wks); 00733 kmfit->AddFourMomentum(0, p_cms); 00734 bool oksq = kmfit->Fit(); 00735 if(oksq) { 00736 chisq = kmfit->chisq(); 00737 00738 HepLorentzVector pk = kmfit->pfit(1); 00739 HepLorentzVector pks = kmfit->pfit(2); 00740 HepLorentzVector pkspi = kmfit->pfit(0) + kmfit->pfit(2); 00741 HepLorentzVector pksk = kmfit->pfit(1) + kmfit->pfit(2); 00742 HepLorentzVector pkpi = kmfit->pfit(0) + kmfit->pfit(1); 00743 00744 pks.boost(u_cms); 00745 pkspi.boost(u_cms); 00746 pksk.boost(u_cms); 00747 pkpi.boost(u_cms); 00748 00749 m_4c_chi2 = chisq ; 00750 m_4c_mks = pks.m(); 00751 m_4c_mkspi = pkspi.m(); 00752 m_4c_mksk = pksk.m(); 00753 m_4c_mkpi = pkpi.m(); 00754 00755 m_4c_ks_px = pks.px() ; 00756 m_4c_ks_py = pks.py() ; 00757 m_4c_ks_pz = pks.pz() ; 00758 m_4c_ks_p = (pks.vect()).mag() ; 00759 m_4c_ks_cos = m_4c_ks_pz/m_4c_ks_p ; 00760 00761 } 00762 00763 chisq = 9999.; 00764 m_chi2_fs4c = 9999.; 00765 m_mks_fs4c = 10.0; 00766 m_mkspi_fs4c = 10.0; 00767 m_mksk_fs4c = 10.0; 00768 m_mkpi_fs4c = 10.0; 00769 00770 kmfit->init(); 00771 kmfit->AddTrack(0, wpip); 00772 kmfit->AddTrack(1, wpim); 00773 kmfit->AddTrack(2, wpi); 00774 kmfit->AddTrack(3, wk); 00775 kmfit->AddFourMomentum(0, p_cms); 00776 oksq = kmfit->Fit(); 00777 if(oksq) { 00778 chisq = kmfit->chisq(); 00779 00780 HepLorentzVector pks = kmfit->pfit(0) + kmfit->pfit(1); 00781 HepLorentzVector pkspi = pks + kmfit->pfit(2); 00782 HepLorentzVector pksk = pks + kmfit->pfit(3); 00783 HepLorentzVector pkpi = kmfit->pfit(2) + kmfit->pfit(3); 00784 00785 pks.boost(u_cms); 00786 pkspi.boost(u_cms); 00787 pksk.boost(u_cms); 00788 pkpi.boost(u_cms); 00789 00790 m_chi2_fs4c = chisq ; 00791 m_mks_fs4c = pks.m(); 00792 m_mkspi_fs4c = pkspi.m(); 00793 m_mksk_fs4c = pksk.m(); 00794 m_mkpi_fs4c = pkpi.m(); 00795 } 00796 00797 // finale selection 00798 if(chisq > 20) { return StatusCode::SUCCESS; } //4C chi2 00799 if(m_vfit2_dl < 0.5) { return StatusCode::SUCCESS; } // Ks decay length 00800 if(fabs(m_4c_mks-mks0) > 0.01) { return StatusCode::SUCCESS; } // Ks mass 00801 if(m_4c_mkspi < 1.25) { return StatusCode::SUCCESS; } // Kspi mass 00802 00803 // DQA 00804 TH1 *h(0); 00805 if (m_thsvc->getHist("/DQAHist/DQAKsKpi/hks_dl", h).isSuccess()) { 00806 h->Fill(m_vfit2_dl); 00807 } else { 00808 log << MSG::ERROR << "Couldn't retrieve hks_dl" << endreq; 00809 } 00810 00811 if (m_thsvc->getHist("/DQAHist/DQAKsKpi/hks_m", h).isSuccess()) { 00812 h->Fill(m_4c_mks); 00813 } else { 00814 log << MSG::ERROR << "Couldn't retrieve hks_m" << endreq; 00815 } 00816 00817 if (m_thsvc->getHist("/DQAHist/DQAKsKpi/hkspi_m", h).isSuccess()) { 00818 h->Fill(m_4c_mkspi); 00819 } else { 00820 log << MSG::ERROR << "Couldn't retrieve hkspi_m" << endreq; 00821 } 00822 00823 if (m_thsvc->getHist("/DQAHist/DQAKsKpi/hks_p", h).isSuccess()) { 00824 h->Fill(m_4c_ks_p); 00825 } else { 00826 log << MSG::ERROR << "Couldn't retrieve hks_p" << endreq; 00827 } 00828 00829 if (m_thsvc->getHist("/DQAHist/DQAKsKpi/hkpi_m", h).isSuccess()) { 00830 h->Fill(m_4c_mkpi); 00831 } else { 00832 log << MSG::ERROR << "Couldn't retrieve hkpi_m" << endreq; 00833 } 00834 00835 m_tuple->write(); 00836 00838 // DQA 00839 // set tag and quality 00840 00841 // Pid: 1 - electron, 2 - muon, 3 - pion, 4 - kaon, 5 - proton 00842 if(m_npip==2 && m_npim==1){ 00843 (*(evtRecTrkCol->begin()+ipip[0]))->setPartId(2); 00844 (*(evtRecTrkCol->begin()+ipip[1]))->setPartId(2); 00845 (*(evtRecTrkCol->begin()+ipim[0]))->setPartId(2); 00846 (*(evtRecTrkCol->begin()+ikm[0]))->setPartId(4); 00847 } 00848 if(m_npip==1 && m_npim==2){ 00849 (*(evtRecTrkCol->begin()+ipip[0]))->setPartId(2); 00850 (*(evtRecTrkCol->begin()+ipim[0]))->setPartId(2); 00851 (*(evtRecTrkCol->begin()+ipim[1]))->setPartId(2); 00852 (*(evtRecTrkCol->begin()+ikp[0]))->setPartId(4); 00853 } 00854 // Quality: defined by whether dE/dx or TOF is used to identify particle 00855 // 0 - no dE/dx, no TOF (can be used for dE/dx and TOF calibration) 00856 // 1 - only dE/dx (can be used for TOF calibration) 00857 // 2 - only TOF (can be used for dE/dx calibration) 00858 // 3 - Both dE/dx and TOF 00859 if(m_npip==2 && m_npim==1){ 00860 (*(evtRecTrkCol->begin()+ipip[0]))->setQuality(1); 00861 (*(evtRecTrkCol->begin()+ipip[1]))->setQuality(1); 00862 (*(evtRecTrkCol->begin()+ipim[0]))->setQuality(1); 00863 (*(evtRecTrkCol->begin()+ikm[0]))->setQuality(1); 00864 } 00865 if(m_npip==1 && m_npim==2){ 00866 (*(evtRecTrkCol->begin()+ipip[0]))->setQuality(1); 00867 (*(evtRecTrkCol->begin()+ipim[0]))->setQuality(1); 00868 (*(evtRecTrkCol->begin()+ipim[1]))->setQuality(1); 00869 (*(evtRecTrkCol->begin()+ikp[0]))->setQuality(1); 00870 } 00871 // DQA 00872 // Add the line below at the end of execute(), (before return) 00873 // 00874 setFilterPassed(true); 00876 00877 return StatusCode::SUCCESS; 00878 00879 }
|
|
|
|
00882 { 00883 00884 MsgStream log(msgSvc(), name()); 00885 log << MSG::INFO << "in finalize()" << endmsg; 00886 return StatusCode::SUCCESS; 00887 }
|
|
|
|
00080 { 00081 MsgStream log(msgSvc(), name()); 00082 00083 log << MSG::INFO << "in initialize()" << endmsg; 00084 StatusCode status; 00085 00086 // DQA 00087 // The first directory specifier must be "DQAFILE" 00088 // The second is the control sample name, the first letter is in upper format. eg. "Rhopi" 00089 NTuplePtr nt(ntupleSvc(), "DQAFILE/KsKpi"); 00090 if ( nt ) m_tuple = nt; 00091 else { 00092 m_tuple = ntupleSvc()->book("DQAFILE/KsKpi", CLID_ColumnWiseTuple, "KsKpi ntuple"); 00093 if( m_tuple ) { 00094 status = m_tuple->addItem("runNo", m_runNo); 00095 status = m_tuple->addItem("event", m_event); 00096 // status = m_tuple->addItem("Nchrg", m_nchrg); 00097 // status = m_tuple->addItem("Nneu", m_nneu); 00098 status = m_tuple->addItem("NGch", m_ngch, 0, 10); 00099 00100 status = m_tuple->addIndexedItem("pidcode", m_ngch, m_pidcode); 00101 status = m_tuple->addIndexedItem("pidprob", m_ngch, m_pidprob); 00102 status = m_tuple->addIndexedItem("pidchiDedx", m_ngch, m_pidchiDedx); 00103 status = m_tuple->addIndexedItem("pidchiTof1", m_ngch, m_pidchiTof1); 00104 status = m_tuple->addIndexedItem("pidchiTof2", m_ngch, m_pidchiTof2); 00105 00106 status = m_tuple->addItem("npip", m_npip); 00107 status = m_tuple->addItem("npim", m_npim); 00108 status = m_tuple->addItem("nkp", m_nkp); 00109 status = m_tuple->addItem("nkm", m_nkm); 00110 status = m_tuple->addItem("np", m_np); 00111 status = m_tuple->addItem("npb", m_npb); 00112 00113 status = m_tuple->addItem("vfits_chi", m_vfits_chi); 00114 status = m_tuple->addItem("vfits_vx", m_vfits_vx); 00115 status = m_tuple->addItem("vfits_vy", m_vfits_vy); 00116 status = m_tuple->addItem("vfits_vz", m_vfits_vz); 00117 status = m_tuple->addItem("vfits_vr", m_vfits_vr); 00118 00119 status = m_tuple->addItem("vfitp_chi", m_vfitp_chi); 00120 status = m_tuple->addItem("vfitp_vx", m_vfitp_vx); 00121 status = m_tuple->addItem("vfitp_vy", m_vfitp_vy); 00122 status = m_tuple->addItem("vfitp_vz", m_vfitp_vz); 00123 status = m_tuple->addItem("vfitp_vr", m_vfitp_vr); 00124 00125 status = m_tuple->addItem("vfit2_chi", m_vfit2_chi); 00126 status = m_tuple->addItem("vfit2_mks", m_vfit2_mks); 00127 status = m_tuple->addItem("vfit2_ct", m_vfit2_ct); 00128 status = m_tuple->addItem("vfit2_dl", m_vfit2_dl); 00129 status = m_tuple->addItem("vfit2_dle", m_vfit2_dle); 00130 00131 status = m_tuple->addIndexedItem("charge", m_ngch, m_charge); 00132 status = m_tuple->addIndexedItem("vx0", m_ngch, m_vx0); 00133 status = m_tuple->addIndexedItem("vy0", m_ngch, m_vy0); 00134 status = m_tuple->addIndexedItem("vz0", m_ngch, m_vz0); 00135 status = m_tuple->addIndexedItem("vr0", m_ngch, m_vr0); 00136 00137 status = m_tuple->addIndexedItem("vx", m_ngch, m_vx); 00138 status = m_tuple->addIndexedItem("vy", m_ngch, m_vy); 00139 status = m_tuple->addIndexedItem("vz", m_ngch, m_vz); 00140 status = m_tuple->addIndexedItem("vr", m_ngch, m_vr); 00141 00142 status = m_tuple->addIndexedItem("px", m_ngch, m_px); 00143 status = m_tuple->addIndexedItem("py", m_ngch, m_py); 00144 status = m_tuple->addIndexedItem("pz", m_ngch, m_pz); 00145 status = m_tuple->addIndexedItem("p", m_ngch, m_p); 00146 status = m_tuple->addIndexedItem("cost", m_ngch, m_cost); 00147 00148 status = m_tuple->addIndexedItem("probPH", m_ngch, m_probPH); 00149 status = m_tuple->addIndexedItem("normPH", m_ngch, m_normPH); 00150 status = m_tuple->addIndexedItem("chie", m_ngch, m_chie); 00151 status = m_tuple->addIndexedItem("chimu", m_ngch, m_chimu); 00152 status = m_tuple->addIndexedItem("chipi", m_ngch, m_chipi); 00153 status = m_tuple->addIndexedItem("chik", m_ngch, m_chik); 00154 status = m_tuple->addIndexedItem("chip", m_ngch, m_chip); 00155 status = m_tuple->addIndexedItem("ghit", m_ngch, m_ghit); 00156 status = m_tuple->addIndexedItem("thit", m_ngch, m_thit); 00157 00158 status = m_tuple->addIndexedItem("e_emc", m_ngch, m_e_emc); 00159 00160 status = m_tuple->addIndexedItem("qual_etof", m_ngch, m_qual_etof); 00161 status = m_tuple->addIndexedItem("tof_etof", m_ngch, m_tof_etof); 00162 status = m_tuple->addIndexedItem("te_etof", m_ngch, m_te_etof); 00163 status = m_tuple->addIndexedItem("tmu_etof", m_ngch, m_tmu_etof); 00164 status = m_tuple->addIndexedItem("tpi_etof", m_ngch, m_tpi_etof); 00165 status = m_tuple->addIndexedItem("tk_etof", m_ngch, m_tk_etof); 00166 status = m_tuple->addIndexedItem("tp_etof", m_ngch, m_tp_etof); 00167 00168 status = m_tuple->addIndexedItem("qual_btof1", m_ngch, m_qual_btof1); 00169 status = m_tuple->addIndexedItem("tof_btof1", m_ngch, m_tof_btof1); 00170 status = m_tuple->addIndexedItem("te_btof1", m_ngch, m_te_btof1); 00171 status = m_tuple->addIndexedItem("tmu_btof1", m_ngch, m_tmu_btof1); 00172 status = m_tuple->addIndexedItem("tpi_btof1", m_ngch, m_tpi_btof1); 00173 status = m_tuple->addIndexedItem("tk_btof1", m_ngch, m_tk_btof1); 00174 status = m_tuple->addIndexedItem("tp_btof1", m_ngch, m_tp_btof1); 00175 00176 status = m_tuple->addIndexedItem("qual_btof2", m_ngch, m_qual_btof2); 00177 status = m_tuple->addIndexedItem("tof_btof2", m_ngch, m_tof_btof2); 00178 status = m_tuple->addIndexedItem("te_btof2", m_ngch, m_te_btof2); 00179 status = m_tuple->addIndexedItem("tmu_btof2", m_ngch, m_tmu_btof2); 00180 status = m_tuple->addIndexedItem("tpi_btof2", m_ngch, m_tpi_btof2); 00181 status = m_tuple->addIndexedItem("tk_btof2", m_ngch, m_tk_btof2); 00182 status = m_tuple->addIndexedItem("tp_btof2", m_ngch, m_tp_btof2); 00183 00184 status = m_tuple->addItem("chi2_fs4c", m_chi2_fs4c); 00185 status = m_tuple->addItem("mks_fs4c", m_mks_fs4c); 00186 status = m_tuple->addItem("mkspi_fs4c",m_mkspi_fs4c); 00187 status = m_tuple->addItem("mksk_fs4c", m_mksk_fs4c); 00188 status = m_tuple->addItem("mkpi_fs4c", m_mkpi_fs4c); 00189 00190 status = m_tuple->addItem("4c_chi2", m_4c_chi2); 00191 status = m_tuple->addItem("4c_mks", m_4c_mks); 00192 status = m_tuple->addItem("4c_mkspi", m_4c_mkspi); 00193 status = m_tuple->addItem("4c_mksk", m_4c_mksk); 00194 status = m_tuple->addItem("4c_mkpi", m_4c_mkpi); 00195 status = m_tuple->addItem("4c_ks_px", m_4c_ks_px); 00196 status = m_tuple->addItem("4c_ks_py", m_4c_ks_py); 00197 status = m_tuple->addItem("4c_ks_pz", m_4c_ks_pz); 00198 status = m_tuple->addItem("4c_ks_p", m_4c_ks_p); 00199 status = m_tuple->addItem("4c_ks_cos", m_4c_ks_cos); 00200 00201 } else { 00202 log << MSG::ERROR << "Can not book N-tuple:" << long(m_tuple) << endreq; 00203 } 00204 } 00205 00206 if(service("THistSvc", m_thsvc).isFailure()) { 00207 log << MSG::ERROR << "Couldn't get THistSvc" << endreq; 00208 return StatusCode::FAILURE; 00209 } 00210 00211 // "DQAHist" is fixed 00212 // "DQAKsKpi" is control sample name, just as ntuple case. 00213 TH1F* hks_dl = new TH1F("ks_dl", "ks_dl", 300, -5.0, 25.0); 00214 if(m_thsvc->regHist("/DQAHist/DQAKsKpi/hks_dl", hks_dl).isFailure()) { 00215 log << MSG::ERROR << "Couldn't register ks_dl" << endreq; 00216 } 00217 00218 TH1F* hks_m = new TH1F("ks_m", "ks_m", 200,0.4, 0.6); 00219 if(m_thsvc->regHist("/DQAHist/DQAKsKpi/hks_m", hks_m).isFailure()) { 00220 log << MSG::ERROR << "Couldn't register ks_m" << endreq; 00221 } 00222 00223 TH1F* hkspi_m = new TH1F("kspi_m", "kspi_m", 200,0.6, 2.6); 00224 if(m_thsvc->regHist("/DQAHist/DQAKsKpi/hkspi_m", hkspi_m).isFailure()) { 00225 log << MSG::ERROR << "Couldn't register kspi_m" << endreq; 00226 } 00227 00228 TH1F* hks_p = new TH1F("ks_p", "ks_p", 100,0.0, 1.5); 00229 if(m_thsvc->regHist("/DQAHist/DQAKsKpi/hks_p", hks_p).isFailure()) { 00230 log << MSG::ERROR << "Couldn't register ks_p" << endreq; 00231 } 00232 00233 TH1F* hkpi_m = new TH1F("kpi_m", "kpi_m", 200,1.0, 3.0); 00234 if(m_thsvc->regHist("/DQAHist/DQAKsKpi/hkpi_m", hkpi_m).isFailure()) { 00235 log << MSG::ERROR << "Couldn't register kpi_m" << endreq; 00236 } 00237 00238 log << MSG::INFO << "successfully return from initialize()" <<endmsg; 00239 return StatusCode::SUCCESS; 00240 00241 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|