CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Attributes
TrapezoidalStripTopology Class Referencefinal

#include <TrapezoidalStripTopology.h>

Inheritance diagram for TrapezoidalStripTopology:
StripTopology Topology

Public Member Functions

int channel (const LocalPoint &) const override
 
virtual LocalError localError (const MeasurementPoint &, const MeasurementError &) const =0
 
LocalError localError (const MeasurementPoint &, const MeasurementError &) const override
 
virtual LocalError localError (const MeasurementPoint &mp, const MeasurementError &me, const LocalTrackPred &) const
 conversion taking also the angle from the predicted track state More...
 
LocalError localError (float strip, float stripErr2) const override
 
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...
 
float localPitch (const LocalPoint &) const override
 
virtual LocalPoint localPosition (const MeasurementPoint &) const =0
 
LocalPoint localPosition (const MeasurementPoint &) const override
 
virtual LocalPoint localPosition (const MeasurementPoint &mp, const LocalTrackPred &) const
 conversion taking also the angle from the predicted track state More...
 
LocalPoint localPosition (float strip) const override
 
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 localStripLength (const LocalPoint &aLP) const override
 
MeasurementError measurementError (const LocalPoint &, const LocalError &) const override
 
MeasurementPoint measurementPosition (const LocalPoint &) const override
 
int nstrips () const override
 
float pitch () const override
 
float radius () const
 
float strip (const LocalPoint &) const override
 
float stripAngle (float strip) const override
 
float stripLength () const override
 det heigth (strip length in the middle) More...
 
 TrapezoidalStripTopology (int nstrip, float pitch, float detheight, float r0)
 
 TrapezoidalStripTopology (int nstrip, float pitch, float detheight, float r0, int yAx)
 
- Public Member Functions inherited from StripTopology
virtual float coveredStrips (const LocalPoint &lp1, const LocalPoint &lp2) const
 
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 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 (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 ()
 

Protected Member Functions

virtual float shiftOffset (float pitch_fraction)
 

Private Attributes

float theDetHeight
 
float theDistToBeam
 
int theNumberOfStrips
 
float theOffset
 
float thePitch
 
int theYAxOr
 

Additional Inherited Members

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

Detailed Description

Specialised strip topology for rectangular barrel detectors. The strips are parallel to the local Y axis, so X is the precisely measured coordinate. Specialization of StripTopology for detectors of symmetric trapezoidal shape. The local Y coordinate is parallel to the central strip, and prpendicular to the paralle sides of the trapezoid. The first and last strips are parallel to the corresponding sides of the trapezoid. The pitch is constant at constant y. This topology makes a non-linear transformation: the pitch is not constant along the strips.

Definition at line 21 of file TrapezoidalStripTopology.h.

Constructor & Destructor Documentation

◆ TrapezoidalStripTopology() [1/2]

TrapezoidalStripTopology::TrapezoidalStripTopology ( int  nstrip,
float  pitch,
float  detheight,
float  r0 
)

constructed from: number of strips pitch in the middle det heigth (strip length in the middle) radius of circle passing through the middle of the det with center at the crossing of the two sides.

Definition at line 7 of file TrapezoidalStripTopology.cc.

10  theYAxOr = 1;
11 #ifdef VERBOSE
12  cout << "Constructing TrapezoidalStripTopology with"
13  << " nstrips = " << ns << " pitch = " << p << " length = " << l << " r0 =" << r0 << endl;
14 #endif
15 }

References gather_cfg::cout, cmsLHEtoEOSManager::l, AlCaHLTBitMon_ParallelJobs::p, theNumberOfStrips, theOffset, thePitch, and theYAxOr.

◆ TrapezoidalStripTopology() [2/2]

TrapezoidalStripTopology::TrapezoidalStripTopology ( int  nstrip,
float  pitch,
float  detheight,
float  r0,
int  yAx 
)

Definition at line 17 of file TrapezoidalStripTopology.cc.

20 #ifdef VERBOSE
21  cout << "Constructing TrapezoidalStripTopology with"
22  << " nstrips = " << ns << " pitch = " << p << " length = " << l << " r0 =" << r0 << " yAxOrientation =" << yAx
23  << endl;
24 #endif
25 }

