12 : numberOfStrips_(ns), angularWidth_(aw), detHeight_(
dh), centreToIntersection_(r0) {
18 LogTrace(
"GEMStripTopology") <<
"Constructing GEMStripTopology with" 19 <<
" nstrips = " << ns <<
" angular width = " << aw <<
" det. height = " <<
dh 20 <<
" r0 = " << r0 <<
"\n";
24 : numberOfStrips_(ns), angularWidth_(aw), detHeight_(
dh), centreToIntersection_(r0), yAxisOrientation_(yAx) {
29 LogTrace(
"GEMStripTopology") <<
"Constructing GEMStripTopology with" 30 <<
" nstrips = " << ns <<
" angular width = " << aw <<
" det. height = " <<
dh 31 <<
" r0 = " << r0 <<
" yAxOrientation = " << yAx <<
"\n";
58 const double cs(s1 *
c1), s2(s1 * s1),
95 cs(
t / (1 +
t *
t)), s2(
t *
cs), c2(1 - s2),
101 uu((c2 *
e.xx() - 2 *
cs *
e.xy() + s2 *
e.yy()) * T2), vv((s2 *
e.xx() + 2 *
cs *
e.xy() + c2 *
e.yy()) * R2),
102 uv((
cs * (
e.xx() -
e.yy()) +
e.xy() * (c2 - s2)) *
std::sqrt(T2 * R2));
113 const float fangle =
stripAngle(static_cast<float>(istrip) - 0.5);
float centreToIntersection() const
Point3DBase< Scalar, LocalTag > LocalPoint
float strip(const LocalPoint &) const override
MeasurementError measurementError(const LocalPoint &, const LocalError &) const override
int nstrips() const override
Sin< T >::type sin(const T &t)
float yDistanceToIntersection(float y) const
int channel(const LocalPoint &) const override
int nearestStrip(const LocalPoint &) const
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
float angularWidth() const
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
float localPitch(const LocalPoint &) const override
float phiOfOneEdge() const
GEMStripTopology(int ns, float aw, float dh, float r0)
float stripAngle(float strip) const override
float yAxisOrientation() const
float localStripLength(const LocalPoint &) const override
float yCentreOfStripPlane() const
MeasurementPoint measurementPosition(const LocalPoint &) const override
float xOfStrip(int strip, float y) const
LocalPoint localPosition(float strip) const override
LocalError localError(float strip, float stripErr2) const override
float originToIntersection() const
Power< A, B >::type pow(const A &a, const B &b)
float pitch() const override
MPlex< T, D1, D2, N > atan2(const MPlex< T, D1, D2, N > &y, const MPlex< T, D1, D2, N > &x)