3#ifndef EDM4EIC_MutableSimPulse_H
4#define EDM4EIC_MutableSimPulse_H
10#include "edm4hep/MCParticle.h"
11#include "edm4hep/SimCalorimeterHit.h"
12#include "edm4hep/SimTrackerHit.h"
13#include "edm4hep/Vector3f.h"
14#include "podio/RelationRange.h"
18#include "podio/utilities/MaybeSharedPtr.h"
22#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
23#include "nlohmann/json_fwd.hpp"
53 MutableSimPulse(
const std::uint64_t cellID,
const float integral,
const edm4hep::Vector3f& position,
const float time,
const float interval);
90 void setCellID(
const std::uint64_t cellID);
100 void setPosition(
const edm4hep::Vector3f& position);
105 void setTime(
const float time);
126 std::vector<edm4hep::SimTrackerHit>::const_iterator
trackerHits_end()
const;
127 podio::RelationRange<edm4hep::SimTrackerHit>
getTrackerHits()
const;
131 std::vector<edm4eic::SimPulse>::const_iterator
pulses_begin()
const;
132 std::vector<edm4eic::SimPulse>::const_iterator
pulses_end()
const;
133 podio::RelationRange<edm4eic::SimPulse>
getPulses()
const;
137 std::vector<edm4hep::MCParticle>::const_iterator
particles_begin()
const;
138 std::vector<edm4hep::MCParticle>::const_iterator
particles_end()
const;
139 podio::RelationRange<edm4hep::MCParticle>
getParticles()
const;
152 void unlink() { m_obj = podio::utils::MaybeSharedPtr<SimPulseObj>{
nullptr}; }
167 friend std::hash<MutableSimPulse>;
171 swap(a.m_obj, b.m_obj);
176 explicit MutableSimPulse(podio::utils::MaybeSharedPtr<SimPulseObj> obj);
178 podio::utils::MaybeSharedPtr<SimPulseObj> m_obj{
new SimPulseObj{}, podio::utils::MarkOwned};
181#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
193 return std::hash<edm4eic::SimPulseObj*>{}(obj.m_obj.get());
Definition MutableSimPulse.h:39
constexpr bool operator!=(const MutableSimPulse &other) const
Definition MutableSimPulse.h:157
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_end() const
Definition MutableSimPulse.cc:86
bool operator!=(const SimPulse &other) const
Definition MutableSimPulse.h:158
podio::ObjectID id() const
Definition MutableSimPulse.h:163
void unlink()
disconnect from SimPulseObj instance
Definition MutableSimPulse.h:152
friend class SimPulse
Definition MutableSimPulse.h:43
SimPulseCollection collection_type
Definition MutableSimPulse.h:47
std::vector< float >::const_iterator amplitude_end() const
Definition MutableSimPulse.cc:230
void addToAmplitude(const float &)
Definition MutableSimPulse.cc:219
void addToParticles(const edm4hep::MCParticle &)
Definition MutableSimPulse.cc:183
const edm4hep::Vector3f & getPosition() const
Access the Position the pulse is evaluated in world coordinates [mm].
Definition MutableSimPulse.cc:58
void setCellID(const std::uint64_t cellID)
Set the ID of the readout cell for this pulse.
Definition MutableSimPulse.cc:63
float getTime() const
Access the Start time for the pulse in [ns].
Definition MutableSimPulse.cc:59
podio::RelationRange< edm4hep::SimTrackerHit > getTrackerHits() const
Definition MutableSimPulse.cc:139
constexpr bool operator==(const MutableSimPulse &other) const
Definition MutableSimPulse.h:154
void addToTrackerHits(const edm4hep::SimTrackerHit &)
Definition MutableSimPulse.cc:111
MutableSimPulse()=default
default constructor
friend class SimPulseCollection
Definition MutableSimPulse.h:41
void addToCalorimeterHits(const edm4hep::SimCalorimeterHit &)
Definition MutableSimPulse.cc:75
podio::RelationRange< edm4eic::SimPulse > getPulses() const
Definition MutableSimPulse.cc:175
std::vector< edm4eic::SimPulse >::const_iterator pulses_begin() const
Definition MutableSimPulse.cc:152
std::vector< edm4hep::MCParticle >::const_iterator particles_begin() const
Definition MutableSimPulse.cc:188
bool operator<(const MutableSimPulse &other) const
Definition MutableSimPulse.h:161
podio::RelationRange< edm4hep::SimCalorimeterHit > getCalorimeterHits() const
Definition MutableSimPulse.cc:103
MutableSimPulse clone(bool cloneRelations=true) const
Definition MutableSimPulse.cc:31
std::size_t amplitude_size() const
Definition MutableSimPulse.cc:236
void addToPulses(const edm4eic::SimPulse &)
Definition MutableSimPulse.cc:147
const podio::ObjectID getObjectID() const
Definition MutableSimPulse.cc:264
std::size_t pulses_size() const
Definition MutableSimPulse.cc:164
std::size_t calorimeterHits_size() const
Definition MutableSimPulse.cc:92
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_begin() const
Definition MutableSimPulse.cc:116
float getIntegral() const
Access the Total pulse integral in relevant units.
Definition MutableSimPulse.cc:57
std::vector< float >::const_iterator amplitude_begin() const
Definition MutableSimPulse.cc:224
void setPosition(const edm4hep::Vector3f &position)
Set the Position the pulse is evaluated in world coordinates [mm].
Definition MutableSimPulse.cc:67
void setTime(const float time)
Set the Start time for the pulse in [ns].
Definition MutableSimPulse.cc:69
MutableSimPulse & operator=(MutableSimPulse other) &&=delete
podio::RelationRange< float > getAmplitude() const
Definition MutableSimPulse.cc:247
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_begin() const
Definition MutableSimPulse.cc:80
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_end() const
Definition MutableSimPulse.cc:122
~MutableSimPulse()=default
destructor
void setIntegral(const float integral)
Set the Total pulse integral in relevant units.
Definition MutableSimPulse.cc:65
SimPulse object_type
Definition MutableSimPulse.h:46
std::vector< edm4hep::MCParticle >::const_iterator particles_end() const
Definition MutableSimPulse.cc:194
std::size_t particles_size() const
Definition MutableSimPulse.cc:200
void setInterval(const float interval)
Set the Time interval between amplitude values [ns].
Definition MutableSimPulse.cc:71
float getInterval() const
Access the Time interval between amplitude values [ns].
Definition MutableSimPulse.cc:60
bool isAvailable() const
check whether the object is actually available
Definition MutableSimPulse.cc:260
MutableSimPulse & operator=(MutableSimPulse other) &
copy-assignment operator
Definition MutableSimPulse.cc:26
std::size_t trackerHits_size() const
Definition MutableSimPulse.cc:128
std::vector< edm4eic::SimPulse >::const_iterator pulses_end() const
Definition MutableSimPulse.cc:158
friend void swap(MutableSimPulse &a, MutableSimPulse &b)
Definition MutableSimPulse.h:169
std::uint64_t getCellID() const
Access the ID of the readout cell for this pulse.
Definition MutableSimPulse.cc:56
podio::RelationRange< edm4hep::MCParticle > getParticles() const
Definition MutableSimPulse.cc:211
MutableSimPulse(const MutableSimPulse &other)=default
copy constructor
friend class SimPulseMutableCollectionIterator
Definition MutableSimPulse.h:42
Definition SimPulseCollection.h:139
Definition SimPulseObj.h:22
Definition ArrowMapper.cc:61
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:146
std::size_t operator()(const edm4eic::MutableSimPulse &obj) const
Definition MutableSimPulse.h:192