File indexing completed on 2024-04-06 12:14:22
0001 #ifndef Geometry_CommonTopologies_GEMStripTopology_H
0002 #define Geometry_CommonTopologies_GEMStripTopology_H
0003
0004
0005
0006
0007
0008
0009 #include "Geometry/CommonTopologies/interface/StripTopology.h"
0010
0011 class GEMStripTopology final : public StripTopology {
0012 public:
0013 GEMStripTopology(int ns, float aw, float dh, float r0);
0014 GEMStripTopology(int ns, float aw, float dh, float r0, float yAx);
0015 ~GEMStripTopology() override {}
0016
0017 using StripTopology::localPosition;
0018 LocalPoint localPosition(float strip) const override;
0019
0020 LocalPoint localPosition(const MeasurementPoint&) const override;
0021
0022 using StripTopology::localError;
0023 LocalError localError(float strip, float stripErr2) const override;
0024 LocalError localError(const MeasurementPoint&, const MeasurementError&) const override;
0025
0026 float strip(const LocalPoint&) const override;
0027
0028 int nearestStrip(const LocalPoint&) const;
0029
0030 MeasurementPoint measurementPosition(const LocalPoint&) const override;
0031
0032 MeasurementError measurementError(const LocalPoint&, const LocalError&) const override;
0033
0034 int channel(const LocalPoint&) const override;
0035
0036 float phiPitch(void) const { return angularWidth(); }
0037
0038 float pitch() const override;
0039
0040 float localPitch(const LocalPoint&) const override;
0041
0042 float stripAngle(float strip) const override;
0043
0044 int nstrips() const override { return numberOfStrips_; }
0045
0046 float stripLength() const override { return detHeight_; }
0047
0048 float localStripLength(const LocalPoint&) const override;
0049
0050 float angularWidth() const { return angularWidth_; }
0051 float detHeight() const { return detHeight_; }
0052 float yExtentOfStripPlane() const { return detHeight_; }
0053 float centreToIntersection() const { return centreToIntersection_; }
0054 float radius() const { return centreToIntersection_; }
0055 float originToIntersection() const { return (centreToIntersection_ - yCentre_); }
0056
0057 float yDistanceToIntersection(float y) const;
0058 float xOfStrip(int strip, float y) const;
0059 float yAxisOrientation() const { return yAxisOrientation_; }
0060 float phiOfOneEdge() const { return phiOfOneEdge_; }
0061 float yCentreOfStripPlane() const { return yCentre_; }
0062
0063 private:
0064 int numberOfStrips_;
0065 float angularWidth_;
0066 float detHeight_;
0067 float centreToIntersection_;
0068 float phiOfOneEdge_;
0069 float yAxisOrientation_;
0070 float yCentre_;
0071 };
0072
0073 #endif