CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes | Friends
RadialStripTopology Class Reference

#include <RadialStripTopology.h>

Inheritance diagram for RadialStripTopology:
StripTopology Topology OffsetRadialStripTopology CSCStripTopology CSCGangedStripTopology CSCUngangedStripTopology

Public Member Functions

float angularWidth () const
 
float centreToIntersection () const
 
virtual int channel (const LocalPoint &) const
 
float detHeight () const
 
virtual LocalError localError (float strip, float stripErr2) const
 
virtual LocalError localError (const MeasurementPoint &, const MeasurementError &) const
 
virtual float localPitch (const LocalPoint &) const
 
virtual LocalPoint localPosition (float strip) const
 
virtual LocalPoint localPosition (const MeasurementPoint &) const
 
virtual float localStripLength (const LocalPoint &) const
 
virtual MeasurementError measurementError (const LocalPoint &, const LocalError &) const
 
virtual MeasurementPoint measurementPosition (const LocalPoint &) const
 
virtual int nearestStrip (const LocalPoint &) const
 
virtual int nstrips () const
 
float originToIntersection () const
 
float phiOfOneEdge () const
 
virtual float phiPitch (void) const
 
virtual float pitch () const
 
 RadialStripTopology (int ns, float aw, float dh, float r, int yAx=1, float yMid=0.)
 
virtual float strip (const LocalPoint &) const
 
virtual float stripAngle (float strip) const
 
virtual float stripLength () const
 
float xOfStrip (int strip, float y) const
 
int yAxisOrientation () const
 
float yCentreOfStripPlane () const
 
float yDistanceToIntersection (float y) const
 
float yExtentOfStripPlane () const
 
virtual ~RadialStripTopology ()
 
- Public Member Functions inherited from StripTopology
virtual LocalError localError (float strip, float stripErr2, const Topology::LocalTrackPred &) const
 conversion taking also the angle from the predicted track state More...
 
virtual float localPitch (const LocalPoint &lp, const Topology::LocalTrackAngles &) const
 conversion taking also the angle from the track state (LocalTrajectoryParameters) More...
 
virtual LocalPoint localPosition (float strip, const Topology::LocalTrackPred &) const
 conversion taking also the predicted track state More...
 
virtual float localStripLength (const LocalPoint &lp, const Topology::LocalTrackAngles &) const
 conversion taking also the angle from the track state (LocalTrajectoryParameters) More...
 
virtual float strip (const LocalPoint &lp, const Topology::LocalTrackAngles &) const
 conversion taking also the angle from the track state (LocalTrajectoryParameters) More...
 
virtual ~StripTopology ()
 
- Public Member Functions inherited from Topology
virtual int channel (const LocalPoint &lp, const LocalTrackAngles &) const
 conversion taking also the angle from the track state More...
 
virtual LocalError localError (const MeasurementPoint &mp, const MeasurementError &me, const LocalTrackPred &) const
 conversion taking also the angle from the predicted track state More...
 
virtual LocalPoint localPosition (const MeasurementPoint &mp, const LocalTrackPred &) const
 conversion taking also the angle from the predicted track state More...
 
virtual MeasurementError measurementError (const LocalPoint &lp, const LocalError &le, const LocalTrackAngles &) const
 conversion taking also the angle from the track state More...
 
virtual MeasurementPoint measurementPosition (const LocalPoint &lp, const LocalTrackAngles &) const
 conversion taking also the angle from the track state More...
 
virtual ~Topology ()
 

Private Attributes

float theAngularWidth
 
float theCentreToIntersection
 
float theDetHeight
 
int theNumberOfStrips
 
float thePhiOfOneEdge
 
int theYAxisOrientation
 
float yCentre
 

Friends

std::ostream & operator<< (std::ostream &, const RadialStripTopology &)
 

Additional Inherited Members

- Public Types inherited from Topology
typedef Point2DBase< double,
LocalTag
Local2DPoint
 
typedef Vector2D::MathVector MathVector2D
 
typedef Basic2DVector< double > Vector2D
 

Detailed Description

A StripTopology in which the component strips subtend a constant angular width, and, if projected, intersect at a point.

