HerdSoftware  0.4.0
MCParticle.h
Go to the documentation of this file.
1 /*
2  * MCParticle.h
3  *
4  * Created on: 09 Sep 2020
5  * Author: Valerio Formato
6  */
7 
8 #ifndef HERD_MCPARTICLE_H_
9 #define HERD_MCPARTICLE_H_
10 
11 // HerdSoftware headers
16 
17 #ifdef HS_USE_ROOT
18 #include "Rtypes.h"
19 #endif
20 
21 // c++ headers
22 #include <memory>
23 #include <vector>
24 
25 namespace Herd {
26 
30 class MCParticle {
31 public:
39 
44  MCParticle(Point position, Momentum momentum)
46  DEFAULT_INIT(m_pdgCode), m_initialPosition{std::move(position)}, m_initialMomentum{momentum} {};
47 
52  MCParticle(float initialTime, int pdgCode, Point position, Momentum momentum)
53  : m_initialTime{initialTime}, m_pdgCode{pdgCode}, m_initialPosition{std::move(position)}, m_initialMomentum{
54  momentum} {};
55 
57  virtual ~MCParticle() = default;
58 
64  [[nodiscard]] float InitialTime() const { return m_initialTime; };
65 
71  [[nodiscard]] int PDGCode() const { return m_pdgCode; };
72 
78  [[nodiscard]] Point InitialPosition() const { return m_initialPosition; };
79 
85  [[nodiscard]] Vec3D InitialMomentum() const { return m_initialMomentum; };
86 
92  [[nodiscard]] Line InitialTrajectory() const { return Line(m_initialPosition, m_initialMomentum); };
93 
94 private:
95  float m_initialTime;
96  int m_pdgCode;
99 
100 #ifdef HS_USE_ROOT
101  ClassDef(MCParticle, 1)
102 #endif
103 };
104 
105 } // namespace Herd
106 
107 #endif /* HERD_MCPARTICLE_H_ */
Point.h
Herd::MCParticle::m_pdgCode
int m_pdgCode
PDG code of the particle.
Definition: MCParticle.h:96
Herd::Vec3D
A class describing a vector in 3D space.
Definition: Vec3D.h:33
Herd::MCParticle::m_initialMomentum
Vec3D m_initialMomentum
Initial momentum vector.
Definition: MCParticle.h:98
Herd::MCParticle::m_initialPosition
Point m_initialPosition
Initial position vector.
Definition: MCParticle.h:97
DEFAULT_INIT
#define DEFAULT_INIT(x)
Definition: DefaultValues.h:23
Herd::Line
Class describing a line in the 3D space.
Definition: Line.h:37
Herd
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:22
Momentum.h
Line.h
Herd::MCParticle::InitialPosition
Point InitialPosition() const
Get the generation position of the particle.
Definition: MCParticle.h:78
Herd::MCParticle::InitialMomentum
Vec3D InitialMomentum() const
Get the generation momentum of the particle.
Definition: MCParticle.h:85
Herd::MCParticle::m_initialTime
float m_initialTime
Generation time of the particle in the MC simulation [ns].
Definition: MCParticle.h:92
Herd::MCParticle::MCParticle
MCParticle()
Default constructor.
Definition: MCParticle.h:36
Herd::MCParticle::InitialTime
float InitialTime() const
Get the time of generation of the particle.
Definition: MCParticle.h:64
Herd::MCParticle::MCParticle
MCParticle(float initialTime, int pdgCode, Point position, Momentum momentum)
Construct a new MCParticle object.
Definition: MCParticle.h:52
Herd::MCParticle::MCParticle
MCParticle(Point position, Momentum momentum)
Construct a new MCParticle object.
Definition: MCParticle.h:44
Herd::MCParticle::~MCParticle
virtual ~MCParticle()=default
Virtual destructor
DefaultValues.h
Herd::MCParticle
Description of a Monte Carlo particle.
Definition: MCParticle.h:30
Herd::MCParticle::PDGCode
int PDGCode() const
Get the PDG code of the particle.
Definition: MCParticle.h:71
Herd::MCParticle::InitialTrajectory
Line InitialTrajectory() const
Get the generation trajectory of the particle.
Definition: MCParticle.h:92