#include <PrimaryVertex.h>
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 |
Definition at line 16 of file PrimaryVertex.h.
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 }
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 }
double PrimaryVertex::m_chi2CutforSmooth [private] |
double PrimaryVertex::m_chi2CutforTrkIter [private] |
NTuple::Item<double> PrimaryVertex::m_chif [private] |
NTuple::Item<double> PrimaryVertex::m_chig [private] |
NTuple::Item<double> PrimaryVertex::m_chik [private] |
NTuple::Item<double> PrimaryVertex::m_chis [private] |
double PrimaryVertex::m_chisqCut [private] |
double PrimaryVertex::m_cosThetaCut [private] |
Definition at line 38 of file PrimaryVertex.h.
Referenced by PrimaryVertex(), and SelectGoodChargedTracks().
int PrimaryVertex::m_fitMethod [private] |
int PrimaryVertex::m_freedomCut [private] |
double PrimaryVertex::m_globalChisqCut [private] |
NTuple::Item<double> PrimaryVertex::m_gvx [private] |
NTuple::Item<double> PrimaryVertex::m_gvy [private] |
NTuple::Item<double> PrimaryVertex::m_gvz [private] |
NTuple::Item<double> PrimaryVertex::m_kvx [private] |
NTuple::Item<double> PrimaryVertex::m_kvy [private] |
NTuple::Item<double> PrimaryVertex::m_kvz [private] |
NTuple::Item<long> PrimaryVertex::m_ndofg [private] |
NTuple::Item<long> PrimaryVertex::m_ndofk [private] |
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] |
NTuple::Item<double> PrimaryVertex::m_probg [private] |
NTuple::Item<double> PrimaryVertex::m_probk [private] |
NTuple::Item<double> PrimaryVertex::m_probs [private] |
NTuple::Item<double> PrimaryVertex::m_pull_drho [private] |
NTuple::Item<double> PrimaryVertex::m_pull_dz [private] |
NTuple::Item<double> PrimaryVertex::m_pull_kapha [private] |
NTuple::Item<double> PrimaryVertex::m_pull_lamb [private] |
NTuple::Item<double> PrimaryVertex::m_pull_momentum [private] |
NTuple::Item<double> PrimaryVertex::m_pull_phi [private] |
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] |
int PrimaryVertex::m_trackNumberCut [private] |
NTuple::Tuple* PrimaryVertex::m_tuple1 [private] |
NTuple::Tuple* PrimaryVertex::m_tuple2 [private] |
NTuple::Tuple* PrimaryVertex::m_tuple3 [private] |
NTuple::Tuple* PrimaryVertex::m_tuple4 [private] |
int PrimaryVertex::m_vertexIteration [private] |
double PrimaryVertex::m_vz0Cut [private] |
Definition at line 37 of file PrimaryVertex.h.
Referenced by PrimaryVertex(), and SelectGoodChargedTracks().