Author
Tim Cox

WARNING! Wherever 'float strip' is used the units of 'strip' are angular widths of each strip. The range is from 0.0 at the extreme edge of the 'first' strip at one edge of the detector, to nstrip*angular width at the other edge.
The centre of the first strip is at strip = 0.5
The centre of the last strip is at strip = 0.5 + (nstrip-1)
This is for consistency with CommonDet usage of 'float strip' (but where units are strip pitch rather than strip angular width.)

WARNING! If the mid-point along local y of the plane of strips does not correspond to the local coordinate origin, set the final ctor argument appropriately.

Definition at line 26 of file RadialStripTopology.h.

Constructor & Destructor Documentation

RadialStripTopology::RadialStripTopology ( int  ns,
float  aw,
float  dh,
float  r,
int  yAx = 1,
float  yMid = 0. 
)

Constructor from:

Parameters
nsnumber of strips
awangular width of a strip
dhdetector height (usually 2 x apothem of TrapezoidalPlaneBounds)
rradial distance from symmetry centre of detector to the point at which the outer edges of the two extreme strips (projected) intersect.
yAxorientation of local y axis: 1 means pointing from the smaller side of the module to the larger side (along apothem), and -1 means in the opposite direction, i.e. from the larger side along the apothem to the smaller side. Default value is 1.
yMidlocal y offset if mid-point of detector (strip plane) does not coincide with local origin. This decouples the extent of strip plane from the boundary of the detector in which the RST is embedded.

Definition at line 9 of file RadialStripTopology.cc.

References LogTrace, theAngularWidth, theNumberOfStrips, thePhiOfOneEdge, theYAxisOrientation, and yCentre.

9  :
12  theYAxisOrientation(yAx), yCentre( yMid) {
13  // Angular offset of extreme edge of detector, so that angle is
14  // zero for a strip lying along local y axis = long symmetry axis of plane of strips
16 
17  LogTrace("RadialStripTopology") << "RadialStripTopology: constructed with"
18  << " strips = " << ns
19  << " width = " << aw << " rad "
20  << " det_height = " << dh
21  << " ctoi = " << r
22  << " phi_edge = " << thePhiOfOneEdge << " rad "
23  << " y_ax_ori = " << theYAxisOrientation
24  << " y_det_centre = " << yCentre
25  << "\n";
26 }
#define LogTrace(id)
virtual RadialStripTopology::~RadialStripTopology ( )
inlinevirtual

Destructor

Definition at line 48 of file RadialStripTopology.h.

48 {}

Member Function Documentation

float RadialStripTopology::angularWidth ( ) const
inline
float RadialStripTopology::centreToIntersection ( ) const
inline

Distance from the intersection of the projections of the extreme edges of the two extreme strips to the symmetry centre of the plane of strips.

Definition at line 191 of file RadialStripTopology.h.

References theCentreToIntersection.

Referenced by FWRecoGeometryESProducer::addCSCGeometry(), FWTGeoRecoGeometryESProducer::addCSCGeometry(), localError(), operator<<(), and ValidateGeometry::validateCSCLayerGeometry().

int RadialStripTopology::channel ( const LocalPoint lp) const
virtual

Channel number corresponding to a given LocalPoint.
This is effectively an integer version of strip(), with range 0 to nstrips-1.
LocalPoints outside the detector strip plane will be considered as contributing to the edge channels 0 or nstrips-1.

Implements Topology.

Reimplemented in OffsetRadialStripTopology, CSCUngangedStripTopology, and CSCGangedStripTopology.

Definition at line 28 of file RadialStripTopology.cc.

References min, strip(), and theNumberOfStrips.

Referenced by CSCUngangedStripTopology::channel().

28 { return std::min( int( strip(lp) ), theNumberOfStrips-1 ) ;}
#define min(a, b)
Definition: mlp_lapack.h:161
virtual float strip(const LocalPoint &) const
float RadialStripTopology::detHeight ( ) const
inline
LocalError RadialStripTopology::localError ( float  strip,
float  stripErr2 
) const
virtual

