00001 #include "DQADtagAlg/util/DQAKsInfo.h" 00002 00003 DQAKsInfo::DQAKsInfo(): m_track0(0),m_track1(0) 00004 { 00005 m_vtxFit = VertexFit::instance(); 00006 m_2ndVtxFit = SecondVertexFit::instance(); 00007 } 00008 00009 DQAKsInfo::DQAKsInfo(EvtRecTrack* track0, EvtRecTrack* track1,VertexParameter vtxpar, VertexParameter privtxpar) 00010 { 00011 m_vtxFit = VertexFit::instance(); 00012 m_2ndVtxFit = SecondVertexFit::instance(); 00013 m_track0 = track0; 00014 m_track1 = track1; 00015 m_vtxpar = vtxpar; 00016 m_privtxpar = privtxpar; 00017 } 00018 DQAKsInfo::~DQAKsInfo() 00019 { 00020 m_track0 = 0; 00021 m_track1 = 0; 00022 m_p4 = HepLorentzVector(0,0,0,0); 00023 m_vmks = 0; 00024 } 00025 bool DQAKsInfo::calculate() 00026 { 00027 if (m_track0 == 0 || m_track1 == 0 ) return false; 00028 RecMdcKalTrack* pion1Trk = m_track0->mdcKalTrack(); 00029 RecMdcKalTrack* pion2Trk = m_track1->mdcKalTrack(); 00030 HepLorentzVector pion1p4 = pion1Trk->p4(Ksinfo_mpi); 00031 HepLorentzVector pion2p4 = pion2Trk->p4(Ksinfo_mpi); 00032 HepLorentzVector ksp4 = pion1p4 + pion2p4; 00033 m_mksp4 = ksp4.m(); 00034 00035 WTrackParameter wvTrk1(Ksinfo_mpi, pion1Trk->getZHelix(), pion1Trk->getZError()); 00036 WTrackParameter wvTrk2(Ksinfo_mpi, pion2Trk->getZHelix(), pion2Trk->getZError()); 00037 00038 m_vtxFit->init(); 00039 m_vtxFit->setChisqCut(100); 00040 m_vtxFit->AddTrack(0, wvTrk1); 00041 m_vtxFit->AddTrack(1, wvTrk2); 00042 m_vtxFit->AddVertex(0, m_vtxpar, 0, 1); 00043 if ( ! m_vtxFit->Fit(0) ) return false; 00044 m_vtxFit->Swim(0); 00045 m_vtxFit->BuildVirtualParticle(0); 00046 WTrackParameter wtKs = m_vtxFit->wVirtualTrack(0); 00047 VertexParameter vtKs = m_vtxFit->vpar(0); 00048 00049 m_2ndVtxFit->init(); 00050 m_2ndVtxFit->setChisqCut(100); 00051 m_2ndVtxFit->setPrimaryVertex(m_privtxpar); 00052 m_2ndVtxFit->AddTrack(0, wtKs); 00053 m_2ndVtxFit->setVpar(vtKs); 00054 if ( ! m_2ndVtxFit->Fit() ) return false; 00055 HepLorentzVector vp4Ks = m_2ndVtxFit->p4par(); 00056 m_p4 = vp4Ks; 00057 m_vmks = vp4Ks.m(); 00058 m_vchi2ks1 = m_vtxFit->chisq(0); 00059 m_vchi2ks2 = m_2ndVtxFit->chisq(); 00060 m_vlks = m_2ndVtxFit->decayLength(); 00061 m_vrks = m_2ndVtxFit->decayLength() / m_2ndVtxFit->decayLengthError(); 00062 return true; 00063 }