EICd
EIC data model
BasicParticleConst.h
Go to the documentation of this file.
1 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2 
3 #ifndef EICD_ConstBasicParticle_H
4 #define EICD_ConstBasicParticle_H
5 
7 
8 #include "eicd/Index.h"
9 #include "eicd/VectorXYZ.h"
10 #include "eicd/Weight.h"
11 #include "podio/ObjectID.h"
12 
13 
14 
15 namespace eic {
16 
17 
18 /** @class ConstBasicParticle
19  * Basic particle used internally to communicate basic particle properties.
20  * @author: W. Armstrong, S. Joosten
21  */
23 
24  friend class BasicParticle;
27 
28 public:
29  /// default constructor
31  ConstBasicParticle(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);
32 
33  /// constructor from existing BasicParticleObj
35 
36  /// copy constructor
38 
39  /// copy-assignment operator
41 
42  /// support cloning (deep-copy)
43  ConstBasicParticle clone() const;
44 
45  /// destructor
47 
48 
49 public:
50 
51  /// Access the Unique particle index
52  const eic::Index& ID() const;
53 
54  /// Access the momentum [GeV]
55  const eic::VectorXYZ& p() const;
56 
57  /// Access the vertex [mm]
58  const eic::VectorXYZ& v() const;
59 
60  /// Access the Time in [ns]
61  const float& time() const;
62 
63  /// Access the particle PDG code
64  const std::int32_t& pid() const;
65 
66  /// Access the Status code
67  const std::int16_t& status() const;
68 
69  /// Access the Particle charge (or sign)
70  const std::int16_t& charge() const;
71 
72  /// Access the Particle weight, e.g. from PID algorithm [0-1]
73  const eic::Weight& weight() const;
74 
75 
76 
77 
78 
79  /// check whether the object is actually available
80  bool isAvailable() const;
81  /// disconnect from BasicParticleObj instance
82  void unlink() { m_obj = nullptr; }
83 
84  bool operator==(const ConstBasicParticle& other) const { return m_obj == other.m_obj; }
85  bool operator==(const BasicParticle& other) const;
86 
87  // less comparison operator, so that objects can be e.g. stored in sets.
88  bool operator<(const ConstBasicParticle& other) const { return m_obj < other.m_obj; }
89 
90  unsigned int id() const { return getObjectID().collectionID * 10000000 + getObjectID().index; }
91 
92  const podio::ObjectID getObjectID() const;
93 
94 private:
95  BasicParticleObj* m_obj;
96 };
97 
98 } // namespace eic
99 
100 
101 #endif
eic::Index
Definition: Index.h:11
eic::BasicParticle
Definition: BasicParticle.h:24
eic::ConstBasicParticle::getObjectID
const podio::ObjectID getObjectID() const
Definition: BasicParticleConst.cc:74
eic::ConstBasicParticle::ConstBasicParticle
ConstBasicParticle()
default constructor
Definition: BasicParticleConst.cc:16
eic::ConstBasicParticle::isAvailable
bool isAvailable() const
check whether the object is actually available
Definition: BasicParticleConst.cc:67
eic
Definition: BasicParticle.cc:13
eic::ConstBasicParticle::operator<
bool operator<(const ConstBasicParticle &other) const
Definition: BasicParticleConst.h:88
eic::BasicParticleConstCollectionIterator
Definition: BasicParticleCollection.h:51
eic::ConstBasicParticle::unlink
void unlink()
disconnect from BasicParticleObj instance
Definition: BasicParticleConst.h:82
eic::ConstBasicParticle::weight
const eic::Weight & weight() const
Access the Particle weight, e.g. from PID algorithm [0-1].
Definition: BasicParticleConst.cc:60
eic::ConstBasicParticle::v
const eic::VectorXYZ & v() const
Access the vertex [mm].
Definition: BasicParticleConst.cc:55
eic::Weight
Definition: Weight.h:11
VectorXYZ.h
eic::ConstBasicParticle::time
const float & time() const
Access the Time in [ns].
Definition: BasicParticleConst.cc:56
Weight.h
eic::ConstBasicParticle::charge
const std::int16_t & charge() const
Access the Particle charge (or sign)
Definition: BasicParticleConst.cc:59
eic::ConstBasicParticle::operator=
ConstBasicParticle & operator=(const ConstBasicParticle &other)
copy-assignment operator
Definition: BasicParticleConst.cc:36
eic::ConstBasicParticle::~ConstBasicParticle
~ConstBasicParticle()
destructor
Definition: BasicParticleConst.cc:50
eic::BasicParticleObj
Definition: BasicParticleObj.h:18
eic::ConstBasicParticle::p
const eic::VectorXYZ & p() const
Access the momentum [GeV].
Definition: BasicParticleConst.cc:54
eic::ConstBasicParticle
Definition: BasicParticleConst.h:22
eic::ConstBasicParticle::status
const std::int16_t & status() const
Access the Status code.
Definition: BasicParticleConst.cc:58
eic::ConstBasicParticle::operator==
bool operator==(const ConstBasicParticle &other) const
Definition: BasicParticleConst.h:84
eic::ConstBasicParticle::id
unsigned int id() const
Definition: BasicParticleConst.h:90
BasicParticleObj.h
Index.h
eic::ConstBasicParticle::clone
ConstBasicParticle clone() const
support cloning (deep-copy)
Definition: BasicParticleConst.cc:46
eic::ConstBasicParticle::ID
const eic::Index & ID() const
Access the Unique particle index.
Definition: BasicParticleConst.cc:53
eic::ConstBasicParticle::pid
const std::int32_t & pid() const
Access the particle PDG code.
Definition: BasicParticleConst.cc:57
eic::BasicParticleCollection
Definition: BasicParticleCollection.h:76
eic::VectorXYZ
Definition: VectorXYZ.h:13