References gather_cfg::cout, cmsLHEtoEOSManager::l, AlCaHLTBitMon_ParallelJobs::p, theNumberOfStrips, theOffset, and thePitch.

Member Function Documentation

◆ channel()

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

Implements Topology.

Definition at line 102 of file TrapezoidalStripTopology.cc.

102  {
103  return std::min(int(strip(lp)), theNumberOfStrips - 1);
104 }

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

◆ localError() [1/6]

virtual LocalError Topology::localError

◆ localError() [2/6]

LocalError TrapezoidalStripTopology::localError ( const MeasurementPoint mp,
const MeasurementError merr 
) const
overridevirtual

Implements Topology.

Definition at line 53 of file TrapezoidalStripTopology.cc.

53  {
54  float lt, lc2, ls2, lslc;
55  float localL, localP;
56  float sl2, sp2, spl;
57  // angle from strip to local frame (see CMS TN / 95-170)
58  lt = -(mp.x() * thePitch + theOffset) * theYAxOr / theDistToBeam;
59  lc2 = 1. / (1. + lt * lt);
60  lslc = lt * lc2;
61  ls2 = 1.f - lc2;
62  localL = theDetHeight / std::sqrt(lc2);
63  localP = localPitch(localPosition(mp));
64  sp2 = merr.uu() * localP * localP;
65  sl2 = merr.vv() * localL * localL;
66  spl = merr.uv() * localP * localL;
67  return LocalError(lc2 * sp2 + ls2 * sl2 - 2 * lslc * spl,
68  lslc * (sp2 - sl2) + (lc2 - ls2) * spl,
69  ls2 * sp2 + lc2 * sl2 + 2 * lslc * spl);
70 }

References localPitch(), localPosition(), mathSSE::sqrt(), theDetHeight, theDistToBeam, theOffset, thePitch, theYAxOr, MeasurementError::uu(), MeasurementError::uv(), MeasurementError::vv(), and PV2DBase< T, PVType, FrameType >::x().

◆ localError() [3/6]

virtual LocalError Topology::localError
inline

conversion taking also the angle from the predicted track state

Definition at line 94 of file Topology.h.

96  {
97  return localError(mp, me);
98  }

◆ localError() [4/6]

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

Implements StripTopology.

Definition at line 37 of file TrapezoidalStripTopology.cc.

37  {
38  float lt, lc2, ls2, lslc;
39  float localL2, localP2;
40  float sl2, sp2;
41  // angle from strip to local frame (see CMS TN / 95-170)
43  lc2 = 1.f / (1. + lt * lt);
44  lslc = lt * lc2;
45  ls2 = 1.f - lc2;
46  localL2 = theDetHeight * theDetHeight / lc2;
47  localP2 = thePitch * thePitch * lc2;
48  sl2 = localL2 / 12.;
49  sp2 = stripErr2 * localP2;
50  return LocalError(lc2 * sp2 + ls2 * sl2, lslc * (sp2 - sl2), ls2 * sp2 + lc2 * sl2);
51 }

References strip(), theDetHeight, theDistToBeam, theOffset, thePitch, and theYAxOr.

◆ localError() [5/6]

virtual LocalError StripTopology::localError

◆ localError() [6/6]

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  }

◆ localPitch()

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

Implements StripTopology.

Definition at line 108 of file TrapezoidalStripTopology.cc.

108  {
109  float x = lp.x();
110  float y = theYAxOr * lp.y() + theDistToBeam;
111  return thePitch * y / (theDistToBeam * std::sqrt(1.f + x * x / (y * y)));
112 }

References f, mathSSE::sqrt(), theDistToBeam, thePitch, theYAxOr, x, PV3DBase< T, PVType, FrameType >::x(), y, and PV3DBase< T, PVType, FrameType >::y().

Referenced by localError(), and measurementError().

◆ localPosition() [1/6]

virtual LocalPoint Topology::localPosition

◆ localPosition() [2/6]

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

Implements Topology.

Definition at line 31 of file TrapezoidalStripTopology.cc.

31  {
32  float y = mp.y() * theDetHeight;
33  float x = (mp.x() * thePitch + theOffset) * (theYAxOr * y + theDistToBeam) / theDistToBeam;
34  return LocalPoint(x, y);
35 }

