CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes | Friends
CSCRadialStripTopology Class Reference

#include <CSCRadialStripTopology.h>

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

Public Member Functions

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

Private Attributes

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

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

Definition at line 28 of file CSCRadialStripTopology.h.

Constructor & Destructor Documentation

◆ CSCRadialStripTopology()

CSCRadialStripTopology::CSCRadialStripTopology ( int  ns,
float  aw,
float  dh,
float  r,
float  yAx = 1.f,
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 7 of file CSCRadialStripTopology.cc.

References cuy::dh, LogTrace, alignCSCRings::r, theAngularWidth, theNumberOfStrips, thePhiOfOneEdge, theYAxisOrientation, and yCentre.

8  : theNumberOfStrips(ns),
9  theAngularWidth(aw),
13  yCentre(yMid) {
14  // Angular offset of extreme edge of detector, so that angle is
15  // zero for a strip lying along local y axis = long symmetry axis of plane of strips
17 
18  LogTrace("CSCRadialStripTopology") << "CSCRadialStripTopology: constructed with"
19  << " strips = " << ns << " width = " << aw << " rad "
20  << " det_height = " << dh << " ctoi = " << r << " phi_edge = " << thePhiOfOneEdge
21  << " rad "
22  << " y_ax_ori = " << theYAxisOrientation << " y_det_centre = " << yCentre << "\n";
23 }
#define LogTrace(id)
dh
Definition: cuy.py:354

◆ ~CSCRadialStripTopology()

CSCRadialStripTopology::~CSCRadialStripTopology ( )
inlineoverride

Destructor

Definition at line 49 of file CSCRadialStripTopology.h.

49 {}

Member Function Documentation

◆ angularWidth()

float CSCRadialStripTopology::angularWidth ( ) const
inlineoverridevirtual

◆ centreToIntersection()

float CSCRadialStripTopology::centreToIntersection ( ) const
inlineoverridevirtual

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.

Implements RadialStripTopology.

Definition at line 181 of file CSCRadialStripTopology.h.

References theCentreToIntersection.

Referenced by FWRecoGeometryESProducer::addCSCGeometry(), localError(), and CSCGeometryValidate::validateCSCLayerGeometry().

◆ channel()

int CSCRadialStripTopology::channel ( const LocalPoint lp) const
overridevirtual

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

Reimplemented in OffsetRadialStripTopology, CSCUngangedStripTopology, and CSCGangedStripTopology.

Definition at line 25 of file CSCRadialStripTopology.cc.

References SiStripPI::min, strip(), and theNumberOfStrips.

Referenced by CSCUngangedStripTopology::channel().

25  {
26  return std::min(int(strip(lp)), theNumberOfStrips - 1);
27 }
float strip(const LocalPoint &) const override

◆ detHeight()

float CSCRadialStripTopology::detHeight ( ) const
inlineoverridevirtual

Length of long symmetry axis of plane of strips

Implements RadialStripTopology.

Definition at line 169 of file CSCRadialStripTopology.h.

References theDetHeight.

Referenced by localError(), OffsetRadialStripTopology::localPosition(), localPosition(), localStripLength(), measurementError(), and measurementPosition().

◆ localError() [1/2]

LocalError CSCRadialStripTopology::localError ( float  strip,
float  stripErr2 
) const
overridevirtual

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

Definition at line 74 of file CSCRadialStripTopology.cc.

References angularWidth(), centreToIntersection(), detHeight(), f, phi, funct::pow(), findQualityFiles::rr, strip(), stripAngle(), RandomServiceHelper::t1, RandomServiceHelper::t2, funct::tan(), groupFilesInBlocks::tt, geometryCSVtoXML::xx, geometryCSVtoXML::xy, and geometryCSVtoXML::yy.

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

◆ localError() [2/2]

LocalError CSCRadialStripTopology::localError ( const MeasurementPoint mp,
const MeasurementError me 
) const
overridevirtual

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

Definition at line 87 of file CSCRadialStripTopology.cc.

References angularWidth(), alignmentValidation::c1, centreToIntersection(), funct::cos(), callgraph::cs, detHeight(), hlt_dqm_clientPB-live_cfg::me, phi, dttmaxenums::R, findQualityFiles::rr, funct::sin(), stripAngle(), groupFilesInBlocks::tt, PV2DBase< T, PVType, FrameType >::x(), geometryCSVtoXML::xx, geometryCSVtoXML::xy, PV2DBase< T, PVType, FrameType >::y(), yAxisOrientation(), and geometryCSVtoXML::yy.

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

◆ localPitch()

float CSCRadialStripTopology::localPitch ( const LocalPoint lp) const
overridevirtual

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

Implements RadialStripTopology.

Definition at line 118 of file CSCRadialStripTopology.cc.

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

Referenced by CSCLayerGeometry::stripPitch().

118  {
119  // The local pitch is the local x width of the strip at the local (x,y)
120  const int istrip = std::min(nstrips(), static_cast<int>(strip(lp)) + 1); // which strip number
121  const float fangle = stripAngle(static_cast<float>(istrip) - 0.5); // angle of strip centre
122  return yDistanceToIntersection(lp.y()) * std::sin(angularWidth()) /
123  std::pow(std::cos(fangle - 0.5f * angularWidth()), 2.f);
124 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
float strip(const LocalPoint &) const override
T y() const
Definition: PV3DBase.h:60
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
double f[11][100]
float angularWidth() const override
float stripAngle(float strip) const override
float yDistanceToIntersection(float y) const override
int nstrips() const override
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29

◆ localPosition() [1/2]

LocalPoint CSCRadialStripTopology::localPosition ( float  strip) const
overridevirtual

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

Implements RadialStripTopology.

Reimplemented in OffsetRadialStripTopology.

Definition at line 56 of file CSCRadialStripTopology.cc.

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

Referenced by OffsetRadialStripTopology::localPosition().

56  {
58 }
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
float strip(const LocalPoint &) const override
float yAxisOrientation() const override
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
float stripAngle(float strip) const override
float originToIntersection() const override

◆ localPosition() [2/2]

LocalPoint CSCRadialStripTopology::localPosition ( const MeasurementPoint mp) const
overridevirtual

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

Reimplemented in OffsetRadialStripTopology.

Definition at line 60 of file CSCRadialStripTopology.cc.

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

60  {
61  const float // y = (L/cos(phi))*mp.y()*cos(phi)
62  y(mp.y() * detHeight() + yCentreOfStripPlane()),
64  return LocalPoint(x, y);
65 }
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
T x() const
Definition: PV2DBase.h:43
float yAxisOrientation() const override
T y() const
Definition: PV2DBase.h:44
float detHeight() const override
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
float stripAngle(float strip) const override
float yCentreOfStripPlane() const override
float yDistanceToIntersection(float y) const override

◆ localStripLength()

float CSCRadialStripTopology::localStripLength ( const LocalPoint lp) const
overridevirtual

Length of a strip passing through a given LocalPpoint

Implements RadialStripTopology.

Definition at line 41 of file CSCRadialStripTopology.cc.

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

41  {
42  return detHeight() * std::sqrt(1.f + std::pow(lp.x() / yDistanceToIntersection(lp.y()), 2.f));
43 }
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
float detHeight() const override
T sqrt(T t)
Definition: SSEVec.h:23
double f[11][100]
float yDistanceToIntersection(float y) const override
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29

◆ measurementError()

MeasurementError CSCRadialStripTopology::measurementError ( const LocalPoint p,
const LocalError e 
) const
overridevirtual

Implements RadialStripTopology.

Definition at line 103 of file CSCRadialStripTopology.cc.

References angularWidth(), callgraph::cs, detHeight(), MillePedeFileConverter_cfg::e, f, AlCaHLTBitMon_ParallelJobs::p, funct::pow(), mathSSE::sqrt(), submitPVValidationJobs::t, yAxisOrientation(), and yDistanceToIntersection().

103  {
104  const double yHitToInter(yDistanceToIntersection(p.y())),
105  t(yAxisOrientation() * p.x() / yHitToInter), // tan(strip angle)
106  cs(t / (1 + t * t)), s2(t * cs), c2(1 - s2), // rotation matrix
107 
108  T2(1. / (std::pow(angularWidth(), 2.f) *
109  (std::pow(p.x(), 2.f) + std::pow(yHitToInter, 2)))), // 1./tangential measurement unit (local pitch) ^2
110  R2(c2 / std::pow(detHeight(), 2.f)), // 1./ radial measurement unit (strip length) ^2
111 
112  uu((c2 * e.xx() - 2 * cs * e.xy() + s2 * e.yy()) * T2), vv((s2 * e.xx() + 2 * cs * e.xy() + c2 * e.yy()) * R2),
113  uv((cs * (e.xx() - e.yy()) + e.xy() * (c2 - s2)) * std::sqrt(T2 * R2));
114 
115  return MeasurementError(uu, uv, vv);
116 }
float yAxisOrientation() const override
float detHeight() const override
T sqrt(T t)
Definition: SSEVec.h:23
double f[11][100]
float angularWidth() const override
float yDistanceToIntersection(float y) const override
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29

◆ measurementPosition()

MeasurementPoint CSCRadialStripTopology::measurementPosition ( const LocalPoint lp) const
overridevirtual

Implements RadialStripTopology.

Reimplemented in OffsetRadialStripTopology.

Definition at line 67 of file CSCRadialStripTopology.cc.

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

Referenced by OffsetRadialStripTopology::measurementPosition().

67  {
68  const float // phi is [pi/2 - conventional local phi], use atan2(x,y) rather than atan2(y,x)
71  (lp.y() - yCentreOfStripPlane()) / detHeight());
72 }
float phiOfOneEdge() const override
float yAxisOrientation() const override
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
float detHeight() const override
float angularWidth() const override
float yCentreOfStripPlane() const override
float yDistanceToIntersection(float y) const override
MPlex< T, D1, D2, N > atan2(const MPlex< T, D1, D2, N > &y, const MPlex< T, D1, D2, N > &x)
Definition: Matriplex.h:648

◆ nearestStrip()

int CSCRadialStripTopology::nearestStrip ( const LocalPoint lp) const
overridevirtual

Nearest strip to given LocalPoint

Implements RadialStripTopology.

Definition at line 29 of file CSCRadialStripTopology.cc.

References WZElectronSkims53X_cff::max, SiStripPI::min, nstrips(), and strip().

Referenced by CSCLayerGeometry::nearestStrip().

29  {
30  return std::min(nstrips(), static_cast<int>(std::max(float(0), strip(lp))) + 1);
31 }
float strip(const LocalPoint &) const override
int nstrips() const override

◆ nstrips()

int CSCRadialStripTopology::nstrips ( ) const
inlineoverridevirtual

◆ originToIntersection()

float CSCRadialStripTopology::originToIntersection ( ) const
inlineoverridevirtual

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

Implements RadialStripTopology.

Definition at line 188 of file CSCRadialStripTopology.h.

References theCentreToIntersection, and yCentre.

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

◆ phiOfOneEdge()

float CSCRadialStripTopology::phiOfOneEdge ( ) const
inlineoverridevirtual

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

Implements RadialStripTopology.

Definition at line 202 of file CSCRadialStripTopology.h.

References thePhiOfOneEdge.

Referenced by FWRecoGeometryESProducer::addCSCGeometry(), OffsetRadialStripTopology::localPosition(), measurementPosition(), OffsetRadialStripTopology::strip(), strip(), OffsetRadialStripTopology::stripAngle(), stripAngle(), and CSCGeometryValidate::validateCSCLayerGeometry().

◆ phiPitch()

float CSCRadialStripTopology::phiPitch ( void  ) const
inlineoverridevirtual

Phi pitch of each strip (= angular width!)

Implements RadialStripTopology.

Definition at line 164 of file CSCRadialStripTopology.h.

References angularWidth().

Referenced by CSCLayerGeometry::stripPhiPitch().

164 { return angularWidth(); }
float angularWidth() const override

◆ strip()

float CSCRadialStripTopology::strip ( const LocalPoint lp) const
overridevirtual

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

Reimplemented in OffsetRadialStripTopology.

Definition at line 49 of file CSCRadialStripTopology.cc.

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

Referenced by CSCGangedStripTopology::channel(), channel(), localError(), localPitch(), localPosition(), nearestStrip(), stripAngle(), and xOfStrip().

49  {
50  const float // phi is measured from y axis --> sign of angle is sign of x * yAxisOrientation --> use atan2(x,y), not atan2(y,x)
52  aStrip((phi - yAxisOrientation() * phiOfOneEdge()) / angularWidth());
53  return std::max(float(0), std::min((float)nstrips(), aStrip));
54 }
float phiOfOneEdge() const override
float yAxisOrientation() const override
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
float angularWidth() const override
float yDistanceToIntersection(float y) const override
int nstrips() const override
MPlex< T, D1, D2, N > atan2(const MPlex< T, D1, D2, N > &y, const MPlex< T, D1, D2, N > &x)
Definition: Matriplex.h:648

◆ stripAngle()

float CSCRadialStripTopology::stripAngle ( float  strip) const
overridevirtual

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

Reimplemented in OffsetRadialStripTopology.

Definition at line 33 of file CSCRadialStripTopology.cc.

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

Referenced by localError(), localPitch(), localPosition(), and xOfStrip().

33  {
35 }
float phiOfOneEdge() const override
float strip(const LocalPoint &) const override
float yAxisOrientation() const override
float angularWidth() const override

◆ stripLength()

float CSCRadialStripTopology::stripLength ( ) const
inlineoverridevirtual

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

Implements RadialStripTopology.

Definition at line 127 of file CSCRadialStripTopology.h.

References theDetHeight.

◆ xOfStrip()

float CSCRadialStripTopology::xOfStrip ( int  strip,
float  y 
) const
overridevirtual

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

Implements RadialStripTopology.

Definition at line 45 of file CSCRadialStripTopology.cc.

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

Referenced by CSCLayerGeometry::xOfStrip().

45  {
46  return yAxisOrientation() * yDistanceToIntersection(y) * std::tan(stripAngle(static_cast<float>(strip) - 0.5));
47 }
float strip(const LocalPoint &) const override
float yAxisOrientation() const override
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
float stripAngle(float strip) const override
float yDistanceToIntersection(float y) const override

◆ yAxisOrientation()

float CSCRadialStripTopology::yAxisOrientation ( ) const
inlineoverridevirtual

◆ yCentreOfStripPlane()

float CSCRadialStripTopology::yCentreOfStripPlane ( ) const
inlineoverridevirtual

◆ yDistanceToIntersection()

float CSCRadialStripTopology::yDistanceToIntersection ( float  y) const
overridevirtual

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

Implements RadialStripTopology.

Definition at line 37 of file CSCRadialStripTopology.cc.

References originToIntersection(), y, and yAxisOrientation().

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

37  {
39 }
float yAxisOrientation() const override
float originToIntersection() const override

◆ yExtentOfStripPlane()

float CSCRadialStripTopology::yExtentOfStripPlane ( ) const
inlineoverridevirtual

y extent of strip plane

Implements RadialStripTopology.

Definition at line 174 of file CSCRadialStripTopology.h.

References theDetHeight.

Referenced by CSCStripTopology::yLimitsOfStripPlane().

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

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

Member Data Documentation

◆ theAngularWidth

float CSCRadialStripTopology::theAngularWidth
private

Definition at line 234 of file CSCRadialStripTopology.h.

Referenced by angularWidth(), and CSCRadialStripTopology().

◆ theCentreToIntersection

float CSCRadialStripTopology::theCentreToIntersection
private

Definition at line 236 of file CSCRadialStripTopology.h.

Referenced by centreToIntersection(), and originToIntersection().

◆ theDetHeight

float CSCRadialStripTopology::theDetHeight
private

Definition at line 235 of file CSCRadialStripTopology.h.

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

◆ theNumberOfStrips

int CSCRadialStripTopology::theNumberOfStrips
private

Definition at line 233 of file CSCRadialStripTopology.h.

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

◆ thePhiOfOneEdge

float CSCRadialStripTopology::thePhiOfOneEdge
private

Definition at line 237 of file CSCRadialStripTopology.h.

Referenced by CSCRadialStripTopology(), and phiOfOneEdge().

◆ theYAxisOrientation

float CSCRadialStripTopology::theYAxisOrientation
private

Definition at line 238 of file CSCRadialStripTopology.h.

Referenced by CSCRadialStripTopology(), and yAxisOrientation().

◆ yCentre

float CSCRadialStripTopology::yCentre
private