CMS 3D CMS Logo

List of all members | Public Member Functions | Friends
RadialStripTopology Class Referenceabstract

#include <RadialStripTopology.h>

Inheritance diagram for RadialStripTopology:
StripTopology Topology CSCRadialStripTopology TkRadialStripTopology OffsetRadialStripTopology CSCStripTopology CSCGangedStripTopology CSCUngangedStripTopology

Public Member Functions

virtual float angularWidth () const =0
 
virtual float centreToIntersection () const =0
 
int channel (const LocalPoint &) const override=0
 
virtual float detHeight () const =0
 
virtual LocalError localError (float strip, float stripErr2) const=0
 
virtual LocalError localError (float strip, float stripErr2, const Topology::LocalTrackPred &) const
 conversion taking also the angle from the predicted track state More...
 
LocalError localError (float strip, float stripErr2) const override=0
 
LocalError localError (const MeasurementPoint &, const MeasurementError &) const override=0
 
float localPitch (const LocalPoint &) const override=0
 
LocalPoint localPosition (float strip) const override=0
 
virtual LocalPoint localPosition (float strip) const=0
 
virtual LocalPoint localPosition (float strip, const Topology::LocalTrackPred &) const
 conversion taking also the predicted track state More...
 
LocalPoint localPosition (const MeasurementPoint &) const override=0
 
float localStripLength (const LocalPoint &) const override=0
 
MeasurementError measurementError (const LocalPoint &, const LocalError &) const override=0
 
MeasurementPoint measurementPosition (const LocalPoint &) const override=0
 
virtual int nearestStrip (const LocalPoint &) const =0
 
int nstrips () const override=0
 
virtual float originToIntersection () const =0
 
virtual float phiOfOneEdge () const =0
 
virtual float phiPitch (void) const =0
 
float pitch () const final
 
float strip (const LocalPoint &) const override=0
 
float stripAngle (float strip) const override=0
 
float stripLength () const override=0
 
virtual float xOfStrip (int strip, float y) const =0
 
virtual float yAxisOrientation () const =0
 
virtual float yCentreOfStripPlane () const =0
 
virtual float yDistanceToIntersection (float y) const =0
 
virtual float yExtentOfStripPlane () const =0
 
 ~RadialStripTopology () override
 
- Public Member Functions inherited from StripTopology
virtual float coveredStrips (const LocalPoint &lp1, const LocalPoint &lp2) const
 
virtual LocalError localError (float strip, float stripErr2, const Topology::LocalTrackPred &) const
 conversion taking also the angle from the predicted track state More...
 
virtual LocalError localError (const MeasurementPoint &, const MeasurementError &) const=0
 
