EICd
EIC data model
BasicParticle.h
Go to the documentation of this file.
1 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2 
3 #ifndef EICD_BasicParticle_H
4 #define EICD_BasicParticle_H
5 
8 
9 #include "eicd/Index.h"
10 #include "eicd/VectorXYZ.h"
11 #include "eicd/Weight.h"
12 #include "podio/ObjectID.h"
13 #include <ostream>
14 
15 
16 
17 namespace eic {
18 
19 
20 /** @class BasicParticle
21  * Basic particle used internally to communicate basic particle properties.
22  * @author: W. Armstrong, S. Joosten
23  */
25 
28  friend class ConstBasicParticle;
29 
30 public:
31 
32  /// default constructor
33  BasicParticle();
34  BasicParticle(eic::Index ID, eic::VectorXYZ p, eic::VectorXYZ v, float time, std::int32_t pid, std::int16_t status, std::int16_t charge, eic::Weight weight);
35 
36  /// constructor from existing BasicParticleObj
38 
39  /// copy constructor
40  BasicParticle(const BasicParticle& other);
41 
42  /// copy-assignment operator
43  BasicParticle& operator=(const BasicParticle& other);
44 
45  /// support cloning (deep-copy)
46  BasicParticle clone() const;
47 
48  /// destructor
50 
51  /// conversion to const object
52  operator ConstBasicParticle() const;
53 
54 public:
55 
56  /// Access the Unique particle index
57  const eic::Index& ID() const;
58 
59  /// Access the momentum [GeV]
60  const eic::VectorXYZ& p() const;
61 
62  /// Access the vertex [mm]
63  const eic::VectorXYZ& v() const;
64 
65  /// Access the Time in [ns]
66  const float& time() const;
67 
68  /// Access the particle PDG code
69  const std::int32_t& pid() const;
70 
71  /// Access the Status code
72  const std::int16_t& status() const;
73 
74  /// Access the Particle charge (or sign)
75  const std::int16_t& charge() const;
76 
77  /// Access the Particle weight, e.g. from PID algorithm [0-1]
78  const eic::Weight& weight() const;
79 
80 
81 
82  /// Set the Unique particle index
83  void ID(eic::Index value);
84  /// Get reference to Unique particle index
85  eic::Index& ID();
86 
87  /// Set the momentum [GeV]
88  void p(eic::VectorXYZ value);
89  /// Get reference to momentum [GeV]
90  eic::VectorXYZ& p();
91 
92  /// Set the vertex [mm]
93  void v(eic::VectorXYZ value);
94  /// Get reference to vertex [mm]
95  eic::VectorXYZ& v();
96 
97  /// Set the Time in [ns]
98  void time(float value);
99 
100  /// Set the particle PDG code
101  void pid(std::int32_t value);
102 
103  /// Set the Status code
104  void status(std::int16_t value);
105 
106  /// Set the Particle charge (or sign)
107  void charge(std::int16_t value);
108 
109  /// Set the Particle weight, e.g. from PID algorithm [0-1]
110  void weight(eic::Weight value);
111  /// Get reference to Particle weight, e.g. from PID algorithm [0-1]
112  eic::Weight& weight();
113 
114 
115 
116 
117 
118 
119  /// check whether the object is actually available
120  bool isAvailable() const;
121  /// disconnect from BasicParticleObj instance
122  void unlink() { m_obj = nullptr; }
123 
124  bool operator==(const BasicParticle& other) const { return m_obj == other.m_obj; }
125  bool operator==(const ConstBasicParticle& other) const;
126 
127  // less comparison operator, so that objects can be e.g. stored in sets.
128  bool operator<(const BasicParticle& other) const { return m_obj < other.m_obj; }
129 
130  unsigned int id() const { return getObjectID().collectionID * 10000000 + getObjectID().index; }
131 
132  const podio::ObjectID getObjectID() const;
133 
134 private:
135  BasicParticleObj* m_obj;
136 };
137 
138 std::ostream& operator<<(std::ostream& o, const ConstBasicParticle& value);
139 
140 } // namespace eic
141 
142 
143 #endif
eic::operator<<
std::ostream & operator<<(std::ostream &o, const ConstBasicParticle &value)
Definition: BasicParticle.cc:102
eic::Index
Definition: Index.h:11
eic::BasicParticle::isAvailable
bool isAvailable() const
check whether the object is actually available
Definition: BasicParticle.cc:84
eic::BasicParticle
Definition: BasicParticle.h:24
eic::BasicParticle::weight
const eic::Weight & weight() const
Access the Particle weight, e.g. from PID algorithm [0-1].
Definition: BasicParticle.cc:62
eic::BasicParticle::status
const std::int16_t & status() const
Access the Status code.
Definition: BasicParticle.cc:60
eic
Definition: BasicParticle.cc:13
eic::BasicParticle::getObjectID
const podio::ObjectID getObjectID() const
Definition: BasicParticle.cc:91
eic::BasicParticle::id
unsigned int id() const
Definition: BasicParticle.h:130
eic::BasicParticle::time
const float & time() const
Access the Time in [ns].
Definition: BasicParticle.cc:58
eic::BasicParticle::p
const eic::VectorXYZ & p() const
Access the momentum [GeV].
Definition: BasicParticle.cc:56
eic::BasicParticle::unlink
void unlink()
disconnect from BasicParticleObj instance
Definition: BasicParticle.h:122
eic::BasicParticleCollectionIterator
Definition: BasicParticleCollection.h:29
eic::Weight
Definition: Weight.h:11
eic::BasicParticle::charge
const std::int16_t & charge() const
Access the Particle charge (or sign)
Definition: BasicParticle.cc:61
eic::BasicParticle::operator==
bool operator==(const BasicParticle &other) const
Definition: BasicParticle.h:124
VectorXYZ.h
Weight.h
eic::BasicParticle::v
const eic::VectorXYZ & v() const
Access the vertex [mm].
Definition: BasicParticle.cc:57
BasicParticleConst.h
eic::BasicParticleObj
Definition: BasicParticleObj.h:18
eic::BasicParticle::ID
const eic::Index & ID() const
Access the Unique particle index.
Definition: BasicParticle.cc:55
eic::ConstBasicParticle
Definition: BasicParticleConst.h:22
eic::BasicParticle::operator<
bool operator<(const BasicParticle &other) const
Definition: BasicParticle.h:128
eic::BasicParticle::ConstBasicParticle
friend class ConstBasicParticle
Definition: BasicParticle.h:28
BasicParticleObj.h
Index.h
eic::BasicParticle::clone
BasicParticle clone() const
support cloning (deep-copy)
Definition: BasicParticle.cc:46
eic::BasicParticle::BasicParticle
BasicParticle()
default constructor
Definition: BasicParticle.cc:16
eic::BasicParticle::pid
const std::int32_t & pid() const
Access the particle PDG code.
Definition: BasicParticle.cc:59
eic::BasicParticleCollection
Definition: BasicParticleCollection.h:76
eic::BasicParticle::~BasicParticle
~BasicParticle()
destructor
Definition: BasicParticle.cc:50
eic::VectorXYZ
Definition: VectorXYZ.h:13
eic::BasicParticle::operator=
BasicParticle & operator=(const BasicParticle &other)
copy-assignment operator
Definition: BasicParticle.cc:36