CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RadialStripTopology.h
Go to the documentation of this file.
1 #ifndef _RADIAL_STRIP_TOPOLOGY_H_
2 #define _RADIAL_STRIP_TOPOLOGY_H_
3 
5 
27  public:
28 
43  RadialStripTopology( int ns, float aw, float dh, float r, int yAx = 1, float yMid = 0.);
44 
49 
50  // =========================================================
51  // StripTopology interface - implement pure virtual methods
52  // =========================================================
53 
58  virtual LocalPoint localPosition(float strip) const;
59 
73  virtual LocalPoint localPosition(const MeasurementPoint&) const;
74 
81  virtual LocalError localError(float strip, float stripErr2) const;
82 
88  virtual LocalError localError(const MeasurementPoint&, const MeasurementError&) const;
89 
97  virtual float strip(const LocalPoint&) const;
98 
99 
106  virtual float pitch() const;
107 
112  virtual float localPitch(const LocalPoint&) const;
113 
125  virtual float stripAngle(float strip) const;
126 
130  virtual int nstrips() const { return theNumberOfStrips; }
131 
135  virtual float stripLength() const { return theDetHeight; }
136 
140  virtual float localStripLength(const LocalPoint& ) const;
141 
142 
143  // =========================================================
144  // Topology interface (not already implemented for
145  // StripTopology interface)
146  // =========================================================
147 
148  virtual MeasurementPoint measurementPosition( const LocalPoint& ) const;
149 
150  virtual MeasurementError measurementError( const LocalPoint&, const LocalError& ) const;
151 
159  virtual int channel( const LocalPoint& ) const;
160 
161 
162  // =========================================================
163  // RadialStripTopology interface itself
164  // =========================================================
165 
169  float angularWidth() const { return theAngularWidth;}
170 
174  virtual float phiPitch(void) const { return angularWidth(); }
175 
179  float detHeight() const { return theDetHeight;}
180 
184  float yExtentOfStripPlane() const { return theDetHeight; } // same as detHeight()
185 
192 
199 
212  float phiOfOneEdge() const { return thePhiOfOneEdge; }
213 
218  float xOfStrip(int strip, float y) const;
219 
223  virtual int nearestStrip(const LocalPoint&) const;
224 
228  int yAxisOrientation() const { return theYAxisOrientation; }
229 
233  float yCentreOfStripPlane() const { return yCentre; }
234 
238  float yDistanceToIntersection( float y ) const;
239 
240  friend std::ostream & operator<<(std::ostream&, const RadialStripTopology& );
241 
242  private:
243 
244  int theNumberOfStrips; // total no. of strips in plane of strips
245  float theAngularWidth; // angle subtended by each strip = phi pitch
246  float theDetHeight; // length of long symmetry axis = twice the apothem of the enclosing trapezoid
247  float theCentreToIntersection; // distance centre of detector face to intersection of edge strips (projected)
248  float thePhiOfOneEdge; // local 'phi' of one edge of plane of strips (I choose it negative!)
249  int theYAxisOrientation; // 1 means y axis going from smaller to larger side, -1 means opposite direction
250  float yCentre; // Non-zero if offset in local y between midpoint of detector (strip plane) extent and local origin.
251 };
252 
253 #endif
254 
255 
virtual int nstrips() const
virtual MeasurementPoint measurementPosition(const LocalPoint &) const
RadialStripTopology(int ns, float aw, float dh, float r, int yAx=1, float yMid=0.)
float centreToIntersection() const
virtual float phiPitch(void) const
float yDistanceToIntersection(float y) const
virtual float stripAngle(float strip) const
float xOfStrip(int strip, float y) const
virtual LocalPoint localPosition(float strip) const
virtual float localStripLength(const LocalPoint &) const
virtual int nearestStrip(const LocalPoint &) const
float yCentreOfStripPlane() const
virtual float localPitch(const LocalPoint &) const
float yExtentOfStripPlane() const
virtual float strip(const LocalPoint &) const
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const
virtual float stripLength() const
float originToIntersection() const
virtual int channel(const LocalPoint &) const
virtual float pitch() const
float angularWidth() const
float phiOfOneEdge() const
friend std::ostream & operator<<(std::ostream &, const RadialStripTopology &)
virtual LocalError localError(float strip, float stripErr2) const