#include <MdcNavigation.h>
Public Member Functions | |
StatusCode | execute () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | finalize () |
StatusCode | initialize () |
StatusCode | initialize () |
MdcNavigation (const std::string &name, ISvcLocator *pSvcLocator) | |
MdcNavigation (const std::string &name, ISvcLocator *pSvcLocator) | |
Private Member Functions | |
StatusCode | bookNTuple () |
StatusCode | bookNTuple () |
StatusCode | fillEvent () |
StatusCode | fillEvent () |
StatusCode | fillInit () |
StatusCode | fillInit () |
StatusCode | fillRecHits (RecMdcHitCol &hitCol) |
StatusCode | fillRecHits (RecMdcHitCol &hitCol) |
StatusCode | fillRecTrack (const RecMdcTrack *it, int mcTkNum, int recTkNum) |
StatusCode | fillRecTrack (const RecMdcTrack *it, int mcTkNum, int recTkNum) |
Hep3Vector | momentum (const RecMdcTrack *trk) |
Hep3Vector | momentum (const RecMdcTrack *trk) |
double | poca (const MdcDigi *aDigi, const HepVector helixPar, const HepSymMatrix errMat) |
double | poca (const MdcDigi *aDigi, const HepVector helixPar, const HepSymMatrix errMat) |
StatusCode | skipMcParticle (const Event::McParticle *it, int nKindSkiped, int *keepedPart) |
StatusCode | skipMcParticle (const Event::McParticle *it, int nKindSkiped, int *keepedPart) |
Private Attributes | |
double | Bz |
long | digiLayer [100] |
AIDA::IHistogram1D * | g_layerEff |
AIDA::IHistogram1D * | g_layerEff |
NTuple::Tuple * | g_tupleEvt |
NTuple::Tuple * | g_tupleEvt |
NTuple::Tuple * | g_tupleMc |
NTuple::Tuple * | g_tupleMc |
NTuple::Tuple * | g_tupleRec |
NTuple::Tuple * | g_tupleRec |
int | havedigi [43][288] |
int * | keepedParticles |
int * | keepedParticles |
double | m_d0Cut |
bool | m_debug |
bool | m_doSag |
bool | m_dropHot |
const MdcDetector * | m_gm |
const MdcDetector * | m_gm |
bool | m_hist |
bool | m_keepBadTdc |
bool | m_keepUnmatch |
int | m_maxMdcDigi |
int | m_mc |
NTuple::Array< long > | m_na_act |
NTuple::Array< long > | m_na_act |
NTuple::Array< double > | m_na_Adc |
NTuple::Array< double > | m_na_Adc |
NTuple::Item< double > | m_na_chi2 |
NTuple::Item< double > | m_na_chi2 |
NTuple::Array< double > | m_na_chi2add |
NTuple::Array< double > | m_na_chi2add |
NTuple::Item< double > | m_na_chi2Dof |
NTuple::Item< double > | m_na_chi2Dof |
NTuple::Item< double > | m_na_chi2Prob |
NTuple::Item< double > | m_na_chi2Prob |
NTuple::Item< double > | m_na_cpa |
NTuple::Item< double > | m_na_cpa |
NTuple::Item< double > | m_na_cpaE |
NTuple::Item< double > | m_na_cpaE |
NTuple::Item< double > | m_na_cpaRes |
NTuple::Item< double > | m_na_cpaRes |
NTuple::Item< double > | m_na_d0 |
NTuple::Item< double > | m_na_d0 |
NTuple::Item< double > | m_na_d0E |
NTuple::Item< double > | m_na_d0E |
NTuple::Item< double > | m_na_d0Res |
NTuple::Item< double > | m_na_d0Res |
NTuple::Item< double > | m_na_dCpa |
NTuple::Item< double > | m_na_dCpa |
NTuple::Item< double > | m_na_dD0 |
NTuple::Item< double > | m_na_dD0 |
NTuple::Array< double > | m_na_digiLayer |
NTuple::Array< double > | m_na_digiLayer |
NTuple::Array< double > | m_na_digiTkId |
NTuple::Array< double > | m_na_digiTkId |
NTuple::Array< double > | m_na_doca |
NTuple::Array< double > | m_na_doca |
NTuple::Item< double > | m_na_dP |
NTuple::Item< double > | m_na_dP |
NTuple::Item< double > | m_na_dPhi0 |
NTuple::Item< double > | m_na_dPhi0 |
NTuple::Item< double > | m_na_dPt |
NTuple::Item< double > | m_na_dPt |
NTuple::Item< double > | m_na_dPz |
NTuple::Item< double > | m_na_dPz |
NTuple::Array< double > | m_na_driftD |
NTuple::Array< double > | m_na_driftD |
NTuple::Array< double > | m_na_driftT |
NTuple::Array< double > | m_na_driftT |
NTuple::Item< double > | m_na_dTanl |
NTuple::Item< double > | m_na_dTanl |
NTuple::Item< double > | m_na_dZ0 |
NTuple::Item< double > | m_na_dZ0 |
NTuple::Array< double > | m_na_entra |
NTuple::Array< double > | m_na_entra |
NTuple::Item< double > | m_na_evtNo |
NTuple::Item< double > | m_na_evtNo |
NTuple::Item< double > | m_na_fiTerm |
NTuple::Item< double > | m_na_fiTerm |
NTuple::Array< double > | m_na_flaglr |
NTuple::Array< double > | m_na_flaglr |
NTuple::Array< double > | m_na_gwire |
NTuple::Array< double > | m_na_gwire |
NTuple::Array< double > | m_na_hitStat |
NTuple::Array< double > | m_na_hitStat |
NTuple::Array< double > | m_na_hitTkId |
NTuple::Array< double > | m_na_hitTkId |
NTuple::Array< double > | m_na_layer |
NTuple::Array< double > | m_na_layer |
NTuple::Item< double > | m_na_mccpa |
NTuple::Item< double > | m_na_mccpa |
NTuple::Item< double > | m_na_mcd0 |
NTuple::Item< double > | m_na_mcd0 |
NTuple::Item< double > | m_na_mcfifin |
NTuple::Item< double > | m_na_mcfifin |
NTuple::Item< double > | m_na_mcflag |
NTuple::Item< double > | m_na_mcflag |
NTuple::Item< double > | m_na_mcp |
NTuple::Item< double > | m_na_mcp |
NTuple::Item< double > | m_na_mcphi0 |
NTuple::Item< double > | m_na_mcphi0 |
NTuple::Item< double > | m_na_mcpid |
NTuple::Item< double > | m_na_mcpid |
NTuple::Item< double > | m_na_mcpt |
NTuple::Item< double > | m_na_mcpt |
NTuple::Item< double > | m_na_mcpx |
NTuple::Item< double > | m_na_mcpx |
NTuple::Item< double > | m_na_mcpy |
NTuple::Item< double > | m_na_mcpy |
NTuple::Item< double > | m_na_mcpz |
NTuple::Item< double > | m_na_mcpz |
NTuple::Item< double > | m_na_mcq |
NTuple::Item< double > | m_na_mcq |
NTuple::Item< double > | m_na_mctheta |
NTuple::Item< double > | m_na_mctheta |
NTuple::Item< double > | m_na_mcTkId |
NTuple::Item< double > | m_na_mcTkId |
NTuple::Item< double > | m_na_mcTkNum |
NTuple::Item< double > | m_na_mcTkNum |
NTuple::Item< double > | m_na_mcz0 |
NTuple::Item< double > | m_na_mcz0 |
NTuple::Item< double > | m_na_nAct |
NTuple::Item< double > | m_na_nAct |
NTuple::Item< long > | m_na_nDigi |
NTuple::Item< long > | m_na_nDigi |
NTuple::Item< double > | m_na_nDof |
NTuple::Item< double > | m_na_nDof |
NTuple::Item< double > | m_na_nEvtNoise |
NTuple::Item< double > | m_na_nEvtNoise |
NTuple::Item< long > | m_na_nHit |
NTuple::Item< long > | m_na_nHit |
NTuple::Item< double > | m_na_nMatch |
NTuple::Item< double > | m_na_nMatch |
NTuple::Item< double > | m_na_nNoise |
NTuple::Item< double > | m_na_nNoise |
NTuple::Item< double > | m_na_nSt |
NTuple::Item< double > | m_na_nSt |
NTuple::Item< double > | m_na_p |
NTuple::Item< double > | m_na_p |
NTuple::Item< double > | m_na_phi0 |
NTuple::Item< double > | m_na_phi0 |
NTuple::Item< double > | m_na_phi0E |
NTuple::Item< double > | m_na_phi0E |
NTuple::Item< double > | m_na_phi0Res |
NTuple::Item< double > | m_na_phi0Res |
NTuple::Item< double > | m_na_pt |
NTuple::Item< double > | m_na_pt |
NTuple::Item< double > | m_na_pz |
NTuple::Item< double > | m_na_pz |
NTuple::Item< double > | m_na_q |
NTuple::Item< double > | m_na_q |
NTuple::Item< double > | m_na_recTkNum |
NTuple::Item< double > | m_na_recTkNum |
NTuple::Array< double > | m_na_resid |
NTuple::Array< double > | m_na_resid |
NTuple::Item< double > | m_na_t2mcp |
NTuple::Item< double > | m_na_t2mcp |
NTuple::Item< double > | m_na_t2mcphi |
NTuple::Item< double > | m_na_t2mcphi |
NTuple::Item< double > | m_na_t2mcpt |
NTuple::Item< double > | m_na_t2mcpt |
NTuple::Item< double > | m_na_t2mctheta |
NTuple::Item< double > | m_na_t2mctheta |
NTuple::Item< double > | m_na_t2mcTkNum |
NTuple::Item< double > | m_na_t2mcTkNum |
NTuple::Item< double > | m_na_t2p |
NTuple::Item< double > | m_na_t2p |
NTuple::Item< double > | m_na_t2pt |
NTuple::Item< double > | m_na_t2pt |
NTuple::Item< double > | m_na_t2recTkNum |
NTuple::Item< double > | m_na_t2recTkNum |
NTuple::Item< double > | m_na_t2tanl |
NTuple::Item< double > | m_na_t2tanl |
NTuple::Item< long > | m_na_t3Curl |
NTuple::Item< long > | m_na_t3Curl |
NTuple::Item< double > | m_na_t3evtNo |
NTuple::Item< double > | m_na_t3evtNo |
NTuple::Array< long > | m_na_t3gwire |
NTuple::Array< long > | m_na_t3gwire |
NTuple::Array< long > | m_na_t3layer |
NTuple::Array< long > | m_na_t3layer |
NTuple::Item< double > | m_na_t3mcTk |
NTuple::Item< double > | m_na_t3mcTk |
NTuple::Item< long > | m_na_t3nDigi |
NTuple::Item< long > | m_na_t3nDigi |
NTuple::Array< long > | m_na_t3ovfl |
NTuple::Array< long > | m_na_t3ovfl |
NTuple::Item< long > | m_na_t3PatRec |
NTuple::Item< long > | m_na_t3PatRec |
NTuple::Array< double > | m_na_t3phi |
NTuple::Array< double > | m_na_t3phi |
NTuple::Array< double > | m_na_t3rc |
NTuple::Array< double > | m_na_t3rc |
NTuple::Item< double > | m_na_t3recTk |
NTuple::Item< double > | m_na_t3recTk |
NTuple::Array< double > | m_na_t3rt |
NTuple::Array< double > | m_na_t3rt |
NTuple::Array< double > | m_na_t3rtNot0 |
NTuple::Array< double > | m_na_t3rtNot0 |
NTuple::Item< long > | m_na_t3runNo |
NTuple::Item< long > | m_na_t3runNo |
NTuple::Item< double > | m_na_t3t0 |
NTuple::Item< double > | m_na_t3t0 |
NTuple::Item< double > | m_na_t3t0Stat |
NTuple::Item< double > | m_na_t3t0Stat |
NTuple::Item< double > | m_na_t3t0Truth |
NTuple::Item< double > | m_na_t3t0Truth |
NTuple::Item< double > | m_na_t3timing |
NTuple::Item< double > | m_na_t3timing |
NTuple::Array< long > | m_na_t3tNum |
NTuple::Array< long > | m_na_t3tNum |
NTuple::Item< long > | m_na_t3TrkReco |
NTuple::Item< long > | m_na_t3TrkReco |
NTuple::Array< long > | m_na_t3wire |
NTuple::Array< long > | m_na_t3wire |
NTuple::Array< double > | m_na_t3xMid |
NTuple::Array< double > | m_na_t3xMid |
NTuple::Item< long > | m_na_t3XRec |
NTuple::Item< long > | m_na_t3XRec |
NTuple::Array< double > | m_na_t3yMid |
NTuple::Array< double > | m_na_t3yMid |
NTuple::Item< double > | m_na_tanl |
NTuple::Item< double > | m_na_tanl |
NTuple::Item< double > | m_na_tanlE |
NTuple::Item< double > | m_na_tanlE |
NTuple::Item< double > | m_na_tanlRes |
NTuple::Item< double > | m_na_tanlRes |
NTuple::Array< double > | m_na_Tdc |
NTuple::Array< double > | m_na_Tdc |
NTuple::Item< long > | m_na_tkId |
NTuple::Item< long > | m_na_tkId |
NTuple::Item< long > | m_na_tkStat |
NTuple::Item< long > | m_na_tkStat |
NTuple::Array< double > | m_na_wire |
NTuple::Array< double > | m_na_wire |
NTuple::Item< double > | m_na_z0 |
NTuple::Item< double > | m_na_z0 |
NTuple::Item< double > | m_na_z0E |
NTuple::Item< double > | m_na_z0E |
NTuple::Item< double > | m_na_z0Res |
NTuple::Item< double > | m_na_z0Res |
NTuple::Array< double > | m_na_zhit |
NTuple::Array< double > | m_na_zhit |
int | m_nMcHit |
HepPDT::ParticleDataTable * | m_particleTable |
HepPDT::ParticleDataTable * | m_particleTable |
IMagneticFieldSvc * | m_pIMF |
IMagneticFieldSvc * | m_pIMF |
bool | m_poca |
bool | m_rawData |
RawDataProviderSvc * | m_rawDataProviderSvc |
RawDataProviderSvc * | m_rawDataProviderSvc |
double | m_z0Cut |
short | multiTdcCount [43][288] |
long | nDigiTk [100] |
double | nNoise |
int | t_curlTk |
long | t_eventNo |
int | t_mcTkNum |
int | t_nTk |
int | t_patRecTk |
int | t_recTkNum |
long | t_runNo |
double | t_t0 |
double | t_t0Stat |
double | t_t0Truth |
int | t_trkRecoTk |
int | t_xRecTk |
|
00045 : 00046 Algorithm(name, pSvcLocator) { 00047 declareProperty("hist", m_hist = 0); 00048 declareProperty("nMcHit", m_nMcHit= 5); 00049 declareProperty("mc", m_mc = 1); 00050 00051 declareProperty("maxMdcDigi", m_maxMdcDigi= 0); 00052 declareProperty("keepBadTdc", m_keepBadTdc= 0); 00053 declareProperty("dropHot", m_dropHot= 0); 00054 declareProperty("keepUnmatch", m_keepUnmatch= 0); 00055 00056 declareProperty("poca", m_poca = false); 00057 declareProperty("doSag", m_doSag = false); 00058 00059 declareProperty("d0Cut", m_d0Cut= 1.); 00060 declareProperty("z0Cut", m_z0Cut= 10.); 00061 declareProperty("debug", m_debug = 0); 00062 00063 }
|
|
|
|
|
|
00362 { 00363 MsgStream log(msgSvc(), name()); 00364 StatusCode sc = StatusCode::SUCCESS; 00365 g_layerEff = histoSvc()->book( "layerEff", "layerEff",43,-0.5,42.5 ); 00366 00367 NTuplePtr nt1(ntupleSvc(), "MdcNavigation/rec"); 00368 if ( nt1 ) { g_tupleMc = nt1;} 00369 else { 00370 g_tupleMc = ntupleSvc()->book ("MdcNavigation/rec", CLID_ColumnWiseTuple, "rec and delta with mc truth"); 00371 if ( g_tupleMc ) { 00372 sc = g_tupleMc->addItem ("tkStat", m_na_tkStat); 00373 sc = g_tupleMc->addItem ("p", m_na_p); 00374 sc = g_tupleMc->addItem ("pt", m_na_pt); 00375 sc = g_tupleMc->addItem ("pz", m_na_pz); 00376 sc = g_tupleMc->addItem ("d0", m_na_d0); 00377 sc = g_tupleMc->addItem ("phi0", m_na_phi0); 00378 sc = g_tupleMc->addItem ("cpa", m_na_cpa); 00379 sc = g_tupleMc->addItem ("z0", m_na_z0); 00380 sc = g_tupleMc->addItem ("tanl", m_na_tanl); 00381 sc = g_tupleMc->addItem ("d0E", m_na_d0E); 00382 sc = g_tupleMc->addItem ("phi0E", m_na_phi0E); 00383 sc = g_tupleMc->addItem ("cpaE", m_na_cpaE); 00384 sc = g_tupleMc->addItem ("z0E", m_na_z0E); 00385 sc = g_tupleMc->addItem ("tanlE", m_na_tanlE); 00386 sc = g_tupleMc->addItem ("q", m_na_q); 00387 00388 sc = g_tupleMc->addItem ("dP", m_na_dP); 00389 sc = g_tupleMc->addItem ("dPt", m_na_dPt); 00390 sc = g_tupleMc->addItem ("dPz", m_na_dPz); 00391 sc = g_tupleMc->addItem ("dD0", m_na_dD0); 00392 sc = g_tupleMc->addItem ("dPhi0", m_na_dPhi0); 00393 sc = g_tupleMc->addItem ("dCpa", m_na_dCpa); 00394 sc = g_tupleMc->addItem ("dZ0", m_na_dZ0); 00395 sc = g_tupleMc->addItem ("dTanl", m_na_dTanl); 00396 00397 sc = g_tupleMc->addItem ("d0Res", m_na_d0Res); 00398 sc = g_tupleMc->addItem ("phiRes", m_na_phi0Res); 00399 sc = g_tupleMc->addItem ("z0Res", m_na_z0Res); 00400 sc = g_tupleMc->addItem ("tanlRes", m_na_tanlRes); 00401 sc = g_tupleMc->addItem ("cpaRes", m_na_cpaRes); 00402 00403 sc = g_tupleMc->addItem ("recTkNum",m_na_recTkNum); 00404 sc = g_tupleMc->addItem ("mcTkId", m_na_mcTkId); 00405 sc = g_tupleMc->addItem ("mcTkNum", m_na_mcTkNum); 00406 sc = g_tupleMc->addItem ("evtNo", m_na_evtNo); 00407 sc = g_tupleMc->addItem ("nSt", m_na_nSt); 00408 sc = g_tupleMc->addItem ("nDof", m_na_nDof); 00409 sc = g_tupleMc->addItem ("chi2", m_na_chi2); 00410 sc = g_tupleMc->addItem ("chi2Dof", m_na_chi2Dof); 00411 sc = g_tupleMc->addItem ("chi2Porb",m_na_chi2Prob); 00412 sc = g_tupleMc->addItem ("fiTerm", m_na_fiTerm); 00413 sc = g_tupleMc->addItem ("nMatch", m_na_nMatch); 00414 sc = g_tupleMc->addItem ("nAct", m_na_nAct); 00415 sc = g_tupleMc->addItem ("nTkNoise",m_na_nNoise); 00416 sc = g_tupleMc->addItem ("nEvtNoise",m_na_nEvtNoise); 00417 sc = g_tupleMc->addItem ("nHit", m_na_nHit, 0, 10000); 00418 sc = g_tupleMc->addItem ("nDigi", m_na_nDigi, 0, 10000); 00419 sc = g_tupleMc->addIndexedItem ("resid", m_na_nHit, m_na_resid); 00420 sc = g_tupleMc->addIndexedItem ("driftD", m_na_nHit, m_na_driftD); 00421 sc = g_tupleMc->addIndexedItem ("driftT", m_na_nHit, m_na_driftT); 00422 sc = g_tupleMc->addIndexedItem ("doca", m_na_nHit, m_na_doca); 00423 sc = g_tupleMc->addIndexedItem ("entra", m_na_nHit, m_na_entra); 00424 sc = g_tupleMc->addIndexedItem ("zhit", m_na_nHit, m_na_zhit); 00425 sc = g_tupleMc->addIndexedItem ("chi2add", m_na_nHit, m_na_chi2add); 00426 sc = g_tupleMc->addIndexedItem ("flaglr", m_na_nHit, m_na_flaglr); 00427 sc = g_tupleMc->addIndexedItem ("hitStat", m_na_nHit, m_na_hitStat); 00428 sc = g_tupleMc->addIndexedItem ("tdc", m_na_nHit, m_na_Tdc); 00429 sc = g_tupleMc->addIndexedItem ("adc", m_na_nHit, m_na_Adc); 00430 sc = g_tupleMc->addIndexedItem ("act", m_na_nHit, m_na_act); 00431 sc = g_tupleMc->addIndexedItem ("layer", m_na_nHit, m_na_layer); 00432 sc = g_tupleMc->addIndexedItem ("wire", m_na_nHit, m_na_wire); 00433 sc = g_tupleMc->addIndexedItem ("gwire", m_na_nHit, m_na_gwire); 00434 sc = g_tupleMc->addIndexedItem ("hitTkId", m_na_nHit, m_na_hitTkId); 00435 sc = g_tupleMc->addIndexedItem ("digiTkId", m_na_nDigi, m_na_digiTkId); 00436 sc = g_tupleMc->addIndexedItem ("mclayer", m_na_nDigi, m_na_digiLayer); 00437 } else { 00438 log << MSG::ERROR << " Cannot book N-tuple:" << long(g_tupleMc) << endmsg; 00439 return StatusCode::FAILURE; 00440 } 00441 }//end book of g_tupleMc 00442 NTuplePtr nt3(ntupleSvc(), "MdcNavigation/evt"); 00443 if ( nt3 ) { g_tupleEvt = nt3;} 00444 else { 00445 g_tupleEvt = ntupleSvc()->book ("MdcNavigation/evt", CLID_ColumnWiseTuple, "event"); 00446 if ( g_tupleEvt ) { 00447 sc = g_tupleEvt->addItem ("nTdsTk", m_na_t3recTk); 00448 sc = g_tupleEvt->addItem ("trkReco", m_na_t3TrkReco); 00449 sc = g_tupleEvt->addItem ("curlFinder", m_na_t3Curl); 00450 sc = g_tupleEvt->addItem ("patRec", m_na_t3PatRec); 00451 sc = g_tupleEvt->addItem ("xRec", m_na_t3XRec); 00452 sc = g_tupleEvt->addItem ("mcTkNum", m_na_t3mcTk); 00453 sc = g_tupleEvt->addItem ("evtNo", m_na_t3evtNo); 00454 sc = g_tupleEvt->addItem ("t0", m_na_t3t0); 00455 sc = g_tupleEvt->addItem ("t0Truth", m_na_t3t0Truth); 00456 sc = g_tupleEvt->addItem ("t0Stat", m_na_t3t0Stat); 00457 sc = g_tupleEvt->addItem ("runNo", m_na_t3runNo); 00458 sc = g_tupleEvt->addItem ("nDigi", m_na_t3nDigi, 0, 10000); 00459 sc = g_tupleEvt->addIndexedItem ("layer", m_na_t3nDigi, m_na_t3layer); 00460 sc = g_tupleEvt->addIndexedItem ("wire", m_na_t3nDigi, m_na_t3wire); 00461 sc = g_tupleEvt->addIndexedItem ("gwire", m_na_t3nDigi, m_na_t3gwire); 00462 sc = g_tupleEvt->addIndexedItem ("rt", m_na_t3nDigi, m_na_t3rt); 00463 sc = g_tupleEvt->addIndexedItem ("rtNot0",m_na_t3nDigi, m_na_t3rtNot0); 00464 sc = g_tupleEvt->addIndexedItem ("rc", m_na_t3nDigi, m_na_t3rc); 00465 sc = g_tupleEvt->addIndexedItem ("phi", m_na_t3nDigi, m_na_t3phi); 00466 sc = g_tupleEvt->addIndexedItem ("ovfl", m_na_t3nDigi, m_na_t3ovfl); 00467 sc = g_tupleEvt->addIndexedItem ("tNum", m_na_t3nDigi, m_na_t3tNum); 00468 } 00469 } 00470 }
|
|
|
|
00122 { 00123 setFilterPassed(false); 00124 MsgStream log(msgSvc(), name()); 00125 StatusCode sc = StatusCode::SUCCESS; 00126 00127 // Get EventNavigator from the TDS 00128 SmartDataPtr<EventNavigator> navigator (eventSvc(),"/Event/Navigator"); 00129 if( ! navigator ) { 00130 log << MSG::WARNING<< " Unable to retrieve EventNavigator" << endreq; 00131 m_rawData = true; 00132 } 00133 SmartDataPtr<RecMdcTrackCol> recMdcTrackCol(eventSvc(), "/Event/Recon/RecMdcTrackCol"); 00134 SmartDataPtr<RecMdcHitCol> recMdcHitCol(eventSvc(), "/Event/Recon/RecMdcHitCol"); 00135 00136 // get eventNo, t0 and MdcDigi 00137 if(m_hist){ 00138 sc = fillInit(); 00139 if ( sc!=StatusCode::SUCCESS ) { 00140 return StatusCode::FAILURE; 00141 } 00142 } 00143 if (m_mc){ 00144 // Get McParticleCol 00145 SmartDataPtr<Event::McParticleCol> mcParticles(eventSvc(),"/Event/MC/McParticleCol"); 00146 SmartDataPtr<Event::MdcMcHitCol> mcHit(eventSvc(),"/Event/MC/MdcMcHitCol"); 00147 if( ! mcParticles ) { 00148 log << MSG::WARNING<< " Unable to retrieve McParticleCol" << endreq; 00149 }else{ 00150 // For each McParticle ... 00151 t_mcTkNum = 0; 00152 McParticleCol::iterator it= mcParticles->begin(); 00153 log <<MSG::INFO << "mcParticles size = "<<mcParticles->size() << endreq;//yzhang debug 00154 for(; it!= mcParticles->end(); it++ ) { 00155 //int tkId = (*it)->trackIndex(); 00156 t_mcTkNum++; 00157 } 00158 } 00159 } 00160 t_mcTkNum = 0; 00161 t_recTkNum = 0; 00162 //for each rec track 00163 00164 if (!recMdcTrackCol){ 00165 log << MSG::WARNING<< " Unable to retrieve recMdcTrackCol" << endreq; 00166 return StatusCode::SUCCESS; 00167 } 00168 t_recTkNum = recMdcTrackCol->size(); 00169 00170 //=============loop over tracks============== 00171 RecMdcTrackCol::iterator it = recMdcTrackCol->begin(); 00172 for(;it != recMdcTrackCol->end(); it++ ) { 00173 if ( m_mc && navigator ) { 00174 McParticleVector particles = navigator->getMcParticles(*it); 00175 t_mcTkNum = particles.size(); 00176 RecMdcTrackVector tracks = navigator->getMdcTracks(particles[0]); 00177 // for FIRST parent particle 00178 if ( sc!=StatusCode::SUCCESS ) return StatusCode::FAILURE; 00179 } 00180 sc = fillRecTrack(*it, t_mcTkNum, t_recTkNum); 00181 t_nTk++; 00182 if ( sc!=StatusCode::SUCCESS ) return StatusCode::FAILURE; 00183 }//end of loop over tracks 00184 00185 //=============loop over hits============== 00186 fillRecHits(*recMdcHitCol); 00187 00188 00189 if(m_hist){fillEvent();} 00190 00191 return StatusCode::SUCCESS; 00192 }
|
|
|
|
00604 { 00605 if (!g_tupleEvt) return StatusCode::FAILURE; 00606 uint32_t getDigiFlag = 0; 00607 getDigiFlag += m_maxMdcDigi; 00608 if(m_dropHot) getDigiFlag |= MdcRawDataProvider::b_dropHot; 00609 if(m_keepBadTdc) getDigiFlag |= MdcRawDataProvider::b_keepBadTdc; 00610 if(m_keepUnmatch) getDigiFlag |= MdcRawDataProvider::b_keepUnmatch; 00611 MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec(getDigiFlag); 00612 00613 MdcDigiCol::iterator iter = mdcDigiVec.begin(); 00614 int t_i =0; 00615 for (;iter != mdcDigiVec.end(); iter++,++t_i ) { 00616 double t = RawDataUtil::MdcTime((*iter)->getTimeChannel()); 00617 double c = (*iter)->getChargeChannel(); 00618 int l = MdcID::layer((*iter)->identify()); 00619 int w = MdcID::wire((*iter)->identify()); 00620 if(g_tupleEvt){ 00621 m_na_t3layer[t_i] = l; 00622 m_na_t3wire[t_i] = w; 00623 m_na_t3gwire[t_i] = Constants::nWireBeforeLayer[l] + w; 00624 m_na_t3rt[t_i] = t; 00625 m_na_t3rtNot0[t_i] = t - t_t0; 00626 m_na_t3rc[t_i] = c; 00627 const MdcDigi* digi =const_cast<const MdcDigi*> (*iter); 00628 m_na_t3ovfl[t_i] = (*iter)->getOverflow(); 00629 m_na_t3tNum[t_i] = ((*iter)->getOverflow()&0xF0)>>4; 00630 } 00631 } 00632 if(g_tupleEvt) m_na_t3nDigi = t_i; 00633 00634 m_na_t3TrkReco = t_trkRecoTk; 00635 m_na_t3Curl = t_curlTk; 00636 m_na_t3PatRec= t_patRecTk; 00637 m_na_t3XRec= t_xRecTk; 00638 00639 m_na_t3t0 = t_t0; 00640 m_na_t3t0Stat = t_t0Stat; 00641 00642 m_na_t3recTk = t_recTkNum; 00643 m_na_t3mcTk = t_mcTkNum; 00644 00645 m_na_t3evtNo = t_eventNo; 00646 m_na_t3runNo = t_runNo; 00647 g_tupleEvt->write(); 00648 00649 return StatusCode::SUCCESS; 00650 }
|
|
|
|
00472 { 00473 MsgStream log(msgSvc(), name()); 00474 StatusCode sc = StatusCode::SUCCESS; 00475 00476 //int mcTkId = m_na_mcTkId; 00477 //m_na_nDigi = nDigiTk[mcTkId];//fill # of hit in this mc track 00478 t_trkRecoTk = 0; 00479 t_curlTk = 0; 00480 t_patRecTk = 0; 00481 t_xRecTk = 0; 00482 //-------------Get event header 00483 SmartDataPtr<Event::EventHeader> evtHead(eventSvc(),"/Event/EventHeader"); 00484 if (evtHead) { 00485 t_runNo = evtHead->runNumber(); 00486 t_eventNo = evtHead->eventNumber(); 00487 }else{ 00488 log << MSG::WARNING<< "Could not retrieve event header" << endreq; 00489 return StatusCode::FAILURE; 00490 } 00491 if(m_debug) std::cout<< "evtNo:"<<t_eventNo << std::endl; 00492 00493 //------------Get event time 00494 t_t0 = -1; 00495 t_t0Stat = -1; 00496 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00497 00498 if (!aevtimeCol || aevtimeCol->size()==0) { 00499 log << MSG::WARNING << "Could not find RecEsTimeCol" << endreq; 00500 }else{ 00501 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin(); 00502 t_t0 = (*iter_evt)->getTest(); 00503 t_t0Stat = (*iter_evt)->getStat(); 00504 } 00505 00506 //------------- Get McDigi collection 00507 uint32_t getDigiFlag = 0; 00508 getDigiFlag += m_maxMdcDigi; 00509 if(m_dropHot) getDigiFlag |= MdcRawDataProvider::b_dropHot; 00510 if(m_keepBadTdc) getDigiFlag |= MdcRawDataProvider::b_keepBadTdc; 00511 if(m_keepUnmatch) getDigiFlag |= MdcRawDataProvider::b_keepUnmatch; 00512 MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec(getDigiFlag); 00513 if ((mdcDigiVec.size()==0)) { 00514 log << MSG::WARNING << t_eventNo <<"No digi or could not find event in MdcDigiVec" << endreq; 00515 } 00516 00517 for (int ii=0;ii<43;ii++){ 00518 for (int jj=0;jj<288;jj++){ 00519 havedigi[ii][jj]= -99;//no hit or noise 00520 } 00521 } 00522 00523 for(int imc=0;imc<100;imc++){ 00524 nDigiTk[imc]=0; 00525 digiLayer[imc]=0; 00526 } 00527 00528 for(int ii=0;ii<43;ii++) for(int jj=0;jj<288;jj++) multiTdcCount[ii][jj]=0; 00529 MdcDigiCol::iterator iter = mdcDigiVec.begin(); 00530 for (;iter != mdcDigiVec.end(); iter++ ) { 00531 double t = RawDataUtil::MdcTime((*iter)->getTimeChannel()); 00532 double c = (*iter)->getChargeChannel(); 00533 int l = MdcID::layer((*iter)->identify()); 00534 int w = MdcID::wire((*iter)->identify()); 00535 multiTdcCount[l][w]++; 00536 } 00537 00538 int t_i=0; 00539 iter = mdcDigiVec.begin(); 00540 for (;iter != mdcDigiVec.end(); iter++,++t_i ) { 00541 double t = RawDataUtil::MdcTime((*iter)->getTimeChannel()); 00542 double c = (*iter)->getChargeChannel(); 00543 int l = MdcID::layer((*iter)->identify()); 00544 int w = MdcID::wire((*iter)->identify()); 00545 if(!m_rawData){ 00546 int tkid = (*iter)->getTrackIndex(); 00547 havedigi[l][w]= tkid; 00548 if (g_tupleMc){ 00549 //m_na_digiTkId[t_i] = tkid; 00550 } 00551 if(tkid>-1){ 00552 ++nDigiTk[tkid]; 00553 }else{ 00554 nNoise++; 00555 } 00556 } 00557 //if (g_tupleMc) m_na_digiLayer[t_i] = l; 00558 } 00559 return sc; 00560 }
|
|
|
|
00691 { 00692 int ihit=0; 00693 RecMdcHitCol::iterator itHit = hitCol.begin(); 00694 for(;itHit != hitCol.end(); itHit++ ) { 00695 RecMdcHit* h = *itHit; 00696 if ( !h ) continue; 00697 double m_na_lr = h->getFlagLR(); 00698 double ddrift = -999; 00699 double ddoca = -999; 00700 ddoca = h->getDoca(); 00701 if( 0 == m_na_lr ){ ddrift = h->getDriftDistLeft(); 00702 }else{ ddrift = h->getDriftDistRight();} 00703 m_na_resid[ihit] = fabs(ddrift) - fabs(ddoca); 00704 if( 0 == m_na_lr ){ m_na_resid[ihit] *= -1.0;} 00705 m_na_driftD[ihit] = ddrift; 00706 m_na_driftT[ihit] = h->getDriftT(); 00707 m_na_doca[ihit] = ddoca; 00708 m_na_entra[ihit] = h->getEntra(); 00709 m_na_zhit[ihit] = h->getZhit(); 00710 m_na_chi2add[ihit] = h->getChisqAdd(); 00711 m_na_flaglr[ihit] = h->getFlagLR(); 00712 m_na_hitStat[ihit] = h->getStat(); 00713 m_na_Tdc[ihit] = h->getTdc(); 00714 m_na_Adc[ihit] = h->getAdc(); 00715 m_na_act[ihit] = h->getStat(); 00716 int tlayer = MdcID::layer(h->getMdcId()); 00717 int twire = MdcID::wire(h->getMdcId()); 00718 m_na_layer[ihit] = tlayer; 00719 m_na_wire[ihit] = twire; 00720 m_na_gwire[ihit] = Constants::nWireBeforeLayer[tlayer] + twire; 00721 ++ihit; 00722 }//end of loop over hits 00723 m_na_nHit = ihit; 00724 return StatusCode::SUCCESS; 00725 }
|
|
|
|
00223 { 00224 00225 //int mcTkId = m_na_mcTkId; 00226 //m_na_nDigi = nDigiTk[mcTkId];//fill # of hit in this mc track 00227 m_na_nEvtNoise = nNoise;//fill # of noise hit in this event 00228 //m_na_mcTkNum = mcTkNum;// how many mc track are this track include 00229 m_na_recTkNum = recTkNum;//how many rec track are this track's mc particle include 00230 CLHEP::Hep3Vector rec_mom = momentum(tk); 00231 // fill rec momentum 00232 m_na_p = rec_mom.mag(); 00233 m_na_pt = rec_mom.perp(); 00234 m_na_pz = rec_mom.z(); 00235 //cout << "MSG::INFO Retrieved McParticles for for RecMdcTrack # " << it->getId() 00236 // << " of reconstructed momentum " << rec_mom << " GeV/c" << endl; 00237 //five param and it's error matrix 00238 m_na_d0 = tk->helix(0); 00239 m_na_phi0 = tk->helix(1); 00240 m_na_cpa = tk->helix(2); 00241 m_na_z0 = tk->helix(3); 00242 m_na_tanl = tk->helix(4); 00243 00244 if( m_na_d0 > m_d0Cut ) { 00245 std::cout<<__FILE__<<" "<<__LINE__<<" evtNo: "<<t_eventNo<<" d0:"<<std::setw(5)<<m_na_d0<<">"<<m_d0Cut<< std::endl; 00246 setFilterPassed(true); 00247 } 00248 if( m_na_z0 > m_z0Cut ) { 00249 std::cout<<__FILE__<<" "<<__LINE__<<" evtNo: "<<t_eventNo<<" z0:"<<std::setw(5)<<m_na_z0<<">"<<m_z0Cut<< std::endl; 00250 setFilterPassed(true); 00251 } 00252 //const CLHEP::HepSymMatrix tkErrM = tk->err(); 00253 m_na_d0E = tk->err(0); 00254 m_na_phi0E = tk->err(2); 00255 m_na_cpaE = tk->err(5); 00256 m_na_z0E = tk->err(9); 00257 m_na_tanlE = tk->err(14); 00258 m_na_q = tk->charge(); 00259 //fill track about 00260 m_na_chi2 = tk->chi2(); 00261 //m_na_nHit = tk->getNhits(); 00262 m_na_nDof = tk->ndof(); 00263 if ( m_na_nDof > 0 ) { 00264 m_na_chi2Dof = m_na_chi2/(float)m_na_nDof; 00265 } else { 00266 m_na_chi2Dof = 200.; 00267 } 00268 m_na_chi2Prob = probab(m_na_nDof, m_na_chi2); 00269 m_na_nSt = tk->nster(); 00270 m_na_fiTerm = tk->getFiTerm(); 00271 00272 if (tk->stat()==0){ 00273 t_trkRecoTk++; 00274 }else if(tk->stat()==1){ 00275 t_curlTk++; 00276 }else if(tk->stat()==2){ 00277 t_patRecTk++; 00278 }else if(tk->stat()==3){ 00279 t_xRecTk++; 00280 } 00281 m_na_tkStat = tk->stat(); 00282 00284 //int ihit = 0; 00285 //int layerEff[43]; 00286 //for (int ii=0;ii<43;ii++){ 00287 // layerEff[ii]=0; 00288 //} 00289 int noiseHit=0; 00290 int matchHit=0; 00291 int nAct = 0; 00292 HitRefVec hl = tk->getVecHits(); 00293 HitRefVec::iterator hitIt = hl.begin(); 00294 for (;hitIt!=hl.end();++hitIt){ 00295 RecMdcHit* h = *hitIt; 00296 if ( !h ) continue; 00297 if (h->getStat()!=0) nAct++; 00298 // //fill residual 00299 // double m_na_lr = h->getFlagLR(); 00300 // double ddrift = -999;double ddoca = -999; 00301 // ddoca = h->getDoca(); 00302 // if( 0 == m_na_lr ){ ddrift = h->getDriftDistLeft(); 00303 // }else{ ddrift = h->getDriftDistRight();} 00304 // m_na_resid[ihit] = fabs(ddrift) - fabs(ddoca); 00305 // if( 0 == m_na_lr ){ m_na_resid[ihit] *= -1.0;} 00306 // m_na_driftD[ihit] = ddrift; 00307 // m_na_driftT[ihit] = h->getDriftT(); 00308 // m_na_doca[ihit] = ddoca; 00309 // m_na_entra[ihit] = h->getEntra(); 00310 // m_na_zhit[ihit] = h->getZhit(); 00311 // m_na_chi2add[ihit] = h->getChisqAdd(); 00312 // m_na_flaglr[ihit] = h->getFlagLR(); 00313 // m_na_hitStat[ihit] = h->getStat(); 00314 // m_na_Tdc[ihit] = h->getTdc(); 00315 // m_na_Adc[ihit] = h->getAdc(); 00316 // m_na_act[ihit] = h->getStat(); 00317 00318 00319 int tlayer = MdcID::layer(h->getMdcId()); 00320 int twire = MdcID::wire(h->getMdcId()); 00321 // m_na_layer[ihit] = tlayer; 00322 // m_na_wire[ihit] = twire; 00323 // m_na_gwire[ihit] = Constants::nWireBeforeLayer[tlayer] + twire; 00324 // if (0==layerEff[tlayer]){ 00325 // layerEff[tlayer]=1; 00326 // g_layerEff->fill(tlayer); 00327 // } 00328 00329 if(havedigi[tlayer][twire]<0){ 00330 ++noiseHit; 00331 } 00332 //else{ 00333 //if(havedigi[tlayer][twire] == mcTkId) ++matchHit; 00334 // m_na_hitTkId[ihit] = havedigi[tlayer][twire]; 00335 //} 00336 // ++ihit; 00337 } 00338 m_na_nAct = nAct; 00339 m_na_nNoise = noiseHit; 00340 m_na_nMatch = matchHit; 00341 g_tupleMc->write(); 00342 //------------------------------------------ 00343 // fill Rec Track 00344 //------------------------------------------ 00345 00346 if (m_poca){ 00347 uint32_t getDigiFlag = 0; 00348 getDigiFlag += m_maxMdcDigi; 00349 if(m_dropHot) getDigiFlag |= MdcRawDataProvider::b_dropHot; 00350 if(m_keepBadTdc) getDigiFlag |= MdcRawDataProvider::b_keepBadTdc; 00351 if(m_keepUnmatch) getDigiFlag |= MdcRawDataProvider::b_keepUnmatch; 00352 MdcDigiVec mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec(getDigiFlag); 00353 MdcDigiCol::iterator iter = mdcDigiVec.begin(); 00354 for (;iter != mdcDigiVec.end(); iter++) { 00355 poca((*iter),tk->helix(),tk->err()); 00356 } 00357 } 00358 00359 return StatusCode::SUCCESS; 00360 }
|
|
|
|
00196 { 00197 MsgStream log(msgSvc(), name()); 00198 log << MSG::INFO << "in finalize()" << endreq; 00199 std::cout<< "nTk == "<<t_nTk << std::endl;//yzhang debug 00200 delete keepedParticles; //FIXME 00201 return StatusCode::SUCCESS; 00202 }
|
|
|
|
00068 { 00069 MsgStream log(msgSvc(), name()); 00070 StatusCode sc = StatusCode::SUCCESS; 00071 00072 m_gm = MdcDetector::instance(m_doSag); 00073 if(NULL == m_gm) return StatusCode::FAILURE; 00074 00075 t_nTk = 0; 00076 //Initailize magnetic filed 00077 sc = service ("MagneticFieldSvc",m_pIMF); 00078 if(sc!=StatusCode::SUCCESS) { 00079 log << MSG::ERROR << "Unable to open Magnetic field service"<<endreq; 00080 return StatusCode::FAILURE; 00081 } 00082 00083 Bz = m_pIMF->getReferField()*1000.; 00084 00085 std::cout<<" Bz 1 "<<m_pIMF->getReferField()<<std::endl; 00086 00087 // Get the Particle Properties Service 00088 IPartPropSvc* p_PartPropSvc; 00089 static const bool CREATEIFNOTTHERE(true); 00090 sc = service("PartPropSvc", p_PartPropSvc, CREATEIFNOTTHERE); 00091 if (!sc.isSuccess() || 0 == p_PartPropSvc) { 00092 log << MSG::ERROR << " Could not initialize PartPropSvc" << endreq; 00093 return sc; 00094 } 00095 00096 m_particleTable = p_PartPropSvc->PDT(); 00097 00098 IRawDataProviderSvc* irawDataProviderSvc; 00099 sc = service ("RawDataProviderSvc", irawDataProviderSvc); 00100 m_rawDataProviderSvc = dynamic_cast<RawDataProviderSvc*> (irawDataProviderSvc); 00101 if ( sc.isFailure() ){ 00102 log << MSG::FATAL << "Could not load RawDataProviderSvc!" << endreq; 00103 return StatusCode::FAILURE; 00104 } 00105 00106 00107 if (m_hist){ 00108 sc = bookNTuple(); 00109 if (!sc.isSuccess()) { 00110 log << MSG::WARNING << " Could not book NTuple" << endreq; 00111 m_hist = 0; 00112 } 00113 } 00114 00115 keepedParticles = new int(211); 00116 00117 00118 return StatusCode::SUCCESS; 00119 }
|
|
|
|
00205 { 00206 // double dr = trk->helix(0); 00207 double fi0 = trk->helix(1); 00208 double cpa = trk->helix(2); 00209 double tanl = trk->helix(4); 00210 00211 double pxy = 0.; 00212 if(cpa != 0) pxy = 1/fabs(cpa); 00213 00214 double px = pxy * (-sin(fi0)); 00215 double py = pxy * cos(fi0); 00216 double pz = pxy * tanl; 00217 00218 Hep3Vector p; 00219 p.set(px, py, pz); // MeV/c 00220 return p; 00221 }
|
|
|
|
00652 { 00653 int lay = MdcID::layer(aDigi->identify()); 00654 int wire = MdcID::wire(aDigi->identify()); 00655 //======from five track parameter to calculate the exact position=====// 00656 double ALPHA_loc,rho,pt,kappa,phiIn; 00657 int charge; 00658 ALPHA_loc = 333.567*Bz; //magnetic field const 00659 charge = ( kappa >=0 ) ? 1 : -1 ; 00660 rho = ALPHA_loc/kappa ; 00661 pt = fabs( 1.0 / kappa); 00662 HepVector helix(helix); 00663 helix[0] = -helixPar[0]; //cm 00664 helix[1] = helixPar[1]+ pi/2; 00665 helix[2] = -1./helixPar[2]; 00666 helix[3] = helixPar[3]; //cm 00667 helix[4] = helixPar[4]; 00668 HelixTraj* m_helixTraj; 00669 MdcSagTraj* m_wireTraj_I; 00670 MdcSWire* m_mdcSWire_I; 00671 TrkPoca* m_trkPoca; 00672 TrkPoca* m_trkPoca_I; 00673 TrkPoca* m_trkPoca_O; 00674 MdcSagTraj* m_wireTraj_O; 00675 MdcSWire* m_mdcSWire_O; 00676 m_helixTraj = new HelixTraj(helix,errMat); 00677 //---------------wire in and wire out of this layer--------------------- 00678 const MdcLayer* layPtr = m_gm->Layer(lay); 00679 double fltLenIn = layPtr->rMid(); 00680 phiIn = helix[1] + helix[2]*fltLenIn;//phi0 + omega * L 00681 BesAngle tmp(phiIn - layPtr->phiEPOffset()); 00682 int wlow = (int)floor(layPtr->nWires() * tmp.rad() / twopi ); 00683 int wbig = (int)ceil(layPtr->nWires() * tmp.rad() / twopi ); 00684 if (tmp == 0 ){ wlow = -1; wbig = 1; } 00685 int wireIn,wireOut; 00686 wireIn = wbig; 00687 wireOut = wlow; 00688 std::cout<<" in MdcNavigation lay/4 "<<lay/4<<" phi "<<tmp<<" wire "<<wireIn<<" "<<wireOut<<std::endl; 00689 }
|
|
|
|
00562 { 00563 00564 MsgStream log(msgSvc(), name()); 00565 00566 int pdg_code = (*it).particleProperty(); 00567 if (fabs(pdg_code)>=8) { 00568 const HepPDT::ParticleData* particles = m_particleTable->particle(abs(pdg_code)); 00569 if( ! particles ){ 00570 log<<MSG::WARNING<<"Exotic particle found with PDG code "<<pdg_code<<endreq; 00571 }else{ 00572 // skip neutrals 00573 if( particles->charge() == 0 ){ 00574 log<<MSG::INFO<<"Skip charge == 0 mc particle "<<pdg_code<<endreq; 00575 return StatusCode::FAILURE; 00576 } 00577 } 00578 } 00579 00580 int mcTkId = (*it).trackIndex(); 00581 int nMcHit=0; 00582 SmartDataPtr<Event::MdcMcHitCol> mcMdcMcHitCol(eventSvc(),"/Event/MC/MdcMcHitCol"); 00583 if (!mcMdcMcHitCol) { 00584 log << MSG::INFO << "Could not find MdcMcHit" << endreq; 00585 }else{ 00586 Event::MdcMcHitCol::iterator iter_mchit = mcMdcMcHitCol->begin(); 00587 for (;iter_mchit != mcMdcMcHitCol->end(); iter_mchit++ ) { 00588 int iMcTk = (*iter_mchit)->getTrackIndex(); 00589 if (mcTkId == iMcTk) nMcHit++; 00590 } 00591 } 00592 if(nMcHit<m_nMcHit) return StatusCode::FAILURE;//5 for default 00593 00594 bool keeped = false; 00595 for (int i=0; i<nKindKeeped; i++){ 00596 if (abs(pdg_code) == pid[i]) keeped = true; 00597 } 00598 00599 if (!keeped) return StatusCode::FAILURE; 00600 00601 return StatusCode::SUCCESS; 00602 }//end of skipMcParticle()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|