Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
MCParticle.h
Go to the documentation of this file.
1
8#ifndef PANDORA_MC_PARTICLE_H
9#define PANDORA_MC_PARTICLE_H 1
10
12#include "Pandora/StatusCodes.h"
13
14namespace pandora
15{
16
17template<typename T> class InputObjectManager;
18template<typename T, typename S> class PandoraObjectFactory;
19
20//------------------------------------------------------------------------------------------------------------------------------------------
21
26{
27public:
33 bool IsRootParticle() const;
34
40 bool IsPfoTarget() const;
41
47 float GetEnergy() const;
48
54 const CartesianVector &GetMomentum() const;
55
61 const CartesianVector &GetVertex() const;
62
68 const CartesianVector &GetEndpoint() const;
69
75 float GetInnerRadius() const;
76
82 float GetOuterRadius() const;
83
89 int GetParticleId() const;
90
97
103 bool IsPfoTargetSet() const;
104
110 const MCParticle *GetPfoTarget() const;
111
117 Uid GetUid() const;
118
124 const MCParticleList &GetParentList() const;
125
131 const MCParticleList &GetDaughterList() const;
132
140 bool operator< (const MCParticle &rhs) const;
141
142protected:
149
153 virtual ~MCParticle();
154
160 StatusCode AddDaughter(const MCParticle *const pMCParticle);
161
167 StatusCode AddParent(const MCParticle *const pMCParticle);
168
174 StatusCode RemoveDaughter(const MCParticle *const pMCParticle);
175
181 StatusCode RemoveParent(const MCParticle *const pMCParticle);
182
188 StatusCode SetPfoTarget(const MCParticle *const pMCParticle);
189
194
195 const Uid m_uid;
196 const float m_energy;
200 const float m_innerRadius;
201 const float m_outerRadius;
202 const int m_particleId;
207
208 friend class MCManager;
209 friend class InputObjectManager<MCParticle>;
210 friend class PandoraObjectFactory<object_creation::MCParticle::Parameters, object_creation::MCParticle::Object>;
211};
212
213//------------------------------------------------------------------------------------------------------------------------------------------
214
215inline bool MCParticle::IsRootParticle() const
216{
217 return m_parentList.empty();
218}
219
220//------------------------------------------------------------------------------------------------------------------------------------------
221
222inline bool MCParticle::IsPfoTarget() const
223{
224 return (this == m_pPfoTarget);
225}
226
227//------------------------------------------------------------------------------------------------------------------------------------------
228
229inline bool MCParticle::IsPfoTargetSet() const
230{
231 return (nullptr != m_pPfoTarget);
232}
233
234//------------------------------------------------------------------------------------------------------------------------------------------
235
237{
238 return m_uid;
239}
240
241//------------------------------------------------------------------------------------------------------------------------------------------
242
243inline float MCParticle::GetEnergy() const
244{
245 return m_energy;
246}
247
248//------------------------------------------------------------------------------------------------------------------------------------------
249
251{
252 return m_momentum;
253}
254
255//------------------------------------------------------------------------------------------------------------------------------------------
256
258{
259 return m_vertex;
260}
261
262//------------------------------------------------------------------------------------------------------------------------------------------
263
265{
266 return m_endpoint;
267}
268
269//------------------------------------------------------------------------------------------------------------------------------------------
270
271inline float MCParticle::GetInnerRadius() const
272{
273 return m_innerRadius;
274}
275
276//------------------------------------------------------------------------------------------------------------------------------------------
277
278inline float MCParticle::GetOuterRadius() const
279{
280 return m_outerRadius;
281}
282
283//------------------------------------------------------------------------------------------------------------------------------------------
284
286{
287 return m_particleId;
288}
289
290//------------------------------------------------------------------------------------------------------------------------------------------
291
296
297//------------------------------------------------------------------------------------------------------------------------------------------
298
300{
301 return m_parentList;
302}
303
304//------------------------------------------------------------------------------------------------------------------------------------------
305
307{
308 return m_daughterList;
309}
310
311} // namespace pandora
312
313#endif // #ifndef PANDORA_MC_PARTICLE_H
Header file for pandora object creation classes.
Header file defining status codes and relevant preprocessor macros.
CartesianVector class.
InputObjectManager class.
MCManager class.
Definition MCManager.h:23
MCParticle class.
Definition MCParticle.h:26
const MCParticleType m_mcParticleType
The type of the mc particle, e.g. vertex, 2D-projection, etc.
Definition MCParticle.h:203
StatusCode AddDaughter(const MCParticle *const pMCParticle)
Add daughter particle.
Definition MCParticle.cc:66
const int m_particleId
The PDG code of the mc particle.
Definition MCParticle.h:202
MCParticleType GetMCParticleType() const
Get the type of the mc particle, e.g. vertex, 2D-projection, etc.
Definition MCParticle.h:292
Uid GetUid() const
Get the mc particle unique identifier.
Definition MCParticle.h:236
bool IsRootParticle() const
Whether the mc particle is a root particle.
Definition MCParticle.h:215
StatusCode RemoveDaughter(const MCParticle *const pMCParticle)
Remove daughter particle.
Definition MCParticle.cc:88
float GetEnergy() const
Get energy of mc particle, units GeV.
Definition MCParticle.h:243
MCParticleList m_daughterList
The list of mc daughter particles.
Definition MCParticle.h:205
const CartesianVector m_vertex
The production vertex of the mc particle, units mm.
Definition MCParticle.h:198
const MCParticle * GetPfoTarget() const
Get pfo target particle.
Definition MCParticle.cc:16
const MCParticleList & GetDaughterList() const
Get list of daughters of mc particle.
Definition MCParticle.h:306
StatusCode AddParent(const MCParticle *const pMCParticle)
Add parent particle.
Definition MCParticle.cc:77
const Uid m_uid
Unique identifier for the mc particle.
Definition MCParticle.h:195
virtual ~MCParticle()
Destructor.
Definition MCParticle.cc:60
const CartesianVector & GetMomentum() const
Get momentum of mc particle, units GeV.
Definition MCParticle.h:250
const float m_innerRadius
Inner radius of the particle's path, units mm.
Definition MCParticle.h:200
StatusCode SetPfoTarget(const MCParticle *const pMCParticle)
Set pfo target particle.
bool IsPfoTargetSet() const
Whether the pfo target been set.
Definition MCParticle.h:229
const CartesianVector & GetEndpoint() const
Get the endpoint of the mc particle, units mm.
Definition MCParticle.h:264
const MCParticle * m_pPfoTarget
The address of the pfo target.
Definition MCParticle.h:204
const float m_energy
The energy of the mc particle, units GeV.
Definition MCParticle.h:196
const CartesianVector m_endpoint
The endpoint of the mc particle, units mm.
Definition MCParticle.h:199
StatusCode RemoveParent(const MCParticle *const pMCParticle)
Remove parent particle.
float GetInnerRadius() const
Get inner radius of mc particle, units mm.
Definition MCParticle.h:271
bool operator<(const MCParticle &rhs) const
operator< sorting by vertex position, then energy
Definition MCParticle.cc:26
float GetOuterRadius() const
Get outer radius of mc particle, units mm.
Definition MCParticle.h:278
const CartesianVector & GetVertex() const
Get the production vertex of the mc particle, units mm.
Definition MCParticle.h:257
const MCParticleList & GetParentList() const
Get list of parents of mc particle.
Definition MCParticle.h:299
const float m_outerRadius
Outer radius of the particle's path, units mm.
Definition MCParticle.h:201
int GetParticleId() const
Get the PDG code of the mc particle.
Definition MCParticle.h:285
StatusCode RemovePfoTarget()
Remove pfo target particle.
MCParticleList m_parentList
The list of mc parent particles.
Definition MCParticle.h:206
const CartesianVector m_momentum
The momentum of the mc particle, units GeV.
Definition MCParticle.h:197
bool IsPfoTarget() const
Whether the mc particle is a pfo target.
Definition MCParticle.h:222
PandoraObjectFactory class.
MANAGED_CONTAINER< const MCParticle * > MCParticleList
const void * Uid
MCParticleType
MC particle type enum.
StatusCode
The StatusCode enum.