EDM4eic
EIC data model
Loading...
Searching...
No Matches
MutableTrackSegment.h
Go to the documentation of this file.
1// AUTOMATICALLY GENERATED FILE - DO NOT EDIT
2
3#ifndef EDM4EIC_MutableTrackSegment_H
4#define EDM4EIC_MutableTrackSegment_H
5
7// Make the immutable class available from its mutable version but not vice versa
9
10#include "edm4eic/TrackPoint.h"
11#include "podio/RelationRange.h"
12#include <vector>
13
14#include "podio/utilities/MaybeSharedPtr.h"
15
16#include <cstdint>
17
18#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
19#include "nlohmann/json_fwd.hpp"
20#endif
21
22// forward declarations
23namespace edm4eic {
25class Track;
26class MutableTrack;
27}
28
29
30namespace edm4eic {
31
32
33/** @class MutableTrackSegment
34 * A track segment defined by one or more points along a track.
35 * @author: S. Joosten
36 */
38
41 friend class TrackSegment;
42
43public:
46
47 /// default constructor
49
50 /// Constructor initializing all members
51 MutableTrackSegment(const float length, const float lengthError);
52
53 /// copy constructor
55
56 /// copy-assignment operator
57 MutableTrackSegment& operator=(MutableTrackSegment other) &; // Rebind this to other's internal object
58 MutableTrackSegment& operator=(MutableTrackSegment other) && = delete; // Prevent rebinding temporary as the changes wouldn't persist
59
60 /// create a mutable deep-copy of the object with identical relations
61 /// if cloneRelations=false, the relations are not cloned and will be empty
62 MutableTrackSegment clone(bool cloneRelations=true) const;
63
64 /// destructor
66
67
68public:
69
70 /// Access the Pathlength from the first to the last point
71 float getLength() const;
72
73 /// Access the Error on the segment length
74 float getLengthError() const;
75
76
77 /// Access the Track used for this projection
78 const edm4eic::Track getTrack() const;
79
80 /// Set the Pathlength from the first to the last point
81 void setLength(const float length);
82 /// Get mutable reference to Pathlength from the first to the last point
83 float& getLength();
84 /// Get reference to Pathlength from the first to the last point
85 [[deprecated("use getLength instead")]]
86 float& length();
87
88 /// Set the Error on the segment length
89 void setLengthError(const float lengthError);
90 /// Get mutable reference to Error on the segment length
91 float& getLengthError();
92 /// Get reference to Error on the segment length
93 [[deprecated("use getLengthError instead")]]
94 float& lengthError();
95
96
97 /// Set the Track used for this projection
98 void setTrack(const edm4eic::Track& value);
99
100 void addToPoints(const edm4eic::TrackPoint&);
101 std::size_t points_size() const;
102 edm4eic::TrackPoint getPoints(std::size_t) const;
103 std::vector<edm4eic::TrackPoint>::const_iterator points_begin() const;
104 std::vector<edm4eic::TrackPoint>::const_iterator points_end() const;
105 podio::RelationRange<edm4eic::TrackPoint> getPoints() const;
106
107
108
109 /// check whether the object is actually available
110 bool isAvailable() const;
111 /// disconnect from TrackSegmentObj instance
112 void unlink() { m_obj = podio::utils::MaybeSharedPtr<TrackSegmentObj>{nullptr}; }
113
114 bool operator==(const MutableTrackSegment& other) const { return m_obj == other.m_obj; }
115 bool operator==(const TrackSegment& other) const;
116
117 bool operator!=(const MutableTrackSegment& other) const { return !(*this == other); }
118 bool operator!=(const TrackSegment& other) const { return !(*this == other); }
119
120 // less comparison operator, so that objects can be e.g. stored in sets.
121 bool operator<(const MutableTrackSegment& other) const { return podio::detail::getOrderKey(*this) < podio::detail::getOrderKey(other); }
122
123 podio::ObjectID id() const { return getObjectID(); }
124
125 const podio::ObjectID getObjectID() const;
126
127 friend std::hash<MutableTrackSegment>;
128
130 using std::swap;
131 swap(a.m_obj, b.m_obj); // swap out the internal pointers
132 }
133
134private:
135 /// constructor from existing TrackSegmentObj
136 explicit MutableTrackSegment(podio::utils::MaybeSharedPtr<TrackSegmentObj> obj);
137
138 podio::utils::MaybeSharedPtr<TrackSegmentObj> m_obj{nullptr};
139};
140
141#if defined(PODIO_JSON_OUTPUT) && !defined(__CLING__)
142void to_json(nlohmann::json& j, const MutableTrackSegment& value);
143#endif
144
145
146} // namespace edm4eic
147
148
149
150template<>
151struct std::hash<edm4eic::MutableTrackSegment> {
152 std::size_t operator()(const edm4eic::MutableTrackSegment& obj) const {
153 return std::hash<edm4eic::TrackSegmentObj*>{}(obj.m_obj.get());
154 }
155};
156
157
158#endif
Definition MutableTrack.h:40
Definition MutableTrackSegment.h:37
friend class TrackSegmentCollection
Definition MutableTrackSegment.h:39
podio::RelationRange< edm4eic::TrackPoint > getPoints() const
Definition MutableTrackSegment.cc:97
MutableTrackSegment & operator=(MutableTrackSegment other) &&=delete
MutableTrackSegment clone(bool cloneRelations=true) const
Definition MutableTrackSegment.cc:33
MutableTrackSegment()
default constructor
Definition MutableTrackSegment.cc:19
std::vector< edm4eic::TrackPoint >::const_iterator points_begin() const
Definition MutableTrackSegment.cc:74
bool operator<(const MutableTrackSegment &other) const
Definition MutableTrackSegment.h:121
std::vector< edm4eic::TrackPoint >::const_iterator points_end() const
Definition MutableTrackSegment.cc:80
MutableTrackSegment & operator=(MutableTrackSegment other) &
copy-assignment operator
Definition MutableTrackSegment.cc:28
void setLength(const float length)
Set the Pathlength from the first to the last point.
Definition MutableTrackSegment.cc:57
float & lengthError()
Get reference to Error on the segment length.
Definition MutableTrackSegment.cc:62
bool isAvailable() const
check whether the object is actually available
Definition MutableTrackSegment.cc:110
float & length()
Get reference to Pathlength from the first to the last point.
Definition MutableTrackSegment.cc:59
MutableTrackSegment(const MutableTrackSegment &other)=default
copy constructor
friend class TrackSegment
Definition MutableTrackSegment.h:41
friend void swap(MutableTrackSegment &a, MutableTrackSegment &b)
Definition MutableTrackSegment.h:129
friend class TrackSegmentMutableCollectionIterator
Definition MutableTrackSegment.h:40
bool operator!=(const TrackSegment &other) const
Definition MutableTrackSegment.h:118
~MutableTrackSegment()=default
destructor
void unlink()
disconnect from TrackSegmentObj instance
Definition MutableTrackSegment.h:112
void setLengthError(const float lengthError)
Set the Error on the segment length.
Definition MutableTrackSegment.cc:60
TrackSegmentCollection collection_type
Definition MutableTrackSegment.h:45
std::size_t points_size() const
Definition MutableTrackSegment.cc:86
bool operator==(const MutableTrackSegment &other) const
Definition MutableTrackSegment.h:114
const edm4eic::Track getTrack() const
Access the Track used for this projection.
Definition MutableTrackSegment.cc:49
bool operator!=(const MutableTrackSegment &other) const
Definition MutableTrackSegment.h:117
TrackSegment object_type
Definition MutableTrackSegment.h:44
void setTrack(const edm4eic::Track &value)
Set the Track used for this projection.
Definition MutableTrackSegment.cc:64
const podio::ObjectID getObjectID() const
Definition MutableTrackSegment.cc:114
podio::ObjectID id() const
Definition MutableTrackSegment.h:123
float getLengthError() const
Access the Error on the segment length.
Definition MutableTrackSegment.cc:47
float getLength() const
Access the Pathlength from the first to the last point.
Definition MutableTrackSegment.cc:46
void addToPoints(const edm4eic::TrackPoint &)
Definition MutableTrackSegment.cc:69
Definition Track.h:48
Definition TrackPoint.h:22
Definition TrackSegmentCollection.h:137
Definition TrackSegment.h:45
Definition CalorimeterHit.cc:17
OrderKey getOrderKey(const edm4eic::CalorimeterHit &obj)
Definition CalorimeterHit.cc:150
std::size_t operator()(const edm4eic::MutableTrackSegment &obj) const
Definition MutableTrackSegment.h:152