EDM4eic
EIC data model
Loading...
Searching...
No Matches
MutableTruthiness.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_MutableTruthiness_H
4#define EDM4EIC_MutableTruthiness_H
5
7// Make the immutable class available from its mutable version but not vice versa
9
13#include "edm4hep/MCParticle.h"
14#include "podio/RelationRange.h"
15#include <vector>
16
17#include "podio/utilities/MaybeSharedPtr.h"
18
19#include <cstdint>
20
21#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
22#include "nlohmann/json_fwd.hpp"
23#endif
24
25// forward declarations
26namespace edm4eic {
28}
29
30
31namespace edm4eic {
32
33
34/** @class MutableTruthiness
35 * Positive-definite convex norm of how confidently wrong the reconstruction is, with non-negative contributions from various aspects of the reconstruction, where a zero value indicates a perfect reconstruction.
36 * @author: W. Deconinck, S. Colbert
37 */
39
42 friend class Truthiness;
43
44public:
47
48 /// default constructor
49 MutableTruthiness() = default;
50
51 /// Constructor initializing all members
52 MutableTruthiness(const float truthiness, const edm4eic::TruthinessContribution& associationContribution, const float unassociatedMCParticlesContribution, const float unassociatedRecoParticlesContribution);
53
54 /// copy constructor
55 MutableTruthiness(const MutableTruthiness& other) = default;
56
57 /// copy-assignment operator
58 MutableTruthiness& operator=(MutableTruthiness other) &; // Rebind this to other's internal object
59 MutableTruthiness& operator=(MutableTruthiness 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 MutableTruthiness clone(bool cloneRelations=true) const;
64
65 /// destructor
66 ~MutableTruthiness() = default;
67
68
69public:
70
71 /// Access the Overall truthiness of the entire event
72 float getTruthiness() const;
73
74 /// Access the Contribution from all associated particles
76
77 /// Access the Contribution from unassociated MC particles
79
80 /// Access the Contribution from unassociated reconstructed particles
82
83
84
85 /// Set the Overall truthiness of the entire event
86 void setTruthiness(const float truthiness);
87 /// Get mutable reference to Overall truthiness of the entire event
88 float& getTruthiness();
89
90 /// Set the Contribution from all associated particles
91 void setAssociationContribution(const edm4eic::TruthinessContribution& associationContribution);
92 /// Get mutable reference to Contribution from all associated particles
94
95 /// Set the Contribution from unassociated MC particles
96 void setUnassociatedMCParticlesContribution(const float unassociatedMCParticlesContribution);
97 /// Get mutable reference to Contribution from unassociated MC particles
99
100 /// Set the Contribution from unassociated reconstructed particles
101 void setUnassociatedRecoParticlesContribution(const float unassociatedRecoParticlesContribution);
102 /// Get mutable reference to Contribution from unassociated reconstructed particles
104
105
106
108 std::size_t associations_size() const;
110 std::vector<edm4eic::MCRecoParticleAssociation>::const_iterator associations_begin() const;
111 std::vector<edm4eic::MCRecoParticleAssociation>::const_iterator associations_end() const;
112 podio::RelationRange<edm4eic::MCRecoParticleAssociation> getAssociations() const;
113 void addToUnassociatedMCParticles(const edm4hep::MCParticle&);
114 std::size_t unassociatedMCParticles_size() const;
115 edm4hep::MCParticle getUnassociatedMCParticles(std::size_t) const;
116 std::vector<edm4hep::MCParticle>::const_iterator unassociatedMCParticles_begin() const;
117 std::vector<edm4hep::MCParticle>::const_iterator unassociatedMCParticles_end() const;
118 podio::RelationRange<edm4hep::MCParticle> getUnassociatedMCParticles() const;
120 std::size_t unassociatedRecoParticles_size() const;
122 std::vector<edm4eic::ReconstructedParticle>::const_iterator unassociatedRecoParticles_begin() const;
123 std::vector<edm4eic::ReconstructedParticle>::const_iterator unassociatedRecoParticles_end() const;
124 podio::RelationRange<edm4eic::ReconstructedParticle> getUnassociatedRecoParticles() const;
126 std::size_t associationContributions_size() const;
128 std::vector<edm4eic::TruthinessContribution>::const_iterator associationContributions_begin() const;
129 std::vector<edm4eic::TruthinessContribution>::const_iterator associationContributions_end() const;
130 podio::RelationRange<edm4eic::TruthinessContribution> getAssociationContributions() const;
131
132
133
134 /// check whether the object is actually available
135 bool isAvailable() const;
136 /// disconnect from TruthinessObj instance
137 void unlink() { m_obj = podio::utils::MaybeSharedPtr<TruthinessObj>{nullptr}; }
138
139 constexpr bool operator==(const MutableTruthiness& other) const { return m_obj == other.m_obj; }
140 bool operator==(const Truthiness& other) const;
141
142 constexpr bool operator!=(const MutableTruthiness& other) const { return !(*this == other); }
143 bool operator!=(const Truthiness& other) const { return !(*this == other); }
144
145 // less comparison operator, so that objects can be e.g. stored in sets.
146 bool operator<(const MutableTruthiness& other) const { return podio::detail::getOrderKey(*this) < podio::detail::getOrderKey(other); }
147
148 podio::ObjectID id() const { return getObjectID(); }
149
150 const podio::ObjectID getObjectID() const;
151
152 friend std::hash<MutableTruthiness>;
153
155 using std::swap;
156 swap(a.m_obj, b.m_obj); // swap out the internal pointers
157 }
158
159private:
160 /// constructor from existing TruthinessObj
161 explicit MutableTruthiness(podio::utils::MaybeSharedPtr<TruthinessObj> obj);
162
163 podio::utils::MaybeSharedPtr<TruthinessObj> m_obj{new TruthinessObj{}, podio::utils::MarkOwned};
164};
165
166#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
167void to_json(nlohmann::json& j, const MutableTruthiness& value);
168#endif
169
170
171} // namespace edm4eic
172
173
174
175template<>
176struct std::hash<edm4eic::MutableTruthiness> {
177 std::size_t operator()(const edm4eic::MutableTruthiness& obj) const {
178 return std::hash<edm4eic::TruthinessObj*>{}(obj.m_obj.get());
179 }
180};
181
182
183#endif
Definition MCRecoParticleAssociation.h:48
Definition MutableTruthiness.h:38
std::vector< edm4eic::ReconstructedParticle >::const_iterator unassociatedRecoParticles_end() const
Definition MutableTruthiness.cc:151
friend class Truthiness
Definition MutableTruthiness.h:42
std::vector< edm4eic::TruthinessContribution >::const_iterator associationContributions_end() const
Definition MutableTruthiness.cc:187
MutableTruthiness()=default
default constructor
const edm4eic::TruthinessContribution & getAssociationContribution() const
Access the Contribution from all associated particles.
Definition MutableTruthiness.cc:53
std::vector< edm4eic::TruthinessContribution >::const_iterator associationContributions_begin() const
Definition MutableTruthiness.cc:181
float getTruthiness() const
Access the Overall truthiness of the entire event.
Definition MutableTruthiness.cc:52
MutableTruthiness & operator=(MutableTruthiness other) &&=delete
podio::RelationRange< edm4eic::TruthinessContribution > getAssociationContributions() const
Definition MutableTruthiness.cc:204
void unlink()
disconnect from TruthinessObj instance
Definition MutableTruthiness.h:137
podio::RelationRange< edm4eic::MCRecoParticleAssociation > getAssociations() const
Definition MutableTruthiness.cc:96
std::vector< edm4hep::MCParticle >::const_iterator unassociatedMCParticles_begin() const
Definition MutableTruthiness.cc:109
MutableTruthiness & operator=(MutableTruthiness other) &
copy-assignment operator
Definition MutableTruthiness.cc:25
std::vector< edm4eic::ReconstructedParticle >::const_iterator unassociatedRecoParticles_begin() const
Definition MutableTruthiness.cc:145
void setUnassociatedRecoParticlesContribution(const float unassociatedRecoParticlesContribution)
Set the Contribution from unassociated reconstructed particles.
Definition MutableTruthiness.cc:64
std::size_t associationContributions_size() const
Definition MutableTruthiness.cc:193
void setUnassociatedMCParticlesContribution(const float unassociatedMCParticlesContribution)
Set the Contribution from unassociated MC particles.
Definition MutableTruthiness.cc:62
std::size_t unassociatedMCParticles_size() const
Definition MutableTruthiness.cc:121
std::vector< edm4eic::MCRecoParticleAssociation >::const_iterator associations_end() const
Definition MutableTruthiness.cc:79
bool operator<(const MutableTruthiness &other) const
Definition MutableTruthiness.h:146
std::vector< edm4hep::MCParticle >::const_iterator unassociatedMCParticles_end() const
Definition MutableTruthiness.cc:115
std::vector< edm4eic::MCRecoParticleAssociation >::const_iterator associations_begin() const
Definition MutableTruthiness.cc:73
friend class TruthinessCollection
Definition MutableTruthiness.h:40
MutableTruthiness(const MutableTruthiness &other)=default
copy constructor
void setTruthiness(const float truthiness)
Set the Overall truthiness of the entire event.
Definition MutableTruthiness.cc:58
const podio::ObjectID getObjectID() const
Definition MutableTruthiness.cc:221
constexpr bool operator==(const MutableTruthiness &other) const
Definition MutableTruthiness.h:139
bool isAvailable() const
check whether the object is actually available
Definition MutableTruthiness.cc:217
constexpr bool operator!=(const MutableTruthiness &other) const
Definition MutableTruthiness.h:142
std::size_t associations_size() const
Definition MutableTruthiness.cc:85
friend void swap(MutableTruthiness &a, MutableTruthiness &b)
Definition MutableTruthiness.h:154
float getUnassociatedRecoParticlesContribution() const
Access the Contribution from unassociated reconstructed particles.
Definition MutableTruthiness.cc:55
std::size_t unassociatedRecoParticles_size() const
Definition MutableTruthiness.cc:157
void addToAssociationContributions(const edm4eic::TruthinessContribution &)
Definition MutableTruthiness.cc:176
podio::ObjectID id() const
Definition MutableTruthiness.h:148
MutableTruthiness clone(bool cloneRelations=true) const
Definition MutableTruthiness.cc:30
float getUnassociatedMCParticlesContribution() const
Access the Contribution from unassociated MC particles.
Definition MutableTruthiness.cc:54
~MutableTruthiness()=default
destructor
bool operator!=(const Truthiness &other) const
Definition MutableTruthiness.h:143
TruthinessCollection collection_type
Definition MutableTruthiness.h:46
void addToUnassociatedRecoParticles(const edm4eic::ReconstructedParticle &)
Definition MutableTruthiness.cc:140
friend class TruthinessMutableCollectionIterator
Definition MutableTruthiness.h:41
podio::RelationRange< edm4eic::ReconstructedParticle > getUnassociatedRecoParticles() const
Definition MutableTruthiness.cc:168
void setAssociationContribution(const edm4eic::TruthinessContribution &associationContribution)
Set the Contribution from all associated particles.
Definition MutableTruthiness.cc:60
Truthiness object_type
Definition MutableTruthiness.h:45
void addToUnassociatedMCParticles(const edm4hep::MCParticle &)
Definition MutableTruthiness.cc:104
podio::RelationRange< edm4hep::MCParticle > getUnassociatedMCParticles() const
Definition MutableTruthiness.cc:132
void addToAssociations(const edm4eic::MCRecoParticleAssociation &)
Definition MutableTruthiness.cc:68
Definition ReconstructedParticle.h:54
Definition TruthinessCollection.h:139
Definition TruthinessContribution.h:19
Definition Truthiness.h:46
Definition TruthinessObj.h:23
Definition ArrowMapper.cc:61
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:146
std::size_t operator()(const edm4eic::MutableTruthiness &obj) const
Definition MutableTruthiness.h:177