References theDetHeight, theDistToBeam, theOffset, thePitch, theYAxOr, x, PV2DBase< T, PVType, FrameType >::x(), y, and PV2DBase< T, PVType, FrameType >::y().

◆ localPosition() [3/6]

virtual LocalPoint Topology::localPosition
inline

conversion taking also the angle from the predicted track state

Definition at line 89 of file Topology.h.

89  {
90  return localPosition(mp);
91  }

◆ localPosition() [4/6]

LocalPoint TrapezoidalStripTopology::localPosition ( float  strip) const
overridevirtual

◆ localPosition() [5/6]

virtual LocalPoint StripTopology::localPosition

◆ localPosition() [6/6]

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  }

◆ localStripLength()

float TrapezoidalStripTopology::localStripLength ( const LocalPoint aLP) const
overridevirtual

Implements StripTopology.

Definition at line 125 of file TrapezoidalStripTopology.cc.

125  {
126  float ltan = -lp.x() / (theYAxOr * lp.y() + theDistToBeam) * theYAxOr;
127  float localL = theDetHeight * std::sqrt(1.f + ltan * ltan);
128  // float lcos2 = 1.f/(1.f+ltan*ltan);
129  // float localL = theDetHeight / std::sqrt(lcos2);
130 
131  return localL;
132 }

References f, mathSSE::sqrt(), theDetHeight, theDistToBeam, theYAxOr, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

◆ measurementError()

MeasurementError TrapezoidalStripTopology::measurementError ( const LocalPoint lp,
const LocalError lerr 
) const
overridevirtual

Implements Topology.

Definition at line 86 of file TrapezoidalStripTopology.cc.

86  {
87  float lt, lc2, ls2, lslc;
88  float localL, localP;
89  float sl2, sp2, spl;
90  lt = -lp.x() / (theYAxOr * lp.y() + theDistToBeam) * theYAxOr;
91  lc2 = 1. / (1. + lt * lt);
92  lslc = lt * lc2;
93  ls2 = 1. - lc2;
94  localL = theDetHeight / std::sqrt(lc2);
95  localP = localPitch(lp);
96  sp2 = lc2 * lerr.xx() + ls2 * lerr.yy() + 2 * lslc * lerr.xy();
97  sl2 = ls2 * lerr.xx() + lc2 * lerr.yy() - 2 * lslc * lerr.xy();
98  spl = lslc * (lerr.yy() - lerr.xx()) + (lc2 - ls2) * lerr.xy();
99  return MeasurementError(sp2 / (localP * localP), spl / (localP * localL), sl2 / (localL * localL));
100 }

References localPitch(), mathSSE::sqrt(), theDetHeight, theDistToBeam, theYAxOr, PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), and LocalError::yy().

◆ measurementPosition()

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

◆ nstrips()

int TrapezoidalStripTopology::nstrips ( ) const
overridevirtual

Implements StripTopology.

Definition at line 118 of file TrapezoidalStripTopology.cc.

118 { return theNumberOfStrips; }

References theNumberOfStrips.

Referenced by ME0ReDigiProducer::getStripProperties().

◆ pitch()

float TrapezoidalStripTopology::pitch ( ) const
overridevirtual

Pitch in the middle of the DetUnit

Implements StripTopology.

Definition at line 106 of file TrapezoidalStripTopology.cc.

106 { return thePitch; }

References thePitch.

Referenced by ME0ReDigiProducer::getStripProperties(), and CSCSegtoRPC::thePoints().

◆ radius()

float TrapezoidalStripTopology::radius ( void  ) const
inline

radius of circle passing through the middle of the det with center at the crossing of the two sides.

Definition at line 69 of file TrapezoidalStripTopology.h.

69 { return theDistToBeam; }

References theDistToBeam.

Referenced by ME0ReDigiProducer::getStripProperties(), and ME0ReDigiProducer::TemporaryGeometry::TemporaryGeometry().

◆ shiftOffset()

float TrapezoidalStripTopology::shiftOffset ( float  pitch_fraction)
protectedvirtual

Definition at line 120 of file TrapezoidalStripTopology.cc.

120  {
121  theOffset += thePitch * pitch_fraction;
122  return theOffset;
123 }

