Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // TruthParticle.h
8 // Header file for class TruthParticle
9 // Author : Frank Paige Created : Jan 2004
10 // Author : Ketevi A. Assamagan Updated : May 2004
11 // Author : Sebastien Binet Updated : Jan 2005
13 #ifndef MCPARTICLEEVENT_TRUTHPARTICLE_H
14 #define MCPARTICLEEVENT_TRUTHPARTICLE_H
15 
23 // STL includes
24 #include <vector>
25 
26 // HepMC / CLHEP includes
27 #include "CLHEP/Vector/LorentzVector.h"
28 #include "AtlasHepMC/GenParticle.h"
30 #include "AtlasHepMC/Flow.h"
31 
32 // Gaudi includes
33 
34 // EventKernel includes
35 #include "EventKernel/IParticle.h"
36 
37 // FourMom includes
38 
39 // ParticleEvent includes
41 
42 // McParticleEvent includes
48 
49 // Forward declaration
50 namespace Trk { class RecVertex; }
52 
53 class TruthParticle : public ParticleImpl<
54  TruthParticleNavigation,
55  TruthParticleMomentum,
56  TruthParticleBase
57  >
58 {
59 
61  // Public typedefs:
63  public:
64 
65  // for readability and lazy people
70 
71  typedef std::size_t evtIndex_t;
73  // Public methods:
75  public:
76 
79  TruthParticle();
80 
83  TruthParticle( const TruthParticle& rhs );
84 
90  const TruthParticleContainer * container = 0 );
91 
94  TruthParticle& operator=( const TruthParticle& rhs );
95 
99 
101  // Const methods:
103 
105  HepMC::ConstGenParticlePtr genMother(const std::size_t i=0) const;
106 
109 
111  HepMC::ConstGenParticlePtr genChild( const std::size_t i ) const;
112 
118  int status() const;
119 
122  const HepMC::Flow flow() const;
123 
126  int flow( int code_index ) const;
127 
130  const HepMC::Polarization polarization() const;
131 
134  int barcode() const;
135 
136 #ifdef HEPMC3
137 
139  int id() const;
140 #endif
141 
144  long compressedExtBarCode() const { return 0; };
148  const TruthParticle * mother(const std::size_t i=0) const;
150 
152  const TruthParticle * child( const std::size_t i ) const;
153 
157  bool hasMother( const int pdgId ) const;
158 
162  bool hasChild( const int pdgId ) const;
163 
168  bool hasMother( const int pdgId, std::vector<unsigned int>& indices ) const;
169 
174  bool hasChild( const int pdgId, std::vector<unsigned int>& indices ) const;
175 
176  // Accessor functions
177 
181  bool hasEtIsol() const;
182 
188  double etIsol( const TruthParticleParameters::ConeSize coneIdx ) const;
189 
192  const TruthEtIsolations::EtIsol_t* etIsol() const;
193 
195  unsigned int nParents() const;
196 
198  unsigned int nDecay() const;
199 
201  CLHEP::HepLorentzVector transformVector( const HepMC::FourVector& ) const;
202 
204  CLHEP::HepLorentzVector pDecay( const std::size_t i ) const;
205 
207  int pdgDecay( const std::size_t i ) const;
208 
209 #ifdef HEPMC3
210 //FIXME
211 #else
212  operator const HepMC::GenParticle&() const;
215 #endif
216 
218 
220  // Non-const methods:
222 
223  // Set functions
224 
226  void setCharge( const ChargeType charge );
227 
228  void set4Mom( const HepMC::FourVector& hlv )
229  { this->momentumBase().set4Mom(hlv); }
230 
231  // un-hide base-class' set4Mom
233 
235  void setGenEventIndex( size_t index );
236 
238  // Protected methods:
240  protected:
241 
244 
245 
246 
248  // Protected data:
250  protected:
251 
255 
260  std::vector<int> m_mothers;
261 
266  std::vector<int> m_children;
267 
270 
271 };
272 
274 // I/O functions
276 std::ostream& operator<<( std::ostream& out, const TruthParticle& mc );
277 
279 // Inline methods:
281 
283 {}
284 
286 {
287  return this->particleBase().genParticle();
288 }
289 
290 inline int TruthParticle::status() const
291 {
292  return genParticle()->status();
293 }
294 
295 inline const HepMC::Flow TruthParticle::flow() const
296 {
297  return HepMC::flow(genParticle());
298 }
299 
300 inline int TruthParticle::flow( int code_index ) const
301 {
302  return HepMC::flow(genParticle(),code_index);
303 }
304 
305 inline const HepMC::Polarization TruthParticle::polarization() const
306 {
308 }
309 
310 inline int TruthParticle::barcode() const
311 {
312  return HepMC::barcode(genParticle());
313 }
314 
315 #ifdef HEPMC3
316 inline int TruthParticle::id() const
317 {
318  return genParticle()->id();
319 }
320 #endif
321 
322 inline unsigned int TruthParticle::nParents() const
323 { return m_mothers.size(); }
324 
325 inline unsigned int TruthParticle::nDecay() const
326 { return m_children.size(); }
327 
328 #ifdef HEPMC3
329 
330 //FIXME
331 #else
332 
333 inline
334 TruthParticle::operator const HepMC::GenParticle&() const
335 {
336  return *genParticle();
337 }
338 
339 #endif
341 {
342  this->particleBase().setCharge( charge );
343 }
344 
345 inline CLHEP::HepLorentzVector TruthParticle::transformVector( const HepMC::FourVector& fv ) const
346 {
347  CLHEP::HepLorentzVector hlv(fv.x(),fv.y(),fv.z(),fv.t());
348  return hlv;
349 }
350 
353 }
354 
355 
356 #endif //> MCPARTICLEEVENT_TRUTHPARTICLE_H
Flow.h
TruthParticleMomentum::set4Mom
virtual void set4Mom(const I4Momentum *const theI4Mom)
set 4Momentum (will throw exception if cannot be implemented)
Definition: TruthParticleMomentum.h:283
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
HepMC::polarization
Polarization polarization(const T &a)
Definition: Polarization.h:47
ParticleImpl< TruthParticleNavigation, TruthParticleMomentum, TruthParticleBase >::pdgId
virtual int pdgId() const
Return enum indicating particle id the enum file is available in Event/EventKernel/PdtPdg....
Definition: ParticleImpl.h:738
TruthParticle::hasEtIsol
bool hasEtIsol() const
Return true if one has filled the Et isolation infos for this TruthParticle.
Definition: TruthParticle.cxx:183
TruthParticle::pDecay
CLHEP::HepLorentzVector pDecay(const std::size_t i) const
Return the 4-vec of i-th child of this particle.
Definition: TruthParticle.cxx:205
TruthParticle::barcode
int barcode() const
Forwards the HepMC::GenParticle::barcode() information.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:310
index
Definition: index.py:1
TruthParticle::genChild
HepMC::ConstGenParticlePtr genChild(const std::size_t i) const
Retrieve the i-th child (GenParticle) of this TruthParticle.
Definition: TruthParticle.cxx:118
TruthParticleMomentum.h
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
TruthParticleMomentum
Definition: TruthParticleMomentum.h:28
TruthParticle::mother
const TruthParticle * mother(const std::size_t i=0) const
Retrieve the i-th mother (TruthParticle) of this TruthParticle.
Definition: TruthParticle.cxx:90
TruthParticle::flow
const HepMC::Flow flow() const
Forwards the HepMC::GenParticle::flow() information.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:295
TruthParticleBase.h
TruthParticle
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:58
TruthParticleBase
Definition: TruthParticleBase.h:34
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
TruthEtIsolations::EtIsol_t
McAod::EtIsolations EtIsol_t
An array of doubles of fixed size to modelize the Et isolations for different values of isolation rad...
Definition: TruthEtIsolations.h:52
operator<<
std::ostream & operator<<(std::ostream &out, const TruthParticle &mc)
TruthParticleParameters::ConeSize
ConeSize
Enum for Cone size indexes (for isolation)
Definition: TruthParticleParamDefs.h:20
TruthParticle::~TruthParticle
~TruthParticle()
Default constructor:
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:282
IParticle.h
TruthParticle::hasMother
bool hasMother(const int pdgId) const
Return true if the given PDG::id to match can be found within the parents of this TruthParticle.
Definition: TruthParticle.cxx:129
TruthParticle::genParticle
HepMC::ConstGenParticlePtr genParticle() const
Retrieve the GenParticle this TruthParticle has been made from (if any)
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:285
TruthParticleContainer
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleContainer.h:42
TruthParticle::setGenEventIndex
void setGenEventIndex(size_t index)
set the GenEvent index
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:351
GenParticle.h
TruthEtIsolations.h
TruthParticle::polarization
const HepMC::Polarization polarization() const
Forwards the HepMC::GenParticle::polarization() information.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:305
ParticleImpl
Definition: ParticleImpl.h:39
mc
Definition: mc.PG_single_nu_valid.py:1
TruthParticle::nDecay
unsigned int nDecay() const
Number of children of this particle.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:325
ParticleImpl< TruthParticleNavigation, TruthParticleMomentum, TruthParticleBase >::charge
virtual ChargeType charge() const
returns charge as a typedef ChargeType currently Charge Type is a double for jets this may be changed...
Definition: ParticleImpl.h:718
TruthParticle::setGenParticle
void setGenParticle(HepMC::ConstGenParticlePtr particle)
Fill the data members of ParticleBase from the GenParticle.
Definition: TruthParticle.cxx:240
HepMC::flow
int flow(const T &a, int i)
Definition: Flow.h:51
lumiFormat.i
int i
Definition: lumiFormat.py:85
TruthParticle::m_children
std::vector< int > m_children
vector of barcodes of all the children of this particle.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:266
TruthParticle::evtIndex_t
std::size_t evtIndex_t
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:71
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
TruthParticle::genMother
HepMC::ConstGenParticlePtr genMother(const std::size_t i=0) const
Retrieve the GenParticle mother of this TruthParticle.
Definition: TruthParticle.cxx:107
TruthParticleNavigation
NavigableTerminalNode TruthParticleNavigation
Definition: TruthParticleNavigation.h:23
TruthParticle::hasChild
bool hasChild(const int pdgId) const
Return true if the given PDG::id to match can be found within the children of this TruthParticle.
Definition: TruthParticle.cxx:141
TruthParticle::etIsol
const TruthEtIsolations::EtIsol_t * etIsol() const
Return the transverse energies for all the isolation cones.
Definition: TruthParticle.cxx:188
TruthParticleParamDefs.h
TruthParticleBase::genParticle
HepMC::ConstGenParticlePtr genParticle() const
return the HepMC::GenParticle which is being proxied
Definition: TruthParticleBase.h:180
TruthParticle::status
int status() const
Forwards the HepMC::GenParticle::status() information.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:290
TruthParticle::genEventIndex
evtIndex_t genEventIndex() const
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:217
ParticleImpl< TruthParticleNavigation, TruthParticleMomentum, TruthParticleBase >::momentumBase
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
Definition: ParticleImpl.h:393
TruthParticle::TruthParticleImpl_t
ParticleImpl< TruthParticleNavigation, TruthParticleMomentum, TruthParticleBase > TruthParticleImpl_t
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:69
ParticleImpl< TruthParticleNavigation, TruthParticleMomentum, TruthParticleBase >::hlv
virtual CLHEP::HepLorentzVector hlv() const
CLHEP HepLorentzVector.
Definition: ParticleImpl.h:635
TruthParticle::transformVector
CLHEP::HepLorentzVector transformVector(const HepMC::FourVector &) const
returns a Pointer to a CLHEP::LorentzVector from a HepMC::FourVector
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:345
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
TruthParticle::operator=
TruthParticle & operator=(const TruthParticle &rhs)
Assignment operator.
Definition: TruthParticle.cxx:71
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
ParticleImpl< TruthParticleNavigation, TruthParticleMomentum, TruthParticleBase >::particleBase
const particle_type & particleBase() const
access to underlying base type (IParticle-like)
Definition: ParticleImpl.h:403
charge
double charge(const T &p)
Definition: AtlasPID.h:897
TruthParticle::m_container
const TruthParticleContainer * m_container
Pointer to the collection holding ourself.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:254
ChargeType
double ChargeType
typedef ChargeType used to anticipate changes here
Definition: Event/EventKernel/EventKernel/IParticle.h:40
TruthParticle::compressedExtBarCode
long compressedExtBarCode() const
Forwards the HepMC::GenParticle::barcode() information.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:144
TruthParticle::pdgDecay
int pdgDecay(const std::size_t i) const
Return the PDG-Id of the i-th child of this particle.
Definition: TruthParticle.cxx:221
TruthParticle::m_mothers
std::vector< int > m_mothers
vector of barcodes of all the mothers of this particle.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:260
DeMoScan.index
string index
Definition: DeMoScan.py:364
TruthParticleBase::setCharge
void setCharge(const ChargeType charge)
Set the charge of this TruthParticleBase.
Definition: TruthParticleBase.h:186
ParticleImpl< TruthParticleNavigation, TruthParticleMomentum, TruthParticleBase >::set4Mom
virtual void set4Mom(const I4Momentum &p4)
Definition: ParticleImpl.h:875
TruthParticle::child
const TruthParticle * child(const std::size_t i) const
Retrieve the i-th child (TruthParticle) of this TruthParticle.
Definition: TruthParticle.cxx:98
TruthParticle::m_nGenEventIdx
evtIndex_t m_nGenEventIdx
the index of the GenEvent this particle is in
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:269
TruthParticle::nParents
unsigned int nParents() const
Number of parents of this particle.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:322
TruthParticleNavigation.h
TruthParticle::set4Mom
void set4Mom(const HepMC::FourVector &hlv)
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:228
Polarization.h
TruthParticle::setCharge
void setCharge(const ChargeType charge)
Set the charge of this TruthParticle.
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:340
ParticleImpl.h
GenParticle
@ GenParticle
Definition: TruthClasses.h:30
TruthParticle::TruthParticle
TruthParticle()
Default constructor.
Definition: TruthParticle.cxx:33