LocalError for a pure strip measurement, where 'strip' is the (float) position (a 'phi' angle wrt y axis) and stripErr2 is the sigma-squared. Both quantities are expressed in units of theAngularWidth of a strip.

Implements StripTopology.

Definition at line 70 of file RadialStripTopology.cc.

References angularWidth(), centreToIntersection(), detHeight(), f, phi, funct::pow(), findQualityFiles::rr, stripAngle(), funct::tan(), groupFilesInBlocks::tt, and create_public_lumi_plots::xy.

70  {
71  const double
72  phi(stripAngle(strip)), t1(std::tan(phi)), t2(t1*t1),
73  // s1(std::sin(phi)), c1(std::cos(phi)),
74  // cs(s1*c1), s2(s1*s1), c2(1-s2), // rotation matrix
75 
76  tt( stripErr2 * std::pow( centreToIntersection()*angularWidth() ,2.f) ), // tangential sigma^2 *c2
77  rr( std::pow(detHeight(), 2.f) * (1.f/12.f) ), // radial sigma^2( uniform prob density along strip) *c2
78 
79  xx( tt + t2*rr ),
80  yy( t2*tt + rr ),
81  xy( t1*( rr - tt ) );
82 
83  return LocalError( xx, xy, yy );
84 }
float centreToIntersection() const
virtual float stripAngle(float strip) const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
double f[11][100]
virtual float strip(const LocalPoint &) const
float angularWidth() const
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
Definition: DDAxes.h:10
LocalError RadialStripTopology::localError ( const MeasurementPoint mp,
const MeasurementError me 
) const
virtual

LocalError for a given MeasurementPoint with known MeasurementError. This may be used in Kalman filtering and hence must allow possible correlations between the components.

Implements Topology.

Definition at line 86 of file RadialStripTopology.cc.

References angularWidth(), alignmentValidation::c1, centreToIntersection(), funct::cos(), fwrapper::cs, detHeight(), phi, dttmaxenums::R, findQualityFiles::rr, indexGen::s2, funct::sin(), stripAngle(), groupFilesInBlocks::tt, MeasurementError::uu(), MeasurementError::uv(), MeasurementError::vv(), PV2DBase< T, PVType, FrameType >::x(), create_public_lumi_plots::xy, PV2DBase< T, PVType, FrameType >::y(), and yAxisOrientation().

86  {
87  const double
88  phi(stripAngle(mp.x())), s1(std::sin(phi)), c1(std::cos(phi)),
89  cs(s1*c1), s2(s1*s1), c2(1-s2), // rotation matrix
90 
91  T( angularWidth() * ( centreToIntersection() + yAxisOrientation()*mp.y()*detHeight()) / c1 ), // tangential measurement unit (local pitch)
92  R( detHeight()/ c1 ), // radial measurement unit (strip length)
93  tt( me.uu() * T*T ), // tangential sigma^2
94  rr( me.vv() * R*R ), // radial sigma^2
95  tr( me.uv() * T*R ),
96 
97  xx( c2*tt + 2*cs*tr + s2*rr ),
98  yy( s2*tt - 2*cs*tr + c2*rr ),
99  xy( cs*( rr - tt ) + tr*( c2 - s2 ) );
100 
101  return LocalError( xx, xy, yy );
102 }
float vv() const
auto_ptr< ClusterSequence > cs
T y() const
Definition: PV2DBase.h:45
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
float centreToIntersection() const
virtual float stripAngle(float strip) const
tuple s2
Definition: indexGen.py:106
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
float uu() const
float angularWidth() const
T x() const
Definition: PV2DBase.h:44
long double T
float uv() const
Definition: DDAxes.h:10
float RadialStripTopology::localPitch ( const LocalPoint lp) const
virtual

Pitch (strip width) at a given LocalPoint.
BEWARE: are you sure you really want to call this for a RadialStripTopology?

Implements StripTopology.

Definition at line 122 of file RadialStripTopology.cc.

References angularWidth(), funct::cos(), f, min, nstrips(), funct::pow(), funct::sin(), strip(), stripAngle(), PV3DBase< T, PVType, FrameType >::y(), and yDistanceToIntersection().

Referenced by StripCPE::fillParams(), and CSCLayerGeometry::stripPitch().

