CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
ParticleTreeDrawer Class Reference
Inheritance diagram for ParticleTreeDrawer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 ParticleTreeDrawer (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex >
const & 
esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector
< ProductResolverIndexAndSkipBit >
const & 
itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Types

typedef std::vector< int > vint
 accepted status codes More...
 

Private Member Functions

bool accept (const reco::Candidate &) const
 accept candidate More...
 
void analyze (const edm::Event &, const edm::EventSetup &) override
 
std::string getParticleName (int id) const
 
bool hasValidDaughters (const reco::Candidate &) const
 has valid daughters in the chain More...
 
void printDecay (const reco::Candidate &, const std::string &pre) const
 
void printInfo (const reco::Candidate &) const
 print 4 momenta More...
 

Private Attributes

std::vector< const
reco::Candidate * > 
cands_
 pointer to collection More...
 
edm::ESHandle< ParticleDataTablepdt_
 
edm::ESGetToken
< ParticleDataTable,
edm::DefaultRecord
pdtToken_
 
bool printIndex_
 
bool printP4_
 print parameters More...
 
bool printPtEtaPhi_
 
bool printStatus_
 
bool printVertex_
 
edm::EDGetTokenT< edm::View
< reco::Candidate > > 
srcToken_
 
vint status_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsInputProcessBlocks ()
 
static bool wantsProcessBlocks ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 15 of file ParticleTreeDrawer.cc.

Member Typedef Documentation

typedef std::vector<int> ParticleTreeDrawer::vint
private

accepted status codes

Definition at line 29 of file ParticleTreeDrawer.cc.

Constructor & Destructor Documentation

ParticleTreeDrawer::ParticleTreeDrawer ( const edm::ParameterSet cfg)

Definition at line 52 of file ParticleTreeDrawer.cc.

54  pdtToken_(esConsumes<ParticleDataTable, edm::DefaultRecord>()),
55  printP4_(cfg.getUntrackedParameter<bool>("printP4", false)),
56  printPtEtaPhi_(cfg.getUntrackedParameter<bool>("printPtEtaPhi", false)),
57  printVertex_(cfg.getUntrackedParameter<bool>("printVertex", false)),
58  printStatus_(cfg.getUntrackedParameter<bool>("printStatus", false)),
59  printIndex_(cfg.getUntrackedParameter<bool>("printIndex", false)),
60  status_(cfg.getUntrackedParameter<vint>("status", vint())) {}
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::View< reco::Candidate > > srcToken_
edm::ESGetToken< ParticleDataTable, edm::DefaultRecord > pdtToken_
std::vector< int > vint
accepted status codes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
bool printP4_
print parameters
T getParameter(std::string const &) const
Definition: ParameterSet.h:303

Member Function Documentation

bool ParticleTreeDrawer::accept ( const reco::Candidate c) const
private

accept candidate

Definition at line 62 of file ParticleTreeDrawer.cc.

References spr::find(), reco::Candidate::status(), and status_.

Referenced by analyze(), esMonitoring.FDJsonServer::handle_accept(), hasValidDaughters(), and printDecay().

62  {
63  if (status_.empty())
64  return true;
65  return find(status_.begin(), status_.end(), c.status()) != status_.end();
66 }
virtual int status() const =0
status word
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
void ParticleTreeDrawer::analyze ( const edm::Event event,
const edm::EventSetup es 
)
overrideprivatevirtual

Implements edm::EDAnalyzer.

Definition at line 86 of file ParticleTreeDrawer.cc.

References accept(), cands_, gather_cfg::cout, edm::EventSetup::getHandle(), AlCaHLTBitMon_ParallelJobs::p, pdt_, pdtToken_, printDecay(), and srcToken_.

86  {
87  pdt_ = es.getHandle(pdtToken_);
88  Handle<View<Candidate> > particles;
89  event.getByToken(srcToken_, particles);
90  cands_.clear();
91  for (View<Candidate>::const_iterator p = particles->begin(); p != particles->end(); ++p) {
92  cands_.push_back(&*p);
93  }
94  for (View<Candidate>::const_iterator p = particles->begin(); p != particles->end(); ++p) {
95  if (accept(*p)) {
96  if (p->mother() == nullptr) {
97  cout << "-- decay tree: --" << endl;
98  printDecay(*p, "");
99  }
100  }
101  }
102 }
std::vector< const reco::Candidate * > cands_
pointer to collection
edm::ESHandle< ParticleDataTable > pdt_
edm::EDGetTokenT< edm::View< reco::Candidate > > srcToken_
edm::ESGetToken< ParticleDataTable, edm::DefaultRecord > pdtToken_
void printDecay(const reco::Candidate &, const std::string &pre) const
bool accept(const reco::Candidate &) const
accept candidate
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
tuple cout
Definition: gather_cfg.py:144
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:157
std::string ParticleTreeDrawer::getParticleName ( int  id) const
private

Definition at line 76 of file ParticleTreeDrawer.cc.

References gpuClustering::id, pdt_, and contentValuesCheck::ss.

Referenced by printDecay().

76  {
77  const ParticleData *pd = pdt_->particle(id);
78  if (!pd) {
79  std::ostringstream ss;
80  ss << "P" << id;
81  return ss.str();
82  } else
83  return pd->name();
84 }
uint16_t *__restrict__ id
edm::ESHandle< ParticleDataTable > pdt_
HepPDT::ParticleData ParticleData
bool ParticleTreeDrawer::hasValidDaughters ( const reco::Candidate c) const
private

has valid daughters in the chain

Definition at line 68 of file ParticleTreeDrawer.cc.

References accept(), reco::Candidate::daughter(), mps_fire::i, and reco::Candidate::numberOfDaughters().

Referenced by printDecay().

68  {
69  size_t ndau = c.numberOfDaughters();
70  for (size_t i = 0; i < ndau; ++i)
71  if (accept(*c.daughter(i)))
72  return true;
73  return false;
74 }
virtual const Candidate * daughter(size_type i) const =0
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
virtual size_type numberOfDaughters() const =0
number of daughters
bool accept(const reco::Candidate &) const
accept candidate
void ParticleTreeDrawer::printDecay ( const reco::Candidate ,
const std::string &  pre 
) const
private

Definition at line 123 of file ParticleTreeDrawer.cc.

References accept(), cms::cuda::assert(), gather_cfg::cout, ztail::d, reco::Candidate::daughter(), getParticleName(), hasValidDaughters(), mps_fire::i, reco::Candidate::numberOfDaughters(), reco::Candidate::pdgId(), and printInfo().

Referenced by analyze().

123  {
124  cout << getParticleName(c.pdgId());
125  printInfo(c);
126  cout << endl;
127 
128  size_t ndau = c.numberOfDaughters(), validDau = 0;
129  for (size_t i = 0; i < ndau; ++i)
130  if (accept(*c.daughter(i)))
131  ++validDau;
132  if (validDau == 0)
133  return;
134 
135  bool lastLevel = true;
136  for (size_t i = 0; i < ndau; ++i) {
137  if (hasValidDaughters(*c.daughter(i))) {
138  lastLevel = false;
139  break;
140  }
141  }
142 
143  if (lastLevel) {
144  cout << pre << "+-> ";
145  size_t vd = 0;
146  for (size_t i = 0; i < ndau; ++i) {
147  const Candidate *d = c.daughter(i);
148  if (accept(*d)) {
149  cout << getParticleName(d->pdgId());
150  printInfo(*d);
151  if (vd != validDau - 1)
152  cout << " ";
153  vd++;
154  }
155  }
156  cout << endl;
157  return;
158  }
159 
160  for (size_t i = 0; i < ndau; ++i) {
161  const Candidate *d = c.daughter(i);
162  assert(d != nullptr);
163  if (accept(*d)) {
164  cout << pre << "+-> ";
165  string prepre(pre);
166  if (i == ndau - 1)
167  prepre += " ";
168  else
169  prepre += "| ";
170  printDecay(*d, prepre);
171  }
172  }
173 }
const edm::EventSetup & c
void printInfo(const reco::Candidate &) const
print 4 momenta
std::string getParticleName(int id) const
void printDecay(const reco::Candidate &, const std::string &pre) const
assert(be >=bs)
tuple d
Definition: ztail.py:151
bool accept(const reco::Candidate &) const
accept candidate
bool hasValidDaughters(const reco::Candidate &) const
has valid daughters in the chain
std::vector< DeviationSensor2D * > vd
virtual int pdgId() const =0
PDG identifier.
tuple cout
Definition: gather_cfg.py:144
void ParticleTreeDrawer::printInfo ( const reco::Candidate c) const
private

print 4 momenta

Definition at line 104 of file ParticleTreeDrawer.cc.

References c, cands_, gather_cfg::cout, reco::Candidate::energy(), reco::Candidate::eta(), spr::find(), newFWLiteAna::found, 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().

104  {
105  if (printP4_)
106  cout << " (" << c.px() << ", " << c.py() << ", " << c.pz() << "; " << c.energy() << ")";
107  if (printPtEtaPhi_)
108  cout << " [" << c.pt() << ": " << c.eta() << ", " << c.phi() << "]";
109  if (printVertex_)
110  cout << " {" << c.vx() << ", " << c.vy() << ", " << c.vz() << "}";
111  if (printStatus_)
112  cout << "{status: " << c.status() << "}";
113  if (printIndex_) {
114  int idx = -1;
115  vector<const Candidate *>::const_iterator found = find(cands_.begin(), cands_.end(), &c);
116  if (found != cands_.end()) {
117  idx = found - cands_.begin();
118  cout << " <idx: " << idx << ">";
119  }
120  }
121 }
virtual double energy() const =0
energy
const edm::EventSetup & c
virtual double pt() const =0
transverse momentum
std::vector< const reco::Candidate * > cands_
pointer to collection
virtual int status() const =0
status word
virtual double pz() const =0
z coordinate of momentum vector
virtual double vx() const =0
x coordinate of vertex position
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
virtual double vy() const =0
y coordinate of vertex position
bool printP4_
print parameters
virtual double py() const =0
y coordinate of momentum vector
virtual double px() const =0
x coordinate of momentum vector
virtual double vz() const =0
z coordinate of vertex position
tuple cout
Definition: gather_cfg.py:144
virtual double phi() const =0
momentum azimuthal angle
virtual double eta() const =0
momentum pseudorapidity

Member Data Documentation

std::vector<const reco::Candidate *> ParticleTreeDrawer::cands_
private

pointer to collection

Definition at line 38 of file ParticleTreeDrawer.cc.

Referenced by analyze(), and printInfo().

edm::ESHandle<ParticleDataTable> ParticleTreeDrawer::pdt_
private

Definition at line 24 of file ParticleTreeDrawer.cc.

Referenced by analyze(), and getParticleName().

edm::ESGetToken<ParticleDataTable, edm::DefaultRecord> ParticleTreeDrawer::pdtToken_
private

Definition at line 25 of file ParticleTreeDrawer.cc.

Referenced by analyze().

bool ParticleTreeDrawer::printIndex_
private

Definition at line 27 of file ParticleTreeDrawer.cc.

Referenced by printInfo().

bool ParticleTreeDrawer::printP4_
private

print parameters

Definition at line 27 of file ParticleTreeDrawer.cc.

Referenced by printInfo().

bool ParticleTreeDrawer::printPtEtaPhi_
private

Definition at line 27 of file ParticleTreeDrawer.cc.

Referenced by printInfo().

bool ParticleTreeDrawer::printStatus_
private

Definition at line 27 of file ParticleTreeDrawer.cc.

Referenced by printInfo().

bool ParticleTreeDrawer::printVertex_
private

Definition at line 27 of file ParticleTreeDrawer.cc.

Referenced by printInfo().

edm::EDGetTokenT<edm::View<reco::Candidate> > ParticleTreeDrawer::srcToken_
private

Definition at line 22 of file ParticleTreeDrawer.cc.

Referenced by analyze().

vint ParticleTreeDrawer::status_
private

Definition at line 30 of file ParticleTreeDrawer.cc.

Referenced by accept().