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

MdcNavigation Class Reference

#include <MdcNavigation.h>

List of all members.

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 MdcDetectorm_gm
const MdcDetectorm_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
IMagneticFieldSvcm_pIMF
IMagneticFieldSvcm_pIMF
bool m_poca
bool m_rawData
RawDataProviderSvcm_rawDataProviderSvc
RawDataProviderSvcm_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


Constructor & Destructor Documentation

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

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   }

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


Member Function Documentation

StatusCode MdcNavigation::bookNTuple  )  [private]
 

StatusCode MdcNavigation::bookNTuple  )  [private]
 

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 }

StatusCode MdcNavigation::execute  ) 
 

StatusCode MdcNavigation::execute  ) 
 

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 }

StatusCode MdcNavigation::fillEvent  )  [private]
 

StatusCode MdcNavigation::fillEvent  )  [private]
 

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 }

StatusCode MdcNavigation::fillInit  )  [private]
 

StatusCode MdcNavigation::fillInit  )  [private]
 

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 }

StatusCode MdcNavigation::fillRecHits RecMdcHitCol hitCol  )  [private]
 

StatusCode MdcNavigation::fillRecHits RecMdcHitCol hitCol  )  [private]
 

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 }

StatusCode MdcNavigation::fillRecTrack const RecMdcTrack it,
int  mcTkNum,
int  recTkNum
[private]
 

StatusCode MdcNavigation::fillRecTrack const RecMdcTrack it,
int  mcTkNum,
int  recTkNum
[private]
 

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 }

StatusCode MdcNavigation::finalize  ) 
 

StatusCode MdcNavigation::finalize  ) 
 

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 }

StatusCode MdcNavigation::initialize  ) 
 

StatusCode MdcNavigation::initialize  ) 
 

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 }

Hep3Vector MdcNavigation::momentum const RecMdcTrack trk  )  [private]
 

Hep3Vector MdcNavigation::momentum const RecMdcTrack trk  )  [private]
 

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 }

double MdcNavigation::poca const MdcDigi aDigi,
const HepVector  helixPar,
const HepSymMatrix  errMat
[private]
 

double MdcNavigation::poca const MdcDigi aDigi,
const HepVector  helixPar,
const HepSymMatrix  errMat
[private]
 

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 }

StatusCode MdcNavigation::skipMcParticle const Event::McParticle it,
int  nKindSkiped,
int *  keepedPart
[private]
 

StatusCode MdcNavigation::skipMcParticle const Event::McParticle it,
int  nKindSkiped,
int *  keepedPart
[private]
 

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()


Member Data Documentation

double MdcNavigation::Bz [private]
 

long MdcNavigation::digiLayer [private]
 

AIDA::IHistogram1D* MdcNavigation::g_layerEff [private]
 

AIDA::IHistogram1D* MdcNavigation::g_layerEff [private]
 

NTuple::Tuple* MdcNavigation::g_tupleEvt [private]
 

NTuple::Tuple* MdcNavigation::g_tupleEvt [private]
 

NTuple::Tuple* MdcNavigation::g_tupleMc [private]
 

NTuple::Tuple* MdcNavigation::g_tupleMc [private]
 

NTuple::Tuple* MdcNavigation::g_tupleRec [private]
 

NTuple::Tuple* MdcNavigation::g_tupleRec [private]
 

int MdcNavigation::havedigi [private]
 

int* MdcNavigation::keepedParticles [private]
 

int* MdcNavigation::keepedParticles [private]
 

double MdcNavigation::m_d0Cut [private]
 

bool MdcNavigation::m_debug [private]
 

bool MdcNavigation::m_doSag [private]
 

bool MdcNavigation::m_dropHot [private]
 

const MdcDetector* MdcNavigation::m_gm [private]
 

const MdcDetector* MdcNavigation::m_gm [private]
 

bool MdcNavigation::m_hist [private]
 

bool MdcNavigation::m_keepBadTdc [private]
 

bool MdcNavigation::m_keepUnmatch [private]
 

int MdcNavigation::m_maxMdcDigi [private]
 

int MdcNavigation::m_mc [private]
 

NTuple::Array<long> MdcNavigation::m_na_act [private]
 

