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
TkRadialStripTopology Class Reference

#include <TkRadialStripTopology.h>

Inheritance diagram for TkRadialStripTopology:
RadialStripTopology StripTopology Topology

Public Member Functions

float angularWidth () const
 
float centreToIntersection () const
 
int channel (const LocalPoint &) const
 
float coveredStrips (const LocalPoint &lp1, const LocalPoint &lp2) const
 
float detHeight () const
 
LocalError localError (float strip, float stripErr2) const
 
LocalError localError (const MeasurementPoint &, const MeasurementError &) const
 
float localPitch (const LocalPoint &) const
 
LocalPoint localPosition (float strip) const
 
LocalPoint localPosition (const MeasurementPoint &) const
 
float localStripLength (const LocalPoint &) const
 
MeasurementError measurementError (const LocalPoint &, const LocalError &) const
 
MeasurementPoint measurementPosition (const LocalPoint &) const
 
int nearestStrip (const LocalPoint &) const
 
int nstrips () const
 
float originToIntersection () const
 
float phiOfOneEdge () const
 
float phiPitch (void) const
 
float strip (const LocalPoint &) const
 
float stripAngle (float strip) const
 
float stripLength () const
 
 TkRadialStripTopology (int ns, float aw, float dh, float r, int yAx=1, float yMid=0.)
 
float xOfStrip (int strip, float y) const
 
float yAxisOrientation () const
 
float yCentreOfStripPlane () const
 
float yDistanceToIntersection (float y) const
 
float yExtentOfStripPlane () const
 
 ~TkRadialStripTopology ()
 
- Public Member Functions inherited from RadialStripTopology
virtual float pitch () 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 theAWidthInverse
 
float theCentreToIntersection
 
float theDetHeight
 
int theNumberOfStrips
 
float thePhiOfOneEdge
 
double theRadialSigma
 
float theTanAW
 
float theTanOfOneEdge
 
float theYAxisOrientation
 
float yCentre
 

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.

this version is optimized for tracker and is FINAL

Definition at line 28 of file TkRadialStripTopology.h.

Constructor & Destructor Documentation

