Public Member Functions | |
ParticleTreeDrawer (const edm::ParameterSet &) | |
Private Types | |
typedef std::vector< int > | vint |
accepted status codes | |
Private Member Functions | |
bool | accept (const reco::Candidate &) const |
accept candidate | |
void | analyze (const edm::Event &, const edm::EventSetup &) |
std::string | getParticleName (int id) const |
bool | hasValidDaughters (const reco::Candidate &) const |
has valid daughters in the chain | |
void | printDecay (const reco::Candidate &, const std::string &pre) const |
void | printInfo (const reco::Candidate &) const |
print 4 momenta | |
Private Attributes | |
std::vector< const reco::Candidate * > | cands_ |
pointer to collection | |
edm::ESHandle< ParticleDataTable > | pdt_ |
bool | printIndex_ |
bool | printP4_ |
print parameters | |
bool | printPtEtaPhi_ |
bool | printStatus_ |
bool | printVertex_ |
edm::InputTag | src_ |
vint | status_ |
Definition at line 13 of file ParticleTreeDrawer.cc.
typedef std::vector<int> ParticleTreeDrawer::vint [private] |
accepted status codes
Definition at line 25 of file ParticleTreeDrawer.cc.
ParticleTreeDrawer::ParticleTreeDrawer | ( | const edm::ParameterSet & | cfg | ) |
Definition at line 49 of file ParticleTreeDrawer.cc.
: src_( cfg.getParameter<InputTag>( "src" ) ), printP4_( cfg.getUntrackedParameter<bool>( "printP4", false ) ), printPtEtaPhi_( cfg.getUntrackedParameter<bool>( "printPtEtaPhi", false ) ), printVertex_( cfg.getUntrackedParameter<bool>( "printVertex", false ) ), printStatus_( cfg.getUntrackedParameter<bool>( "printStatus", false ) ), printIndex_( cfg.getUntrackedParameter<bool>( "printIndex", false ) ), status_( cfg.getUntrackedParameter<vint>( "status", vint() ) ) { }
bool ParticleTreeDrawer::accept | ( | const reco::Candidate & | c | ) | const [private] |
accept candidate
Definition at line 59 of file ParticleTreeDrawer.cc.
References spr::find(), reco::Candidate::status(), and status_.
Referenced by analyze(), hasValidDaughters(), and printDecay().
void ParticleTreeDrawer::analyze | ( | const edm::Event & | event, |
const edm::EventSetup & | es | ||
) | [private, virtual] |
Implements edm::EDAnalyzer.
Definition at line 83 of file ParticleTreeDrawer.cc.
References accept(), cands_, gather_cfg::cout, edm::EventSetup::getData(), AlCaHLTBitMon_ParallelJobs::p, pdt_, printDecay(), and src_.
{ es.getData( pdt_ ); Handle<View<Candidate> > particles; event.getByLabel( src_, particles ); cands_.clear(); for( View<Candidate>::const_iterator p = particles->begin(); p != particles->end(); ++ p ) { cands_.push_back( & * p ); } for( View<Candidate>::const_iterator p = particles->begin(); p != particles->end(); ++ p ) { if ( accept( * p ) ) { if ( p->mother() == 0 ) { cout << "-- decay tree: --" << endl; printDecay( * p, "" ); } } } }
std::string ParticleTreeDrawer::getParticleName | ( | int | id | ) | const [private] |
Definition at line 72 of file ParticleTreeDrawer.cc.
References pdt_.
Referenced by printDecay().
{ const ParticleData * pd = pdt_->particle( id ); if (!pd) { std::ostringstream ss; ss << "P" << id; return ss.str(); } else return pd->name(); }
bool ParticleTreeDrawer::hasValidDaughters | ( | const reco::Candidate & | c | ) | const [private] |
has valid daughters in the chain
Definition at line 64 of file ParticleTreeDrawer.cc.
References accept(), reco::Candidate::daughter(), i, and reco::Candidate::numberOfDaughters().
Referenced by printDecay().
void ParticleTreeDrawer::printDecay | ( | const reco::Candidate & | , |
const std::string & | pre | ||
) | const [private] |
Definition at line 118 of file ParticleTreeDrawer.cc.
References accept(), gather_cfg::cout, reco::Candidate::daughter(), getParticleName(), hasValidDaughters(), i, reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), and printInfo().
Referenced by analyze().
{ cout << getParticleName( c.pdgId() ); printInfo( c ); cout << endl; size_t ndau = c.numberOfDaughters(), validDau = 0; for( size_t i = 0; i < ndau; ++ i ) if ( accept( * c.daughter( i ) ) ) ++ validDau; if ( validDau == 0 ) return; bool lastLevel = true; for( size_t i = 0; i < ndau; ++ i ) { if ( hasValidDaughters( * c.daughter( i ) ) ) { lastLevel = false; break; } } if ( lastLevel ) { cout << pre << "+-> "; size_t vd = 0; for( size_t i = 0; i < ndau; ++ i ) { const Candidate * d = c.daughter( i ); if ( accept( * d ) ) { cout << getParticleName( d->pdgId() ); printInfo( * d ); if ( vd != validDau - 1 ) cout << " "; vd ++; } } cout << endl; return; } for( size_t i = 0; i < ndau; ++i ) { const Candidate * d = c.daughter( i ); assert( d != 0 ); if ( accept( * d ) ) { cout << pre << "+-> "; string prepre( pre ); if ( i == ndau - 1 ) prepre += " "; else prepre += "| "; printDecay( * d, prepre ); } } }
void ParticleTreeDrawer::printInfo | ( | const reco::Candidate & | c | ) | const [private] |
print 4 momenta
Definition at line 103 of file ParticleTreeDrawer.cc.
References trackerHits::c, cands_, gather_cfg::cout, reco::Candidate::energy(), reco::Candidate::eta(), spr::find(), newFWLiteAna::found, UserOptions_cff::idx, reco::Candidate::phi(), printIndex_, printP4_, printPtEtaPhi_, printStatus_, printVertex_, reco::Candidate::pt(), reco::Candidate::px(), reco::Candidate::py(), reco::Candidate::pz(), reco::Candidate::status(), reco::Candidate::vx(), reco::Candidate::vy(), and reco::Candidate::vz().
Referenced by printDecay().
{ if ( printP4_ ) cout << " (" << c.px() << ", " << c.py() << ", " << c.pz() << "; " << c.energy() << ")"; if ( printPtEtaPhi_ ) cout << " [" << c.pt() << ": " << c.eta() << ", " << c.phi() << "]"; if ( printVertex_ ) cout << " {" << c.vx() << ", " << c.vy() << ", " << c.vz() << "}"; if ( printStatus_ ) cout << "{status: " << c.status() << "}"; if ( printIndex_ ) { int idx = -1; vector<const Candidate *>::const_iterator found = find( cands_.begin(), cands_.end(), & c ); if ( found != cands_.end() ) { idx = found - cands_.begin(); cout << " <idx: " << idx << ">"; } } }
std::vector<const reco::Candidate *> ParticleTreeDrawer::cands_ [private] |
pointer to collection
Definition at line 34 of file ParticleTreeDrawer.cc.
Referenced by analyze(), and printInfo().
Definition at line 21 of file ParticleTreeDrawer.cc.
Referenced by analyze(), and getParticleName().
bool ParticleTreeDrawer::printIndex_ [private] |
Definition at line 23 of file ParticleTreeDrawer.cc.
Referenced by printInfo().
bool ParticleTreeDrawer::printP4_ [private] |
bool ParticleTreeDrawer::printPtEtaPhi_ [private] |
Definition at line 23 of file ParticleTreeDrawer.cc.
Referenced by printInfo().
bool ParticleTreeDrawer::printStatus_ [private] |
Definition at line 23 of file ParticleTreeDrawer.cc.
Referenced by printInfo().
bool ParticleTreeDrawer::printVertex_ [private] |
Definition at line 23 of file ParticleTreeDrawer.cc.
Referenced by printInfo().
edm::InputTag ParticleTreeDrawer::src_ [private] |
Definition at line 19 of file ParticleTreeDrawer.cc.
Referenced by analyze().
vint ParticleTreeDrawer::status_ [private] |
Definition at line 26 of file ParticleTreeDrawer.cc.
Referenced by accept().