EDM4eic
EIC data model
Loading...
Searching...
No Matches
InclusiveKinematics.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_InclusiveKinematics_H
4#define EDM4EIC_InclusiveKinematics_H
5
7
8
9#include "podio/utilities/MaybeSharedPtr.h"
10#include "podio/detail/OrderKey.h"
11
12#include <ostream>
13#include <cstdint>
14
15#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
16#include "nlohmann/json_fwd.hpp"
17#endif
18
19// forward declarations
20namespace edm4eic {
24}
25
26
27namespace podio::detail {
28// Internal function used in less comparison operators of the datatypes and interface types
29OrderKey getOrderKey(const edm4eic::InclusiveKinematics& obj);
30};
31
32namespace edm4eic {
33
37
38/** @class InclusiveKinematics
39 * Kinematic variables for DIS events
40 * @author: S. Joosten, W. Deconinck
41 */
43
48 friend podio::detail::OrderKey podio::detail::getOrderKey(const InclusiveKinematics & obj);
49
50public:
53
54 /// default constructor
56
57 /// Constructor initializing all members
58 InclusiveKinematics(const float x, const float Q2, const float W, const float y, const float nu);
59
60 /// copy constructor
62
63 /// copy-assignment operator
64 InclusiveKinematics& operator=(InclusiveKinematics other) &; // Rebind this to other's internal object
65 InclusiveKinematics& operator=(InclusiveKinematics other) && = delete; // Prevent rebinding temporary as the changes wouldn't persist
66
67 /// create a mutable deep-copy of the object with identical relations
68 /// if cloneRelations=false, the relations are not cloned and will be empty
69 MutableInclusiveKinematics clone(bool cloneRelations=true) const;
70
71 /// destructor
73
74 /// converting constructor from mutable object
76
78
79public:
80
81 static constexpr std::string_view typeName = "edm4eic::InclusiveKinematics";
82
83 /// Access the Bjorken x (Q2/2P.q)
84 float getX() const;
85
86 /// Access the Four-momentum transfer squared [GeV^2]
87 float getQ2() const;
88
89 /// Access the Invariant mass of final state [GeV]
90 float getW() const;
91
92 /// Access the Inelasticity (P.q/P.k)
93 float getY() const;
94
95 /// Access the Energy transfer P.q/M [GeV]
96 float getNu() const;
97
98
99 /// Access the Associated scattered electron (if identified)
101
102
103
104 /// check whether the object is actually available
105 bool isAvailable() const;
106 /// disconnect from InclusiveKinematicsObj instance
107 void unlink() { m_obj = podio::utils::MaybeSharedPtr<InclusiveKinematicsObj>{nullptr}; }
108
109 bool operator==(const InclusiveKinematics& other) const { return m_obj == other.m_obj; }
110 bool operator==(const MutableInclusiveKinematics& other) const;
111
112 bool operator!=(const InclusiveKinematics& other) const { return !(*this == other); }
113 bool operator!=(const MutableInclusiveKinematics& other) const { return !(*this == other); }
114
115 // less comparison operator, so that objects can be e.g. stored in sets.
116 bool operator<(const InclusiveKinematics& other) const { return podio::detail::getOrderKey(*this) < podio::detail::getOrderKey(other); }
117
118 podio::ObjectID id() const { return getObjectID(); }
119
120 const podio::ObjectID getObjectID() const;
121
122 friend std::hash<InclusiveKinematics>;
123
125 using std::swap;
126 swap(a.m_obj, b.m_obj); // swap out the internal pointers
127 }
128
129private:
130 /// constructor from existing InclusiveKinematicsObj
131 explicit InclusiveKinematics(podio::utils::MaybeSharedPtr<InclusiveKinematicsObj> obj);
133
134 podio::utils::MaybeSharedPtr<InclusiveKinematicsObj> m_obj{nullptr};
135};
136
137std::ostream& operator<<(std::ostream& o, const InclusiveKinematics& value);
138
139#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
140void to_json(nlohmann::json& j, const InclusiveKinematics& value);
141#endif
142
143
144} // namespace edm4eic
145
146
147
148template<>
149struct std::hash<edm4eic::InclusiveKinematics> {
150 std::size_t operator()(const edm4eic::InclusiveKinematics& obj) const {
151 return std::hash<edm4eic::InclusiveKinematicsObj*>{}(obj.m_obj.get());
152 }
153};
154
155
156// This is needed to avoid triggering opening every library in LD_LIBRARY_PATH
157// until it's fixed in ROOT. See https://github.com/root-project/root/issues/18489
158// and https://github.com/AIDASoft/podio/issues/770
159#if defined(__clang__)
160#pragma clang diagnostic push
161#pragma clang diagnostic ignored "-Wunknown-warning-option"
162#pragma clang diagnostic ignored "-Wdeprecated-redundant-constexpr-static-def"
163#pragma clang diagnostic ignored "-Wdeprecated"
164constexpr std::string_view edm4eic::InclusiveKinematics::typeName;
165#pragma clang diagnostic pop
166#elif defined(__GNUC__)
167#pragma GCC diagnostic push
168#pragma GCC diagnostic ignored "-Wdeprecated"
169constexpr std::string_view edm4eic::InclusiveKinematics::typeName;
170#pragma GCC diagnostic pop
171#endif
172
173#endif
Definition InclusiveKinematicsCollectionData.h:31
Definition InclusiveKinematicsCollection.h:137
Definition InclusiveKinematics.h:42
friend class InclusiveKinematicsCollectionIterator
Definition InclusiveKinematics.h:47
InclusiveKinematicsCollection collection_type
Definition InclusiveKinematics.h:52
friend void swap(InclusiveKinematics &a, InclusiveKinematics &b)
Definition InclusiveKinematics.h:124
InclusiveKinematics(const InclusiveKinematics &other)=default
copy constructor
bool operator!=(const MutableInclusiveKinematics &other) const
Definition InclusiveKinematics.h:113
InclusiveKinematics & operator=(InclusiveKinematics other) &&=delete
float getY() const
Access the Inelasticity (P.q/P.k)
Definition InclusiveKinematics.cc:63
float getX() const
Access the Bjorken x (Q2/2P.q)
Definition InclusiveKinematics.cc:60
float getW() const
Access the Invariant mass of final state [GeV].
Definition InclusiveKinematics.cc:62
friend class InclusiveKinematicsCollection
Definition InclusiveKinematics.h:45
static constexpr std::string_view typeName
Definition InclusiveKinematics.h:81
InclusiveKinematics()
default constructor
Definition InclusiveKinematics.cc:21
float getQ2() const
Access the Four-momentum transfer squared [GeV^2].
Definition InclusiveKinematics.cc:61
const edm4eic::ReconstructedParticle getScat() const
Access the Associated scattered electron (if identified)
Definition InclusiveKinematics.cc:66
bool isAvailable() const
check whether the object is actually available
Definition InclusiveKinematics.cc:78
bool operator!=(const InclusiveKinematics &other) const
Definition InclusiveKinematics.h:112
friend class MutableInclusiveKinematics
Definition InclusiveKinematics.h:44
float getNu() const
Access the Energy transfer P.q/M [GeV].
Definition InclusiveKinematics.cc:64
InclusiveKinematics & operator=(InclusiveKinematics other) &
copy-assignment operator
Definition InclusiveKinematics.cc:33
static InclusiveKinematics makeEmpty()
Definition InclusiveKinematics.cc:56
MutableInclusiveKinematics clone(bool cloneRelations=true) const
Definition InclusiveKinematics.cc:38
void unlink()
disconnect from InclusiveKinematicsObj instance
Definition InclusiveKinematics.h:107
bool operator<(const InclusiveKinematics &other) const
Definition InclusiveKinematics.h:116
podio::ObjectID id() const
Definition InclusiveKinematics.h:118
bool operator==(const InclusiveKinematics &other) const
Definition InclusiveKinematics.h:109
const podio::ObjectID getObjectID() const
Definition InclusiveKinematics.cc:82
~InclusiveKinematics()=default
destructor
MutableInclusiveKinematics mutable_type
Definition InclusiveKinematics.h:51
Definition InclusiveKinematicsObj.h:21
Definition MutableInclusiveKinematics.h:34
Definition MutableReconstructedParticle.h:46
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::InclusiveKinematics &obj) const
Definition InclusiveKinematics.h:150