EDM4eic
EIC data model
Loading...
Searching...
No Matches
ReconstructedParticle.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_ReconstructedParticle_H
4#define EDM4EIC_ReconstructedParticle_H
5
7
8#include "edm4eic/Cluster.h"
9#include "edm4eic/Cov4f.h"
10#include "edm4eic/Track.h"
11#include "edm4hep/ParticleID.h"
12#include "edm4hep/Vector3f.h"
13#include "podio/RelationRange.h"
14#include <cstdint>
15#include <vector>
16
17#include "podio/utilities/MaybeSharedPtr.h"
18#include "podio/detail/OrderKey.h"
19
20#include <ostream>
21#include <cstdint>
22
23#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
24#include "nlohmann/json_fwd.hpp"
25#endif
26
27// forward declarations
28namespace edm4eic {
29class ReconstructedParticleCollection;
30class Vertex;
31class MutableVertex;
32}
33namespace edm4hep {
34class ParticleID;
35class MutableParticleID;
36}
37
38
39namespace podio::detail {
40// Internal function used in less comparison operators of the datatypes and interface types
42};
43
44namespace edm4eic {
45
46class MutableReconstructedParticle;
47class ReconstructedParticleCollection;
48class ReconstructedParticleCollectionData;
49
50/** @class ReconstructedParticle
51 * EIC Reconstructed Particle
52 * @author: W. Armstrong, S. Joosten, F. Gaede
53 */
55
60 friend podio::detail::OrderKey podio::detail::getOrderKey(const ReconstructedParticle & obj);
61
62public:
65
66 /// default constructor
68
69 /// Constructor initializing all members
70 ReconstructedParticle(std::int32_t type, float energy, edm4hep::Vector3f momentum, edm4hep::Vector3f referencePoint, float charge, float mass, float goodnessOfPID, edm4eic::Cov4f covMatrix, std::int32_t PDG);
71
72 /// copy constructor
74
75 /// copy-assignment operator
77
78 /// create a mutable deep-copy of the object with identical relations
79 /// if cloneRelations=false, the relations are not cloned and will be empty
80 MutableReconstructedParticle clone(bool cloneRelations=true) const;
81
82 /// destructor
84
85 /// converting constructor from mutable object
87
89
90public:
91
92 static constexpr auto typeName = "edm4eic::ReconstructedParticle";
93
94 /// Access the type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues.
95 std::int32_t getType() const;
96
97 /// Access the [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally.
98 float getEnergy() const;
99
100 /// Access the [GeV] particle momentum. Four momentum state is not kept consistent internally.
101 const edm4hep::Vector3f& getMomentum() const;
102
103 /// Access the [mm] reference, i.e. where the particle has been measured
104 const edm4hep::Vector3f& getReferencePoint() const;
105
106 /// Access the charge of the reconstructed particle.
107 float getCharge() const;
108
109 /// Access the [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally.
110 float getMass() const;
111
112 /// Access the overall goodness of the PID on a scale of [0;1]
113 float getGoodnessOfPID() const;
114
115 /// Access the covariance matrix of the reconstructed particle 4vector (10 parameters).
116 const edm4eic::Cov4f& getCovMatrix() const;
117
118 /// Access the PDG code for this particle
119 std::int32_t getPDG() const;
120
121
122 /// Access the Start vertex associated to this particle
123 const edm4eic::Vertex getStartVertex() const;
124 /// Access the particle ID used for the kinematics of this particle
125 const edm4hep::ParticleID getParticleIDUsed() const;
126
127 std::size_t clusters_size() const;
128 edm4eic::Cluster getClusters(std::size_t) const;
129 std::vector<edm4eic::Cluster>::const_iterator clusters_begin() const;
130 std::vector<edm4eic::Cluster>::const_iterator clusters_end() const;
131 podio::RelationRange<edm4eic::Cluster> getClusters() const;
132 std::size_t tracks_size() const;
133 edm4eic::Track getTracks(std::size_t) const;
134 std::vector<edm4eic::Track>::const_iterator tracks_begin() const;
135 std::vector<edm4eic::Track>::const_iterator tracks_end() const;
136 podio::RelationRange<edm4eic::Track> getTracks() const;
137 std::size_t particles_size() const;
139 std::vector<edm4eic::ReconstructedParticle>::const_iterator particles_begin() const;
140 std::vector<edm4eic::ReconstructedParticle>::const_iterator particles_end() const;
141 podio::RelationRange<edm4eic::ReconstructedParticle> getParticles() const;
142 std::size_t particleIDs_size() const;
143 edm4hep::ParticleID getParticleIDs(std::size_t) const;
144 std::vector<edm4hep::ParticleID>::const_iterator particleIDs_begin() const;
145 std::vector<edm4hep::ParticleID>::const_iterator particleIDs_end() const;
146 podio::RelationRange<edm4hep::ParticleID> getParticleIDs() const;
147
148 bool isCompound() const {return particles_size() > 0;}
149
150
151 /// check whether the object is actually available
152 bool isAvailable() const;
153 /// disconnect from ReconstructedParticleObj instance
154 void unlink() { m_obj = podio::utils::MaybeSharedPtr<ReconstructedParticleObj>{nullptr}; }
155
156 bool operator==(const ReconstructedParticle& other) const { return m_obj == other.m_obj; }
157 bool operator==(const MutableReconstructedParticle& other) const;
158
159 bool operator!=(const ReconstructedParticle& other) const { return !(*this == other); }
160 bool operator!=(const MutableReconstructedParticle& other) const { return !(*this == other); }
161
162 // less comparison operator, so that objects can be e.g. stored in sets.
164
165 podio::ObjectID id() const { return getObjectID(); }
166
167 const podio::ObjectID getObjectID() const;
168
170 using std::swap;
171 swap(a.m_obj, b.m_obj); // swap out the internal pointers
172 }
173
174private:
175 /// constructor from existing ReconstructedParticleObj
176 explicit ReconstructedParticle(podio::utils::MaybeSharedPtr<ReconstructedParticleObj> obj);
178
179 podio::utils::MaybeSharedPtr<ReconstructedParticleObj> m_obj{nullptr};
180};
181
182std::ostream& operator<<(std::ostream& o, const ReconstructedParticle& value);
183
184#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
185void to_json(nlohmann::json& j, const ReconstructedParticle& value);
186#endif
187
188
189} // namespace edm4eic
190
191
192#endif
Definition Cluster.h:48
Definition Cov4f.h:18
Definition MutableReconstructedParticle.h:46
Definition ReconstructedParticleCollectionData.h:34
Definition ReconstructedParticleCollection.h:91
Definition ReconstructedParticleCollection.h:36
Definition ReconstructedParticle.h:54
bool operator!=(const ReconstructedParticle &other) const
Definition ReconstructedParticle.h:159
std::size_t particleIDs_size() const
Definition ReconstructedParticle.cc:246
ReconstructedParticle()
default constructor
Definition ReconstructedParticle.cc:22
std::vector< edm4hep::ParticleID >::const_iterator particleIDs_end() const
Definition ReconstructedParticle.cc:240
ReconstructedParticle & operator=(ReconstructedParticle other)
copy-assignment operator
Definition ReconstructedParticle.cc:38
friend class ReconstructedParticleCollection
Definition ReconstructedParticle.h:57
const edm4eic::Cov4f & getCovMatrix() const
Access the covariance matrix of the reconstructed particle 4vector (10 parameters).
Definition ReconstructedParticle.cc:119
std::size_t clusters_size() const
Definition ReconstructedParticle.cc:150
ReconstructedParticle(const ReconstructedParticle &other)=default
copy constructor
std::size_t tracks_size() const
Definition ReconstructedParticle.cc:182
std::vector< edm4eic::Cluster >::const_iterator clusters_begin() const
Definition ReconstructedParticle.cc:138
std::int32_t getType() const
Access the type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeN...
Definition ReconstructedParticle.cc:112
float getGoodnessOfPID() const
Access the overall goodness of the PID on a scale of [0;1].
Definition ReconstructedParticle.cc:118
podio::RelationRange< edm4eic::Cluster > getClusters() const
Definition ReconstructedParticle.cc:161
std::vector< edm4hep::ParticleID >::const_iterator particleIDs_begin() const
Definition ReconstructedParticle.cc:234
podio::ObjectID id() const
Definition ReconstructedParticle.h:165
std::vector< edm4eic::Track >::const_iterator tracks_end() const
Definition ReconstructedParticle.cc:176
friend class MutableReconstructedParticle
Definition ReconstructedParticle.h:56
const edm4hep::Vector3f & getReferencePoint() const
Access the [mm] reference, i.e. where the particle has been measured.
Definition ReconstructedParticle.cc:115
std::int32_t getPDG() const
Access the PDG code for this particle.
Definition ReconstructedParticle.cc:120
MutableReconstructedParticle clone(bool cloneRelations=true) const
Definition ReconstructedParticle.cc:43
std::vector< edm4eic::Track >::const_iterator tracks_begin() const
Definition ReconstructedParticle.cc:170
const edm4hep::Vector3f & getMomentum() const
Access the [GeV] particle momentum. Four momentum state is not kept consistent internally.
Definition ReconstructedParticle.cc:114
friend void swap(ReconstructedParticle &a, ReconstructedParticle &b)
Definition ReconstructedParticle.h:169
std::vector< edm4eic::ReconstructedParticle >::const_iterator particles_end() const
Definition ReconstructedParticle.cc:208
bool isCompound() const
Definition ReconstructedParticle.h:148
const edm4eic::Vertex getStartVertex() const
Access the Start vertex associated to this particle.
Definition ReconstructedParticle.cc:122
bool operator==(const ReconstructedParticle &other) const
Definition ReconstructedParticle.h:156
~ReconstructedParticle()=default
destructor
const podio::ObjectID getObjectID() const
Definition ReconstructedParticle.cc:273
bool isAvailable() const
check whether the object is actually available
Definition ReconstructedParticle.cc:269
float getMass() const
Access the [GeV] mass of the reconstructed particle, set independently from four vector....
Definition ReconstructedParticle.cc:117
float getCharge() const
Access the charge of the reconstructed particle.
Definition ReconstructedParticle.cc:116
float getEnergy() const
Access the [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent int...
Definition ReconstructedParticle.cc:113
const edm4hep::ParticleID getParticleIDUsed() const
Access the particle ID used for the kinematics of this particle.
Definition ReconstructedParticle.cc:129
podio::RelationRange< edm4eic::Track > getTracks() const
Definition ReconstructedParticle.cc:193
std::vector< edm4eic::Cluster >::const_iterator clusters_end() const
Definition ReconstructedParticle.cc:144
std::size_t particles_size() const
Definition ReconstructedParticle.cc:214
std::vector< edm4eic::ReconstructedParticle >::const_iterator particles_begin() const
Definition ReconstructedParticle.cc:202
static ReconstructedParticle makeEmpty()
Definition ReconstructedParticle.cc:108
bool operator<(const ReconstructedParticle &other) const
Definition ReconstructedParticle.h:163
bool operator!=(const MutableReconstructedParticle &other) const
Definition ReconstructedParticle.h:160
podio::RelationRange< edm4eic::ReconstructedParticle > getParticles() const
Definition ReconstructedParticle.cc:225
void unlink()
disconnect from ReconstructedParticleObj instance
Definition ReconstructedParticle.h:154
static constexpr auto typeName
Definition ReconstructedParticle.h:92
podio::RelationRange< edm4hep::ParticleID > getParticleIDs() const
Definition ReconstructedParticle.cc:257
Definition ReconstructedParticleObj.h:29
Definition Track.h:48
Definition Vertex.h:46
Definition CalorimeterHit.cc:17
std::ostream & operator<<(std::ostream &o, const CalorimeterHit &value)
Definition CalorimeterHit.cc:103
Definition CalorimeterHit.h:25
Definition CalorimeterHit.h:31
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:150