122  {
123  // The local pitch is the local x width of the strip at the local (x,y)
124  const int istrip = std::min(nstrips(), static_cast<int>(strip(lp)) + 1); // which strip number
125  const float fangle = stripAngle(static_cast<float>(istrip) - 0.5); // angle of strip centre
126  return
128  std::pow( std::cos(fangle-0.5f*angularWidth()), 2.f);
129 }
virtual int nstrips() const
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
T y() const
Definition: PV3DBase.h:62
#define min(a, b)
Definition: mlp_lapack.h:161
float yDistanceToIntersection(float y) const
virtual float stripAngle(float strip) const
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
double f[11][100]
virtual float strip(const LocalPoint &) const
float angularWidth() const
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
LocalPoint RadialStripTopology::localPosition ( float  strip) const
virtual

LocalPoint on x axis for given 'strip' 'strip' is a float in units of the strip (angular) width

Implements StripTopology.

Reimplemented in OffsetRadialStripTopology.

Definition at line 52 of file RadialStripTopology.cc.

References originToIntersection(), stripAngle(), funct::tan(), and yAxisOrientation().

Referenced by TrackerValidationVariables::fillHitQuantities(), and OffsetRadialStripTopology::localPosition().

52  {
54 }
virtual float stripAngle(float strip) const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
virtual float strip(const LocalPoint &) const
float originToIntersection() const
Local3DPoint LocalPoint
Definition: LocalPoint.h:11
LocalPoint RadialStripTopology::localPosition ( const MeasurementPoint mp) const
virtual

LocalPoint for a given MeasurementPoint
What's a MeasurementPoint?
In analogy with that used with TrapezoidalStripTopology objects, a MeasurementPoint is a 2-dim object.
The first dimension measures the angular position wrt central line of symmetry of detector, in units of strip (angular) widths (range 0 to total angle subtended by a detector).
The second dimension measures the fractional position along the strip (range -0.5 to +0.5).
BEWARE! The components are not Cartesian.

Implements Topology.

Reimplemented in OffsetRadialStripTopology.

Definition at line 56 of file RadialStripTopology.cc.

References detHeight(), stripAngle(), funct::tan(), x, PV2DBase< T, PVType, FrameType >::x(), detailsBasic3DVector::y, PV2DBase< T, PVType, FrameType >::y(), yAxisOrientation(), yCentreOfStripPlane(), and yDistanceToIntersection().

56  {
57  const float // y = (L/cos(phi))*mp.y()*cos(phi)
58  y( mp.y()*detHeight() + yCentreOfStripPlane() ),
60  return LocalPoint( x, y );
61 }
T y() const
Definition: PV2DBase.h:45
float yDistanceToIntersection(float y) const
virtual float stripAngle(float strip) const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
float yCentreOfStripPlane() const
Local3DPoint LocalPoint
Definition: LocalPoint.h:11
Definition: DDAxes.h:10
T x() const
Definition: PV2DBase.h:44
float RadialStripTopology::localStripLength ( const LocalPoint lp) const
virtual

Length of a strip passing through a given LocalPpoint

Implements StripTopology.

Definition at line 36 of file RadialStripTopology.cc.

References detHeight(), f, funct::pow(), mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and yDistanceToIntersection().

Referenced by TrackerValidationVariables::fillHitQuantities().

36  {
37  return detHeight() * std::sqrt(1.f + std::pow( lp.x()/yDistanceToIntersection(lp.y()), 2.f) );
38 }
T y() const
Definition: PV3DBase.h:62
float yDistanceToIntersection(float y) const
T sqrt(T t)
Definition: SSEVec.h:46
double f[11][100]
T x() const
Definition: PV3DBase.h:61
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MeasurementError RadialStripTopology::measurementError ( const LocalPoint p,
const LocalError e 
) const
virtual

Implements Topology.

Definition at line 104 of file RadialStripTopology.cc.

References angularWidth(), fwrapper::cs, detHeight(), f, funct::pow(), indexGen::s2, mathSSE::sqrt(), lumiQTWidget::t, PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), yAxisOrientation(), yDistanceToIntersection(), and LocalError::yy().

