ATLAS Offline Software
Loading...
Searching...
No Matches
RoiDescriptor.h
Go to the documentation of this file.
1// emacs: this is -*- c++ -*-
2/*
3 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4*/
5//
6// @file RoiDescriptor.h
7//
8// RoiDescriptor class - includes constructors in preparation
9// for enforcement of correct roi sizes
10//
11// @author sutt@cern.ch
12//
13
14
15#ifndef ROIDESCRIPTOR_ROIDESCRIPTOR_H
16#define ROIDESCRIPTOR_ROIDESCRIPTOR_H
17
18#include <iostream>
19#include <atomic>
20
23
24
39
40//coverity[MISSING_MOVE_ASSIGNMENT]
42
43public:
44
46 static constexpr bool FULLSCAN = true;
47 static constexpr bool ROI = false;
48
49public:
50
55 RoiDescriptor(bool fullscan=ROI);
56
69 RoiDescriptor(double eta_, double etaMinus_, double etaPlus_,
70 double phi_, double phiMinus_, double phiPlus_,
71 double zed_=0, double zedMinus_=-s_zedWidthDefault, double zedPlus_=s_zedWidthDefault );
79 RoiDescriptor(double etaMinus_, double etaPlus_,
80 double phiMinus_, double phiPlus_ );
81
85 RoiDescriptor( const IRoiDescriptor& roi );
87
88 /*
89 * need an explicit class copy constructor
90 */
91 RoiDescriptor( const RoiDescriptor& roi );
93
94
95 // Destructor
96 virtual ~RoiDescriptor();
97
98
99 // Methods to retrieve data members
100
101 virtual double phi() const override final { return m_phi; }
102 virtual double eta() const override final { return m_eta; }
103 virtual double zed() const override final { return m_zed; }
104
108
109 virtual unsigned int roiId() const override { return 0; }
110 virtual unsigned int l1Id() const override { return 0; }
111 virtual unsigned int roiWord() const override { return 0; }
112
113 virtual double zedPlus() const override final { return m_zedPlus; }
114 virtual double zedMinus() const override final { return m_zedMinus; }
115
116 virtual double etaPlus() const override final { return m_etaPlus; }
117 virtual double etaMinus() const override final { return m_etaMinus; }
118
119 virtual double phiPlus() const override final { return m_phiPlus; }
120 virtual double phiMinus() const override final { return m_phiMinus; }
121
122
124 virtual int version() const override final { return m_version; }
125 void version(int v) { m_version = v; }
126
127
129 virtual operator std::string() const override;
130
131
133 virtual bool isFullscan() const override final { return m_fullscan; }
134
136
138 virtual bool composite() const override final { return m_composite; }
139 void setComposite(bool b=true) { m_composite=b; }
140
144
146 virtual unsigned size() const override final { return m_roiDescriptors.size(); }
147
149 virtual const IRoiDescriptor* at(int i) const override final { return m_roiDescriptors.at(i); }
150
152 void clear() { m_roiDescriptors.clear(); } // setComposite(false); }
153
155 void reserve(size_t s) { m_roiDescriptors.reserve(s); }
156
158 void push_back(const IRoiDescriptor* roi) { m_roiDescriptors.push_back(roi); setComposite(true); }
159
161 virtual roi_iterator begin() const override final { return m_roiDescriptors.begin(); }
162 virtual roi_iterator end() const override final { return m_roiDescriptors.end(); }
163
165 virtual double dzdrMinus() const override final { return m_dzdrMinus; }
166 virtual double dzdrPlus() const override final { return m_dzdrPlus; }
167
168 virtual double drdzMinus() const override final { return m_drdzMinus; }
169 virtual double drdzPlus() const override final { return m_drdzPlus; }
170
173 virtual double zedMin(double r) const override final;
174 virtual double zedMax(double r) const override final;
175
176 virtual double zedOuterPlus() const override final { return m_zedOuterPlus; }
177 virtual double zedOuterMinus() const override final { return m_zedOuterMinus; }
178
179 virtual double rhoMin(double z) const override final;
180 virtual double rhoMax(double z) const override final;
181
182public:
183
184 static double zedWidthDefault() { return s_zedWidthDefault; }
185
187 static void zedWidthDefault( double d );
188
189protected:
190
193
198 void construct(double eta, double etaMinus, double etaPlus,
199 double phi, double phiMinus, double phiPlus,
200 double zed, double zedMinus, double zedPlus);
201
202 void construct( const IRoiDescriptor& _roi );
203
204protected:
205
207 static std::atomic<double> s_zedWidthDefault;
209 static std::atomic<bool> s_firstInstanceCreated;
210
211protected:
212
213 float m_phi;
214 float m_eta;
215 float m_zed;
216
218 float m_phiPlus;
220 float m_etaPlus;
222 float m_zedPlus;
223
226
229
232
236
238
239 std::vector<const IRoiDescriptor*> m_roiDescriptors;
240
241};
242
243
244std::string str( const RoiDescriptor& d ); //<! printing helper
245std::ostream& operator<<( std::ostream& m, const RoiDescriptor& d ); //<! printing helper (wraps above)
246
247#endif // ROIDESCRIPTOR_H
248
std::ostream & operator<<(std::ostream &m, const RoiDescriptor &d)
#define z
IRoiDescriptor()
default constructor
std::vector< constIRoiDescriptor * >::const_iterator roi_iterator
Describes the Region of Ineterest geometry It has basically 9 parameters.
virtual double etaMinus() const override final
gets eta at zMinus
void push_back(const IRoiDescriptor *roi)
add a RoiDescriptor
bool manageConstituents() const
always manage constituents ???
virtual double etaPlus() const override final
gets eta at zedPlus
virtual double zed() const override final
virtual double zedMax(double r) const override final
static std::atomic< bool > s_firstInstanceCreated
to ensure default width is only set once at job startup
float m_etaPlus
eta of RoI at zedPlus
float m_phi
phi of RoI center
float m_eta
eta of RoI center
static double zedWidthDefault()
float m_dzdrPlus
dz/dr at the front of the RoI
virtual unsigned int roiWord() const override
virtual bool isFullscan() const override final
is this a full scan RoI?
RoiDescriptor & operator=(const IRoiDescriptor &r)
virtual double zedOuterPlus() const override final
z at the most forward end of the RoI
virtual double dzdrPlus() const override final
dz/dr at the front of the RoI
void reserve(size_t s)
reserve elements in vector
float m_etaMinus
eta of RoI at zedMinus
virtual double zedMin(double r) const override final
methods to calculate z position at the RoI boundary at a given radius
RoiDescriptor(bool fullscan=ROI)
default constructor
void version(int v)
float m_zedOuterMinus
z at rear of RoI at the outer radius ( = 1100 mm)
virtual double phi() const override final
Methods to retrieve data members.
friend class TrigRoiDescriptorCnv_p2
static constexpr bool ROI
static constexpr bool FULLSCAN
convenient
int m_version
transient version identifier
virtual double zedOuterMinus() const override final
z at the most backward end of the RoI
virtual double rhoMin(double z) const override final
accessors to calculate r position at position z along the RoI boundaries
float m_zedMinus
z position at most negative position along the beamline
virtual double dzdrMinus() const override final
return the gradients
virtual double phiMinus() const override final
gets phiMinus
bool m_composite
flag this as a composite RoI
bool m_manageConstituents
flag to determine whether consituents should be managed
float m_dzdrMinus
dz/dr at the rear of the RoI
virtual double drdzMinus() const override final
dr/dz at the rear of the RoI
float m_drdzPlus
dr/dz at the front of the RoI
float m_zed
zed of RoI center
void manageConstituents(bool b)
virtual roi_iterator begin() const override final
iterators
virtual unsigned int roiId() const override
these quantities probably don't need to be used any more
void setComposite(bool b=true)
void construct(double eta, double etaMinus, double etaPlus, double phi, double phiMinus, double phiPlus, double zed, double zedMinus, double zedPlus)
construct RoiDescriptor internals - similar to constructors
virtual double zedPlus() const override final
z at the most forward end of the RoI
virtual double zedMinus() const override final
z at the most backward end of the RoI
virtual unsigned int l1Id() const override
static std::atomic< double > s_zedWidthDefault
default parameters - there may be better ways, but this will do
void clear()
clear the vector
std::vector< const IRoiDescriptor * > m_roiDescriptors
roi constituents
virtual double rhoMax(double z) const override final
float m_drdzMinus
dr/dz at the rear of the RoI
virtual const IRoiDescriptor * at(int i) const override final
find an RoiDescriptor constituent
friend class TrigRoiDescriptorCnv_p3
float m_phiMinus
most negative RoI in azimuthal
bool m_fullscan
flag this as a full detector RoI
virtual int version() const override final
versioning
float m_phiPlus
most positive RoI in azimuthal
virtual unsigned size() const override final
number of constituents
virtual ~RoiDescriptor()
virtual double eta() const override final
virtual double drdzPlus() const override final
dr/dz at the front of the RoI
virtual bool composite() const override final
SuperRoI compatability methods.
float m_zedPlus
z position at most positive position along the beamline
virtual roi_iterator end() const override final
float m_zedOuterPlus
z at front of RoI at the outer radius ( = 1100 mm)
virtual double phiPlus() const override final
gets phiPlus
int r
Definition globals.cxx:22