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"
94 [[deprecated(
"use getCellID instead")]]
102 [[deprecated(
"use getIntegral instead")]]
110 [[deprecated(
"use getPosition instead")]]
118 [[deprecated(
"use getTime instead")]]
126 [[deprecated(
"use getInterval instead")]]
141 std::vector<edm4hep::SimTrackerHit>::const_iterator
trackerHits_end()
const;
142 podio::RelationRange<edm4hep::SimTrackerHit>
getTrackerHits()
const;
146 std::vector<edm4eic::SimPulse>::const_iterator
pulses_begin()
const;
147 std::vector<edm4eic::SimPulse>::const_iterator
pulses_end()
const;
148 podio::RelationRange<edm4eic::SimPulse>
getPulses()
const;
152 std::vector<edm4hep::MCParticle>::const_iterator
particles_begin()
const;
153 std::vector<edm4hep::MCParticle>::const_iterator
particles_end()
const;
154 podio::RelationRange<edm4hep::MCParticle>
getParticles()
const;
167 void unlink() { m_obj = podio::utils::MaybeSharedPtr<SimPulseObj>{
nullptr}; }
182 friend std::hash<MutableSimPulse>;
186 swap(a.m_obj, b.m_obj);
191 explicit MutableSimPulse(podio::utils::MaybeSharedPtr<SimPulseObj> obj);
193 podio::utils::MaybeSharedPtr<SimPulseObj> m_obj{
new SimPulseObj{}, podio::utils::MarkOwned};
196#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
208 return std::hash<edm4eic::SimPulseObj*>{}(obj.m_obj.get());
Definition MutableSimPulse.h:39
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_end() const
Definition MutableSimPulse.cc:91
bool operator!=(const SimPulse &other) const
Definition MutableSimPulse.h:173
podio::ObjectID id() const
Definition MutableSimPulse.h:178
void unlink()
disconnect from SimPulseObj instance
Definition MutableSimPulse.h:167
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:235
void addToAmplitude(const float &)
Definition MutableSimPulse.cc:224
void addToParticles(const edm4hep::MCParticle &)
Definition MutableSimPulse.cc:188
const edm4hep::Vector3f & getPosition() const
Access the Position the pulse is evaluated in world coordinates [mm].
Definition MutableSimPulse.cc:58
float & time()
Get reference to Start time for the pulse in [ns].
Definition MutableSimPulse.cc:74
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:144
void addToTrackerHits(const edm4hep::SimTrackerHit &)
Definition MutableSimPulse.cc:116
MutableSimPulse()=default
default constructor
friend class SimPulseCollection
Definition MutableSimPulse.h:41
void addToCalorimeterHits(const edm4hep::SimCalorimeterHit &)
Definition MutableSimPulse.cc:80
podio::RelationRange< edm4eic::SimPulse > getPulses() const
Definition MutableSimPulse.cc:180
std::uint64_t & cellID()
Get reference to ID of the readout cell for this pulse.
Definition MutableSimPulse.cc:65
bool operator!=(const MutableSimPulse &other) const
Definition MutableSimPulse.h:172
std::vector< edm4eic::SimPulse >::const_iterator pulses_begin() const
Definition MutableSimPulse.cc:157
std::vector< edm4hep::MCParticle >::const_iterator particles_begin() const
Definition MutableSimPulse.cc:193
bool operator<(const MutableSimPulse &other) const
Definition MutableSimPulse.h:176
podio::RelationRange< edm4hep::SimCalorimeterHit > getCalorimeterHits() const
Definition MutableSimPulse.cc:108
MutableSimPulse clone(bool cloneRelations=true) const
Definition MutableSimPulse.cc:31
std::size_t amplitude_size() const
Definition MutableSimPulse.cc:241
void addToPulses(const edm4eic::SimPulse &)
Definition MutableSimPulse.cc:152
const podio::ObjectID getObjectID() const
Definition MutableSimPulse.cc:269
std::size_t pulses_size() const
Definition MutableSimPulse.cc:169
std::size_t calorimeterHits_size() const
Definition MutableSimPulse.cc:97
float & integral()
Get reference to Total pulse integral in relevant units.
Definition MutableSimPulse.cc:68
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_begin() const
Definition MutableSimPulse.cc:121
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:229
void setPosition(const edm4hep::Vector3f &position)
Set the Position the pulse is evaluated in world coordinates [mm].
Definition MutableSimPulse.cc:69
void setTime(const float time)
Set the Start time for the pulse in [ns].
Definition MutableSimPulse.cc:72
MutableSimPulse & operator=(MutableSimPulse other) &&=delete
podio::RelationRange< float > getAmplitude() const
Definition MutableSimPulse.cc:252
float & interval()
Get reference to Time interval between amplitude values [ns].
Definition MutableSimPulse.cc:77
std::vector< edm4hep::SimCalorimeterHit >::const_iterator calorimeterHits_begin() const
Definition MutableSimPulse.cc:85
std::vector< edm4hep::SimTrackerHit >::const_iterator trackerHits_end() const
Definition MutableSimPulse.cc:127
~MutableSimPulse()=default
destructor
void setIntegral(const float integral)
Set the Total pulse integral in relevant units.
Definition MutableSimPulse.cc:66
SimPulse object_type
Definition MutableSimPulse.h:46
std::vector< edm4hep::MCParticle >::const_iterator particles_end() const
Definition MutableSimPulse.cc:199
std::size_t particles_size() const
Definition MutableSimPulse.cc:205
void setInterval(const float interval)
Set the Time interval between amplitude values [ns].
Definition MutableSimPulse.cc:75
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:265
MutableSimPulse & operator=(MutableSimPulse other) &
copy-assignment operator
Definition MutableSimPulse.cc:26
std::size_t trackerHits_size() const
Definition MutableSimPulse.cc:133
std::vector< edm4eic::SimPulse >::const_iterator pulses_end() const
Definition MutableSimPulse.cc:163
bool operator==(const MutableSimPulse &other) const
Definition MutableSimPulse.h:169
friend void swap(MutableSimPulse &a, MutableSimPulse &b)
Definition MutableSimPulse.h:184
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:216
edm4hep::Vector3f & position()
Get reference to Position the pulse is evaluated in world coordinates [mm].
Definition MutableSimPulse.cc:71
MutableSimPulse(const MutableSimPulse &other)=default
copy constructor
friend class SimPulseMutableCollectionIterator
Definition MutableSimPulse.h:42
Definition SimPulseCollection.h:138
Definition SimPulseObj.h:22
Definition CalorimeterHit.cc:17
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:146
std::size_t operator()(const edm4eic::MutableSimPulse &obj) const
Definition MutableSimPulse.h:207