3#ifndef EDM4EIC_MutableCalorimeterHit_H
4#define EDM4EIC_MutableCalorimeterHit_H
10#include "edm4hep/Vector3f.h"
13#include "podio/utilities/MaybeSharedPtr.h"
17#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
18#include "nlohmann/json_fwd.hpp"
26class RawCalorimeterHit;
27class MutableRawCalorimeterHit;
52 MutableCalorimeterHit(
const std::uint64_t cellID,
const float energy,
const float energyError,
const float time,
const float timeError,
const edm4hep::Vector3f& position,
const edm4hep::Vector3f& dimension,
const std::int32_t sector,
const std::int32_t layer,
const edm4hep::Vector3f& local);
99 const edm4hep::Vector3f&
getLocal()
const;
103 const edm4hep::RawCalorimeterHit
getRawHit()
const;
106 void setCellID(
const std::uint64_t cellID);
121 void setTime(
const float time);
131 void setPosition(
const edm4hep::Vector3f& position);
141 void setSector(
const std::int32_t sector);
146 void setLayer(
const std::int32_t layer);
151 void setLocal(
const edm4hep::Vector3f& local);
157 void setRawHit(
const edm4hep::RawCalorimeterHit& value);
165 void unlink() { m_obj = podio::utils::MaybeSharedPtr<CalorimeterHitObj>{
nullptr}; }
180 friend std::hash<MutableCalorimeterHit>;
184 swap(a.m_obj, b.m_obj);
191 podio::utils::MaybeSharedPtr<CalorimeterHitObj> m_obj{
new CalorimeterHitObj{}, podio::utils::MarkOwned};
194#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
204struct std::hash<
edm4eic::MutableCalorimeterHit> {
206 return std::hash<edm4eic::CalorimeterHitObj*>{}(obj.m_obj.get());
Definition CalorimeterHitCollection.h:139
Definition CalorimeterHit.h:46
Definition CalorimeterHitObj.h:21
Definition MutableCalorimeterHit.h:38
std::int32_t getLayer() const
Access the Layer that the hit occurred in.
Definition MutableCalorimeterHit.cc:55
MutableCalorimeterHit(const MutableCalorimeterHit &other)=default
copy constructor
void unlink()
disconnect from CalorimeterHitObj instance
Definition MutableCalorimeterHit.h:165
void setDimension(const edm4hep::Vector3f &dimension)
Set the The dimension information of the cell [mm].
Definition MutableCalorimeterHit.cc:78
void setLayer(const std::int32_t layer)
Set the Layer that the hit occurred in.
Definition MutableCalorimeterHit.cc:82
MutableCalorimeterHit clone(bool cloneRelations=true) const
Definition MutableCalorimeterHit.cc:37
void setTime(const float time)
Set the The time of the hit in [ns].
Definition MutableCalorimeterHit.cc:72
bool operator!=(const CalorimeterHit &other) const
Definition MutableCalorimeterHit.h:171
void setSector(const std::int32_t sector)
Set the Sector that this hit occurred in.
Definition MutableCalorimeterHit.cc:80
std::uint64_t getCellID() const
Access the The detector specific (geometrical) cell id.
Definition MutableCalorimeterHit.cc:47
MutableCalorimeterHit()=default
default constructor
bool operator<(const MutableCalorimeterHit &other) const
Definition MutableCalorimeterHit.h:174
const edm4hep::Vector3f & getDimension() const
Access the The dimension information of the cell [mm].
Definition MutableCalorimeterHit.cc:53
const edm4hep::Vector3f & getPosition() const
Access the The global position of the hit in world coordinates [mm].
Definition MutableCalorimeterHit.cc:52
void setEnergy(const float energy)
Set the The energy for this hit in [GeV].
Definition MutableCalorimeterHit.cc:68
float getEnergy() const
Access the The energy for this hit in [GeV].
Definition MutableCalorimeterHit.cc:48
MutableCalorimeterHit & operator=(MutableCalorimeterHit other) &
copy-assignment operator
Definition MutableCalorimeterHit.cc:32
float getTimeError() const
Access the Error on the time.
Definition MutableCalorimeterHit.cc:51
void setCellID(const std::uint64_t cellID)
Set the The detector specific (geometrical) cell id.
Definition MutableCalorimeterHit.cc:66
constexpr bool operator!=(const MutableCalorimeterHit &other) const
Definition MutableCalorimeterHit.h:170
~MutableCalorimeterHit()=default
destructor
std::int32_t getSector() const
Access the Sector that this hit occurred in.
Definition MutableCalorimeterHit.cc:54
friend void swap(MutableCalorimeterHit &a, MutableCalorimeterHit &b)
Definition MutableCalorimeterHit.h:182
const podio::ObjectID getObjectID() const
Definition MutableCalorimeterHit.cc:101
CalorimeterHit object_type
Definition MutableCalorimeterHit.h:45
constexpr bool operator==(const MutableCalorimeterHit &other) const
Definition MutableCalorimeterHit.h:167
friend class CalorimeterHitMutableCollectionIterator
Definition MutableCalorimeterHit.h:41
CalorimeterHitCollection collection_type
Definition MutableCalorimeterHit.h:46
void setTimeError(const float timeError)
Set the Error on the time.
Definition MutableCalorimeterHit.cc:74
float getTime() const
Access the The time of the hit in [ns].
Definition MutableCalorimeterHit.cc:50
friend class CalorimeterHitCollection
Definition MutableCalorimeterHit.h:40
MutableCalorimeterHit & operator=(MutableCalorimeterHit other) &&=delete
bool isAvailable() const
check whether the object is actually available
Definition MutableCalorimeterHit.cc:97
float getEnergyError() const
Access the Error on energy [GeV].
Definition MutableCalorimeterHit.cc:49
void setLocal(const edm4hep::Vector3f &local)
Set the The local coordinates of the hit in the detector segment [mm].
Definition MutableCalorimeterHit.cc:84
podio::ObjectID id() const
Definition MutableCalorimeterHit.h:176
void setPosition(const edm4hep::Vector3f &position)
Set the The global position of the hit in world coordinates [mm].
Definition MutableCalorimeterHit.cc:76
friend class CalorimeterHit
Definition MutableCalorimeterHit.h:42
const edm4hep::RawCalorimeterHit getRawHit() const
Access the Related raw calorimeter hit.
Definition MutableCalorimeterHit.cc:58
void setEnergyError(const float energyError)
Set the Error on energy [GeV].
Definition MutableCalorimeterHit.cc:70
void setRawHit(const edm4hep::RawCalorimeterHit &value)
Set the Related raw calorimeter hit.
Definition MutableCalorimeterHit.cc:87
const edm4hep::Vector3f & getLocal() const
Access the The local coordinates of the hit in the detector segment [mm].
Definition MutableCalorimeterHit.cc:56
Definition ArrowMapper.cc:61
Definition CalorimeterHit.h:25
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:146
std::size_t operator()(const edm4eic::MutableCalorimeterHit &obj) const
Definition MutableCalorimeterHit.h:205