TkRadialStripTopology::TkRadialStripTopology ( 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 73 of file TkRadialStripTopology.cc.

References funct::abs(), assert(), LogTrace, funct::tan(), theAngularWidth, theNumberOfStrips, thePhiOfOneEdge, theTanOfOneEdge, theYAxisOrientation, and yCentre.

73  :
76  theYAxisOrientation(yAx), yCentre( yMid),
77  theRadialSigma(std::pow(dh, 2.f) * (1.f/12.f)) {
78  // Angular offset of extreme edge of detector, so that angle is
79  // zero for a strip lying along local y axis = long symmetry axis of plane of strips
80  thePhiOfOneEdge = -(0.5*theNumberOfStrips) * theAngularWidth; // always negative!
82  assert(std::abs(thePhiOfOneEdge)<0.15); //
83 
84  LogTrace("TkRadialStripTopology") << "TkRadialStripTopology: constructed with"
85  << " strips = " << ns
86  << " width = " << aw << " rad "
87  << " det_height = " << dh
88  << " ctoi = " << r
89  << " phi_edge = " << thePhiOfOneEdge << " rad "
90  << " y_ax_ori = " << theYAxisOrientation
91  << " y_det_centre = " << yCentre
92  << "\n";
93 }
assert(m_qm.get())
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double f[11][100]
#define LogTrace(id)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
tuple dh
Definition: cuy.py:353
TkRadialStripTopology::~TkRadialStripTopology ( )
inline

Destructor

Definition at line 50 of file TkRadialStripTopology.h.

50 {}

Member Function Documentation

float TkRadialStripTopology::angularWidth ( ) const
inlinevirtual

Angular width of a each strip

Implements RadialStripTopology.

Definition at line 167 of file TkRadialStripTopology.h.

References theAngularWidth.

Referenced by StripCPE::fillParams(), localError(), measurementError(), phiPitch(), and stripAngle().

float TkRadialStripTopology::centreToIntersection ( ) const
inlinevirtual

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 189 of file TkRadialStripTopology.h.

References theCentreToIntersection.

Referenced by localError().

int TkRadialStripTopology::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 RadialStripTopology.

Definition at line 95 of file TkRadialStripTopology.cc.

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

95 { return std::min( int( strip(lp) ), theNumberOfStrips-1 ) ;}
float strip(const LocalPoint &) const
T min(T a, T b)
Definition: MathUtil.h:58
float TkRadialStripTopology::coveredStrips ( const LocalPoint lp1,
const LocalPoint lp2 
) const
virtual

Reimplemented from StripTopology.

Definition at line 117 of file TkRadialStripTopology.cc.

References theAWidthInverse, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and yDistanceToIntersection().

117  {
118  // http://en.wikipedia.org/wiki/List_of_trigonometric_identities#Angle_sum_and_difference_identities
119  // atan(a)-atan(b) = atan( (a-b)/(1+a*b) )
120  // avoid divisions
121  // float t1 = lp1.x()/yDistanceToIntersection( lp1.y() );
122  // float t2 = lp2.x()/yDistanceToIntersection( lp2.y() );
123  // float t = (t1-t2)/(1.+t1*t2);
124  auto y1 = yDistanceToIntersection( lp1.y() );
125  auto y2 = yDistanceToIntersection( lp2.y() );
126  auto x1 = lp1.x();
127  auto x2 = lp2.x();
128 
129  auto t = (y2*x1 -y1*x2)/(y1*y2 + x1*x2);
130 
131 
132 #ifdef MATH_STS
133  statS.add(t);
134 #endif
135 // std::cout << "atans " << atanClip(t)
136 // <<" "<< std::atan2(lp1.x(),yDistanceToIntersection(lp1.y()) )
137 // -std::atan2(lp2.x(),yDistanceToIntersection(lp2.y()) ) << std::endl;
138  // clip???
139  return atanClip(t)*theAWidthInverse;
140  // return (measurementPosition(lp1)-measurementPosition(lp2)).x();
141 }
float yDistanceToIntersection(float y) const
T y() const
Definition: PV3DBase.h:63
T x() const
Definition: PV3DBase.h:62
float TkRadialStripTopology::detHeight ( ) const
inlinevirtual

Length of long symmetry axis of plane of strips

Implements RadialStripTopology.

Definition at line 177 of file TkRadialStripTopology.h.

References theDetHeight.

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

LocalError TkRadialStripTopology::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 RadialStripTopology.

Definition at line 167 of file TkRadialStripTopology.cc.

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

167  {
168  double phi = stripAngle(strip);
169 
170  const double
171  t1(tan15(phi)), // std::tan(phif)), // (vdt::fast_tanf(phif)),
172  t2(t1*t1),
173  // s1(std::sin(phi)), c1(std::cos(phi)),
174  // cs(s1*c1), s2(s1*s1), c2(1-s2), // rotation matrix
175 
176  tt( stripErr2 * std::pow( centreToIntersection()*angularWidth() ,2.f) ), // tangential sigma^2 *c2
177  rr( theRadialSigma), // radial sigma^2( uniform prob density along strip) *c2
178 
179  xx( tt + t2*rr ),
180  yy( t2*tt + rr ),
181  xy( t1*( rr - tt ) );
182 
183  return LocalError( xx, xy, yy );
184 }
float stripAngle(float strip) const
float centreToIntersection() const
float strip(const LocalPoint &) const
double f[11][100]
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
Definition: DDAxes.h:10
LocalError TkRadialStripTopology::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 RadialStripTopology.

Definition at line 186 of file TkRadialStripTopology.cc.

References angularWidth(), alignmentValidation::c1, counter::c2, 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().

186  {
187  const double
188  phi(stripAngle(mp.x())), s1(std::sin(phi)), c1(std::cos(phi)),
189  cs(s1*c1), s2(s1*s1), c2(1-s2), // rotation matrix
190 
191  T( angularWidth() * ( centreToIntersection() + yAxisOrientation()*mp.y()*detHeight()) / c1 ), // tangential measurement unit (local pitch)
192  R( detHeight()/ c1 ), // radial measurement unit (strip length)
193  tt( me.uu() * T*T ), // tangential sigma^2
194  rr( me.vv() * R*R ), // radial sigma^2
195  tr( me.uv() * T*R ),
196 
197  xx( c2*tt + 2*cs*tr + s2*rr ),
198  yy( s2*tt - 2*cs*tr + c2*rr ),
199  xy( cs*( rr - tt ) + tr*( c2 - s2 ) );
200 
201  return LocalError( xx, xy, yy );
202 }
float stripAngle(float strip) const
float centreToIntersection() const
float vv() const
auto_ptr< ClusterSequence > cs
T y() const
Definition: PV2DBase.h:46
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
tuple s2
Definition: indexGen.py:106
tuple c2
Definition: counter.py:145
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
float uu() const
T x() const
Definition: PV2DBase.h:45
long double T
float uv() const
Definition: DDAxes.h:10
float TkRadialStripTopology::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 RadialStripTopology.

Definition at line 222 of file TkRadialStripTopology.cc.

References funct::abs(), theTanAW, x, PV3DBase< T, PVType, FrameType >::x(), detailsBasic3DVector::y, PV3DBase< T, PVType, FrameType >::y(), and yDistanceToIntersection().

Referenced by StripCPE::fillParams().

222  {
223  // this should be ~ y*(tan(phi+aw)-tan(phi)) = -x + y*(tan(aw)+tan(phi))/(1.f-tan(aw)*tan(phi)) tan(phi)=x/y
224  float y = yDistanceToIntersection( lp.y() );
225  float x = std::abs(lp.x());
226  return y*(y*theTanAW+x)/(y-theTanAW*x)-x;
227 }
float yDistanceToIntersection(float y) const
T y() const
Definition: PV3DBase.h:63
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Definition: DDAxes.h:10
T x() const
Definition: PV3DBase.h:62
LocalPoint TkRadialStripTopology::localPosition ( float  strip) const
virtual

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

Implements RadialStripTopology.

Definition at line 143 of file TkRadialStripTopology.cc.

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

143  {
145 }
float stripAngle(float strip) const
float originToIntersection() const
float strip(const LocalPoint &) const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
Local3DPoint LocalPoint
Definition: LocalPoint.h:11
LocalPoint TkRadialStripTopology::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 RadialStripTopology.

Definition at line 147 of file TkRadialStripTopology.cc.

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

147  {
148  const float // y = (L/cos(phi))*mp.y()*cos(phi)
149  y( mp.y()*detHeight() + yCentreOfStripPlane() ),
151  return LocalPoint( x, y );
152 }
float stripAngle(float strip) const
T y() const
Definition: PV2DBase.h:46
float yDistanceToIntersection(float y) 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:45
float TkRadialStripTopology::localStripLength ( const LocalPoint lp) const
virtual

Length of a strip passing through a given LocalPpoint

Implements RadialStripTopology.

Definition at line 101 of file TkRadialStripTopology.cc.

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

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

Implements RadialStripTopology.

Definition at line 204 of file TkRadialStripTopology.cc.

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

204  {
205  const double
206  yHitToInter(yDistanceToIntersection(p.y())),
207  t(yAxisOrientation() * p.x() / yHitToInter), // tan(strip angle)
208  cs(t/(1+t*t)), s2(t*cs), c2(1-s2), // rotation matrix
209 
210  T2( 1./(std::pow(angularWidth(),2.f) * ( std::pow(p.x(),2.f) + std::pow(yHitToInter,2)) )), // 1./tangential measurement unit (local pitch) ^2
211  R2( c2/std::pow(detHeight(),2.f) ), // 1./ radial measurement unit (strip length) ^2
212 
213  uu( ( c2*e.xx() - 2*cs*e.xy() + s2*e.yy() ) * T2 ),
214  vv( ( s2*e.xx() + 2*cs*e.xy() + c2*e.yy() ) * R2 ),
215  uv( ( cs*( e.xx() - e.yy() ) + e.xy()*( c2 - s2 ) ) * std::sqrt (T2*R2) );
216 
217  return MeasurementError(uu, uv, vv);
218 }
float xx() const
Definition: LocalError.h:24
auto_ptr< ClusterSequence > cs
float yDistanceToIntersection(float y) const
T y() const
Definition: PV3DBase.h:63
tuple s2
Definition: indexGen.py:106
tuple c2
Definition: counter.py:145
float xy() const
Definition: LocalError.h:25
float yy() const
Definition: LocalError.h:26
T sqrt(T t)
Definition: SSEVec.h:48
double f[11][100]
T x() const
Definition: PV3DBase.h:62
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MeasurementPoint TkRadialStripTopology::measurementPosition ( const LocalPoint lp) const
virtual

Implements RadialStripTopology.

Definition at line 154 of file TkRadialStripTopology.cc.

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

154  {
155  // phi is [pi/2 - conventional local phi], use atan2(x,y) rather than atan2(y,x)
156  // clip ( at pi/8 or detedge+tollerance?)
157  float t = lp.x()/yDistanceToIntersection(lp.y());
158 #ifdef MATH_STS
159  statM.add(t);
160 #endif
161  const float phi = atanClip(t);
163  ( lp.y() - yCentreOfStripPlane() ) / detHeight() );
164 }
float yDistanceToIntersection(float y) const
T y() const
Definition: PV3DBase.h:63
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
float yCentreOfStripPlane() const
T x() const
Definition: PV3DBase.h:62
Definition: DDAxes.h:10
int TkRadialStripTopology::nearestStrip ( const LocalPoint lp) const
virtual

