ATLAS Offline Software
Loading...
Searching...
No Matches
TIDARoiDescriptor.h
Go to the documentation of this file.
1/* emacs: this is -*- c++ -*- */
10
26
27
28#ifndef TIDA_ROIDESCRIPTOR_H
29#define TIDA_ROIDESCRIPTOR_H
30
31#include <ostream>
32#include <cmath>
33#include <vector>
34
35#include "TObject.h"
36
38
39
40class TIDARoiDescriptor : public TObject { //, public IRoiDescriptor {
41
42public:
43
47 TIDARoiDescriptor(bool fullscan=false);
48
49
57
58 TIDARoiDescriptor( double eta, double etaMinus, double etaPlus,
59 double phi, double phiMinus, double phiPlus,
60 double zed, double zedMinus, double zedPlus );
61
62
72 TIDARoiDescriptor(unsigned l1id, int id,
73 double eta, double etaMinus, double etaPlus,
74 double phi, double phiMinus, double phiPlus,
75 double zed, double zedMinus, double zedPlus );
76
87 TIDARoiDescriptor(unsigned roiWord, unsigned l1id, int id,
88 double eta, double etaMinus, double etaPlus,
89 double phi, double phiMinus, double phiPlus,
90 double zed, double zedMinus, double zedPlus );
91
97
98
104
110
111
112 // Destructor
113 virtual ~TIDARoiDescriptor();
114
115 // Methods to set data members
116 // void phi(const double phi) { m_phi = phi; } //!< set phi of RoI
117 // void eta(const double eta) { m_eta = eta; } //!< set eta of RoI
118 // void zed(const double zed) { m_zed = zed; } //!< set eta of RoI
119
120 void set_roiId(const unsigned int id) { m_roiId=id; }
121 void set_l1Id(const unsigned int l1id) { m_l1Id=l1id; }
122 void set_roiWord(const unsigned int roiWord) { m_roiWord=roiWord; }
123
124 // void phiHalfWidth(double x) { m_phiHalfWidth=x; } //!< sets phi half-width
125 // void etaHalfWidth(double x) { m_etaHalfWidth=x; } //!< sets eta half-width
126 // void zedHalfWidth(double x) { m_zedHalfWidth=x; } //!< sets zed half-width
127
128 // void etaPlus(double x) { m_etaPlus = x; } //!< sets eta at z+zwidth
129 // void etaMinus(double x) { m_etaMinus = x; } //!< sets eta at z-zwidth
130
131 // Methods to retrieve data members
132
133 // double phi0() const { return m_params.phi(); }
134 // double eta0() const { return m_params.eta(); }
135 // double zed0() const { return m_params.zed(); }
136
137 double phi() const { return m_params.phi(); }
138 double eta() const { return m_params.eta(); }
139 double zed() const { return m_params.zed(); }
140
141 double etaMinus() const { return m_params.etaMinus(); }
142 double etaPlus() const { return m_params.etaPlus(); }
143
144 double phiMinus() const { return m_params.phiMinus(); }
145 double phiPlus() const { return m_params.phiPlus(); }
146
147 double zedMinus() const { return m_params.zedMinus(); }
148 double zedPlus() const { return m_params.zedPlus(); }
149
150
152
153 double zedPlusR() const { return m_zedPlusR; }
154 double zedMinusR() const { return m_zedMinusR; }
155
156 double rPlusZed() const { return m_rPlusZed; }
157 double rMinusZed() const { return m_rMinusZed; }
158
159 double maxR() const { return maxRadius; }
160 double maxZ() const { return maxZed; }
161
162 static double exitpoint( double tz0, double teta, double& zexit, double& rexit );
163
165
166 unsigned roiId() const { return m_roiId; }
167 unsigned l1Id() const { return m_l1Id; }
168 unsigned roiWord() const { return m_roiWord; }
169
170 int version() const { return 4; }
171
172 operator std::string() const;
173
174 bool isFullscan() const { return m_fullscan; }
175
177
178 bool composite() const { return !m_rois.empty(); }
179
180 size_t size() const { return m_rois.size(); }
181
182 const TIDARoiDescriptor* operator[](int i) const { return &m_rois.at(i); }
183 const TIDARoiDescriptor* at(int i) const { return &m_rois.at(i); }
184
186 double phiHalfWidth() const {
187 double dphi = 0.5*(params().phiPlus()-params().phiMinus());
188 if ( params().phiMinus()>params().phiPlus() ) dphi += M_PI;
189 return dphi;
190 }
191
192 double etaHalfWidth() const { return 0.5*(params().etaPlus()-params().etaMinus()); }
193 double zedHalfWidth() const { return 0.5*(params().zedPlus()-params().zedMinus()); }
194
195 // double zedPlus() const { return m_zed+m_zedHalfWidth; } //!< gets phi half-width
196 // double zedMinus() const { return m_zed-m_zedHalfWidth; } //!< gets phi half-width
197
198 // double etaPlus() const { return m_etaPlus; } //!< gets eta at z+zwidth
199 // double etaMinus() const { return m_etaMinus; } //!< gets eta at z-zwidth
200
202
203
204 bool operator==( const TIDARoiDescriptor& b ) const {
205 if ( roiWord() != b.roiWord() ) return false;
206 double epsilon=0.001; // arbitrary , but seems to be reasonable
207 if ( std::fabs( phi() - b.phi()) > epsilon ) return false;
208 if ( std::fabs( eta() - b.eta()) > epsilon ) return false;
209 if ( std::fabs( zed() - b.zed()) > epsilon ) return false;
210 return true;
211 }
212
213 bool operator!=( const TIDARoiDescriptor& b ) const { return !((*this)==b); }
214
215 void push_back( const TIDARoiDescriptor& roi ) { m_rois.push_back( roi ); }
216 void push_back( const TIDARoiDescriptor* roi ) { m_rois.push_back( *roi ); }
217
218
219
220#if 0
221
223
224 virtual double zedMin(double r) const { return 0; }
225 virtual double zedMax(double r) const { return 0; }
226
227 virtual double rhoMin(double z) const { return 0; }
228 virtual double rhoMax(double z) const { return 0; }
229
231 virtual double dzdrMinus() const { return 0; }
232 virtual double dzdrPlus() const { return 0; }
233
234 virtual double drdzMinus() const { return 0; }
235 virtual double drdzPlus() const { return 0; }
236
237 virtual bool contains( double z0, double dzdr ) const { return false; }
238 virtual bool contains_internal( double z0, double zouter ) const { return false; }
239
241 virtual bool contains( double _z, double _r, double _phi ) const { return false; }
242 virtual bool containsPhi( double _phi ) const { return false; }
243 virtual bool containsZed( double _z, double _r ) const { return false; }
244
245#endif
246
247protected:
248
250 const TIDARoiParameters& params() const { return m_params; };
251
255 void reset() {
257 // m_phi=0.0; m_eta=0.0; m_zed=0.0;
258 // m_phiHalfWidth=0.1; m_etaHalfWidth=0.1; m_zedHalfWidth=168;
259 // m_etaPlus=m_eta; m_etaMinus=m_eta;
260 m_l1Id=0;
261 m_roiId=0;
262 m_roiWord=0;
263 m_rois.clear();
264 }
265
266 double phicheck(double phi);
267 double etacheck(double eta);
268 double zedcheck(double zed);
269
270protected:
271
272 static const double maxRadius;
273 static const double maxZed;
274
275protected:
276
277 TIDARoiParameters m_params; // actual roi values
278
280
281 unsigned int m_l1Id; //< lvl1 event number
282 unsigned int m_roiId; //< RoI number
283 unsigned int m_roiWord; //< lvl1 RoI word from which this RoI was initially constructed
284
285 std::vector<TIDARoiDescriptor> m_rois; //< actual roi descriptors - mot pointers as online
286
287 bool m_cached;
288 double m_dphi;
289
290 double m_zedPlusR;
291 double m_zedMinusR;
292
293 double m_rPlusZed;
294 double m_rMinusZed;
295
298
299
300 ClassDef( TIDARoiDescriptor, 2 )
301
302};
303
304
305inline std::ostream& operator<<( std::ostream& s, const TIDARoiDescriptor& d ) {
306 return s << (std::string)d;
307}
308
309#endif // TIDA_ROIDESCRIPTOR_H
#define M_PI
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
std::ostream & operator<<(std::ostream &s, const TIDARoiDescriptor &d)
Class to store the eta, phi, zed, parameters and ranges for the TIDARoiDescriptor class.
#define z
Describes the Region of Interest geometry It has basically 8 parameters.
double m_rPlusZed
don't save - transient zMinus at radius R
unsigned roiWord() const
unsigned l1Id() const
double m_rMinusZed
don't save - transient zPlus at radius R
double zedHalfWidth() const
gets eta half-width
const TIDARoiDescriptor * operator[](int i) const
void set_roiWord(const unsigned int roiWord)
sets RoI word
double rPlusZed() const
double m_zedMinusR
don't save - transient zPlus at radius R
void push_back(const TIDARoiDescriptor *roi)
void push_back(const TIDARoiDescriptor &roi)
TIDARoiDescriptor(unsigned roiWord, unsigned l1id, int id, double eta, double etaMinus, double etaPlus, double phi, double phiMinus, double phiPlus, double zed, double zedMinus, double zedPlus)
constructor
TIDARoiParameters m_params
don't save
double etaMinus() const
double m_zedPlusR
cached value -
const TIDARoiParameters & params() const
access the internal parameter class
const TIDARoiDescriptor * at(int i) const
gets phi half-width
double etaHalfWidth() const
gets eta half-width
double zedPlus() const
double m_tanthetaPlus
don't save - transient zMinus at radius R
std::vector< TIDARoiDescriptor > m_rois
void set_l1Id(const unsigned int l1id)
set event number
static const double maxZed
don't save
static double exitpoint(double tz0, double teta, double &zexit, double &rexit)
static const double maxRadius
void set_roiId(const unsigned int id)
set roiId
TIDARoiDescriptor(bool fullscan=false)
default constructor
TIDARoiDescriptor(unsigned l1id, int id, double eta, double etaMinus, double etaPlus, double phi, double phiMinus, double phiPlus, double zed, double zedMinus, double zedPlus)
constructor
bool operator==(const TIDARoiDescriptor &b) const
operators
double zedPlusR() const
full containment methods
TIDARoiDescriptor & operator=(const TIDARoiDescriptor &r)
copy assignment
double etaPlus() const
bool operator!=(const TIDARoiDescriptor &b) const
double phiHalfWidth() const
double zedMinus() const
double phiPlus() const
unsigned roiId() const
identifier methods
double m_tanthetaMinus
don't save - transient roi edge gradients
double etacheck(double eta)
helper function to check if eta range was violated
double phiMinus() const
double m_dphi
cache flag - these should be mutable
double zedMinusR() const
double rMinusZed() const
double zedcheck(double zed)
helper function to check if zed range was violated
void reset()
internal parameters
bool composite() const
composite RoI methods
double phicheck(double phi)
helper function to check if phi range was violated
float etaMinus() const
float phiPlus() const
float phiMinus() const
float zedMinus() const
float zedPlus() const
float etaPlus() const
int r
Definition globals.cxx:22
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:116
bool containsPhi(const IRoiDescriptor &roi, double phi)
test whether a stub is contained within the roi
Definition RoiUtil.cxx:79
bool containsZed(const IRoiDescriptor &roi, double z, double r)
Definition RoiUtil.cxx:94