PrimaryVertex Class Reference

#include <PrimaryVertex.h>

List of all members.

Public Member Functions

 PrimaryVertex (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()

Private Member Functions

StatusCode RegisterEvtRecPrimaryVertex (EvtRecPrimaryVertex *aNewEvtRecPrimaryVertex, MsgStream &log)
void SelectGoodChargedTracks (SmartDataPtr< EvtRecEvent > &recEvent, SmartDataPtr< EvtRecTrackCol > &recTrackCol, std::vector< int > &icp, std::vector< int > &icm, std::vector< int > &iGood)

Private Attributes

int m_sel_number [15]
int m_trackNumberCut
double m_vz0Cut
double m_cosThetaCut
int m_fitMethod
double m_globalChisqCut
double m_chisqCut
int m_trackIteration
int m_vertexIteration
double m_chi2CutforTrkIter
int m_freedomCut
double m_chi2CutforSmooth
int m_output
NTuple::Tuple * m_tuple1
NTuple::Item< double > m_chig
NTuple::Item< long > m_ndofg
NTuple::Item< double > m_probg
NTuple::Item< double > m_gvx
NTuple::Item< double > m_gvy
NTuple::Item< double > m_gvz
NTuple::Tuple * m_tuple2
NTuple::Item< double > m_chis
NTuple::Item< double > m_chif
NTuple::Item< double > m_probs
NTuple::Item< double > m_probf
NTuple::Tuple * m_tuple3
NTuple::Item< double > m_pull_drho
NTuple::Item< double > m_pull_phi
NTuple::Item< double > m_pull_kapha
NTuple::Item< double > m_pull_dz
NTuple::Item< double > m_pull_lamb
NTuple::Item< double > m_pull_momentum
NTuple::Tuple * m_tuple4
NTuple::Item< double > m_chik
NTuple::Item< long > m_ndofk
NTuple::Item< double > m_probk
NTuple::Item< double > m_kvx
NTuple::Item< double > m_kvy
NTuple::Item< double > m_kvz


Detailed Description

Definition at line 16 of file PrimaryVertex.h.


Constructor & Destructor Documentation

PrimaryVertex::PrimaryVertex ( const std::string name,
ISvcLocator *  pSvcLocator 
)

Definition at line 45 of file PrimaryVertex.cxx.

References m_chi2CutforSmooth, m_chi2CutforTrkIter, m_chisqCut, m_cosThetaCut, m_fitMethod, m_freedomCut, m_globalChisqCut, m_output, m_trackIteration, m_trackNumberCut, m_vertexIteration, and m_vz0Cut.

00045                                                                             :
00046   Algorithm (name, pSvcLocator)
00047 {
00048   // Declare the properties
00049   declareProperty("Output", m_output = 0);
00050   declareProperty("TrackNumberCut", m_trackNumberCut = 1);
00051   declareProperty("CosThetaCut", m_cosThetaCut=0.93);
00052   declareProperty("Vz0Cut", m_vz0Cut = 40.0);
00053   // fit Method
00054   declareProperty("FitMethod", m_fitMethod = 0);
00055   // for global method
00056   declareProperty("Chi2CutOfGlobal", m_globalChisqCut = 200.0);
00057 
00058   // for Kalman method
00059   declareProperty("ChisqCut", m_chisqCut = 200.0);
00060   declareProperty("TrackIteration", m_trackIteration = 5);
00061   declareProperty("VertexIteration", m_vertexIteration = 5);
00062   declareProperty("Chi2CutforTrkIter", m_chi2CutforTrkIter = 0.1);
00063   declareProperty("FreedomCut", m_freedomCut = 1);
00064   declareProperty("Chi2CutforSmooth", m_chi2CutforSmooth = 200.0);
00065   //declareProperty("MinDistance", m_minDistance = 100.0);
00066   //declareProperty("MinPointX", m_minPointX = 0.1);
00067   //declareProperty("MinPointY", m_minPointY = 0.1);
00068 }


Member Function Documentation

StatusCode PrimaryVertex::execute (  ) 

Definition at line 223 of file PrimaryVertex.cxx.

References KalmanVertexFit::addTrack(), TrackPool::AddTrack(), VertexFit::AddVertex(), KalmanVertexFit::chiF(), KalmanVertexFit::chiS(), KalmanVertexFit::chisq(), VertexFit::chisq(), Bes_Common::DEBUG, DstMdcKalTrack::err(), EventModel::EvtRec::EvtRecEvent, EventModel::EvtRec::EvtRecTrackCol, VertexFit::Evx(), KalmanVertexFit::Ex(), KalmanVertexFit::filter(), VertexFit::Fit(), DstMdcKalTrack::helix(), genRecEmupikp::i, Bes_Common::INFO, KalmanVertexFit::init(), VertexFit::init(), KalmanVertexFit::initVertex(), InitVertexParameter(), KalmanVertexFit::instance(), VertexFit::instance(), m_chi2CutforSmooth, m_chi2CutforTrkIter, m_chif, m_chig, m_chik, m_chis, m_chisqCut, m_fitMethod, m_freedomCut, m_globalChisqCut, m_gvx, m_gvy, m_gvz, m_kvx, m_kvy, m_kvz, m_ndofg, m_ndofk, m_output, m_probf, m_probg, m_probk, m_probs, m_pull_drho, m_pull_dz, m_pull_kapha, m_pull_lamb, m_pull_momentum, m_pull_phi, m_sel_number, m_trackIteration, m_trackNumberCut, m_tuple1, m_tuple2, m_tuple3, m_tuple4, m_vertexIteration, msgSvc(), KalmanVertexFit::ndof(), KalmanVertexFit::numTrack(), DstMdcKalTrack::pion, KalmanVertexFit::pull(), KalmanVertexFit::pullmomentum(), RegisterEvtRecPrimaryVertex(), KalmanVertexFit::remove(), SelectGoodChargedTracks(), EvtRecPrimaryVertex::setChi2(), KalmanVertexFit::setChisqCut(), EvtRecPrimaryVertex::setErrorVertex(), EvtRecPrimaryVertex::setFitMethod(), EvtRecPrimaryVertex::setIsValid(), EvtRecPrimaryVertex::setNdof(), EvtRecPrimaryVertex::setNTracks(), DstMdcKalTrack::setPidType(), EvtRecPrimaryVertex::setTrackIdList(), KalmanVertexFit::setTrackIteration(), KalmanVertexFit::setTrackIterationCut(), EvtRecPrimaryVertex::setVertex(), KalmanVertexFit::setVertexIteration(), KalmanVertexFit::smooth(), KalmanVertexFit::trackIDList(), VertexFit::Vx(), KalmanVertexFit::x(), and xmass.

00224 {
00225   MsgStream log(msgSvc(), name());
00226   log << MSG::INFO << "in execute()" << endmsg;
00227 
00228   cout.precision(20);
00230   //  Read REC information
00232   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00233   SmartDataPtr<EvtRecEvent> recEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
00234   SmartDataPtr<EvtRecTrackCol> recTrackCol(eventSvc(), EventModel::EvtRec::EvtRecTrackCol);
00235   log << MSG::DEBUG << "run and event = " << eventHeader->runNumber() 
00236                                            << " " << eventHeader->eventNumber() << endreq;
00237   log << MSG::DEBUG <<"ncharg, nneu, tottks = "
00238           << recEvent->totalCharged() << " , "  << recEvent->totalNeutral() << " , "
00239           << recEvent->totalTracks() <<endreq;
00240   m_sel_number[0]++;
00241   /*
00242   if (eventHeader->eventNumber() % 1000 == 0) {
00243     cout << "Event number = " << eventHeader->eventNumber() << endl;
00244   }*/
00245 
00246   EvtRecPrimaryVertex* aNewEvtRecPrimaryVertex = new EvtRecPrimaryVertex;
00247 
00248   StatusCode sc = RegisterEvtRecPrimaryVertex(aNewEvtRecPrimaryVertex, log);
00249   if (sc != StatusCode::SUCCESS) {
00250     return sc;
00251   }
00252   
00253   // Cut 1 : for anything sample, at least 3 charged tracks
00254   if (recEvent->totalCharged() < m_trackNumberCut) {
00255     return StatusCode::SUCCESS;
00256   }
00257   m_sel_number[1]++;
00258 
00259   Vint icp, icm, iGood;
00260   SelectGoodChargedTracks(recEvent, recTrackCol, icp, icm, iGood);
00261 
00262   // Cut 2 : for anything sample, at least 3 good charged tracks 
00263   if (iGood.size() < m_trackNumberCut) {
00264     return StatusCode::SUCCESS;
00265   } 
00266   m_sel_number[2]++;
00267 
00268   //  Vertex Fit
00269   VertexParameter vxpar;
00270   InitVertexParameter(vxpar);
00271 
00272   // For Global Vertex Fitting
00273   if (m_fitMethod == 0) {
00274     VertexFit* vtxfit = VertexFit::instance();
00275     vtxfit->init();
00276     Vint tlis, trkidlis;
00277     for (int i = 0; i < iGood.size(); i++) {
00278       int trk_id = iGood[i];
00279       EvtRecTrackIterator itTrk = recTrackCol->begin() + trk_id;
00280       RecMdcKalTrack *kalTrk = (*itTrk)->mdcKalTrack();
00281       RecMdcKalTrack::setPidType(RecMdcKalTrack::pion);
00282       WTrackParameter wtrk(xmass[2], kalTrk->helix(), kalTrk->err());
00283       vtxfit->AddTrack(i ,wtrk);
00284       tlis.push_back(i);
00285       trkidlis.push_back(trk_id);
00286     } 
00287     vtxfit->AddVertex(0, vxpar, tlis);
00288     if(!vtxfit->Fit(0)) return StatusCode::SUCCESS;  //FIXME
00289     if(vtxfit->chisq(0) > m_globalChisqCut) return StatusCode::SUCCESS; //FIXME
00290     if (m_output == 1) {
00291       m_chig = vtxfit->chisq(0);
00292       m_ndofg = 2 * iGood.size() - 3;
00293       m_probg = TMath::Prob(m_chig, m_ndofg);
00294       HepVector glvtx = vtxfit->Vx(0);
00295       m_gvx = glvtx[0];
00296       m_gvy = glvtx[1];
00297       m_gvz = glvtx[2];
00298       m_tuple1->write();
00299     }
00300 /*
00301     cout << "========  After global vertex fitting =============" << endl;
00302     cout << "Event number = " << eventHeader->eventNumber() << endl;
00303     cout << "NTracks: " << iGood.size() << endl;
00304     cout << "Chisq: " << vtxfit->chisq(0) << endl;
00305     cout << "Ndof: " << 2 * iGood.size() - 3 << endl;
00306     cout << "FitMethod: "<< " 0 " << endl;
00307     cout << "Vertex position: " << vtxfit->Vx(0)<< endl;
00308     cout << "Vertex resolution: " << vtxfit->Evx(0) << endl;
00309     cout << "track id list : " << endl;
00310     for (int j = 0; j < trkidlis.size(); j++) {
00311       cout << trkidlis[j] << "  ";
00312     }
00313     cout << " " << endl; */
00314 
00315     aNewEvtRecPrimaryVertex->setNTracks(iGood.size());
00316     aNewEvtRecPrimaryVertex->setTrackIdList(trkidlis);
00317     aNewEvtRecPrimaryVertex->setChi2(vtxfit->chisq(0));
00318     aNewEvtRecPrimaryVertex->setNdof(2 * iGood.size() - 3);
00319     aNewEvtRecPrimaryVertex->setFitMethod(0);
00320     aNewEvtRecPrimaryVertex->setVertex(vtxfit->Vx(0));
00321     aNewEvtRecPrimaryVertex->setErrorVertex(vtxfit->Evx(0));
00322     aNewEvtRecPrimaryVertex->setIsValid(true);
00323 
00324   } else if (m_fitMethod == 1) { 
00325     // For Kalman Vertex Fitting
00326     KalmanVertexFit *kalvtx = KalmanVertexFit::instance();
00327     kalvtx->init();
00328     kalvtx->initVertex(vxpar);
00329     kalvtx->setChisqCut(m_chisqCut);
00330     kalvtx->setTrackIteration(m_trackIteration);
00331     kalvtx->setVertexIteration(m_vertexIteration);
00332     kalvtx->setTrackIterationCut(m_chi2CutforTrkIter);
00333     for(int i = 0; i < iGood.size(); i++) {
00334       int trk_id = iGood[i];
00335       EvtRecTrackIterator itTrk = recTrackCol->begin()+trk_id;
00336       RecMdcKalTrack *kalTrk = (*itTrk)->mdcKalTrack();
00337       RecMdcKalTrack::setPidType(RecMdcKalTrack::pion);
00338       HTrackParameter htrk(kalTrk->helix(), kalTrk->err(), trk_id, 2);
00339       kalvtx->addTrack(htrk);
00340     }
00341     kalvtx->filter();
00342 
00343     //int freedomCut = -3 + 2*m_trackNumberCut;
00344     if(kalvtx->ndof() >=  m_freedomCut) {   //Cut : add 2 when add every track
00345       //for(int i = 0; i < kalvtx->numTrack(); i++) {
00346       for(int i = 0; i < iGood.size(); i++) {
00347         if (m_output == 1) {
00348           m_chif = kalvtx->chiF(i);
00349           m_chis = kalvtx->chiS(i);
00350           m_probs = TMath::Prob(m_chis, 2);
00351           m_probf = TMath::Prob(m_chif, 2);
00352           m_tuple2->write();
00353         }
00354         if(kalvtx->chiS(i) > m_chi2CutforSmooth) kalvtx->remove(i);
00355       }
00356     }
00357     if(kalvtx->ndof() >= m_freedomCut) { //FIXME  to Rhopi is 0 , others are 1
00358       for(int i = 0; i < iGood.size(); i++) {
00359         kalvtx->smooth(i);
00360 
00361         HepVector Pull(5, 0);
00362         Pull = kalvtx->pull(i);
00363         if (m_output == 1) {
00364           m_pull_drho = Pull[0];
00365           m_pull_phi = Pull[1];
00366           m_pull_kapha = Pull[2];
00367           m_pull_dz = Pull[3];
00368           m_pull_lamb = Pull[4];
00369           m_pull_momentum = kalvtx->pullmomentum(i);
00370           m_tuple3->write();
00371         }
00372       }
00373       if (m_output == 1) {
00374         m_chik = kalvtx->chisq();
00375         m_ndofk = kalvtx->ndof();
00376         m_probk = TMath::Prob(m_chik, m_ndofk);
00377         HepVector xp(3, 0);
00378         xp = kalvtx->x();
00379         m_kvx = xp[0];
00380         m_kvy = xp[1];
00381         m_kvz = xp[2];
00382         m_tuple4->write();
00383       }
00384 
00385       m_sel_number[3]++;
00386     /* 
00387       cout << "========  After Kalman vertex fitting =============" << endl;
00388       cout << "NTracks: " << kalvtx->numTrack() << endl;
00389       cout << "Chisq: " << kalvtx->chisq() << endl;
00390       cout << "Ndof: " <<  kalvtx->ndof() << endl;
00391       cout << "FitMethod: "<< " 1 " << endl;
00392       cout << "Vertex position: " << kalvtx->x() << endl;
00393       cout << "Vertex resolution: " << kalvtx->Ex() << endl;
00394       for (int j = 0; j < (kalvtx->trackIDList()).size(); j++) {
00395         cout << kalvtx->trackIDList()[j] << "  ";
00396       }
00397       cout << " " << endl;*/
00398 
00399       aNewEvtRecPrimaryVertex->setNTracks(kalvtx->numTrack());
00400       aNewEvtRecPrimaryVertex->setTrackIdList(kalvtx->trackIDList()); 
00401       aNewEvtRecPrimaryVertex->setChi2(kalvtx->chisq());
00402       aNewEvtRecPrimaryVertex->setNdof(kalvtx->ndof());
00403       aNewEvtRecPrimaryVertex->setFitMethod(1);
00404       aNewEvtRecPrimaryVertex->setVertex(kalvtx->x());
00405       aNewEvtRecPrimaryVertex->setErrorVertex(kalvtx->Ex());
00406       aNewEvtRecPrimaryVertex->setIsValid(true);
00407 
00408     }
00409   }
00410   return StatusCode::SUCCESS;
00411 }

StatusCode PrimaryVertex::finalize (  ) 

Definition at line 415 of file PrimaryVertex.cxx.

References genRecEmupikp::i, Bes_Common::INFO, m_sel_number, and msgSvc().

00416 {
00417   MsgStream log(msgSvc(), name());
00418   log << MSG::INFO << "in finalize()" << endmsg;
00419 
00420   log << MSG::ALWAYS << "==================================" << endreq;
00421   log << MSG::ALWAYS << "survived event :";
00422   for(int i = 0; i < 10; i++){
00423     log << MSG::ALWAYS << m_sel_number[i] << " ";
00424   }
00425   log << MSG::ALWAYS << endreq;
00426   log << MSG::ALWAYS << "==================================" << endreq;
00427   return StatusCode::SUCCESS;
00428 }

StatusCode PrimaryVertex::initialize (  ) 

Definition at line 71 of file PrimaryVertex.cxx.

References calibUtil::ERROR, genRecEmupikp::i, Bes_Common::INFO, m_chif, m_chig, m_chik, m_chis, m_gvx, m_gvy, m_gvz, m_kvx, m_kvy, m_kvz, m_ndofg, m_ndofk, m_output, m_probf, m_probg, m_probk, m_probs, m_pull_drho, m_pull_dz, m_pull_kapha, m_pull_lamb, m_pull_momentum, m_pull_phi, m_sel_number, m_tuple1, m_tuple2, m_tuple3, m_tuple4, msgSvc(), and ntupleSvc().

00072 {
00073   MsgStream log(msgSvc(), name());
00074   log << MSG::INFO << "in initialize()" << endmsg;
00075  
00076   for(int i = 0; i < 15; i++){
00077     m_sel_number[i] = 0;
00078   }
00079 
00080   StatusCode status;
00081 
00082   if (m_output == 1) {
00083     NTuplePtr nt1(ntupleSvc(), "FILE999/glbvtx");
00084     if(nt1) m_tuple1 = nt1;
00085     else {
00086       m_tuple1 = ntupleSvc()->book ("FILE999/glbvtx", CLID_ColumnWiseTuple, "global vertex");
00087       if(m_tuple1) {
00088         status = m_tuple1->addItem("gvx", m_gvx);
00089         status = m_tuple1->addItem("gvy", m_gvy);
00090         status = m_tuple1->addItem("gvz", m_gvz);
00091         status = m_tuple1->addItem("chig", m_chig);
00092         status = m_tuple1->addItem("ndofg", m_ndofg);
00093         status = m_tuple1->addItem("probg", m_probg);
00094       } else {
00095         log << MSG::ERROR << "Cannot book N-tuple:" << long(m_tuple1) << endmsg;
00096         return StatusCode::FAILURE;
00097       }
00098     }
00099 
00100     NTuplePtr nt2(ntupleSvc(), "FILE999/chisq"); //chisq of Kalman filter 
00101     if(nt2) m_tuple2 = nt2;
00102     else {
00103       m_tuple2 = ntupleSvc()->book ("FILE999/chisq", CLID_ColumnWiseTuple, "chi-square of ");
00104       if(m_tuple2) {
00105         status = m_tuple2->addItem("chis", m_chis);
00106         status = m_tuple2->addItem("probs", m_probs);
00107         status = m_tuple2->addItem("chif", m_chif);
00108         status = m_tuple2->addItem("probf", m_probf);
00109       } else {
00110         log << MSG::ERROR << "Cannot book N-tuple:" << long(m_tuple2) << endmsg;
00111         return StatusCode::FAILURE;
00112       }
00113     }
00114 
00115     NTuplePtr nt3(ntupleSvc(), "FILE999/Pull");
00116     if(nt3) m_tuple3 = nt3;
00117     else {
00118       m_tuple3 = ntupleSvc()->book ("FILE999/Pull", CLID_ColumnWiseTuple, "Pull");
00119       if(m_tuple3) {
00120         status = m_tuple3->addItem("pull_drho", m_pull_drho);
00121         status = m_tuple3->addItem("pull_phi", m_pull_phi);
00122         status = m_tuple3->addItem("pull_kapha", m_pull_kapha);
00123         status = m_tuple3->addItem("pull_dz", m_pull_dz);
00124         status = m_tuple3->addItem("pull_lamb", m_pull_lamb);
00125         status = m_tuple3->addItem("pull_momentum", m_pull_momentum);
00126       } else {
00127         log << MSG::ERROR << "Cannot book N-tuple:" << long(m_tuple3) << endmsg;
00128         return StatusCode::FAILURE;
00129       }
00130     }
00131 
00132     NTuplePtr nt4(ntupleSvc(), "FILE999/kalvtx"); 
00133     if(nt4) m_tuple4 = nt4;
00134     else {
00135       m_tuple4 = ntupleSvc()->book ("FILE999/kalvtx", CLID_ColumnWiseTuple, "kalman vertex");
00136       if(m_tuple4) {
00137         status = m_tuple4->addItem("kvx", m_kvx);
00138         status = m_tuple4->addItem("kvy", m_kvy);
00139         status = m_tuple4->addItem("kvz", m_kvz);
00140         status = m_tuple4->addItem("chik", m_chik);
00141         status = m_tuple4->addItem("ndofk", m_ndofk);
00142         status = m_tuple4->addItem("probk", m_probk);
00143       } else {
00144         log << MSG::ERROR << "Cannot book N-tuple:" << long(m_tuple4) << endmsg;
00145         return StatusCode::FAILURE;
00146       }
00147     }
00148   } //end if output
00149 
00150   log << MSG::INFO << "successfully return from initialize()" <<endmsg;
00151   return StatusCode::SUCCESS;
00152 }

StatusCode PrimaryVertex::RegisterEvtRecPrimaryVertex ( EvtRecPrimaryVertex aNewEvtRecPrimaryVertex,
MsgStream &  log 
) [private]

Definition at line 155 of file PrimaryVertex.cxx.

References EventModel::EvtRec::EvtRecEvent, and Bes_Common::FATAL.

Referenced by execute().

00156                                                                   {
00157   DataObject *aEvtRecEvent;
00158   eventSvc()->findObject("/Event/EvtRec",aEvtRecEvent);
00159   if (aEvtRecEvent==NULL) {
00160     aEvtRecEvent = new EvtRecEvent();
00161     StatusCode sc = eventSvc()->registerObject("/Event/EvtRec",aEvtRecEvent);
00162     if(sc!=StatusCode::SUCCESS) {
00163       log << MSG::FATAL << "Could not register EvtRecEvent" <<endreq;
00164       return StatusCode::FAILURE;
00165     }
00166   }
00167   SmartIF<IDataManagerSvc> dataManSvc(eventSvc());
00168   DataObject *aEvtRecPrimaryVertex;
00169   eventSvc()->findObject("/Event/EvtRec/EvtRecPrimaryVertex",aEvtRecPrimaryVertex);
00170   if(aEvtRecPrimaryVertex != NULL) {
00171     //IDataManagerSvc *dataManSvc = dynamic_cast<IDataManagerSvc*> (eventSvc());
00172     dataManSvc->clearSubTree("/Event/EvtRec/EvtRecPrimaryVertex");
00173     eventSvc()->unregisterObject("/Event/EvtRec/EvtRecPrimaryVertex");
00174   }
00175   StatusCode sc = eventSvc()->registerObject("/Event/EvtRec/EvtRecPrimaryVertex",
00176                                                   aNewEvtRecPrimaryVertex);
00177   if (sc != StatusCode::SUCCESS) {
00178     log << MSG::FATAL << "Could not register EvtRecPrimaryVertex in TDS!" << endreq;
00179     return StatusCode::FAILURE;
00180   }
00181 
00182   return StatusCode::SUCCESS;
00183 }

void PrimaryVertex::SelectGoodChargedTracks ( SmartDataPtr< EvtRecEvent > &  recEvent,
SmartDataPtr< EvtRecTrackCol > &  recTrackCol,
std::vector< int > &  icp,
std::vector< int > &  icm,
std::vector< int > &  iGood 
) [private]

Definition at line 188 of file PrimaryVertex.cxx.

References DstMdcTrack::charge(), cos(), genRecEmupikp::i, m_cosThetaCut, m_vz0Cut, DstMdcTrack::theta(), and DstMdcTrack::z().

Referenced by execute().

00191                                        {
00192   assert(recEvent->totalCharged() <= recTrackCol->size());
00193   for (unsigned int i = 0; i < recEvent->totalCharged(); i++) {
00194     EvtRecTrackIterator itTrk = recTrackCol->begin() + i;
00195     if(!(*itTrk)->isMdcTrackValid()) continue;
00196     if(!(*itTrk)->isMdcKalTrackValid()) continue;
00197     RecMdcTrack* mdcTrk = (*itTrk)->mdcTrack();
00198     if (fabs(cos(mdcTrk->theta())) >= m_cosThetaCut) continue;
00199     if (fabs(mdcTrk->z()) >= m_vz0Cut) continue;
00200     iGood.push_back((*itTrk)->trackId());
00201     if (mdcTrk->charge() > 0) {
00202       icp.push_back((*itTrk)->trackId());
00203     } else if (mdcTrk->charge() < 0) {
00204       icm.push_back((*itTrk)->trackId());
00205     }
00206   }
00207 }


Member Data Documentation

double PrimaryVertex::m_chi2CutforSmooth [private]

Definition at line 46 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

double PrimaryVertex::m_chi2CutforTrkIter [private]

Definition at line 44 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

NTuple::Item<double> PrimaryVertex::m_chif [private]

Definition at line 71 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_chig [private]

Definition at line 62 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_chik [private]

Definition at line 84 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_chis [private]

Definition at line 70 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

double PrimaryVertex::m_chisqCut [private]

Definition at line 41 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

double PrimaryVertex::m_cosThetaCut [private]

Definition at line 38 of file PrimaryVertex.h.

Referenced by PrimaryVertex(), and SelectGoodChargedTracks().

int PrimaryVertex::m_fitMethod [private]

Definition at line 39 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

int PrimaryVertex::m_freedomCut [private]

Definition at line 45 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

double PrimaryVertex::m_globalChisqCut [private]

Definition at line 40 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

NTuple::Item<double> PrimaryVertex::m_gvx [private]

Definition at line 65 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_gvy [private]

Definition at line 66 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_gvz [private]

Definition at line 67 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_kvx [private]

Definition at line 87 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_kvy [private]

Definition at line 88 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_kvz [private]

Definition at line 89 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<long> PrimaryVertex::m_ndofg [private]

Definition at line 63 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<long> PrimaryVertex::m_ndofk [private]

Definition at line 85 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

int PrimaryVertex::m_output [private]

Definition at line 58 of file PrimaryVertex.h.

Referenced by execute(), initialize(), and PrimaryVertex().

NTuple::Item<double> PrimaryVertex::m_probf [private]

Definition at line 73 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_probg [private]

Definition at line 64 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_probk [private]

Definition at line 86 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_probs [private]

Definition at line 72 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_pull_drho [private]

Definition at line 76 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_pull_dz [private]

Definition at line 79 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_pull_kapha [private]

Definition at line 78 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_pull_lamb [private]

Definition at line 80 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_pull_momentum [private]

Definition at line 81 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Item<double> PrimaryVertex::m_pull_phi [private]

Definition at line 77 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

int PrimaryVertex::m_sel_number[15] [private]

Definition at line 34 of file PrimaryVertex.h.

Referenced by execute(), finalize(), and initialize().

int PrimaryVertex::m_trackIteration [private]

Definition at line 42 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

int PrimaryVertex::m_trackNumberCut [private]

Definition at line 36 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

NTuple::Tuple* PrimaryVertex::m_tuple1 [private]

Definition at line 61 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Tuple* PrimaryVertex::m_tuple2 [private]

Definition at line 69 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Tuple* PrimaryVertex::m_tuple3 [private]

Definition at line 75 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

NTuple::Tuple* PrimaryVertex::m_tuple4 [private]

Definition at line 83 of file PrimaryVertex.h.

Referenced by execute(), and initialize().

int PrimaryVertex::m_vertexIteration [private]

Definition at line 43 of file PrimaryVertex.h.

Referenced by execute(), and PrimaryVertex().

double PrimaryVertex::m_vz0Cut [private]

Definition at line 37 of file PrimaryVertex.h.

Referenced by PrimaryVertex(), and SelectGoodChargedTracks().


Generated on Tue Nov 29 23:20:43 2016 for BOSS_7.0.2 by  doxygen 1.4.7