CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
GenParticleDecaySelector Class Reference
Inheritance diagram for GenParticleDecaySelector:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

 GenParticleDecaySelector (const edm::ParameterSet &)
 constructor More...
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

std::pair
< reco::GenParticleRef,
reco::GenParticle * > 
add (reco::GenParticleCollection &, const reco::GenParticle &, reco::GenParticleRefProd)
 recursively add a new particle to the output collection More...
 
void produce (edm::Event &e, const edm::EventSetup &)
 process one event More...
 

Private Attributes

bool firstEvent_
 
PdtEntry particle_
 particle type More...
 
edm::InputTag src_
 source collection name More...
 
int status_
 particle status More...
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 14 of file GenParticleDecaySelector.cc.

Constructor & Destructor Documentation

GenParticleDecaySelector::GenParticleDecaySelector ( const edm::ParameterSet cfg)

constructor

Definition at line 43 of file GenParticleDecaySelector.cc.

43  :
44  firstEvent_(true),
45  src_(cfg.getParameter<InputTag>("src")),
46  particle_(cfg.getParameter<PdtEntry>("particle")),
47  status_(cfg.getParameter<int>("status")) {
48  produces<GenParticleCollection>();
49 }
T getParameter(std::string const &) const
PdtEntry particle_
particle type
edm::InputTag src_
source collection name

Member Function Documentation

pair< GenParticleRef, GenParticle * > GenParticleDecaySelector::add ( reco::GenParticleCollection decay,
const reco::GenParticle p,
reco::GenParticleRefProd  ref 
)
private

recursively add a new particle to the output collection

Definition at line 65 of file GenParticleDecaySelector.cc.

References reco::CompositeRefCandidateT< D >::addDaughter(), reco::CompositeRefCandidateT< D >::daughterRef(), g, i, n, reco::CompositeRefCandidateT< D >::numberOfDaughters(), L1TEmulatorMonitor_cff::p, and csvReporter::r.

Referenced by produce().

66  {
67  size_t idx = decay.size();
68  GenParticleRef r(ref, idx);
69  decay.resize(idx+1);
70  const LeafCandidate & part = p;
71  GenParticle g(part);
72  size_t n = p.numberOfDaughters();
73  for(size_t i = 0; i < n; ++i) {
74  pair<GenParticleRef, GenParticle*> d = add(decay, *p.daughterRef(i), ref);
75  d.second->addMother(r);
76  g.addDaughter(d.first);
77  }
78  GenParticle & gp = decay[idx] = g;
79  return make_pair(r, &gp);
80 }
std::pair< reco::GenParticleRef, reco::GenParticle * > add(reco::GenParticleCollection &, const reco::GenParticle &, reco::GenParticleRefProd)
recursively add a new particle to the output collection
int i
Definition: DBlmapReader.cc:9
daughters::value_type daughterRef(size_type i) const
reference to daughter at given position
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
virtual size_t numberOfDaughters() const
number of daughters
part
Definition: HCALResponse.h:21
void GenParticleDecaySelector::produce ( edm::Event e,
const edm::EventSetup es 
)
privatevirtual

process one event

Implements edm::EDProducer.

Definition at line 51 of file GenParticleDecaySelector.cc.

References add(), firstEvent_, g, genParticleCandidates2GenParticles_cfi::genParticles, edm::Event::getByLabel(), edm::Event::getRefBeforePut(), particle_, PdtEntry::pdgId(), edm::Event::put(), PdtEntry::setup(), src_, and status_.

51  {
52  if (firstEvent_) {particle_.setup(es); firstEvent_ = false;}
53 
55  evt.getByLabel(src_, genParticles);
56  auto_ptr<GenParticleCollection> decay(new GenParticleCollection);
57  const GenParticleRefProd ref = evt.getRefBeforePut<GenParticleCollection>();
58  for(GenParticleCollection::const_iterator g = genParticles->begin();
59  g != genParticles->end(); ++g)
60  if(g->pdgId() == particle_.pdgId() && g->status() == status_)
61  add(*decay, *g, ref);
62  evt.put(decay);
63 }
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
std::pair< reco::GenParticleRef, reco::GenParticle * > add(reco::GenParticleCollection &, const reco::GenParticle &, reco::GenParticleRefProd)
recursively add a new particle to the output collection
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
PdtEntry particle_
particle type
void setup(const edm::EventSetup &)
fill data from Event Setup
Definition: PdtEntry.cc:31
edm::InputTag src_
source collection name
int pdgId() const
PDG id.
Definition: PdtEntry.cc:7

Member Data Documentation

bool GenParticleDecaySelector::firstEvent_
private

Definition at line 21 of file GenParticleDecaySelector.cc.

Referenced by produce().

PdtEntry GenParticleDecaySelector::particle_
private

particle type

Definition at line 25 of file GenParticleDecaySelector.cc.

Referenced by produce().

edm::InputTag GenParticleDecaySelector::src_
private

source collection name

Definition at line 23 of file GenParticleDecaySelector.cc.

Referenced by produce().

int GenParticleDecaySelector::status_
private

particle status

Definition at line 27 of file GenParticleDecaySelector.cc.

Referenced by produce().