virtual LocalError localError (const MeasurementPoint &mp, const MeasurementError &me, const 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 (const MeasurementPoint &) const=0
 
virtual LocalPoint localPosition (const MeasurementPoint &mp, const LocalTrackPred &) const
 conversion taking also the angle from the predicted track state 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...
 
 ~StripTopology () override
 
- 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 ()
 

Friends

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

Additional Inherited Members

- Public Types inherited from Topology
typedef Point2DBase< double, LocalTagLocal2DPoint
 
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.

Original version, allows inheritance

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.

now is an abstract class to allow different specialization for tracker and muon

Definition at line 28 of file RadialStripTopology.h.

Constructor & Destructor Documentation

◆ ~RadialStripTopology()

RadialStripTopology::~RadialStripTopology ( )
inlineoverride

Destructor

Definition at line 33 of file RadialStripTopology.h.

33 {}

Member Function Documentation

◆ angularWidth()

virtual float RadialStripTopology::angularWidth ( ) const
pure virtual

◆ centreToIntersection()

virtual float RadialStripTopology::centreToIntersection ( ) const
pure virtual

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.

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by operator<<().

◆ channel()

int RadialStripTopology::channel ( const LocalPoint ) const
overridepure 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.

Implemented in TkRadialStripTopology, CSCRadialStripTopology, OffsetRadialStripTopology, CSCUngangedStripTopology, and CSCGangedStripTopology.

◆ detHeight()

virtual float RadialStripTopology::detHeight ( ) const
pure virtual

Length of long symmetry axis of plane of strips

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by TrackerValidationVariables::fillHitQuantities(), operator<<(), and ApeEstimator::radialPositionAndError2().

◆ localError() [1/4]

virtual LocalError StripTopology::localError

◆ localError() [2/4]

virtual LocalError StripTopology::localError
inline

conversion taking also the angle from the predicted track state

Definition at line 26 of file StripTopology.h.

26  {
27  return localError(strip, stripErr2);
28  }
float strip(const LocalPoint &) const override=0
LocalError localError(float strip, float stripErr2) const override=0

◆ localError() [3/4]

LocalError RadialStripTopology::localError ( float  strip,
float  stripErr2 
) const
overridepure 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.

Implemented in CSCRadialStripTopology, and TkRadialStripTopology.

◆ localError() [4/4]

LocalError RadialStripTopology::localError ( const MeasurementPoint ,
const MeasurementError  
) const
overridepure 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.

Implemented in CSCRadialStripTopology, and TkRadialStripTopology.

◆ localPitch()

float RadialStripTopology::localPitch ( const LocalPoint ) const
overridepure virtual

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

Implements StripTopology.

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

◆ localPosition() [1/4]

LocalPoint RadialStripTopology::localPosition ( float  strip) const
overridepure virtual

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

Implements StripTopology.

Implemented in CSCRadialStripTopology, TkRadialStripTopology, and OffsetRadialStripTopology.

Referenced by TrackerValidationVariables::fillHitQuantities().

◆ localPosition() [2/4]

virtual LocalPoint StripTopology::localPosition
inline

conversion taking also the predicted track state

Definition at line 20 of file StripTopology.h.

20  {
21  return localPosition(strip);
22  }
LocalPoint localPosition(float strip) const override=0
float strip(const LocalPoint &) const override=0

◆ localPosition() [3/4]

virtual LocalPoint StripTopology::localPosition

◆ localPosition() [4/4]

LocalPoint RadialStripTopology::localPosition ( const MeasurementPoint ) const
overridepure 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.

Implemented in CSCRadialStripTopology, TkRadialStripTopology, and OffsetRadialStripTopology.

◆ localStripLength()

float RadialStripTopology::localStripLength ( const LocalPoint ) const
overridepure virtual

Length of a strip passing through a given LocalPpoint

Implements StripTopology.

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by TrackerValidationVariables::fillHitQuantities(), and ApeEstimator::radialPositionAndError2().

◆ measurementError()

MeasurementError RadialStripTopology::measurementError ( const LocalPoint ,
const LocalError  
) const
overridepure virtual

◆ measurementPosition()

MeasurementPoint RadialStripTopology::measurementPosition ( const LocalPoint ) const
overridepure virtual

◆ nearestStrip()

virtual int RadialStripTopology::nearestStrip ( const LocalPoint ) const
pure virtual

Nearest strip to given LocalPoint

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

◆ nstrips()

int RadialStripTopology::nstrips ( ) const
overridepure virtual

Total number of strips

Implements StripTopology.

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by operator<<().

◆ originToIntersection()

virtual float RadialStripTopology::originToIntersection ( ) const
pure virtual

(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.

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by TrackerValidationVariables::fillHitQuantities(), and ApeEstimator::radialPositionAndError2().

◆ phiOfOneEdge()

virtual float RadialStripTopology::phiOfOneEdge ( ) const
pure virtual

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().

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by operator<<().

◆ phiPitch()

virtual float RadialStripTopology::phiPitch ( void  ) const
pure virtual

Phi pitch of each strip (= angular width!)

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by operator<<().

◆ pitch()

float RadialStripTopology::pitch ( ) const
finalvirtual

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 4 of file RadialStripTopology.cc.

References Exception.

4  {
5  throw cms::Exception("RadialStripTopology") << "pitch() called - makes no sense, use localPitch(.) instead.";
6  return 0.;
7 }

◆ strip()

float RadialStripTopology::strip ( const LocalPoint ) const
overridepure 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.

Implemented in CSCRadialStripTopology, TkRadialStripTopology, and OffsetRadialStripTopology.

◆ stripAngle()

float RadialStripTopology::stripAngle ( float  strip) const
overridepure 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.

Implemented in TkRadialStripTopology, CSCRadialStripTopology, and OffsetRadialStripTopology.

Referenced by TrackerValidationVariables::fillHitQuantities(), and ApeEstimator::radialPositionAndError2().

◆ stripLength()

float RadialStripTopology::stripLength ( ) const
overridepure virtual

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

Implements StripTopology.

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

◆ xOfStrip()

virtual float RadialStripTopology::xOfStrip ( int  strip,
float  y 
) const
pure virtual

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

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

◆ yAxisOrientation()

virtual float RadialStripTopology::yAxisOrientation ( ) const
pure virtual

y axis orientation, 1 means detector width increases with local y

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by operator<<().

◆ yCentreOfStripPlane()

virtual float RadialStripTopology::yCentreOfStripPlane ( ) const
pure virtual

Offset in local y between midpoint of detector (strip plane) extent and local origin

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Referenced by operator<<().

◆ yDistanceToIntersection()

virtual float RadialStripTopology::yDistanceToIntersection ( float  y) const
pure virtual

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

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

◆ yExtentOfStripPlane()

virtual float RadialStripTopology::yExtentOfStripPlane ( ) const
pure virtual

y extent of strip plane

Implemented in TkRadialStripTopology, and CSCRadialStripTopology.

Friends And Related Function Documentation

◆ operator<<

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

Definition at line 9 of file RadialStripTopology.cc.

9  {
10  os << "RadialStripTopology " << std::endl
11  << " " << std::endl
12  << "number of strips " << rst.nstrips() << std::endl
13  << "centre to whereStripsMeet " << rst.centreToIntersection() << std::endl
14  << "detector height in y " << rst.detHeight() << std::endl
15  << "angular width of strips " << rst.phiPitch() << std::endl
16  << "phi of one edge " << rst.phiOfOneEdge() << std::endl
17  << "y axis orientation " << rst.yAxisOrientation() << std::endl
18  << "y of centre of strip plane " << rst.yCentreOfStripPlane() << std::endl;
19  return os;
20 }
virtual float centreToIntersection() const =0
virtual float yAxisOrientation() const =0
virtual float phiPitch(void) const =0
virtual float detHeight() const =0
virtual float yCentreOfStripPlane() const =0
int nstrips() const override=0
virtual float phiOfOneEdge() const =0