Referenced by TrackerValidationVariables::fillHitQuantities().

104  {
105  const double
106  yHitToInter(yDistanceToIntersection(p.y())),
107  t(yAxisOrientation() * p.x() / yHitToInter), // tan(strip angle)
108  cs(t/(1+t*t)), s2(t*cs), c2(1-s2), // rotation matrix
109 
110  T2( 1./(std::pow(angularWidth(),2.f) * ( std::pow(p.x(),2.f) + std::pow(yHitToInter,2)) )), // 1./tangential measurement unit (local pitch) ^2
111  R2( c2/std::pow(detHeight(),2.f) ), // 1./ radial measurement unit (strip length) ^2
112 
113  uu( ( c2*e.xx() - 2*cs*e.xy() + s2*e.yy() ) * T2 ),
114  vv( ( s2*e.xx() + 2*cs*e.xy() + c2*e.yy() ) * R2 ),
115  uv( ( cs*( e.xx() - e.yy() ) + e.xy()*( c2 - s2 ) ) * std::sqrt (T2*R2) );
116 
117  return MeasurementError(uu, uv, vv);
118 }
float xx() const
Definition: LocalError.h:24
auto_ptr< ClusterSequence > cs
T y() const
Definition: PV3DBase.h:62
float yDistanceToIntersection(float y) const
tuple s2
Definition: indexGen.py:106
float xy() const
Definition: LocalError.h:25
float yy() const
Definition: LocalError.h:26
T sqrt(T t)
Definition: SSEVec.h:46
double f[11][100]
float angularWidth() const
T x() const
Definition: PV3DBase.h:61
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MeasurementPoint RadialStripTopology::measurementPosition ( const LocalPoint lp) const
virtual

Implements Topology.

Reimplemented in OffsetRadialStripTopology.

Definition at line 63 of file RadialStripTopology.cc.

References angularWidth(), detHeight(), phi, phiOfOneEdge(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), yAxisOrientation(), yCentreOfStripPlane(), and yDistanceToIntersection().

Referenced by TrackerValidationVariables::fillHitQuantities(), and OffsetRadialStripTopology::measurementPosition().

63  {
64  const float // phi is [pi/2 - conventional local phi], use atan2(x,y) rather than atan2(y,x)
65  phi( yAxisOrientation() * std::atan2( lp.x(), yDistanceToIntersection( lp.y() ) ));
67  ( lp.y() - yCentreOfStripPlane() ) / detHeight() );
68 }
T y() const
Definition: PV3DBase.h:62
float yDistanceToIntersection(float y) const
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
float yCentreOfStripPlane() const
float angularWidth() const
float phiOfOneEdge() const
T x() const
Definition: PV3DBase.h:61
Definition: DDAxes.h:10
int RadialStripTopology::nearestStrip ( const LocalPoint lp) const
virtual

Nearest strip to given LocalPoint

Definition at line 30 of file RadialStripTopology.cc.

References max(), min, nstrips(), and strip().

Referenced by CSCLayerGeometry::nearestStrip().

30 { return std::min( nstrips(), static_cast<int>( std::max(float(0), strip(lp)) ) + 1);}
virtual int nstrips() const
#define min(a, b)
Definition: mlp_lapack.h:161
const T & max(const T &a, const T &b)
virtual float strip(const LocalPoint &) const
virtual int RadialStripTopology::nstrips ( ) const
inlinevirtual
float RadialStripTopology::originToIntersection ( ) const
inline

(y) distance from intersection of the projections of the strips to the local coordinate origin. Same as centreToIntersection() if symmetry centre of strip plane coincides with local origin.

Definition at line 198 of file RadialStripTopology.h.

References theCentreToIntersection, and yCentre.

Referenced by CSCStripTopology::equationOfStrip(), TrackerValidationVariables::fillHitQuantities(), localPosition(), OffsetRadialStripTopology::localPosition(), OffsetRadialStripTopology::strip(), OffsetRadialStripTopology::toLocal(), OffsetRadialStripTopology::toPrime(), and yDistanceToIntersection().

float RadialStripTopology::phiOfOneEdge ( ) const
inline