NTuple::Array<long> MdcNavigation::m_na_act [private]
 

NTuple::Array<double> MdcNavigation::m_na_Adc [private]
 

NTuple::Array<double> MdcNavigation::m_na_Adc [private]
 

NTuple::Item<double> MdcNavigation::m_na_chi2 [private]
 

NTuple::Item<double> MdcNavigation::m_na_chi2 [private]
 

NTuple::Array<double> MdcNavigation::m_na_chi2add [private]
 

NTuple::Array<double> MdcNavigation::m_na_chi2add [private]
 

NTuple::Item<double> MdcNavigation::m_na_chi2Dof [private]
 

NTuple::Item<double> MdcNavigation::m_na_chi2Dof [private]
 

NTuple::Item<double> MdcNavigation::m_na_chi2Prob [private]
 

NTuple::Item<double> MdcNavigation::m_na_chi2Prob [private]
 

NTuple::Item<double> MdcNavigation::m_na_cpa [private]
 

NTuple::Item<double> MdcNavigation::m_na_cpa [private]
 

NTuple::Item<double> MdcNavigation::m_na_cpaE [private]
 

NTuple::Item<double> MdcNavigation::m_na_cpaE [private]
 

NTuple::Item<double> MdcNavigation::m_na_cpaRes [private]
 

NTuple::Item<double> MdcNavigation::m_na_cpaRes [private]
 

NTuple::Item<double> MdcNavigation::m_na_d0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_d0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_d0E [private]
 

NTuple::Item<double> MdcNavigation::m_na_d0E [private]
 

NTuple::Item<double> MdcNavigation::m_na_d0Res [private]
 

NTuple::Item<double> MdcNavigation::m_na_d0Res [private]
 

NTuple::Item<double> MdcNavigation::m_na_dCpa [private]
 

NTuple::Item<double> MdcNavigation::m_na_dCpa [private]
 

NTuple::Item<double> MdcNavigation::m_na_dD0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_dD0 [private]
 

NTuple::Array<double> MdcNavigation::m_na_digiLayer [private]
 

NTuple::Array<double> MdcNavigation::m_na_digiLayer [private]
 

NTuple::Array<double> MdcNavigation::m_na_digiTkId [private]
 

NTuple::Array<double> MdcNavigation::m_na_digiTkId [private]
 

NTuple::Array<double> MdcNavigation::m_na_doca [private]
 

NTuple::Array<double> MdcNavigation::m_na_doca [private]
 

NTuple::Item<double> MdcNavigation::m_na_dP [private]
 

NTuple::Item<double> MdcNavigation::m_na_dP [private]
 

NTuple::Item<double> MdcNavigation::m_na_dPhi0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_dPhi0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_dPt [private]
 

NTuple::Item<double> MdcNavigation::m_na_dPt [private]
 

NTuple::Item<double> MdcNavigation::m_na_dPz [private]
 

NTuple::Item<double> MdcNavigation::m_na_dPz [private]
 

NTuple::Array<double> MdcNavigation::m_na_driftD [private]
 

NTuple::Array<double> MdcNavigation::m_na_driftD [private]
 

NTuple::Array<double> MdcNavigation::m_na_driftT [private]
 

NTuple::Array<double> MdcNavigation::m_na_driftT [private]
 

NTuple::Item<double> MdcNavigation::m_na_dTanl [private]
 

NTuple::Item<double> MdcNavigation::m_na_dTanl [private]
 

NTuple::Item<double> MdcNavigation::m_na_dZ0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_dZ0 [private]
 

NTuple::Array<double> MdcNavigation::m_na_entra [private]
 

NTuple::Array<double> MdcNavigation::m_na_entra [private]
 

NTuple::Item<double> MdcNavigation::m_na_evtNo [private]
 

NTuple::Item<double> MdcNavigation::m_na_evtNo [private]
 

NTuple::Item<double> MdcNavigation::m_na_fiTerm [private]
 

NTuple::Item<double> MdcNavigation::m_na_fiTerm [private]
 

NTuple::Array<double> MdcNavigation::m_na_flaglr [private]
 

NTuple::Array<double> MdcNavigation::m_na_flaglr [private]
 

