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