References theOffset, and thePitch.

◆ strip()

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

Implements StripTopology.

Definition at line 72 of file TrapezoidalStripTopology.cc.

72  {
73  float aStrip = ((lp.x() * theDistToBeam / (theYAxOr * lp.y() + theDistToBeam)) - theOffset) / thePitch;
74  if (aStrip < 0)
75  aStrip = 0;
76  else if (aStrip > theNumberOfStrips)
77  aStrip = theNumberOfStrips;
78  return aStrip;
79 }

References theDistToBeam, theNumberOfStrips, theOffset, thePitch, theYAxOr, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

Referenced by channel(), localError(), localPosition(), and stripAngle().

◆ stripAngle()

float TrapezoidalStripTopology::stripAngle ( float  strip) const
overridevirtual

angle between strip and symmetry axis

Implements StripTopology.

Definition at line 114 of file TrapezoidalStripTopology.cc.

114  {
115  return std::atan(-(strip * thePitch + theOffset) * theYAxOr / theDistToBeam);
116 }

References strip(), theDistToBeam, theOffset, thePitch, and theYAxOr.

◆ stripLength()

float TrapezoidalStripTopology::stripLength ( ) const
inlineoverridevirtual

Member Data Documentation

◆ theDetHeight

float TrapezoidalStripTopology::theDetHeight
private

◆ theDistToBeam

float TrapezoidalStripTopology::theDistToBeam
private

◆ theNumberOfStrips

int TrapezoidalStripTopology::theNumberOfStrips
private

Definition at line 75 of file TrapezoidalStripTopology.h.

Referenced by channel(), nstrips(), strip(), and TrapezoidalStripTopology().

◆ theOffset

float TrapezoidalStripTopology::theOffset
private

◆ thePitch

float TrapezoidalStripTopology::thePitch
private

◆ theYAxOr

int TrapezoidalStripTopology::theYAxOr
private
TrapezoidalStripTopology::theOffset
float theOffset
Definition: TrapezoidalStripTopology.h:77
DDAxes::y
LocalError::xy
float xy() const
Definition: LocalError.h:23
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
min
T min(T a, T b)
Definition: MathUtil.h:58
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
gather_cfg.cout
cout
Definition: gather_cfg.py:144
DDAxes::x
align::LocalPoint
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
TrapezoidalStripTopology::localPitch
float localPitch(const LocalPoint &) const override
Definition: TrapezoidalStripTopology.cc:108
TrapezoidalStripTopology::theNumberOfStrips
int theNumberOfStrips
Definition: TrapezoidalStripTopology.h:75
LocalError::xx
float xx() const
Definition: LocalError.h:22
MeasurementError
Definition: MeasurementError.h:8
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
MeasurementError::uv
float uv() const
Definition: MeasurementError.h:15
TrapezoidalStripTopology::strip
float strip(const LocalPoint &) const override
Definition: TrapezoidalStripTopology.cc:72
MeasurementPoint
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
Definition: MeasurementPoint.h:12
LocalError
Definition: LocalError.h:12
PV2DBase::y
T y() const
Definition: PV2DBase.h:44
PV2DBase::x
T x() const
Definition: PV2DBase.h:43
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
TrapezoidalStripTopology::theYAxOr
int theYAxOr
Definition: TrapezoidalStripTopology.h:80
TrapezoidalStripTopology::theDetHeight
float theDetHeight
Definition: TrapezoidalStripTopology.h:79
TrapezoidalStripTopology::localError
LocalError localError(float strip, float stripErr2) const override
Definition: TrapezoidalStripTopology.cc:37
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
TrapezoidalStripTopology::thePitch
float thePitch
Definition: TrapezoidalStripTopology.h:76
TrapezoidalStripTopology::localPosition
LocalPoint localPosition(float strip) const override
Definition: TrapezoidalStripTopology.cc:27
MeasurementError::vv
float vv() const
Definition: MeasurementError.h:16
MeasurementError::uu
float uu() const
Definition: MeasurementError.h:14
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:61
TrapezoidalStripTopology::theDistToBeam
float theDistToBeam
Definition: TrapezoidalStripTopology.h:78
LocalError::yy
float yy() const
Definition: LocalError.h:24