NTuple::Array<double> MdcNavigation::m_na_gwire [private]
 

NTuple::Array<double> MdcNavigation::m_na_gwire [private]
 

NTuple::Array<double> MdcNavigation::m_na_hitStat [private]
 

NTuple::Array<double> MdcNavigation::m_na_hitStat [private]
 

NTuple::Array<double> MdcNavigation::m_na_hitTkId [private]
 

NTuple::Array<double> MdcNavigation::m_na_hitTkId [private]
 

NTuple::Array<double> MdcNavigation::m_na_layer [private]
 

NTuple::Array<double> MdcNavigation::m_na_layer [private]
 

NTuple::Item<double> MdcNavigation::m_na_mccpa [private]
 

NTuple::Item<double> MdcNavigation::m_na_mccpa [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcd0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcd0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcfifin [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcfifin [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcflag [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcflag [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcp [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcp [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcphi0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcphi0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpid [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpid [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpt [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpt [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpx [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpx [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpy [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpy [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpz [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcpz [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcq [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcq [private]
 

NTuple::Item<double> MdcNavigation::m_na_mctheta [private]
 

NTuple::Item<double> MdcNavigation::m_na_mctheta [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcTkId [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcTkId [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcTkNum [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcTkNum [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcz0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_mcz0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_nAct [private]
 

NTuple::Item<double> MdcNavigation::m_na_nAct [private]
 

NTuple::Item<long> MdcNavigation::m_na_nDigi [private]
 

NTuple::Item<long> MdcNavigation::m_na_nDigi [private]
 

NTuple::Item<double> MdcNavigation::m_na_nDof [private]
 

NTuple::Item<double> MdcNavigation::m_na_nDof [private]
 

NTuple::Item<double> MdcNavigation::m_na_nEvtNoise [private]
 

NTuple::Item<double> MdcNavigation::m_na_nEvtNoise [private]
 

NTuple::Item<long> MdcNavigation::m_na_nHit [private]
 

NTuple::Item<long> MdcNavigation::m_na_nHit [private]
 

NTuple::Item<double> MdcNavigation::m_na_nMatch [private]
 

NTuple::Item<double> MdcNavigation::m_na_nMatch [private]
 

NTuple::Item<double> MdcNavigation::m_na_nNoise [private]
 

NTuple::Item<double> MdcNavigation::m_na_nNoise [private]
 

NTuple::Item<double> MdcNavigation::m_na_nSt [private]
 

NTuple::Item<double> MdcNavigation::m_na_nSt [private]
 

NTuple::Item<double> MdcNavigation::m_na_p [private]
 

NTuple::Item<double> MdcNavigation::m_na_p [private]
 

NTuple::Item<double> MdcNavigation::m_na_phi0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_phi0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_phi0E [private]
 

NTuple::Item<double> MdcNavigation::m_na_phi0E [private]
 

NTuple::Item<double> MdcNavigation::m_na_phi0Res [private]
 

NTuple::Item<double> MdcNavigation::m_na_phi0Res [private]
 

NTuple::Item<double> MdcNavigation::m_na_pt [private]
 

NTuple::Item<double> MdcNavigation::m_na_pt [private]
 

NTuple::Item<double> MdcNavigation::m_na_pz [private]
 

NTuple::Item<double> MdcNavigation::m_na_pz [private]
 

NTuple::Item<double> MdcNavigation::m_na_q [private]
 

NTuple::Item<double> MdcNavigation::m_na_q [private]
 

NTuple::Item<double> MdcNavigation::m_na_recTkNum [private]
 

NTuple::Item<double> MdcNavigation::m_na_recTkNum [private]
 

NTuple::Array<double> MdcNavigation::m_na_resid [private]
 

NTuple::Array<double> MdcNavigation::m_na_resid [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcp [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcp [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcphi [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcphi [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcpt [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcpt [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mctheta [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mctheta [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcTkNum [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2mcTkNum [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2p [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2p [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2pt [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2pt [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2recTkNum [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2recTkNum [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2tanl [private]
 

NTuple::Item<double> MdcNavigation::m_na_t2tanl [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3Curl [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3Curl [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3evtNo [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3evtNo [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3gwire [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3gwire [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3layer [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3layer [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3mcTk [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3mcTk [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3nDigi [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3nDigi [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3ovfl [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3ovfl [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3PatRec [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3PatRec [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3phi [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3phi [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3rc [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3rc [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3recTk [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3recTk [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3rt [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3rt [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3rtNot0 [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3rtNot0 [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3runNo [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3runNo [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3t0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3t0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3t0Stat [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3t0Stat [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3t0Truth [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3t0Truth [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3timing [private]
 

NTuple::Item<double> MdcNavigation::m_na_t3timing [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3tNum [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3tNum [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3TrkReco [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3TrkReco [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3wire [private]
 

NTuple::Array<long> MdcNavigation::m_na_t3wire [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3xMid [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3xMid [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3XRec [private]
 

NTuple::Item<long> MdcNavigation::m_na_t3XRec [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3yMid [private]
 

NTuple::Array<double> MdcNavigation::m_na_t3yMid [private]
 

NTuple::Item<double> MdcNavigation::m_na_tanl [private]
 

NTuple::Item<double> MdcNavigation::m_na_tanl [private]
 

NTuple::Item<double> MdcNavigation::m_na_tanlE [private]
 

NTuple::Item<double> MdcNavigation::m_na_tanlE [private]
 

NTuple::Item<double> MdcNavigation::m_na_tanlRes [private]
 

NTuple::Item<double> MdcNavigation::m_na_tanlRes [private]
 

NTuple::Array<double> MdcNavigation::m_na_Tdc [private]
 

NTuple::Array<double> MdcNavigation::m_na_Tdc [private]
 

NTuple::Item<long> MdcNavigation::m_na_tkId [private]
 

NTuple::Item<long> MdcNavigation::m_na_tkId [private]
 

NTuple::Item<long> MdcNavigation::m_na_tkStat [private]
 

NTuple::Item<long> MdcNavigation::m_na_tkStat [private]
 

NTuple::Array<double> MdcNavigation::m_na_wire [private]
 

NTuple::Array<double> MdcNavigation::m_na_wire [private]
 

NTuple::Item<double> MdcNavigation::m_na_z0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_z0 [private]
 

NTuple::Item<double> MdcNavigation::m_na_z0E [private]
 

NTuple::Item<double> MdcNavigation::m_na_z0E [private]
 

NTuple::Item<double> MdcNavigation::m_na_z0Res [private]
 

NTuple::Item<double> MdcNavigation::m_na_z0Res [private]
 

NTuple::Array<double> MdcNavigation::m_na_zhit [private]
 

NTuple::Array<double> MdcNavigation::m_na_zhit [private]
 

int MdcNavigation::m_nMcHit [private]
 

HepPDT::ParticleDataTable* MdcNavigation::m_particleTable [private]
 

HepPDT::ParticleDataTable* MdcNavigation::m_particleTable [private]
 

IMagneticFieldSvc* MdcNavigation::m_pIMF [private]
 

IMagneticFieldSvc* MdcNavigation::m_pIMF [private]
 

bool MdcNavigation::m_poca [private]
 

bool MdcNavigation::m_rawData [private]
 

RawDataProviderSvc* MdcNavigation::m_rawDataProviderSvc [private]
 

RawDataProviderSvc* MdcNavigation::m_rawDataProviderSvc [private]
 

double MdcNavigation::m_z0Cut [private]
 

short MdcNavigation::multiTdcCount [private]
 

long MdcNavigation::nDigiTk [private]
 

double MdcNavigation::nNoise [private]
 

int MdcNavigation::t_curlTk [private]
 

long MdcNavigation::t_eventNo [private]
 

int MdcNavigation::t_mcTkNum [private]
 

int MdcNavigation::t_nTk [private]
 

int MdcNavigation::t_patRecTk [private]
 

int MdcNavigation::t_recTkNum [private]
 

long MdcNavigation::t_runNo [private]
 

double MdcNavigation::t_t0 [private]
 

double MdcNavigation::t_t0Stat [private]
 

double MdcNavigation::t_t0Truth [private]
 

int MdcNavigation::t_trkRecoTk [private]
 

int MdcNavigation::t_xRecTk [private]
 


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