File indexing completed on 2024-04-06 12:14:23
0001 #ifndef Geometry_CommonTopologies_TrapezoidalStripTopology_H
0002 #define Geometry_CommonTopologies_TrapezoidalStripTopology_H
0003
0004
0005
0006
0007
0008
0009 #include "Geometry/CommonTopologies/interface/StripTopology.h"
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 class TrapezoidalStripTopology final : public StripTopology {
0022 public:
0023
0024
0025
0026
0027
0028
0029
0030 TrapezoidalStripTopology(int nstrip, float pitch, float detheight, float r0);
0031
0032 TrapezoidalStripTopology(int nstrip, float pitch, float detheight, float r0, int yAx);
0033
0034 using StripTopology::localPosition;
0035 LocalPoint localPosition(float strip) const override;
0036
0037 LocalPoint localPosition(const MeasurementPoint&) const override;
0038
0039 using StripTopology::localError;
0040 LocalError localError(float strip, float stripErr2) const override;
0041
0042 LocalError localError(const MeasurementPoint&, const MeasurementError&) const override;
0043
0044 float strip(const LocalPoint&) const override;
0045
0046 MeasurementPoint measurementPosition(const LocalPoint&) const override;
0047
0048 MeasurementError measurementError(const LocalPoint&, const LocalError&) const override;
0049
0050 int channel(const LocalPoint&) const override;
0051
0052
0053 float pitch() const override;
0054
0055 float localPitch(const LocalPoint&) const override;
0056
0057
0058 float stripAngle(float strip) const override;
0059
0060 int nstrips() const override;
0061
0062
0063 float stripLength() const override { return theDetHeight; }
0064 float localStripLength(const LocalPoint& aLP) const override;
0065
0066
0067
0068
0069 float radius() const { return theDistToBeam; }
0070
0071 protected:
0072 virtual float shiftOffset(float pitch_fraction);
0073
0074 private:
0075 int theNumberOfStrips;
0076 float thePitch;
0077 float theOffset;
0078 float theDistToBeam;
0079 float theDetHeight;
0080 int theYAxOr;
0081 };
0082
0083 #endif