3#ifndef EDM4EIC_SimPulse_H
4#define EDM4EIC_SimPulse_H
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"
16#include "podio/utilities/MaybeSharedPtr.h"
17#include "podio/detail/OrderKey.h"
22#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
23#include "nlohmann/json_fwd.hpp"
63 SimPulse(
const std::uint64_t cellID,
const float integral,
const edm4hep::Vector3f& position,
const float time,
const float interval);
86 static constexpr std::string_view
typeName =
"edm4eic::SimPulse";
113 std::vector<edm4hep::SimTrackerHit>::const_iterator
trackerHits_end()
const;
114 podio::RelationRange<edm4hep::SimTrackerHit>
getTrackerHits()
const;
117 std::vector<edm4eic::SimPulse>::const_iterator
pulses_begin()
const;
118 std::vector<edm4eic::SimPulse>::const_iterator
pulses_end()
const;
119 podio::RelationRange<edm4eic::SimPulse>
getPulses()
const;
122 std::vector<edm4hep::MCParticle>::const_iterator
particles_begin()
const;
123 std::vector<edm4hep::MCParticle>::const_iterator
particles_end()
const;
124 podio::RelationRange<edm4hep::MCParticle>
getParticles()
const;
135 void unlink() { m_obj = podio::utils::MaybeSharedPtr<SimPulseObj>{
nullptr}; }
150 friend std::hash<SimPulse>;
154 swap(a.m_obj, b.m_obj);
159 explicit SimPulse(podio::utils::MaybeSharedPtr<SimPulseObj> obj);
162 podio::utils::MaybeSharedPtr<SimPulseObj> m_obj{
new SimPulseObj{}, podio::utils::MarkOwned};
167#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
168void to_json(nlohmann::json& j,
const SimPulse& value);
179 return std::hash<edm4eic::SimPulseObj*>{}(obj.m_obj.get());
187#if defined(__clang__)
188 #pragma clang diagnostic push
189 #pragma clang diagnostic ignored "-Wunknown-warning-option"
190 #pragma clang diagnostic ignored "-Wdeprecated-redundant-constexpr-static-def"
191 #pragma clang diagnostic ignored "-Wdeprecated"
193 #pragma clang diagnostic pop
194#elif defined(__GNUC__)
195 #pragma GCC diagnostic push
196 #pragma GCC diagnostic ignored "-Wdeprecated"
198 #pragma GCC diagnostic pop
Definition MutableSimPulse.h:39
Definition SimPulseCollectionData.h:34
Definition SimPulseCollection.h:138
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_end() const
Definition SimPulse.cc:121
std::vector< edm4eic::SimPulse >::const_iterator pulses_begin() const
Definition SimPulse.cc:179
std::size_t amplitude_size() const
Definition SimPulse.cc:255
SimPulse & operator=(SimPulse other) &
copy-assignment operator
Definition SimPulse.cc:28
podio::RelationRange< edm4hep::MCParticle > getParticles() const
Definition SimPulse.cc:234
std::vector< float >::const_iterator amplitude_end() const
Definition SimPulse.cc:249
std::size_t pulses_size() const
Definition SimPulse.cc:191
podio::RelationRange< float > getAmplitude() const
Definition SimPulse.cc:266
std::vector< edm4hep::MCParticle >::const_iterator particles_begin() const
Definition SimPulse.cc:211
bool operator==(const SimPulse &other) const
Definition SimPulse.h:137
static SimPulse makeEmpty()
Definition SimPulse.cc:103
float getTime() const
Access the Start time for the pulse in [ns].
Definition SimPulse.cc:110
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_begin() const
Definition SimPulse.cc:115
std::vector< edm4hep::MCParticle >::const_iterator particles_end() const
Definition SimPulse.cc:217
podio::RelationRange< edm4hep::SimTrackerHit > getTrackerHits() const
Definition SimPulse.cc:170
friend class MutableSimPulse
Definition SimPulse.h:49
friend class SimPulseCollection
Definition SimPulse.h:50
~SimPulse()=default
destructor
podio::RelationRange< edm4hep::SimCalorimeterHit > getCalorimeterHits() const
Definition SimPulse.cc:138
podio::RelationRange< edm4eic::SimPulse > getPulses() const
Definition SimPulse.cc:202
SimPulse(const SimPulse &other)=default
copy constructor
bool operator<(const SimPulse &other) const
Definition SimPulse.h:144
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_begin() const
Definition SimPulse.cc:147
std::vector< float >::const_iterator amplitude_begin() const
Definition SimPulse.cc:243
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_end() const
Definition SimPulse.cc:153
bool operator!=(const SimPulse &other) const
Definition SimPulse.h:140
std::size_t calorimeterHits_size() const
Definition SimPulse.cc:127
friend class SimPulseCollectionIterator
Definition SimPulse.h:52
MutableSimPulse clone(bool cloneRelations=true) const
Definition SimPulse.cc:33
MutableSimPulse mutable_type
Definition SimPulse.h:56
std::size_t particles_size() const
Definition SimPulse.cc:223
SimPulse()=default
default constructor
std::vector< edm4eic::SimPulse >::const_iterator pulses_end() const
Definition SimPulse.cc:185
SimPulseCollection collection_type
Definition SimPulse.h:57
friend void swap(SimPulse &a, SimPulse &b)
Definition SimPulse.h:152
void unlink()
disconnect from SimPulseObj instance
Definition SimPulse.h:135
float getIntegral() const
Access the Total pulse integral in relevant units.
Definition SimPulse.cc:108
std::uint64_t getCellID() const
Access the ID of the readout cell for this pulse.
Definition SimPulse.cc:107
bool operator!=(const MutableSimPulse &other) const
Definition SimPulse.h:141
podio::ObjectID id() const
Definition SimPulse.h:146
float getInterval() const
Access the Time interval between amplitude values [ns].
Definition SimPulse.cc:111
std::size_t trackerHits_size() const
Definition SimPulse.cc:159
const edm4hep::Vector3f & getPosition() const
Access the Position the pulse is evaluated in world coordinates [mm].
Definition SimPulse.cc:109
static constexpr std::string_view typeName
Definition SimPulse.h:86
SimPulse & operator=(SimPulse other) &&=delete
bool isAvailable() const
check whether the object is actually available
Definition SimPulse.cc:278
const podio::ObjectID getObjectID() const
Definition SimPulse.cc:282
Definition SimPulseObj.h:22
Definition CalorimeterHit.cc:17
std::ostream & operator<<(std::ostream &o, const CalorimeterHit &value)
Definition CalorimeterHit.cc:99
Definition CalorimeterHit.h:31
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:146
std::size_t operator()(const edm4eic::SimPulse &obj) const
Definition SimPulse.h:178