EDM4eic
EIC data model
Loading...
Searching...
No Matches
HadronicFinalState.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_HadronicFinalState_H
4#define EDM4EIC_HadronicFinalState_H
5
7
9#include "podio/RelationRange.h"
10#include <vector>
11
12#include "podio/utilities/MaybeSharedPtr.h"
13#include "podio/detail/OrderKey.h"
14
15#include <ostream>
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 podio::detail {
29// Internal function used in less comparison operators of the datatypes and interface types
30OrderKey getOrderKey(const edm4eic::HadronicFinalState& obj);
31};
32
33namespace edm4eic {
34
38
39/** @class HadronicFinalState
40 * Summed quantities of the hadronic final state
41 * @author: T. Kutz
42 */
44
49 friend podio::detail::OrderKey podio::detail::getOrderKey(const HadronicFinalState & obj);
50
51public:
54
55 /// default constructor
57
58 /// Constructor initializing all members
59 HadronicFinalState(const float sigma, const float pT, const float gamma);
60
61 /// copy constructor
62 HadronicFinalState(const HadronicFinalState& other) = default;
63
64 /// copy-assignment operator
65 HadronicFinalState& operator=(HadronicFinalState other) &; // Rebind this to other's internal object
66 HadronicFinalState& operator=(HadronicFinalState other) && = delete; // Prevent rebinding temporary as the changes wouldn't persist
67
68 /// create a mutable deep-copy of the object with identical relations
69 /// if cloneRelations=false, the relations are not cloned and will be empty
70 MutableHadronicFinalState clone(bool cloneRelations=true) const;
71
72 /// destructor
74
75 /// converting constructor from mutable object
77
79
80public:
81
82 static constexpr std::string_view typeName = "edm4eic::HadronicFinalState";
83
84 /// Access the Longitudinal energy-momentum balance (aka E - pz)
85 float getSigma() const;
86
87 /// Access the Transverse momentum
88 float getPT() const;
89
90 /// Access the Hadronic angle
91 float getGamma() const;
92
93
94
95 std::size_t hadrons_size() const;
97 std::vector<edm4eic::ReconstructedParticle>::const_iterator hadrons_begin() const;
98 std::vector<edm4eic::ReconstructedParticle>::const_iterator hadrons_end() const;
99 podio::RelationRange<edm4eic::ReconstructedParticle> getHadrons() const;
100
101
102 /// check whether the object is actually available
103 bool isAvailable() const;
104 /// disconnect from HadronicFinalStateObj instance
105 void unlink() { m_obj = podio::utils::MaybeSharedPtr<HadronicFinalStateObj>{nullptr}; }
106
107 bool operator==(const HadronicFinalState& other) const { return m_obj == other.m_obj; }
108 bool operator==(const MutableHadronicFinalState& other) const;
109
110 bool operator!=(const HadronicFinalState& other) const { return !(*this == other); }
111 bool operator!=(const MutableHadronicFinalState& other) const { return !(*this == other); }
112
113 // less comparison operator, so that objects can be e.g. stored in sets.
114 bool operator<(const HadronicFinalState& other) const { return podio::detail::getOrderKey(*this) < podio::detail::getOrderKey(other); }
115
116 podio::ObjectID id() const { return getObjectID(); }
117
118 const podio::ObjectID getObjectID() const;
119
120 friend std::hash<HadronicFinalState>;
121
123 using std::swap;
124 swap(a.m_obj, b.m_obj); // swap out the internal pointers
125 }
126
127private:
128 /// constructor from existing HadronicFinalStateObj
129 explicit HadronicFinalState(podio::utils::MaybeSharedPtr<HadronicFinalStateObj> obj);
131
132 podio::utils::MaybeSharedPtr<HadronicFinalStateObj> m_obj{nullptr};
133};
134
135std::ostream& operator<<(std::ostream& o, const HadronicFinalState& value);
136
137#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
138void to_json(nlohmann::json& j, const HadronicFinalState& value);
139#endif
140
141
142} // namespace edm4eic
143
144
145
146template<>
147struct std::hash<edm4eic::HadronicFinalState> {
148 std::size_t operator()(const edm4eic::HadronicFinalState& obj) const {
149 return std::hash<edm4eic::HadronicFinalStateObj*>{}(obj.m_obj.get());
150 }
151};
152
153
154// This is needed to avoid triggering opening every library in LD_LIBRARY_PATH
155// until it's fixed in ROOT. See https://github.com/root-project/root/issues/18489
156// and https://github.com/AIDASoft/podio/issues/770
157#if defined(__clang__)
158#pragma clang diagnostic push
159#pragma clang diagnostic ignored "-Wunknown-warning-option"
160#pragma clang diagnostic ignored "-Wdeprecated-redundant-constexpr-static-def"
161#pragma clang diagnostic ignored "-Wdeprecated"
162constexpr std::string_view edm4eic::HadronicFinalState::typeName;
163#pragma clang diagnostic pop
164#elif defined(__GNUC__)
165#pragma GCC diagnostic push
166#pragma GCC diagnostic ignored "-Wdeprecated"
167constexpr std::string_view edm4eic::HadronicFinalState::typeName;
168#pragma GCC diagnostic pop
169#endif
170
171#endif
Definition HadronicFinalStateCollectionData.h:31
Definition HadronicFinalStateCollection.h:137
Definition HadronicFinalState.h:43
HadronicFinalState()
default constructor
Definition HadronicFinalState.cc:20
static HadronicFinalState makeEmpty()
Definition HadronicFinalState.cc:61
bool operator!=(const HadronicFinalState &other) const
Definition HadronicFinalState.h:110
std::vector< edm4eic::ReconstructedParticle >::const_iterator hadrons_end() const
Definition HadronicFinalState.cc:77
HadronicFinalState(const HadronicFinalState &other)=default
copy constructor
bool isAvailable() const
check whether the object is actually available
Definition HadronicFinalState.cc:106
HadronicFinalStateCollection collection_type
Definition HadronicFinalState.h:53
friend class MutableHadronicFinalState
Definition HadronicFinalState.h:45
friend class HadronicFinalStateCollectionIterator
Definition HadronicFinalState.h:48
bool operator!=(const MutableHadronicFinalState &other) const
Definition HadronicFinalState.h:111
bool operator<(const HadronicFinalState &other) const
Definition HadronicFinalState.h:114
friend void swap(HadronicFinalState &a, HadronicFinalState &b)
Definition HadronicFinalState.h:122
static constexpr std::string_view typeName
Definition HadronicFinalState.h:82
float getGamma() const
Access the Hadronic angle.
Definition HadronicFinalState.cc:67
std::size_t hadrons_size() const
Definition HadronicFinalState.cc:83
MutableHadronicFinalState clone(bool cloneRelations=true) const
Definition HadronicFinalState.cc:35
bool operator==(const HadronicFinalState &other) const
Definition HadronicFinalState.h:107
~HadronicFinalState()=default
destructor
void unlink()
disconnect from HadronicFinalStateObj instance
Definition HadronicFinalState.h:105
std::vector< edm4eic::ReconstructedParticle >::const_iterator hadrons_begin() const
Definition HadronicFinalState.cc:71
float getPT() const
Access the Transverse momentum.
Definition HadronicFinalState.cc:66
float getSigma() const
Access the Longitudinal energy-momentum balance (aka E - pz)
Definition HadronicFinalState.cc:65
MutableHadronicFinalState mutable_type
Definition HadronicFinalState.h:52
podio::ObjectID id() const
Definition HadronicFinalState.h:116
friend class HadronicFinalStateCollection
Definition HadronicFinalState.h:46
HadronicFinalState & operator=(HadronicFinalState other) &&=delete
const podio::ObjectID getObjectID() const
Definition HadronicFinalState.cc:110
HadronicFinalState & operator=(HadronicFinalState other) &
copy-assignment operator
Definition HadronicFinalState.cc:30
podio::RelationRange< edm4eic::ReconstructedParticle > getHadrons() const
Definition HadronicFinalState.cc:94
Definition HadronicFinalStateObj.h:20
Definition MutableHadronicFinalState.h:35
Definition ReconstructedParticle.h:54
Definition CalorimeterHit.cc:17
std::ostream & operator<<(std::ostream &o, const CalorimeterHit &value)
Definition CalorimeterHit.cc:103
Definition CalorimeterHit.h:31
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:150
std::size_t operator()(const edm4eic::HadronicFinalState &obj) const
Definition HadronicFinalState.h:148