Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

DQAKsKpi Class Reference

#include <DQAKsKpi.h>

List of all members.

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


Constructor & Destructor Documentation

DQAKsKpi::DQAKsKpi const std::string &  name,
ISvcLocator *  pSvcLocator
 

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 }

DQAKsKpi::DQAKsKpi const std::string &  name,
ISvcLocator *  pSvcLocator
 


Member Function Documentation

StatusCode DQAKsKpi::execute  ) 
 

StatusCode DQAKsKpi::execute  ) 
 

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 }

StatusCode DQAKsKpi::finalize  ) 
 

StatusCode DQAKsKpi::finalize  ) 
 

00882                               {
00883 
00884   MsgStream log(msgSvc(), name());
00885   log << MSG::INFO << "in finalize()" << endmsg;
00886   return StatusCode::SUCCESS;
00887 }

StatusCode DQAKsKpi::initialize  ) 
 

StatusCode DQAKsKpi::initialize  ) 
 

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 }


Member Data Documentation

NTuple::Item<double> DQAKsKpi::m_4c_chi2 [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_chi2 [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_cos [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_cos [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_p [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_p [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_px [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_px [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_py [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_py [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_pz [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_ks_pz [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mkpi [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mkpi [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mks [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mks [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mksk [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mksk [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mkspi [private]
 

NTuple::Item<double> DQAKsKpi::m_4c_mkspi [private]
 

NTuple::Array<long> DQAKsKpi::m_charge [private]
 

NTuple::Array<long> DQAKsKpi::m_charge [private]
 

int DQAKsKpi::m_checkDedx [private]
 

int DQAKsKpi::m_checkTof [private]
 

NTuple::Item<double> DQAKsKpi::m_chi2_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_chi2_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_chi2_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_chi2_fs4c [private]
 

NTuple::Array<float> DQAKsKpi::m_chie [private]
 

NTuple::Array<float> DQAKsKpi::m_chie [private]
 

NTuple::Array<float> DQAKsKpi::m_chik [private]
 

NTuple::Array<float> DQAKsKpi::m_chik [private]
 

NTuple::Array<float> DQAKsKpi::m_chimu [private]
 

NTuple::Array<float> DQAKsKpi::m_chimu [private]
 

NTuple::Array<float> DQAKsKpi::m_chip [private]
 

NTuple::Array<float> DQAKsKpi::m_chip [private]
 

NTuple::Array<float> DQAKsKpi::m_chipi [private]
 

NTuple::Array<float> DQAKsKpi::m_chipi [private]
 

NTuple::Array<double> DQAKsKpi::m_cost [private]
 

NTuple::Array<double> DQAKsKpi::m_cost [private]
 

double DQAKsKpi::m_cthcut [private]
 

NTuple::Array<float> DQAKsKpi::m_e_emc [private]
 

NTuple::Array<float> DQAKsKpi::m_e_emc [private]
 

double DQAKsKpi::m_energyThreshold [private]
 

NTuple::Item<long> DQAKsKpi::m_event [private]
 

NTuple::Item<long> DQAKsKpi::m_event [private]
 

double DQAKsKpi::m_gammaAngCut [private]
 

NTuple::Array<float> DQAKsKpi::m_ghit [private]
 

NTuple::Array<float> DQAKsKpi::m_ghit [private]
 

NTuple::Item<double> DQAKsKpi::m_mkpi_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mkpi_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mkpi_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_mkpi_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_mks_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mks_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mks_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_mks_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_mksk_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mksk_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mksk_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_mksk_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_mkspi_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mkspi_5c [private]
 

NTuple::Item<double> DQAKsKpi::m_mkspi_fs4c [private]
 

NTuple::Item<double> DQAKsKpi::m_mkspi_fs4c [private]
 

NTuple::Item<long> DQAKsKpi::m_ngch [private]
 

NTuple::Item<long> DQAKsKpi::m_ngch [private]
 

NTuple::Item<long> DQAKsKpi::m_nkm [private]
 

NTuple::Item<long> DQAKsKpi::m_nkm [private]
 

NTuple::Item<long> DQAKsKpi::m_nkp [private]
 

NTuple::Item<long> DQAKsKpi::m_nkp [private]
 

NTuple::Array<float> DQAKsKpi::m_normPH [private]
 

NTuple::Array<float> DQAKsKpi::m_normPH [private]
 

NTuple::Item<long> DQAKsKpi::m_np [private]
 

NTuple::Item<long> DQAKsKpi::m_np [private]
 

NTuple::Item<long> DQAKsKpi::m_npb [private]
 

NTuple::Item<long> DQAKsKpi::m_npb [private]
 

NTuple::Item<long> DQAKsKpi::m_npim [private]
 

NTuple::Item<long> DQAKsKpi::m_npim [private]
 

NTuple::Item<long> DQAKsKpi::m_npip [private]
 

NTuple::Item<long> DQAKsKpi::m_npip [private]
 

NTuple::Array<double> DQAKsKpi::m_p [private]
 

NTuple::Array<double> DQAKsKpi::m_p [private]
 

NTuple::Array<double> DQAKsKpi::m_pidchiDedx [private]
 

NTuple::Array<double> DQAKsKpi::m_pidchiDedx [private]
 

NTuple::Array<double> DQAKsKpi::m_pidchiTof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_pidchiTof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_pidchiTof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_pidchiTof2 [private]
 

NTuple::Array<long> DQAKsKpi::m_pidcode [private]
 

NTuple::Array<long> DQAKsKpi::m_pidcode [private]
 

NTuple::Array<double> DQAKsKpi::m_pidprob [private]
 

NTuple::Array<double> DQAKsKpi::m_pidprob [private]
 

NTuple::Array<float> DQAKsKpi::m_probPH [private]
 

NTuple::Array<float> DQAKsKpi::m_probPH [private]
 

NTuple::Array<double> DQAKsKpi::m_px [private]
 

NTuple::Array<double> DQAKsKpi::m_px [private]
 

NTuple::Array<double> DQAKsKpi::m_py [private]
 

NTuple::Array<double> DQAKsKpi::m_py [private]
 

NTuple::Array<double> DQAKsKpi::m_pz [private]
 

NTuple::Array<double> DQAKsKpi::m_pz [private]
 

NTuple::Array<double> DQAKsKpi::m_qual_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_qual_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_qual_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_qual_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_qual_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_qual_etof [private]
 

NTuple::Item<long> DQAKsKpi::m_runNo [private]
 

NTuple::Item<long> DQAKsKpi::m_runNo [private]
 

NTuple::Array<double> DQAKsKpi::m_te_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_te_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_te_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_te_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_te_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_te_etof [private]
 

NTuple::Array<float> DQAKsKpi::m_thit [private]
 

NTuple::Array<float> DQAKsKpi::m_thit [private]
 

ITHistSvc* DQAKsKpi::m_thsvc [private]
 

ITHistSvc* DQAKsKpi::m_thsvc [private]
 

NTuple::Array<double> DQAKsKpi::m_tk_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tk_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tk_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tk_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tk_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tk_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tmu_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tmu_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tmu_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tmu_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tmu_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tmu_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tof_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tof_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tof_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tof_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tof_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tof_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tp_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tp_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tp_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tp_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tp_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tp_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tpi_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tpi_btof1 [private]
 

NTuple::Array<double> DQAKsKpi::m_tpi_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tpi_btof2 [private]
 

NTuple::Array<double> DQAKsKpi::m_tpi_etof [private]
 

NTuple::Array<double> DQAKsKpi::m_tpi_etof [private]
 

NTuple::Tuple* DQAKsKpi::m_tuple [private]
 

NTuple::Tuple* DQAKsKpi::m_tuple [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_chi [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_chi [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_ct [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_ct [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_dl [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_dl [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_dle [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_dle [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_mks [private]
 

NTuple::Item<double> DQAKsKpi::m_vfit2_mks [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_chi [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_chi [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vr [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vr [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vx [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vx [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vy [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vy [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vz [private]
 

NTuple::Item<double> DQAKsKpi::m_vfitp_vz [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_chi [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_chi [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vr [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vr [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vx [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vx [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vy [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vy [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vz [private]
 

NTuple::Item<double> DQAKsKpi::m_vfits_vz [private]
 

NTuple::Array<double> DQAKsKpi::m_vr [private]
 

NTuple::Array<double> DQAKsKpi::m_vr [private]
 

NTuple::Array<double> DQAKsKpi::m_vr0 [private]
 

NTuple::Array<double> DQAKsKpi::m_vr0 [private]
 

double DQAKsKpi::m_vr0cut [private]
 

double DQAKsKpi::m_vr1cut [private]
 

NTuple::Array<double> DQAKsKpi::m_vx [private]
 

NTuple::Array<double> DQAKsKpi::m_vx [private]
 

NTuple::Array<double> DQAKsKpi::m_vx0 [private]
 

NTuple::Array<double> DQAKsKpi::m_vx0 [private]
 

NTuple::Array<double> DQAKsKpi::m_vy [private]
 

NTuple::Array<double> DQAKsKpi::m_vy [private]
 

NTuple::Array<double> DQAKsKpi::m_vy0 [private]
 

NTuple::Array<double> DQAKsKpi::m_vy0 [private]
 

NTuple::Array<double> DQAKsKpi::m_vz [private]
 

NTuple::Array<double> DQAKsKpi::m_vz [private]
 

NTuple::Array<double> DQAKsKpi::m_vz0 [private]
 

NTuple::Array<double> DQAKsKpi::m_vz0 [private]
 

double DQAKsKpi::m_vz0cut [private]
 

double DQAKsKpi::m_vz1cut [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 15:59:10 2011 for BOSS6.5.5 by  doxygen 1.3.9.1