Convenience function to access azimuthal angle of extreme edge of first strip measured relative to long symmetry axis of the plane of strips.

WARNING! This angle is measured clockwise from the local y axis which means it is in the conventional azimuthal phi plane, but azimuth is of course measured from local x axis not y. The range of this angle is -(full angle)/2 to +(full angle)/2.
where (full angle) = nstrips() * angularWidth().

Definition at line 212 of file RadialStripTopology.h.

References thePhiOfOneEdge.

Referenced by FWRecoGeometryESProducer::addCSCGeometry(), FWTGeoRecoGeometryESProducer::addCSCGeometry(), OffsetRadialStripTopology::localPosition(), measurementPosition(), operator<<(), OffsetRadialStripTopology::strip(), strip(), OffsetRadialStripTopology::stripAngle(), stripAngle(), and ValidateGeometry::validateCSCLayerGeometry().

212 { return thePhiOfOneEdge; }
virtual float RadialStripTopology::phiPitch ( void  ) const
inlinevirtual

Phi pitch of each strip (= angular width!)

Definition at line 174 of file RadialStripTopology.h.

References angularWidth().

Referenced by operator<<(), and CSCLayerGeometry::stripPhiPitch().

174 { return angularWidth(); }
float angularWidth() const
float RadialStripTopology::pitch ( ) const
virtual

BEWARE: calling pitch() throws an exception.
Pitch is conventional name for width of something, but this is not sensible for a RadialStripTopology since strip widths vary with local y. Use localPitch(.) instead.

Implements StripTopology.

Definition at line 120 of file RadialStripTopology.cc.

120 { throw Genexception("RadialStripTopology::pitch() called - makes no sense, use localPitch(.) instead."); return 0.;}
float RadialStripTopology::strip ( const LocalPoint lp) const
virtual

Strip in which a given LocalPoint lies. This is a float which represents the fractional strip position within the detector.
Returns zero if the LocalPoint falls at the extreme low edge of the detector or BELOW, and float(nstrips) if it falls at the extreme high edge or ABOVE.

Implements StripTopology.

Reimplemented in OffsetRadialStripTopology.

Definition at line 45 of file RadialStripTopology.cc.

References angularWidth(), max(), min, nstrips(), phi, phiOfOneEdge(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), yAxisOrientation(), and yDistanceToIntersection().

Referenced by CSCGangedStripTopology::channel(), channel(), localPitch(), nearestStrip(), and SiClusterTranslator::produce().

45  {
46  const float // phi is measured from y axis --> sign of angle is sign of x * yAxisOrientation --> use atan2(x,y), not atan2(y,x)
47  phi( std::atan2( lp.x(), yDistanceToIntersection( lp.y() ) )),
48  aStrip( ( phi - yAxisOrientation() * phiOfOneEdge() )/angularWidth());
49  return std::max(float(0), std::min( (float)nstrips(), aStrip ));
50 }
virtual int nstrips() const
T y() const
Definition: PV3DBase.h:62
#define min(a, b)
Definition: mlp_lapack.h:161
float yDistanceToIntersection(float y) const
const T & max(const T &a, const T &b)
float angularWidth() const
float phiOfOneEdge() const
T x() const
Definition: PV3DBase.h:61
Definition: DDAxes.h:10
float RadialStripTopology::stripAngle ( float  strip) const
virtual

Angle between strip and symmetry axis (=local y axis) for given strip.
This is like a phi angle but measured clockwise from y axis rather than counter clockwise from x axis. Note that 'strip' is a float with a continuous range from 0 to float(nstrips) to cover the whole detector, and the centres of strips correspond to half-integer values 0.5, 1.5, ..., nstrips-0.5 whereas values 1, 2, ... nstrips correspond to the upper phi edges of the strips.

Implements StripTopology.

Reimplemented in OffsetRadialStripTopology.

Definition at line 32 of file RadialStripTopology.cc.

References angularWidth(), phiOfOneEdge(), and yAxisOrientation().

Referenced by TrackerValidationVariables::fillHitQuantities(), localError(), localPitch(), localPosition(), and xOfStrip().