Nearest strip to given LocalPoint

Implements RadialStripTopology.

Definition at line 97 of file TkRadialStripTopology.cc.

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

97 { return std::min( nstrips(), static_cast<int>( std::max(float(0), strip(lp)) ) + 1);}
float strip(const LocalPoint &) const
T min(T a, T b)
Definition: MathUtil.h:58
int TkRadialStripTopology::nstrips ( ) const
inlinevirtual

Total number of strips

Implements RadialStripTopology.

Definition at line 128 of file TkRadialStripTopology.h.

References theNumberOfStrips.

Referenced by nearestStrip(), and strip().

float TkRadialStripTopology::originToIntersection ( ) const
inlinevirtual

(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 196 of file TkRadialStripTopology.h.

References theCentreToIntersection, and yCentre.

Referenced by localPosition(), and yDistanceToIntersection().

float TkRadialStripTopology::phiOfOneEdge ( ) const
inlinevirtual

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 210 of file TkRadialStripTopology.h.

References thePhiOfOneEdge.

Referenced by measurementPosition(), strip(), and stripAngle().

float TkRadialStripTopology::phiPitch ( void  ) const
inlinevirtual

Phi pitch of each strip (= angular width!)

Implements RadialStripTopology.

Definition at line 172 of file TkRadialStripTopology.h.

References angularWidth().

172 { return angularWidth(); }
float TkRadialStripTopology::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 RadialStripTopology.

Definition at line 110 of file TkRadialStripTopology.cc.

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

Referenced by channel(), and nearestStrip().

110  {
111  // phi is measured from y axis --> sign of angle is sign of x * yAxisOrientation --> use atan2(x,y), not atan2(y,x)
112  const float phi = atanClip(lp.x()/yDistanceToIntersection(lp.y()));
113  const float aStrip = ( phi - phiOfOneEdge() )*theAWidthInverse;
114  return std::max(float(0), std::min( (float)nstrips(), aStrip ));
115 }
float yDistanceToIntersection(float y) const
T y() const
Definition: PV3DBase.h:63
T min(T a, T b)
Definition: MathUtil.h:58
T x() const
Definition: PV3DBase.h:62
Definition: DDAxes.h:10
float TkRadialStripTopology::stripAngle ( float  strip) const
inlinevirtual

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.

Definition at line 122 of file TkRadialStripTopology.h.

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

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

122 { return yAxisOrientation() * (phiOfOneEdge() + strip * angularWidth()) ;}
float strip(const LocalPoint &) const
float TkRadialStripTopology::stripLength ( ) const
inlinevirtual

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

Implements RadialStripTopology.

Definition at line 133 of file TkRadialStripTopology.h.

References theDetHeight.

Referenced by StripCPE::fillParams().

133 { return theDetHeight; }
float TkRadialStripTopology::xOfStrip ( int  strip,
float  y 
) const
virtual

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

Implements RadialStripTopology.

Definition at line 105 of file TkRadialStripTopology.cc.

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

105  {
106  return
107  yAxisOrientation() * yDistanceToIntersection( y ) * std::tan( stripAngle(static_cast<float>(strip) - 0.5f ) );
108 }
float stripAngle(float strip) const
float strip(const LocalPoint &) const
float yDistanceToIntersection(float y) const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
double f[11][100]
float TkRadialStripTopology::yAxisOrientation ( ) const
inlinevirtual

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

Implements RadialStripTopology.

Definition at line 226 of file TkRadialStripTopology.h.

References theYAxisOrientation.

Referenced by localError(), localPosition(), measurementError(), stripAngle(), xOfStrip(), and yDistanceToIntersection().

float TkRadialStripTopology::yCentreOfStripPlane ( ) const
inlinevirtual

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

Implements RadialStripTopology.

Definition at line 231 of file TkRadialStripTopology.h.

References yCentre.

Referenced by localPosition(), and measurementPosition().

231 { return yCentre; }
float TkRadialStripTopology::yDistanceToIntersection ( float  y) const
virtual

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

Implements RadialStripTopology.

Definition at line 99 of file TkRadialStripTopology.cc.

References originToIntersection(), and yAxisOrientation().

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

float TkRadialStripTopology::yExtentOfStripPlane ( ) const
inlinevirtual

y extent of strip plane

Implements RadialStripTopology.

Definition at line 182 of file TkRadialStripTopology.h.

References theDetHeight.

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

Member Data Documentation

float TkRadialStripTopology::theAngularWidth
private

Definition at line 241 of file TkRadialStripTopology.h.

Referenced by angularWidth(), and TkRadialStripTopology().

float TkRadialStripTopology::theAWidthInverse
private

Definition at line 242 of file TkRadialStripTopology.h.

Referenced by coveredStrips(), measurementPosition(), and strip().

float TkRadialStripTopology::theCentreToIntersection
private

Definition at line 245 of file TkRadialStripTopology.h.

Referenced by centreToIntersection(), and originToIntersection().

float TkRadialStripTopology::theDetHeight
private

Definition at line 244 of file TkRadialStripTopology.h.

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

int TkRadialStripTopology::theNumberOfStrips
private

Definition at line 240 of file TkRadialStripTopology.h.

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

float TkRadialStripTopology::thePhiOfOneEdge
private

Definition at line 246 of file TkRadialStripTopology.h.

Referenced by phiOfOneEdge(), and TkRadialStripTopology().

double TkRadialStripTopology::theRadialSigma
private

Definition at line 250 of file TkRadialStripTopology.h.

Referenced by localError().

float TkRadialStripTopology::theTanAW
private

Definition at line 243 of file TkRadialStripTopology.h.

Referenced by localPitch().

float TkRadialStripTopology::theTanOfOneEdge
private

Definition at line 247 of file TkRadialStripTopology.h.

Referenced by TkRadialStripTopology().

float TkRadialStripTopology::theYAxisOrientation
private

Definition at line 248 of file TkRadialStripTopology.h.

Referenced by TkRadialStripTopology(), and yAxisOrientation().

float TkRadialStripTopology::yCentre
private