HerdSoftware  0.4.0
MCPrimaryParticle.h
Go to the documentation of this file.
1 /*
2  * MCPrimaryParticle.h
3  *
4  * Created on: 21 Jan 2019
5  * Author: Nicola Mori
6  */
7 
8 #ifndef HERD_MCPRIMARYPARTICLE_H_
9 #define HERD_MCPRIMARYPARTICLE_H_
10 
11 // HerdSoftware headers
15 
16 #ifdef HS_USE_ROOT
17 #include "Rtypes.h"
18 #endif
19 
20 // c++ headers
21 #include <memory>
22 #include <vector>
23 
24 namespace Herd {
25 
29 class MCPrimaryParticle : public MCParticle {
30 public:
36 
41  MCPrimaryParticle(Point position, Momentum momentum) : MCParticle(std::move(position), std::move(momentum)){};
42 
47  MCPrimaryParticle(float initialTime, int pdgCode, Point position, Momentum momentum)
48  : MCParticle(std::move(initialTime), std::move(pdgCode), std::move(position), std::move(momentum)){};
49 
51  ~MCPrimaryParticle() override = default;
52 
58  [[nodiscard]] bool HadronicInelasticInteractionIsPresent() const;
59 
68  [[nodiscard]] const MCInteraction &HadronicInelasticInteraction() const;
69 
76 
82 
88  [[nodiscard]] bool PrimaryDisappearanceIsPresent() const;
89 
98  [[nodiscard]] const MCInteraction &PrimaryDisappearance() const;
99 
105  void SetPrimaryDisappearance(MCInteraction interaction);
106 
112 
118  [[nodiscard]] bool HadronicQuasiElasticInteractionIsPresent() const;
119 
128  [[nodiscard]] const std::vector<MCInteraction> &HadronicQuasiElasticInteractions() const;
129 
136 
141  void SetNHadronicQuasiElasticInteractions(size_t nInteractions);
142 
143 private:
144  std::vector<MCInteraction> m_hadronicInelasticInteraction;
145  std::vector<MCInteraction>
147  std::vector<MCInteraction> m_primaryDisappearence;
148 
149 #ifdef HS_USE_ROOT
150  ClassDefOverride(MCPrimaryParticle, 2)
151 #endif
152 };
153 
154 } // namespace Herd
155 
156 #endif /* HERD_MCPRIMARYPARTICLE_H_ */
Herd::MCPrimaryParticle::MCPrimaryParticle
MCPrimaryParticle(Point position, Momentum momentum)
Construct a new MCPrimaryParticle object.
Definition: MCPrimaryParticle.h:41
Herd::MCPrimaryParticle::PrimaryDisappearanceIsPresent
bool PrimaryDisappearanceIsPresent() const
Return true if the primary disappearance is present.
Definition: MCPrimaryParticle.cpp:43
Herd::Vec3D
A class describing a vector in 3D space.
Definition: Vec3D.h:33
Herd::MCPrimaryParticle
Description of a Monte Carlo primary particle.
Definition: MCPrimaryParticle.h:29
Herd::MCPrimaryParticle::SetNoPrimaryDisappearance
void SetNoPrimaryDisappearance()
Indicate that the primary disappearance is not found.
Definition: MCPrimaryParticle.cpp:70
Herd::MCPrimaryParticle::SetNHadronicQuasiElasticInteractions
void SetNHadronicQuasiElasticInteractions(size_t nInteractions)
Indicate that the first hadronic interaction is not found.
Definition: MCPrimaryParticle.cpp:90
Herd::MCPrimaryParticle::HadronicQuasiElasticInteractionIsPresent
bool HadronicQuasiElasticInteractionIsPresent() const
Return true if hadronic quasi-elastic interactions are present.
Definition: MCPrimaryParticle.cpp:72
Herd::MCPrimaryParticle::SetHadronicInelasticInteraction
void SetHadronicInelasticInteraction(MCInteraction interaction)
Set the first hadronic object.
Definition: MCPrimaryParticle.cpp:36
Herd::MCPrimaryParticle::HadronicInelasticInteractionIsPresent
bool HadronicInelasticInteractionIsPresent() const
Return true if the first hadronic interaction is present.
Definition: MCPrimaryParticle.cpp:13
Herd
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:22
Herd::MCPrimaryParticle::m_primaryDisappearence
std::vector< MCInteraction > m_primaryDisappearence
Primary disappearence event.
Definition: MCPrimaryParticle.h:147
Herd::MCPrimaryParticle::SetNoHadronicInelasticInteraction
void SetNoHadronicInelasticInteraction()
Indicate that the first hadronic interaction is not found.
Definition: MCPrimaryParticle.cpp:41
Herd::MCPrimaryParticle::HadronicQuasiElasticInteractions
const std::vector< MCInteraction > & HadronicQuasiElasticInteractions() const
Return a list of hadronic quasi-elastic interaction.
Definition: MCPrimaryParticle.cpp:76
Herd::MCPrimaryParticle::SetPrimaryDisappearance
void SetPrimaryDisappearance(MCInteraction interaction)
Set the first hadronic object.
Definition: MCPrimaryParticle.cpp:65
Herd::MCPrimaryParticle::MCPrimaryParticle
MCPrimaryParticle(float initialTime, int pdgCode, Point position, Momentum momentum)
Construct a new MCPrimaryParticle object.
Definition: MCPrimaryParticle.h:47
Herd::MCPrimaryParticle::MCPrimaryParticle
MCPrimaryParticle()
Default constructor.
Definition: MCPrimaryParticle.h:35
Herd::MCPrimaryParticle::HadronicInelasticInteraction
const MCInteraction & HadronicInelasticInteraction() const
Return the first hadronic interaction.
Definition: MCPrimaryParticle.cpp:26
Herd::MCPrimaryParticle::AddHadronicQuasiElasticInteraction
void AddHadronicQuasiElasticInteraction(MCInteraction interaction)
Set the first hadronic object.
Definition: MCPrimaryParticle.cpp:86
Herd::MCPrimaryParticle::m_hadronicQuasiElasticInteractions
std::vector< MCInteraction > m_hadronicQuasiElasticInteractions
Vector with hadronic quasi-elastic interactions of the particle.
Definition: MCPrimaryParticle.h:146
MCInteraction.h
Herd::MCPrimaryParticle::PrimaryDisappearance
const MCInteraction & PrimaryDisappearance() const
Return the primary disappearance.
Definition: MCPrimaryParticle.cpp:56
DefaultValues.h
Herd::MCPrimaryParticle::~MCPrimaryParticle
~MCPrimaryParticle() override=default
Virtual destructor
Herd::MCParticle
Description of a Monte Carlo particle.
Definition: MCParticle.h:30
MCParticle.h
Herd::MCPrimaryParticle::m_hadronicInelasticInteraction
std::vector< MCInteraction > m_hadronicInelasticInteraction
First hadronic inelastic interaction of the particle.
Definition: MCPrimaryParticle.h:144
Herd::MCInteraction
Description of a Monte Carlo Interaction.
Definition: MCInteraction.h:25