32 { return phiOfOneEdge() + yAxisOrientation() * strip * angularWidth() ;}
virtual float strip(const LocalPoint &) const
float angularWidth() const
float phiOfOneEdge() const
virtual float RadialStripTopology::stripLength ( ) const
inlinevirtual

Height of detector (= length of long symmetry axis of the plane of strips).

Implements StripTopology.

Definition at line 135 of file RadialStripTopology.h.

References theDetHeight.

Referenced by StripCPE::fillParams().

135 { return theDetHeight; }
float RadialStripTopology::xOfStrip ( int  strip,
float  y 
) const

Local x where centre of strip intersects input local y
'strip' should be in range 1 to nstrips()

Definition at line 40 of file RadialStripTopology.cc.

References stripAngle(), funct::tan(), yAxisOrientation(), and yDistanceToIntersection().

Referenced by CSCLayerGeometry::xOfStrip().

40  {
41  return
42  yAxisOrientation() * yDistanceToIntersection( y ) * std::tan( stripAngle(static_cast<float>(strip) - 0.5 ) );
43 }
float yDistanceToIntersection(float y) const
virtual float stripAngle(float strip) const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
virtual float strip(const LocalPoint &) const
int RadialStripTopology::yAxisOrientation ( ) const
inline
float RadialStripTopology::yCentreOfStripPlane ( ) const
inline
float RadialStripTopology::yDistanceToIntersection ( float  y) const

Distance in local y from a hit to the point of intersection of projected strips

Definition at line 34 of file RadialStripTopology.cc.

References originToIntersection(), and yAxisOrientation().

Referenced by localPitch(), localPosition(), localStripLength(), measurementError(), measurementPosition(), strip(), and xOfStrip().

34 { return yAxisOrientation()*y + originToIntersection() ;}
float originToIntersection() const
float RadialStripTopology::yExtentOfStripPlane ( ) const
inline

y extent of strip plane

Definition at line 184 of file RadialStripTopology.h.

References theDetHeight.

Referenced by CSCStripTopology::yLimitsOfStripPlane().

184 { return theDetHeight; } // same as detHeight()

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const RadialStripTopology rst 
)
friend

Definition at line 132 of file RadialStripTopology.cc.

132  {
133  os << "RadialStripTopology " << std::endl
134  << " " << std::endl
135  << "number of strips " << rst.nstrips() << std::endl
136  << "centre to whereStripsMeet " << rst.centreToIntersection() << std::endl
137  << "detector height in y " << rst.detHeight() << std::endl
138  << "angular width of strips " << rst.phiPitch() << std::endl
139  << "phi of one edge " << rst.phiOfOneEdge() << std::endl
140  << "y axis orientation " << rst.yAxisOrientation() << std::endl
141  << "y of centre of strip plane " << rst.yCentreOfStripPlane() << std::endl;
142  return os;
143 }
virtual int nstrips() const
float centreToIntersection() const
virtual float phiPitch(void) const
float yCentreOfStripPlane() const
float phiOfOneEdge() const

Member Data Documentation

float RadialStripTopology::theAngularWidth
private

Definition at line 245 of file RadialStripTopology.h.

Referenced by angularWidth(), and RadialStripTopology().

float RadialStripTopology::theCentreToIntersection
private

Definition at line 247 of file RadialStripTopology.h.

Referenced by centreToIntersection(), and originToIntersection().

float RadialStripTopology::theDetHeight
private

Definition at line 246 of file RadialStripTopology.h.

Referenced by detHeight(), stripLength(), and yExtentOfStripPlane().

int RadialStripTopology::theNumberOfStrips
private

Definition at line 244 of file RadialStripTopology.h.

Referenced by channel(), nstrips(), and RadialStripTopology().

float RadialStripTopology::thePhiOfOneEdge
private

Definition at line 248 of file RadialStripTopology.h.

Referenced by phiOfOneEdge(), and RadialStripTopology().

int RadialStripTopology::theYAxisOrientation
private

Definition at line 249 of file RadialStripTopology.h.

Referenced by RadialStripTopology(), and yAxisOrientation().

float RadialStripTopology::yCentre
private