EDM4eic
EIC data model
Loading...
Searching...
No Matches
MutableCluster.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_MutableCluster_H
4#define EDM4EIC_MutableCluster_H
5
7// Make the immutable class available from its mutable version but not vice versa
8#include "edm4eic/Cluster.h"
9
11#include "edm4eic/Cov2f.h"
12#include "edm4eic/Cov3f.h"
13#include "edm4hep/ParticleID.h"
14#include "edm4hep/Vector3f.h"
15#include "podio/RelationRange.h"
16#include <cstdint>
17#include <vector>
18
19#include "podio/utilities/MaybeSharedPtr.h"
20
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 ClusterCollection;
30}
31
32
33namespace edm4eic {
34
35
36/** @class MutableCluster
37 * EIC hit cluster, reworked to more closely resemble EDM4hep
38 * @author: W. Armstrong, S. Joosten, C.Peng
39 */
41
42 friend class ClusterCollection;
44 friend class Cluster;
45
46public:
49
50 /// default constructor
52
53 /// Constructor initializing all members
54 MutableCluster(std::int32_t type, float energy, float energyError, float time, float timeError, std::uint32_t nhits, edm4hep::Vector3f position, edm4eic::Cov3f positionError, float intrinsicTheta, float intrinsicPhi, edm4eic::Cov2f intrinsicDirectionError);
55
56 /// copy constructor
57 MutableCluster(const MutableCluster& other) = default;
58
59 /// copy-assignment operator
61
62 /// create a mutable deep-copy of the object with identical relations
63 /// if cloneRelations=false, the relations are not cloned and will be empty
64 MutableCluster clone(bool cloneRelations=true) const;
65
66 /// destructor
67 ~MutableCluster() = default;
68
69
70public:
71
72 /// Access the Flag-word that defines the type of the cluster
73 std::int32_t getType() const;
74
75 /// Access the Reconstructed energy of the cluster [GeV].
76 float getEnergy() const;
77
78 /// Access the Error on the cluster energy [GeV]
79 float getEnergyError() const;
80
81 /// Access the [ns]
82 float getTime() const;
83
84 /// Access the Error on the cluster time
85 float getTimeError() const;
86
87 /// Access the Number of hits in the cluster.
88 std::uint32_t getNhits() const;
89
90 /// Access the Global position of the cluster [mm].
91 const edm4hep::Vector3f& getPosition() const;
92
93 /// Access the Covariance matrix of the position (6 Parameters).
94 const edm4eic::Cov3f& getPositionError() const;
95
96 /// Access the Intrinsic cluster propagation direction polar angle [rad]
97 float getIntrinsicTheta() const;
98
99 /// Access the Intrinsic cluster propagation direction azimuthal angle [rad]
100 float getIntrinsicPhi() const;
101
102 /// Access the Error on the intrinsic cluster propagation direction
104
105
106
107 /// Set the Flag-word that defines the type of the cluster
108 void setType(std::int32_t value);
109 /// Get mutable reference to Flag-word that defines the type of the cluster
110 std::int32_t& getType();
111 /// Get reference to Flag-word that defines the type of the cluster
112 [[deprecated("use getType instead")]]
113 std::int32_t& type();
114
115 /// Set the Reconstructed energy of the cluster [GeV].
116 void setEnergy(float value);
117 /// Get mutable reference to Reconstructed energy of the cluster [GeV].
118 float& getEnergy();
119 /// Get reference to Reconstructed energy of the cluster [GeV].
120 [[deprecated("use getEnergy instead")]]
121 float& energy();
122
123 /// Set the Error on the cluster energy [GeV]
124 void setEnergyError(float value);
125 /// Get mutable reference to Error on the cluster energy [GeV]
126 float& getEnergyError();
127 /// Get reference to Error on the cluster energy [GeV]
128 [[deprecated("use getEnergyError instead")]]
129 float& energyError();
130
131 /// Set the [ns]
132 void setTime(float value);
133 /// Get mutable reference to [ns]
134 float& getTime();
135 /// Get reference to [ns]
136 [[deprecated("use getTime instead")]]
137 float& time();
138
139 /// Set the Error on the cluster time
140 void setTimeError(float value);
141 /// Get mutable reference to Error on the cluster time
142 float& getTimeError();
143 /// Get reference to Error on the cluster time
144 [[deprecated("use getTimeError instead")]]
145 float& timeError();
146
147 /// Set the Number of hits in the cluster.
148 void setNhits(std::uint32_t value);
149 /// Get mutable reference to Number of hits in the cluster.
150 std::uint32_t& getNhits();
151 /// Get reference to Number of hits in the cluster.
152 [[deprecated("use getNhits instead")]]
153 std::uint32_t& nhits();
154
155 /// Set the Global position of the cluster [mm].
156 void setPosition(edm4hep::Vector3f value);
157 /// Get mutable reference to Global position of the cluster [mm].
158 edm4hep::Vector3f& getPosition();
159 /// Get reference to Global position of the cluster [mm].
160 [[deprecated("use getPosition instead")]]
161 edm4hep::Vector3f& position();
162
163 /// Set the Covariance matrix of the position (6 Parameters).
165 /// Get mutable reference to Covariance matrix of the position (6 Parameters).
167 /// Get reference to Covariance matrix of the position (6 Parameters).
168 [[deprecated("use getPositionError instead")]]
170
171 /// Set the Intrinsic cluster propagation direction polar angle [rad]
172 void setIntrinsicTheta(float value);
173 /// Get mutable reference to Intrinsic cluster propagation direction polar angle [rad]
174 float& getIntrinsicTheta();
175 /// Get reference to Intrinsic cluster propagation direction polar angle [rad]
176 [[deprecated("use getIntrinsicTheta instead")]]
177 float& intrinsicTheta();
178
179 /// Set the Intrinsic cluster propagation direction azimuthal angle [rad]
180 void setIntrinsicPhi(float value);
181 /// Get mutable reference to Intrinsic cluster propagation direction azimuthal angle [rad]
182 float& getIntrinsicPhi();
183 /// Get reference to Intrinsic cluster propagation direction azimuthal angle [rad]
184 [[deprecated("use getIntrinsicPhi instead")]]
185 float& intrinsicPhi();
186
187 /// Set the Error on the intrinsic cluster propagation direction
189 /// Get mutable reference to Error on the intrinsic cluster propagation direction
191 /// Get reference to Error on the intrinsic cluster propagation direction
192 [[deprecated("use getIntrinsicDirectionError instead")]]
194
195
196
197 void addToClusters(const edm4eic::Cluster&);
198 std::size_t clusters_size() const;
199 edm4eic::Cluster getClusters(std::size_t) const;
200 std::vector<edm4eic::Cluster>::const_iterator clusters_begin() const;
201 std::vector<edm4eic::Cluster>::const_iterator clusters_end() const;
202 podio::RelationRange<edm4eic::Cluster> getClusters() const;
204 std::size_t hits_size() const;
205 edm4eic::CalorimeterHit getHits(std::size_t) const;
206 std::vector<edm4eic::CalorimeterHit>::const_iterator hits_begin() const;
207 std::vector<edm4eic::CalorimeterHit>::const_iterator hits_end() const;
208 podio::RelationRange<edm4eic::CalorimeterHit> getHits() const;
209 void addToParticleIDs(const edm4hep::ParticleID&);
210 std::size_t particleIDs_size() const;
211 edm4hep::ParticleID getParticleIDs(std::size_t) const;
212 std::vector<edm4hep::ParticleID>::const_iterator particleIDs_begin() const;
213 std::vector<edm4hep::ParticleID>::const_iterator particleIDs_end() const;
214 podio::RelationRange<edm4hep::ParticleID> getParticleIDs() const;
215 void addToShapeParameters(const float&);
216 std::size_t shapeParameters_size() const;
217 float getShapeParameters(std::size_t) const;
218 std::vector<float>::const_iterator shapeParameters_begin() const;
219 std::vector<float>::const_iterator shapeParameters_end() const;
220 podio::RelationRange<float> getShapeParameters() const;
221 void addToHitContributions(const float&);
222 std::size_t hitContributions_size() const;
223 float getHitContributions(std::size_t) const;
224 std::vector<float>::const_iterator hitContributions_begin() const;
225 std::vector<float>::const_iterator hitContributions_end() const;
226 podio::RelationRange<float> getHitContributions() const;
227 void addToSubdetectorEnergies(const float&);
228 std::size_t subdetectorEnergies_size() const;
229 float getSubdetectorEnergies(std::size_t) const;
230 std::vector<float>::const_iterator subdetectorEnergies_begin() const;
231 std::vector<float>::const_iterator subdetectorEnergies_end() const;
232 podio::RelationRange<float> getSubdetectorEnergies() const;
233
234
235
236 /// check whether the object is actually available
237 bool isAvailable() const;
238 /// disconnect from ClusterObj instance
239 void unlink() { m_obj = podio::utils::MaybeSharedPtr<ClusterObj>{nullptr}; }
240
241 bool operator==(const MutableCluster& other) const { return m_obj == other.m_obj; }
242 bool operator==(const Cluster& other) const;
243
244 bool operator!=(const MutableCluster& other) const { return !(*this == other); }
245 bool operator!=(const Cluster& other) const { return !(*this == other); }
246
247 // less comparison operator, so that objects can be e.g. stored in sets.
248 bool operator<(const MutableCluster& other) const { return podio::detail::getOrderKey(*this) < podio::detail::getOrderKey(other); }
249
250 podio::ObjectID id() const { return getObjectID(); }
251
252 const podio::ObjectID getObjectID() const;
253
254 friend void swap(MutableCluster& a, MutableCluster& b) {
255 using std::swap;
256 swap(a.m_obj, b.m_obj); // swap out the internal pointers
257 }
258
259private:
260 /// constructor from existing ClusterObj
261 explicit MutableCluster(podio::utils::MaybeSharedPtr<ClusterObj> obj);
262
263 podio::utils::MaybeSharedPtr<ClusterObj> m_obj{nullptr};
264};
265
266#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
267void to_json(nlohmann::json& j, const MutableCluster& value);
268#endif
269
270
271} // namespace edm4eic
272
273
274#endif
Definition CalorimeterHit.h:46
Definition ClusterCollection.h:91
Definition Cluster.h:48
Definition ClusterCollection.h:62
Definition Cov2f.h:18
Definition Cov3f.h:18
Definition MutableCluster.h:40
const edm4hep::Vector3f & getPosition() const
Access the Global position of the cluster [mm].
Definition MutableCluster.cc:75
podio::RelationRange< float > getSubdetectorEnergies() const
Definition MutableCluster.cc:325
std::vector< edm4hep::ParticleID >::const_iterator particleIDs_begin() const
Definition MutableCluster.cc:194
void setEnergy(float value)
Set the Reconstructed energy of the cluster [GeV].
Definition MutableCluster.cc:85
friend class Cluster
Definition MutableCluster.h:44
float getTime() const
Access the [ns].
Definition MutableCluster.cc:72
void addToShapeParameters(const float &)
Definition MutableCluster.cc:225
podio::RelationRange< edm4eic::CalorimeterHit > getHits() const
Definition MutableCluster.cc:181
std::vector< edm4eic::CalorimeterHit >::const_iterator hits_end() const
Definition MutableCluster.cc:164
podio::ObjectID id() const
Definition MutableCluster.h:250
std::vector< edm4eic::CalorimeterHit >::const_iterator hits_begin() const
Definition MutableCluster.cc:158
void addToParticleIDs(const edm4hep::ParticleID &)
Definition MutableCluster.cc:189
void setPositionError(edm4eic::Cov3f value)
Set the Covariance matrix of the position (6 Parameters).
Definition MutableCluster.cc:103
float getTimeError() const
Access the Error on the cluster time.
Definition MutableCluster.cc:73
void unlink()
disconnect from ClusterObj instance
Definition MutableCluster.h:239
float getEnergyError() const
Access the Error on the cluster energy [GeV].
Definition MutableCluster.cc:71
bool operator!=(const Cluster &other) const
Definition MutableCluster.h:245
void setPosition(edm4hep::Vector3f value)
Set the Global position of the cluster [mm].
Definition MutableCluster.cc:100
const edm4eic::Cov2f & getIntrinsicDirectionError() const
Access the Error on the intrinsic cluster propagation direction.
Definition MutableCluster.cc:79
bool isAvailable() const
check whether the object is actually available
Definition MutableCluster.cc:338
MutableCluster(const MutableCluster &other)=default
copy constructor
bool operator<(const MutableCluster &other) const
Definition MutableCluster.h:248
std::size_t particleIDs_size() const
Definition MutableCluster.cc:206
edm4eic::Cov2f & intrinsicDirectionError()
Get reference to Error on the intrinsic cluster propagation direction.
Definition MutableCluster.cc:114
std::size_t hits_size() const
Definition MutableCluster.cc:170
MutableCluster & operator=(MutableCluster other)
copy-assignment operator
Definition MutableCluster.cc:36
std::vector< edm4hep::ParticleID >::const_iterator particleIDs_end() const
Definition MutableCluster.cc:200
bool operator!=(const MutableCluster &other) const
Definition MutableCluster.h:244
float & intrinsicTheta()
Get reference to Intrinsic cluster propagation direction polar angle [rad].
Definition MutableCluster.cc:108
float getIntrinsicTheta() const
Access the Intrinsic cluster propagation direction polar angle [rad].
Definition MutableCluster.cc:77
void addToHits(const edm4eic::CalorimeterHit &)
Definition MutableCluster.cc:153
std::int32_t & type()
Get reference to Flag-word that defines the type of the cluster.
Definition MutableCluster.cc:84
friend void swap(MutableCluster &a, MutableCluster &b)
Definition MutableCluster.h:254
void setIntrinsicDirectionError(edm4eic::Cov2f value)
Set the Error on the intrinsic cluster propagation direction.
Definition MutableCluster.cc:112
podio::RelationRange< edm4hep::ParticleID > getParticleIDs() const
Definition MutableCluster.cc:217
std::vector< edm4eic::Cluster >::const_iterator clusters_end() const
Definition MutableCluster.cc:128
void setIntrinsicTheta(float value)
Set the Intrinsic cluster propagation direction polar angle [rad].
Definition MutableCluster.cc:106
friend class ClusterCollection
Definition MutableCluster.h:42
void setNhits(std::uint32_t value)
Set the Number of hits in the cluster.
Definition MutableCluster.cc:97
edm4eic::Cov3f & positionError()
Get reference to Covariance matrix of the position (6 Parameters).
Definition MutableCluster.cc:105
float & energyError()
Get reference to Error on the cluster energy [GeV].
Definition MutableCluster.cc:90
void setEnergyError(float value)
Set the Error on the cluster energy [GeV].
Definition MutableCluster.cc:88
std::int32_t getType() const
Access the Flag-word that defines the type of the cluster.
Definition MutableCluster.cc:69
float & intrinsicPhi()
Get reference to Intrinsic cluster propagation direction azimuthal angle [rad].
Definition MutableCluster.cc:111
void addToSubdetectorEnergies(const float &)
Definition MutableCluster.cc:297
std::vector< float >::const_iterator hitContributions_begin() const
Definition MutableCluster.cc:266
std::vector< float >::const_iterator subdetectorEnergies_begin() const
Definition MutableCluster.cc:302
std::uint32_t getNhits() const
Access the Number of hits in the cluster.
Definition MutableCluster.cc:74
edm4hep::Vector3f & position()
Get reference to Global position of the cluster [mm].
Definition MutableCluster.cc:102
std::size_t clusters_size() const
Definition MutableCluster.cc:134
void addToHitContributions(const float &)
Definition MutableCluster.cc:261
std::size_t hitContributions_size() const
Definition MutableCluster.cc:278
bool operator==(const MutableCluster &other) const
Definition MutableCluster.h:241
~MutableCluster()=default
destructor
std::vector< edm4eic::Cluster >::const_iterator clusters_begin() const
Definition MutableCluster.cc:122
float getEnergy() const
Access the Reconstructed energy of the cluster [GeV].
Definition MutableCluster.cc:70
std::size_t shapeParameters_size() const
Definition MutableCluster.cc:242
MutableCluster()
default constructor
Definition MutableCluster.cc:18
const edm4eic::Cov3f & getPositionError() const
Access the Covariance matrix of the position (6 Parameters).
Definition MutableCluster.cc:76
MutableCluster clone(bool cloneRelations=true) const
Definition MutableCluster.cc:41
void setTimeError(float value)
Set the Error on the cluster time.
Definition MutableCluster.cc:94
float & energy()
Get reference to Reconstructed energy of the cluster [GeV].
Definition MutableCluster.cc:87
std::vector< float >::const_iterator shapeParameters_end() const
Definition MutableCluster.cc:236
const podio::ObjectID getObjectID() const
Definition MutableCluster.cc:342
podio::RelationRange< edm4eic::Cluster > getClusters() const
Definition MutableCluster.cc:145
podio::RelationRange< float > getHitContributions() const
Definition MutableCluster.cc:289
void addToClusters(const edm4eic::Cluster &)
Definition MutableCluster.cc:117
float getIntrinsicPhi() const
Access the Intrinsic cluster propagation direction azimuthal angle [rad].
Definition MutableCluster.cc:78
std::vector< float >::const_iterator subdetectorEnergies_end() const
Definition MutableCluster.cc:308
void setType(std::int32_t value)
Set the Flag-word that defines the type of the cluster.
Definition MutableCluster.cc:82
void setIntrinsicPhi(float value)
Set the Intrinsic cluster propagation direction azimuthal angle [rad].
Definition MutableCluster.cc:109
std::uint32_t & nhits()
Get reference to Number of hits in the cluster.
Definition MutableCluster.cc:99
std::vector< float >::const_iterator hitContributions_end() const
Definition MutableCluster.cc:272
float & time()
Get reference to [ns].
Definition MutableCluster.cc:93
float & timeError()
Get reference to Error on the cluster time.
Definition MutableCluster.cc:96
void setTime(float value)
Set the [ns].
Definition MutableCluster.cc:91
std::vector< float >::const_iterator shapeParameters_begin() const
Definition MutableCluster.cc:230
podio::RelationRange< float > getShapeParameters() const
Definition MutableCluster.cc:253
std::size_t subdetectorEnergies_size() const
Definition MutableCluster.cc:314
Definition CalorimeterHit.cc:17
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:150