CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Typedefs | Functions
GenParticlesHelper Namespace Reference

Typedefs

typedef
reco::GenParticleCollection::const_iterator 
IG
 
typedef
reco::GenParticleRefVector::const_iterator 
IGR
 

Functions

void findDescendents (const reco::GenParticleRef &base, reco::GenParticleRefVector &descendents, int status, int pdgId=0)
 find all descendents of a given status and pdgId (recursive) More...
 
void findParticles (const reco::GenParticleCollection &sourceParticles, reco::GenParticleRefVector &particleRefs, int pdgId, int status)
 find all particles of a given pdgId and status More...
 
void findSisters (const reco::GenParticleRef &baseSister, reco::GenParticleRefVector &sisterRefs)
 find the particles having the same daughter as baseSister More...
 
bool hasAncestor (const reco::GenParticle *particle, int pdgId, int status)
 does the particle have an ancestor with this pdgId and this status? More...
 
bool isDirect (const reco::GenParticleRef &particle)
 check if particle is direct (has status 3 or is a daughter of particle with status 3) More...
 
std::ostream & operator<< (std::ostream &out, const reco::GenParticleRef &genRef)
 

Typedef Documentation

typedef reco::GenParticleCollection::const_iterator GenParticlesHelper::IG

Definition at line 10 of file GenParticlesHelper.h.

Definition at line 11 of file GenParticlesHelper.h.

Function Documentation

void GenParticlesHelper::findDescendents ( const reco::GenParticleRef base,
reco::GenParticleRefVector descendents,
int  status,
int  pdgId = 0 
)

find all descendents of a given status and pdgId (recursive)

Referenced by TauGenJetProducer::produce().

void GenParticlesHelper::findParticles ( const reco::GenParticleCollection sourceParticles,
reco::GenParticleRefVector particleRefs,
int  pdgId,
int  status 
)

find all particles of a given pdgId and status

Referenced by TauGenJetProducer::produce().

void GenParticlesHelper::findSisters ( const reco::GenParticleRef baseSister,
reco::GenParticleRefVector sisterRefs 
)

find the particles having the same daughter as baseSister

bool GenParticlesHelper::hasAncestor ( const reco::GenParticle particle,
int  pdgId,
int  status 
)

does the particle have an ancestor with this pdgId and this status?

Definition at line 98 of file GenParticlesHelper.cc.

References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), reco::CompositeRefCandidateT< D >::motherRefVector(), reco::LeafCandidate::pdgId(), mps_update::status, and reco::LeafCandidate::status().

99  {
100 
101  if( particle->pdgId() == pdgId &&
102  particle->status() == status )
103  return true;
104 
105  const GenParticleRefVector& mothers = particle->motherRefVector();
106 
107  for( IGR im = mothers.begin(); im!=mothers.end(); ++im) {
108  const GenParticle& part = **im;
109  if( hasAncestor( &part, pdgId, status) )
110  return true;
111  }
112 
113  return false;
114  }
reco::GenParticleRefVector::const_iterator IGR
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:253
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:248
virtual int status() const final
status word
const mothers & motherRefVector() const
references to mothers
part
Definition: HCALResponse.h:20
bool hasAncestor(const reco::GenParticle *particle, int pdgId, int status)
does the particle have an ancestor with this pdgId and this status?
virtual int pdgId() const final
PDG identifier.
tuple status
Definition: mps_update.py:57
bool GenParticlesHelper::isDirect ( const reco::GenParticleRef particle)

check if particle is direct (has status 3 or is a daughter of particle with status 3)

Definition at line 81 of file GenParticlesHelper.cc.

References assert(), and mps_update::status.

81  {
82  assert( (particle->status() != 0) && (particle->status() < 4 ) );
83  if( particle->status() == 3 )
84  return true;
85  else {
86  assert( particle->numberOfMothers() > 0 );
87 
88  // get first mother
89  const GenParticleRefVector& mothers = particle->motherRefVector();
90  if( mothers[0]->status() == 3 )
91  return true;
92  else
93  return false;
94  }
95  }
assert(m_qm.get())
tuple status
Definition: mps_update.py:57
std::ostream & GenParticlesHelper::operator<< ( std::ostream &  out,
const reco::GenParticleRef genRef 
)

Definition at line 117 of file GenParticlesHelper.cc.

References edm::Ref< C, T, F >::key(), and fileinputsource_cfi::out.

118  {
119 
120  if(!out) return out;
121 
122  out<<genRef.key()<<" "<<genRef->pt();
123 
124  return out;
125  }
key_type key() const
Accessor for product key.
Definition: Ref.h:264