EDM4eic
EIC data model
Loading...
Searching...
No Matches
MutableCherenkovParticleID.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_MutableCherenkovParticleID_H
4#define EDM4EIC_MutableCherenkovParticleID_H
5
7// Make the immutable class available from its mutable version but not vice versa
9
12#include "podio/RelationRange.h"
13#include <vector>
14
15#include "podio/utilities/MaybeSharedPtr.h"
16
17#include <cstdint>
18
19#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
20#include "nlohmann/json_fwd.hpp"
21#endif
22
23// forward declarations
24namespace edm4eic {
26class TrackSegment;
28}
29
30
31namespace edm4eic {
32
33
34/** @class MutableCherenkovParticleID
35 * Cherenkov detector PID
36 * @author: A. Kiselev, C. Chatterjee, C. Dilks
37 */
39
42 friend class CherenkovParticleID;
43
44public:
47
48 /// default constructor
50
51 /// Constructor initializing all members
52 MutableCherenkovParticleID(const float npe, const float refractiveIndex, const float photonEnergy);
53
54 /// copy constructor
56
57 /// copy-assignment operator
58 MutableCherenkovParticleID& operator=(MutableCherenkovParticleID other) &; // Rebind this to other's internal object
59 MutableCherenkovParticleID& operator=(MutableCherenkovParticleID other) && = delete; // Prevent rebinding temporary as the changes wouldn't persist
60
61 /// create a mutable deep-copy of the object with identical relations
62 /// if cloneRelations=false, the relations are not cloned and will be empty
63 MutableCherenkovParticleID clone(bool cloneRelations=true) const;
64
65 /// destructor
67
68
69public:
70
71 /// Access the Overall photoelectron count
72 float getNpe() const;
73
74 /// Access the Average refractive index at the Cherenkov photons' vertices
75 float getRefractiveIndex() const;
76
77 /// Access the Average energy for these Cherenkov photons [GeV]
78 float getPhotonEnergy() const;
79
80
81 /// Access the reconstructed charged particle
83
84 /// Set the Overall photoelectron count
85 void setNpe(const float npe);
86 /// Get mutable reference to Overall photoelectron count
87 float& getNpe();
88
89 /// Set the Average refractive index at the Cherenkov photons' vertices
90 void setRefractiveIndex(const float refractiveIndex);
91 /// Get mutable reference to Average refractive index at the Cherenkov photons' vertices
92 float& getRefractiveIndex();
93
94 /// Set the Average energy for these Cherenkov photons [GeV]
95 void setPhotonEnergy(const float photonEnergy);
96 /// Get mutable reference to Average energy for these Cherenkov photons [GeV]
97 float& getPhotonEnergy();
98
99
100 /// Set the reconstructed charged particle
101 void setChargedParticle(const edm4eic::TrackSegment& value);
102
104 std::size_t rawHitAssociations_size() const;
106 std::vector<edm4eic::MCRecoTrackerHitAssociation>::const_iterator rawHitAssociations_begin() const;
107 std::vector<edm4eic::MCRecoTrackerHitAssociation>::const_iterator rawHitAssociations_end() const;
108 podio::RelationRange<edm4eic::MCRecoTrackerHitAssociation> getRawHitAssociations() const;
110 std::size_t hypotheses_size() const;
112 std::vector<edm4eic::CherenkovParticleIDHypothesis>::const_iterator hypotheses_begin() const;
113 std::vector<edm4eic::CherenkovParticleIDHypothesis>::const_iterator hypotheses_end() const;
114 podio::RelationRange<edm4eic::CherenkovParticleIDHypothesis> getHypotheses() const;
115 void addToThetaPhiPhotons(const edm4hep::Vector2f&);
116 std::size_t thetaPhiPhotons_size() const;
117 edm4hep::Vector2f getThetaPhiPhotons(std::size_t) const;
118 std::vector<edm4hep::Vector2f>::const_iterator thetaPhiPhotons_begin() const;
119 std::vector<edm4hep::Vector2f>::const_iterator thetaPhiPhotons_end() const;
120 podio::RelationRange<edm4hep::Vector2f> getThetaPhiPhotons() const;
121
122
123
124 /// check whether the object is actually available
125 bool isAvailable() const;
126 /// disconnect from CherenkovParticleIDObj instance
127 void unlink() { m_obj = podio::utils::MaybeSharedPtr<CherenkovParticleIDObj>{nullptr}; }
128
129 constexpr bool operator==(const MutableCherenkovParticleID& other) const { return m_obj == other.m_obj; }
130 bool operator==(const CherenkovParticleID& other) const;
131
132 constexpr bool operator!=(const MutableCherenkovParticleID& other) const { return !(*this == other); }
133 bool operator!=(const CherenkovParticleID& other) const { return !(*this == other); }
134
135 // less comparison operator, so that objects can be e.g. stored in sets.
137
138 podio::ObjectID id() const { return getObjectID(); }
139
140 const podio::ObjectID getObjectID() const;
141
142 friend std::hash<MutableCherenkovParticleID>;
143
145 using std::swap;
146 swap(a.m_obj, b.m_obj); // swap out the internal pointers
147 }
148
149private:
150 /// constructor from existing CherenkovParticleIDObj
151 explicit MutableCherenkovParticleID(podio::utils::MaybeSharedPtr<CherenkovParticleIDObj> obj);
152
153 podio::utils::MaybeSharedPtr<CherenkovParticleIDObj> m_obj{new CherenkovParticleIDObj{}, podio::utils::MarkOwned};
154};
155
156#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
157void to_json(nlohmann::json& j, const MutableCherenkovParticleID& value);
158#endif
159
160
161} // namespace edm4eic
162
163
164
165template<>
166struct std::hash<edm4eic::MutableCherenkovParticleID> {
167 std::size_t operator()(const edm4eic::MutableCherenkovParticleID& obj) const {
168 return std::hash<edm4eic::CherenkovParticleIDObj*>{}(obj.m_obj.get());
169 }
170};
171
172
173#endif
Definition CherenkovParticleIDCollection.h:139
Definition CherenkovParticleID.h:46
Definition CherenkovParticleIDHypothesis.h:20
Definition CherenkovParticleIDObj.h:26
Definition MCRecoTrackerHitAssociation.h:46
Definition MutableCherenkovParticleID.h:38
std::vector< edm4eic::CherenkovParticleIDHypothesis >::const_iterator hypotheses_begin() const
Definition MutableCherenkovParticleID.cc:114
std::vector< edm4hep::Vector2f >::const_iterator thetaPhiPhotons_begin() const
Definition MutableCherenkovParticleID.cc:150
const podio::ObjectID getObjectID() const
Definition MutableCherenkovParticleID.cc:190
float getPhotonEnergy() const
Access the Average energy for these Cherenkov photons [GeV].
Definition MutableCherenkovParticleID.cc:51
void setPhotonEnergy(const float photonEnergy)
Set the Average energy for these Cherenkov photons [GeV].
Definition MutableCherenkovParticleID.cc:65
bool operator<(const MutableCherenkovParticleID &other) const
Definition MutableCherenkovParticleID.h:136
void setChargedParticle(const edm4eic::TrackSegment &value)
Set the reconstructed charged particle.
Definition MutableCherenkovParticleID.cc:68
friend class CherenkovParticleID
Definition MutableCherenkovParticleID.h:42
float getRefractiveIndex() const
Access the Average refractive index at the Cherenkov photons' vertices.
Definition MutableCherenkovParticleID.cc:50
~MutableCherenkovParticleID()=default
destructor
podio::RelationRange< edm4hep::Vector2f > getThetaPhiPhotons() const
Definition MutableCherenkovParticleID.cc:173
MutableCherenkovParticleID & operator=(MutableCherenkovParticleID other) &&=delete
std::vector< edm4eic::CherenkovParticleIDHypothesis >::const_iterator hypotheses_end() const
Definition MutableCherenkovParticleID.cc:120
void addToThetaPhiPhotons(const edm4hep::Vector2f &)
Definition MutableCherenkovParticleID.cc:145
friend class CherenkovParticleIDMutableCollectionIterator
Definition MutableCherenkovParticleID.h:41
MutableCherenkovParticleID(const MutableCherenkovParticleID &other)=default
copy constructor
std::size_t thetaPhiPhotons_size() const
Definition MutableCherenkovParticleID.cc:162
const edm4eic::TrackSegment getChargedParticle() const
Access the reconstructed charged particle.
Definition MutableCherenkovParticleID.cc:53
MutableCherenkovParticleID()=default
default constructor
bool isAvailable() const
check whether the object is actually available
Definition MutableCherenkovParticleID.cc:186
void setRefractiveIndex(const float refractiveIndex)
Set the Average refractive index at the Cherenkov photons' vertices.
Definition MutableCherenkovParticleID.cc:63
constexpr bool operator!=(const MutableCherenkovParticleID &other) const
Definition MutableCherenkovParticleID.h:132
bool operator!=(const CherenkovParticleID &other) const
Definition MutableCherenkovParticleID.h:133
podio::RelationRange< edm4eic::CherenkovParticleIDHypothesis > getHypotheses() const
Definition MutableCherenkovParticleID.cc:137
friend void swap(MutableCherenkovParticleID &a, MutableCherenkovParticleID &b)
Definition MutableCherenkovParticleID.h:144
void addToHypotheses(const edm4eic::CherenkovParticleIDHypothesis &)
Definition MutableCherenkovParticleID.cc:109
MutableCherenkovParticleID clone(bool cloneRelations=true) const
Definition MutableCherenkovParticleID.cc:30
void unlink()
disconnect from CherenkovParticleIDObj instance
Definition MutableCherenkovParticleID.h:127
void addToRawHitAssociations(const edm4eic::MCRecoTrackerHitAssociation &)
Definition MutableCherenkovParticleID.cc:73
std::size_t rawHitAssociations_size() const
Definition MutableCherenkovParticleID.cc:90
friend class CherenkovParticleIDCollection
Definition MutableCherenkovParticleID.h:40
std::vector< edm4eic::MCRecoTrackerHitAssociation >::const_iterator rawHitAssociations_end() const
Definition MutableCherenkovParticleID.cc:84
float getNpe() const
Access the Overall photoelectron count.
Definition MutableCherenkovParticleID.cc:49
constexpr bool operator==(const MutableCherenkovParticleID &other) const
Definition MutableCherenkovParticleID.h:129
std::size_t hypotheses_size() const
Definition MutableCherenkovParticleID.cc:126
MutableCherenkovParticleID & operator=(MutableCherenkovParticleID other) &
copy-assignment operator
Definition MutableCherenkovParticleID.cc:25
podio::ObjectID id() const
Definition MutableCherenkovParticleID.h:138
CherenkovParticleIDCollection collection_type
Definition MutableCherenkovParticleID.h:46
CherenkovParticleID object_type
Definition MutableCherenkovParticleID.h:45
podio::RelationRange< edm4eic::MCRecoTrackerHitAssociation > getRawHitAssociations() const
Definition MutableCherenkovParticleID.cc:101
void setNpe(const float npe)
Set the Overall photoelectron count.
Definition MutableCherenkovParticleID.cc:61
std::vector< edm4hep::Vector2f >::const_iterator thetaPhiPhotons_end() const
Definition MutableCherenkovParticleID.cc:156
std::vector< edm4eic::MCRecoTrackerHitAssociation >::const_iterator rawHitAssociations_begin() const
Definition MutableCherenkovParticleID.cc:78
Definition MutableTrackSegment.h:37
Definition TrackSegment.h:45
Definition ArrowMapper.cc:61
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:146
std::size_t operator()(const edm4eic::MutableCherenkovParticleID &obj) const
Definition MutableCherenkovParticleID.h:167