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
105
106 // Destructor
107 virtual ~TIDARoiDescriptor();
108
109 // Methods to set data members
110 // void phi(const double phi) { m_phi = phi; } //!< set phi of RoI
111 // void eta(const double eta) { m_eta = eta; } //!< set eta of RoI
112 // void zed(const double zed) { m_zed = zed; } //!< set eta of RoI
113
114 void set_roiId(const unsigned int id) { m_roiId=id; }
115 void set_l1Id(const unsigned int l1id) { m_l1Id=l1id; }
116 void set_roiWord(const unsigned int roiWord) { m_roiWord=roiWord; }
117
118 // void phiHalfWidth(double x) { m_phiHalfWidth=x; } //!< sets phi half-width
119 // void etaHalfWidth(double x) { m_etaHalfWidth=x; } //!< sets eta half-width
120 // void zedHalfWidth(double x) { m_zedHalfWidth=x; } //!< sets zed half-width
121
122 // void etaPlus(double x) { m_etaPlus = x; } //!< sets eta at z+zwidth
123 // void etaMinus(double x) { m_etaMinus = x; } //!< sets eta at z-zwidth
124
125 // Methods to retrieve data members
126
127 // double phi0() const { return m_params.phi(); }
128 // double eta0() const { return m_params.eta(); }
129 // double zed0() const { return m_params.zed(); }
130
131 double phi() const { return m_params.phi(); }
132 double eta() const { return m_params.eta(); }
133 double zed() const { return m_params.zed(); }
134
135 double etaMinus() const { return m_params.etaMinus(); }
136 double etaPlus() const { return m_params.etaPlus(); }
137
138 double phiMinus() const { return m_params.phiMinus(); }
139 double phiPlus() const { return m_params.phiPlus(); }
140
141 double zedMinus() const { return m_params.zedMinus(); }
142 double zedPlus() const { return m_params.zedPlus(); }
143
144
146
147 double zedPlusR() const { return m_zedPlusR; }
148 double zedMinusR() const { return m_zedMinusR; }
149
150 double rPlusZed() const { return m_rPlusZed; }
151 double rMinusZed() const { return m_rMinusZed; }
152
153 double maxR() const { return maxRadius; }
154 double maxZ() const { return maxZed; }
155
156 static double exitpoint( double tz0, double teta, double& zexit, double& rexit );
157
159
160 unsigned roiId() const { return m_roiId; }
161 unsigned l1Id() const { return m_l1Id; }
162 unsigned roiWord() const { return m_roiWord; }
163
164 int version() const { return 4; }
165
166 operator std::string() const;
167
168 bool isFullscan() const { return m_fullscan; }
169
171
172 bool composite() const { return !m_rois.empty(); }
173
174 size_t size() const { return m_rois.size(); }
175
176 const TIDARoiDescriptor* operator[](int i) const { return &m_rois.at(i); }
177 const TIDARoiDescriptor* at(int i) const { return &m_rois.at(i); }
178
180 double phiHalfWidth() const {
181 double dphi = 0.5*(params().phiPlus()-params().phiMinus());
182 if ( params().phiMinus()>params().phiPlus() ) dphi += M_PI;
183 return dphi;
184 }
185
186 double etaHalfWidth() const { return 0.5*(params().etaPlus()-params().etaMinus()); }
187 double zedHalfWidth() const { return 0.5*(params().zedPlus()-params().zedMinus()); }
188
189 // double zedPlus() const { return m_zed+m_zedHalfWidth; } //!< gets phi half-width
190 // double zedMinus() const { return m_zed-m_zedHalfWidth; } //!< gets phi half-width
191
192 // double etaPlus() const { return m_etaPlus; } //!< gets eta at z+zwidth
193 // double etaMinus() const { return m_etaMinus; } //!< gets eta at z-zwidth
194
196
197
198 bool operator==( const TIDARoiDescriptor& b ) const {
199 if ( roiWord() != b.roiWord() ) return false;
200 double epsilon=0.001; // arbitrary , but seems to be reasonable
201 if ( std::fabs( phi() - b.phi()) > epsilon ) return false;
202 if ( std::fabs( eta() - b.eta()) > epsilon ) return false;
203 if ( std::fabs( zed() - b.zed()) > epsilon ) return false;
204 return true;
205 }
206
207 bool operator!=( const TIDARoiDescriptor& b ) const { return !((*this)==b); }
208
209 void push_back( const TIDARoiDescriptor& roi ) { m_rois.push_back( roi ); }
210 void push_back( const TIDARoiDescriptor* roi ) { m_rois.push_back( *roi ); }
211
212
213
214#if 0
215
217
218 virtual double zedMin(double r) const { return 0; }
219 virtual double zedMax(double r) const { return 0; }
220
221 virtual double rhoMin(double z) const { return 0; }
222 virtual double rhoMax(double z) const { return 0; }
223
225 virtual double dzdrMinus() const { return 0; }
226 virtual double dzdrPlus() const { return 0; }
227
228 virtual double drdzMinus() const { return 0; }
229 virtual double drdzPlus() const { return 0; }
230
231 virtual bool contains( double z0, double dzdr ) const { return false; }
232 virtual bool contains_internal( double z0, double zouter ) const { return false; }
233
235 virtual bool contains( double _z, double _r, double _phi ) const { return false; }
236 virtual bool containsPhi( double _phi ) const { return false; }
237 virtual bool containsZed( double _z, double _r ) const { return false; }
238
239#endif
240
241protected:
242
244 const TIDARoiParameters& params() const { return m_params; };
245
249 void reset() {
251 // m_phi=0.0; m_eta=0.0; m_zed=0.0;
252 // m_phiHalfWidth=0.1; m_etaHalfWidth=0.1; m_zedHalfWidth=168;
253 // m_etaPlus=m_eta; m_etaMinus=m_eta;
254 m_l1Id=0;
255 m_roiId=0;
256 m_roiWord=0;
257 m_rois.clear();
258 }
259
260 double phicheck(double phi);
261 double etacheck(double eta);
262 double zedcheck(double zed);
263
264protected:
265
266 static const double maxRadius;
267 static const double maxZed;
268
269protected:
270
271 TIDARoiParameters m_params; // actual roi values
272
274
275 unsigned int m_l1Id; //< lvl1 event number
276 unsigned int m_roiId; //< RoI number
277 unsigned int m_roiWord; //< lvl1 RoI word from which this RoI was initially constructed
278
279 std::vector<TIDARoiDescriptor> m_rois; //< actual roi descriptors - mot pointers as online
280
281 bool m_cached;
282 double m_dphi;
283
284 double m_zedPlusR;
285 double m_zedMinusR;
286
287 double m_rPlusZed;
288 double m_rMinusZed;
289
292
293
294 ClassDef( TIDARoiDescriptor, 2 )
295
296};
297
298
299inline std::ostream& operator<<( std::ostream& s, const TIDARoiDescriptor& d ) {
300 return s << (std::string)d;
301}
302
303#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 Ineterest 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)
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:114
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