EDM4eic
EIC data model
Loading...
Searching...
No Matches
SimPulse.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_SimPulse_H
4#define EDM4EIC_SimPulse_H
5
7
8#include "edm4hep/MCParticle.h"
9#include "edm4hep/SimCalorimeterHit.h"
10#include "edm4hep/SimTrackerHit.h"
11#include "edm4hep/Vector3f.h"
12#include "podio/RelationRange.h"
13#include <cstdint>
14#include <vector>
15
16#include "podio/utilities/MaybeSharedPtr.h"
17
18#include <ostream>
19#include <cstdint>
20
21#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
22#include "nlohmann/json_fwd.hpp"
23#endif
24
25
26
27namespace edm4eic {
28
29class MutableSimPulse;
30class SimPulseCollection;
31class SimPulseCollectionData;
32
33/** @class SimPulse
34 * Simulated pulse prior to digitization.
35 * @author: D. Anderson, S. Gardner, S. Joosten., D. Kalinkin
36 */
37class SimPulse {
38
39 friend class MutableSimPulse;
40 friend class SimPulseCollection;
43
44public:
47
48 /// default constructor
49 SimPulse();
50
51 /// Constructor initializing all members
52 SimPulse(std::uint64_t cellID, float integral, edm4hep::Vector3f position, float time, float interval);
53
54 /// copy constructor
55 SimPulse(const SimPulse& other) = default;
56
57 /// copy-assignment operator
59
60 /// create a mutable deep-copy of the object with identical relations
61 /// if cloneRelations=false, the relations are not cloned and will be empty
62 MutableSimPulse clone(bool cloneRelations=true) const;
63
64 /// destructor
65 ~SimPulse() = default;
66
67 /// converting constructor from mutable object
68 SimPulse(const MutableSimPulse& other);
69
70 static SimPulse makeEmpty();
71
72public:
73
74 /// Access the ID of the readout cell for this pulse.
75 std::uint64_t getCellID() const;
76
77 /// Access the Total pulse integral in relevant units.
78 float getIntegral() const;
79
80 /// Access the Position the pulse is evaluated in world coordinates [mm].
81 const edm4hep::Vector3f& getPosition() const;
82
83 /// Access the Start time for the pulse in [ns].
84 float getTime() const;
85
86 /// Access the Time interval between amplitude values [ns].
87 float getInterval() const;
88
89
90
91 std::size_t calorimeterHits_size() const;
92 edm4hep::SimCalorimeterHit getCalorimeterHits(std::size_t) const;
93 std::vector<edm4hep::SimCalorimeterHit>::const_iterator calorimeterHits_begin() const;
94 std::vector<edm4hep::SimCalorimeterHit>::const_iterator calorimeterHits_end() const;
95 podio::RelationRange<edm4hep::SimCalorimeterHit> getCalorimeterHits() const;
96 std::size_t trackerHits_size() const;
97 edm4hep::SimTrackerHit getTrackerHits(std::size_t) const;
98 std::vector<edm4hep::SimTrackerHit>::const_iterator trackerHits_begin() const;
99 std::vector<edm4hep::SimTrackerHit>::const_iterator trackerHits_end() const;
100 podio::RelationRange<edm4hep::SimTrackerHit> getTrackerHits() const;
101 std::size_t pulses_size() const;
102 edm4eic::SimPulse getPulses(std::size_t) const;
103 std::vector<edm4eic::SimPulse>::const_iterator pulses_begin() const;
104 std::vector<edm4eic::SimPulse>::const_iterator pulses_end() const;
105 podio::RelationRange<edm4eic::SimPulse> getPulses() const;
106 std::size_t particles_size() const;
107 edm4hep::MCParticle getParticles(std::size_t) const;
108 std::vector<edm4hep::MCParticle>::const_iterator particles_begin() const;
109 std::vector<edm4hep::MCParticle>::const_iterator particles_end() const;
110 podio::RelationRange<edm4hep::MCParticle> getParticles() const;
111 std::size_t amplitude_size() const;
112 float getAmplitude(std::size_t) const;
113 std::vector<float>::const_iterator amplitude_begin() const;
114 std::vector<float>::const_iterator amplitude_end() const;
115 podio::RelationRange<float> getAmplitude() const;
116
117
118 /// check whether the object is actually available
119 bool isAvailable() const;
120 /// disconnect from SimPulseObj instance
121 void unlink() { m_obj = podio::utils::MaybeSharedPtr<SimPulseObj>{nullptr}; }
122
123 bool operator==(const SimPulse& other) const { return m_obj == other.m_obj; }
124 bool operator==(const MutableSimPulse& other) const;
125
126 bool operator!=(const SimPulse& other) const { return !(*this == other); }
127 bool operator!=(const MutableSimPulse& other) const { return !(*this == other); }
128
129 // less comparison operator, so that objects can be e.g. stored in sets.
130 bool operator<(const SimPulse& other) const { return m_obj < other.m_obj; }
131
132 podio::ObjectID id() const { return getObjectID(); }
133
134 const podio::ObjectID getObjectID() const;
135
136 friend void swap(SimPulse& a, SimPulse& b) {
137 using std::swap;
138 swap(a.m_obj, b.m_obj); // swap out the internal pointers
139 }
140
141private:
142 /// constructor from existing SimPulseObj
143 explicit SimPulse(podio::utils::MaybeSharedPtr<SimPulseObj> obj);
144 SimPulse(SimPulseObj* obj);
145
146 podio::utils::MaybeSharedPtr<SimPulseObj> m_obj{nullptr};
147};
148
149std::ostream& operator<<(std::ostream& o, const SimPulse& value);
150
151#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
152void to_json(nlohmann::json& j, const SimPulse& value);
153#endif
154
155
156} // namespace edm4eic
157
158
159#endif
Definition MutableSimPulse.h:35
Definition SimPulseCollectionData.h:33
Definition SimPulseCollection.h:92
Definition SimPulseCollection.h:37
Definition SimPulse.h:37
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_end() const
Definition SimPulse.cc:125
std::vector< edm4eic::SimPulse >::const_iterator pulses_begin() const
Definition SimPulse.cc:183
std::size_t amplitude_size() const
Definition SimPulse.cc:259
podio::RelationRange< edm4hep::MCParticle > getParticles() const
Definition SimPulse.cc:238
std::vector< float >::const_iterator amplitude_end() const
Definition SimPulse.cc:253
std::size_t pulses_size() const
Definition SimPulse.cc:195
podio::RelationRange< float > getAmplitude() const
Definition SimPulse.cc:270
SimPulse & operator=(SimPulse other)
copy-assignment operator
Definition SimPulse.cc:32
std::vector< edm4hep::MCParticle >::const_iterator particles_begin() const
Definition SimPulse.cc:215
bool operator==(const SimPulse &other) const
Definition SimPulse.h:123
static SimPulse makeEmpty()
Definition SimPulse.cc:107
float getTime() const
Access the Start time for the pulse in [ns].
Definition SimPulse.cc:114
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_begin() const
Definition SimPulse.cc:119
std::vector< edm4hep::MCParticle >::const_iterator particles_end() const
Definition SimPulse.cc:221
podio::RelationRange< edm4hep::SimTrackerHit > getTrackerHits() const
Definition SimPulse.cc:174
friend class MutableSimPulse
Definition SimPulse.h:39
friend class SimPulseCollection
Definition SimPulse.h:40
~SimPulse()=default
destructor
podio::RelationRange< edm4hep::SimCalorimeterHit > getCalorimeterHits() const
Definition SimPulse.cc:142
podio::RelationRange< edm4eic::SimPulse > getPulses() const
Definition SimPulse.cc:206
SimPulse(const SimPulse &other)=default
copy constructor
bool operator<(const SimPulse &other) const
Definition SimPulse.h:130
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_begin() const
Definition SimPulse.cc:151
std::vector< float >::const_iterator amplitude_begin() const
Definition SimPulse.cc:247
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_end() const
Definition SimPulse.cc:157
bool operator!=(const SimPulse &other) const
Definition SimPulse.h:126
std::size_t calorimeterHits_size() const
Definition SimPulse.cc:131
MutableSimPulse clone(bool cloneRelations=true) const
Definition SimPulse.cc:37
std::size_t particles_size() const
Definition SimPulse.cc:227
std::vector< edm4eic::SimPulse >::const_iterator pulses_end() const
Definition SimPulse.cc:189
friend void swap(SimPulse &a, SimPulse &b)
Definition SimPulse.h:136
void unlink()
disconnect from SimPulseObj instance
Definition SimPulse.h:121
float getIntegral() const
Access the Total pulse integral in relevant units.
Definition SimPulse.cc:112
std::uint64_t getCellID() const
Access the ID of the readout cell for this pulse.
Definition SimPulse.cc:111
bool operator!=(const MutableSimPulse &other) const
Definition SimPulse.h:127
podio::ObjectID id() const
Definition SimPulse.h:132
float getInterval() const
Access the Time interval between amplitude values [ns].
Definition SimPulse.cc:115
std::size_t trackerHits_size() const
Definition SimPulse.cc:163
const edm4hep::Vector3f & getPosition() const
Access the Position the pulse is evaluated in world coordinates [mm].
Definition SimPulse.cc:113
bool isAvailable() const
check whether the object is actually available
Definition SimPulse.cc:282
const podio::ObjectID getObjectID() const
Definition SimPulse.cc:286
SimPulse()
default constructor
Definition SimPulse.cc:20
Definition SimPulseObj.h:21
Definition CalorimeterHit.cc:17
std::ostream & operator<<(std::ostream &o, const CalorimeterHit &value)
Definition CalorimeterHit.cc:103