EDM4eic
EIC data model
Loading...
Searching...
No Matches
MutableHadronicFinalState.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_MutableHadronicFinalState_H
4#define EDM4EIC_MutableHadronicFinalState_H
5
7// Make the immutable class available from its mutable version but not vice versa
9
11#include "podio/RelationRange.h"
12#include <vector>
13
14#include "podio/utilities/MaybeSharedPtr.h"
15
16#include <cstdint>
17
18#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
19#include "nlohmann/json_fwd.hpp"
20#endif
21
22// forward declarations
23namespace edm4eic {
25}
26
27
28namespace edm4eic {
29
30
31/** @class MutableHadronicFinalState
32 * Summed quantities of the hadronic final state
33 * @author: T. Kutz
34 */
36
39 friend class HadronicFinalState;
40
41public:
44
45 /// default constructor
47
48 /// Constructor initializing all members
49 MutableHadronicFinalState(const float sigma, const float pT, const float gamma);
50
51 /// copy constructor
53
54 /// copy-assignment operator
55 MutableHadronicFinalState& operator=(MutableHadronicFinalState other) &; // Rebind this to other's internal object
56 MutableHadronicFinalState& operator=(MutableHadronicFinalState other) && = delete; // Prevent rebinding temporary as the changes wouldn't persist
57
58 /// create a mutable deep-copy of the object with identical relations
59 /// if cloneRelations=false, the relations are not cloned and will be empty
60 MutableHadronicFinalState clone(bool cloneRelations=true) const;
61
62 /// destructor
64
65
66public:
67
68 /// Access the Longitudinal energy-momentum balance (aka E - pz)
69 float getSigma() const;
70
71 /// Access the Transverse momentum
72 float getPT() const;
73
74 /// Access the Hadronic angle
75 float getGamma() const;
76
77
78
79 /// Set the Longitudinal energy-momentum balance (aka E - pz)
80 void setSigma(const float sigma);
81 /// Get mutable reference to Longitudinal energy-momentum balance (aka E - pz)
82 float& getSigma();
83
84 /// Set the Transverse momentum
85 void setPT(const float pT);
86 /// Get mutable reference to Transverse momentum
87 float& getPT();
88
89 /// Set the Hadronic angle
90 void setGamma(const float gamma);
91 /// Get mutable reference to Hadronic angle
92 float& getGamma();
93
94
95
97 std::size_t hadrons_size() const;
99 std::vector<edm4eic::ReconstructedParticle>::const_iterator hadrons_begin() const;
100 std::vector<edm4eic::ReconstructedParticle>::const_iterator hadrons_end() const;
101 podio::RelationRange<edm4eic::ReconstructedParticle> getHadrons() const;
102
103
104
105 /// check whether the object is actually available
106 bool isAvailable() const;
107 /// disconnect from HadronicFinalStateObj instance
108 void unlink() { m_obj = podio::utils::MaybeSharedPtr<HadronicFinalStateObj>{nullptr}; }
109
110 constexpr bool operator==(const MutableHadronicFinalState& other) const { return m_obj == other.m_obj; }
111 bool operator==(const HadronicFinalState& other) const;
112
113 constexpr bool operator!=(const MutableHadronicFinalState& other) const { return !(*this == other); }
114 bool operator!=(const HadronicFinalState& other) const { return !(*this == other); }
115
116 // less comparison operator, so that objects can be e.g. stored in sets.
118
119 podio::ObjectID id() const { return getObjectID(); }
120
121 const podio::ObjectID getObjectID() const;
122
123 friend std::hash<MutableHadronicFinalState>;
124
126 using std::swap;
127 swap(a.m_obj, b.m_obj); // swap out the internal pointers
128 }
129
130private:
131 /// constructor from existing HadronicFinalStateObj
132 explicit MutableHadronicFinalState(podio::utils::MaybeSharedPtr<HadronicFinalStateObj> obj);
133
134 podio::utils::MaybeSharedPtr<HadronicFinalStateObj> m_obj{new HadronicFinalStateObj{}, podio::utils::MarkOwned};
135};
136
137#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
138void to_json(nlohmann::json& j, const MutableHadronicFinalState& value);
139#endif
140
141
142} // namespace edm4eic
143
144
145
146template<>
147struct std::hash<edm4eic::MutableHadronicFinalState> {
148 std::size_t operator()(const edm4eic::MutableHadronicFinalState& obj) const {
149 return std::hash<edm4eic::HadronicFinalStateObj*>{}(obj.m_obj.get());
150 }
151};
152
153
154#endif
Definition HadronicFinalStateCollection.h:139
Definition HadronicFinalState.h:43
Definition HadronicFinalStateObj.h:20
Definition MutableHadronicFinalState.h:35
bool operator!=(const HadronicFinalState &other) const
Definition MutableHadronicFinalState.h:114
friend void swap(MutableHadronicFinalState &a, MutableHadronicFinalState &b)
Definition MutableHadronicFinalState.h:125
float getGamma() const
Access the Hadronic angle.
Definition MutableHadronicFinalState.cc:44
std::vector< edm4eic::ReconstructedParticle >::const_iterator hadrons_end() const
Definition MutableHadronicFinalState.cc:66
void setSigma(const float sigma)
Set the Longitudinal energy-momentum balance (aka E - pz).
Definition MutableHadronicFinalState.cc:47
std::vector< edm4eic::ReconstructedParticle >::const_iterator hadrons_begin() const
Definition MutableHadronicFinalState.cc:60
float getSigma() const
Access the Longitudinal energy-momentum balance (aka E - pz).
Definition MutableHadronicFinalState.cc:42
void addToHadrons(const edm4eic::ReconstructedParticle &)
Definition MutableHadronicFinalState.cc:55
void unlink()
disconnect from HadronicFinalStateObj instance
Definition MutableHadronicFinalState.h:108
bool isAvailable() const
check whether the object is actually available
Definition MutableHadronicFinalState.cc:96
bool operator<(const MutableHadronicFinalState &other) const
Definition MutableHadronicFinalState.h:117
constexpr bool operator!=(const MutableHadronicFinalState &other) const
Definition MutableHadronicFinalState.h:113
constexpr bool operator==(const MutableHadronicFinalState &other) const
Definition MutableHadronicFinalState.h:110
float getPT() const
Access the Transverse momentum.
Definition MutableHadronicFinalState.cc:43
friend class HadronicFinalState
Definition MutableHadronicFinalState.h:39
std::size_t hadrons_size() const
Definition MutableHadronicFinalState.cc:72
podio::RelationRange< edm4eic::ReconstructedParticle > getHadrons() const
Definition MutableHadronicFinalState.cc:83
MutableHadronicFinalState clone(bool cloneRelations=true) const
Definition MutableHadronicFinalState.cc:29
~MutableHadronicFinalState()=default
destructor
HadronicFinalStateCollection collection_type
Definition MutableHadronicFinalState.h:43
MutableHadronicFinalState & operator=(MutableHadronicFinalState other) &&=delete
podio::ObjectID id() const
Definition MutableHadronicFinalState.h:119
const podio::ObjectID getObjectID() const
Definition MutableHadronicFinalState.cc:100
friend class HadronicFinalStateMutableCollectionIterator
Definition MutableHadronicFinalState.h:38
friend class HadronicFinalStateCollection
Definition MutableHadronicFinalState.h:37
void setPT(const float pT)
Set the Transverse momentum.
Definition MutableHadronicFinalState.cc:49
MutableHadronicFinalState & operator=(MutableHadronicFinalState other) &
copy-assignment operator
Definition MutableHadronicFinalState.cc:24
MutableHadronicFinalState(const MutableHadronicFinalState &other)=default
copy constructor
void setGamma(const float gamma)
Set the Hadronic angle.
Definition MutableHadronicFinalState.cc:51
HadronicFinalState object_type
Definition MutableHadronicFinalState.h:42
MutableHadronicFinalState()=default
default constructor
Definition ReconstructedParticle.h:54
Definition ArrowMapper.cc:61
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:146
std::size_t operator()(const edm4eic::MutableHadronicFinalState &obj) const
Definition MutableHadronicFinalState.h:148