File indexing completed on 2026-05-08 08:37:51
0001
0002
0003 #ifndef EDM4HEP_RawCalorimeterHit_H
0004 #define EDM4HEP_RawCalorimeterHit_H
0005
0006 #include "edm4hep/RawCalorimeterHitObj.h"
0007
0008 #include <cstdint>
0009
0010 #include "podio/detail/OrderKey.h"
0011 #include "podio/utilities/MaybeSharedPtr.h"
0012
0013 #include <cstdint>
0014 #include <ostream>
0015
0016 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0017 #include "nlohmann/json_fwd.hpp"
0018 #endif
0019
0020
0021 namespace edm4hep {
0022 class RawCalorimeterHitCollection;
0023 }
0024
0025 namespace podio::detail {
0026
0027 OrderKey getOrderKey(const edm4hep::RawCalorimeterHit& obj);
0028 };
0029
0030 namespace edm4hep {
0031
0032 class MutableRawCalorimeterHit;
0033 class RawCalorimeterHitCollection;
0034 class RawCalorimeterHitCollectionData;
0035
0036
0037
0038
0039
0040 class RawCalorimeterHit {
0041
0042 friend class MutableRawCalorimeterHit;
0043 friend class RawCalorimeterHitCollection;
0044 friend class edm4hep::RawCalorimeterHitCollectionData;
0045 friend class RawCalorimeterHitCollectionIterator;
0046 friend podio::detail::OrderKey podio::detail::getOrderKey(const RawCalorimeterHit& obj);
0047
0048 public:
0049 using mutable_type = MutableRawCalorimeterHit;
0050 using collection_type = RawCalorimeterHitCollection;
0051
0052
0053 RawCalorimeterHit() = default;
0054
0055
0056 RawCalorimeterHit(const std::uint64_t cellID, const std::int32_t amplitude, const std::int32_t timeStamp);
0057
0058
0059 RawCalorimeterHit(const RawCalorimeterHit& other) = default;
0060
0061
0062 RawCalorimeterHit& operator=(RawCalorimeterHit other) &;
0063 RawCalorimeterHit&
0064 operator=(RawCalorimeterHit other) && = delete;
0065
0066
0067
0068 MutableRawCalorimeterHit clone(bool cloneRelations = true) const;
0069
0070
0071 ~RawCalorimeterHit() = default;
0072
0073
0074 RawCalorimeterHit(const MutableRawCalorimeterHit& other);
0075
0076 static RawCalorimeterHit makeEmpty();
0077
0078 public:
0079 static constexpr std::string_view typeName = "edm4hep::RawCalorimeterHit";
0080
0081
0082 std::uint64_t getCellID() const;
0083
0084
0085 std::int32_t getAmplitude() const;
0086
0087
0088 std::int32_t getTimeStamp() const;
0089
0090
0091 bool isAvailable() const;
0092
0093 void unlink() { m_obj = podio::utils::MaybeSharedPtr<RawCalorimeterHitObj>{nullptr}; }
0094
0095 bool operator==(const RawCalorimeterHit& other) const { return m_obj == other.m_obj; }
0096 bool operator==(const MutableRawCalorimeterHit& other) const;
0097
0098 bool operator!=(const RawCalorimeterHit& other) const { return !(*this == other); }
0099 bool operator!=(const MutableRawCalorimeterHit& other) const { return !(*this == other); }
0100
0101
0102 bool operator<(const RawCalorimeterHit& other) const {
0103 return podio::detail::getOrderKey(*this) < podio::detail::getOrderKey(other);
0104 }
0105
0106 podio::ObjectID id() const { return getObjectID(); }
0107
0108 const podio::ObjectID getObjectID() const;
0109
0110 friend std::hash<RawCalorimeterHit>;
0111
0112 friend void swap(RawCalorimeterHit& a, RawCalorimeterHit& b) {
0113 using std::swap;
0114 swap(a.m_obj, b.m_obj);
0115 }
0116
0117 private:
0118
0119 explicit RawCalorimeterHit(podio::utils::MaybeSharedPtr<RawCalorimeterHitObj> obj);
0120 RawCalorimeterHit(RawCalorimeterHitObj* obj);
0121
0122 podio::utils::MaybeSharedPtr<RawCalorimeterHitObj> m_obj{new RawCalorimeterHitObj{}, podio::utils::MarkOwned};
0123 };
0124
0125 std::ostream& operator<<(std::ostream& o, const RawCalorimeterHit& value);
0126
0127 #if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
0128 void to_json(nlohmann::json& j, const RawCalorimeterHit& value);
0129 #endif
0130
0131 }
0132
0133 template <>
0134 struct std::hash<edm4hep::RawCalorimeterHit> {
0135 std::size_t operator()(const edm4hep::RawCalorimeterHit& obj) const {
0136 return std::hash<edm4hep::RawCalorimeterHitObj*>{}(obj.m_obj.get());
0137 }
0138 };
0139
0140
0141
0142
0143 #if defined(__clang__)
0144 #pragma clang diagnostic push
0145 #pragma clang diagnostic ignored "-Wunknown-warning-option"
0146 #pragma clang diagnostic ignored "-Wdeprecated-redundant-constexpr-static-def"
0147 #pragma clang diagnostic ignored "-Wdeprecated"
0148 constexpr std::string_view edm4hep::RawCalorimeterHit::typeName;
0149 #pragma clang diagnostic pop
0150 #elif defined(__GNUC__)
0151 #pragma GCC diagnostic push
0152 #pragma GCC diagnostic ignored "-Wdeprecated"
0153 constexpr std::string_view edm4hep::RawCalorimeterHit::typeName;
0154 #pragma GCC diagnostic pop
0155 #endif
0156
0157 #endif