![]() |
![]() |
00001 #ifndef Geometry_CommonTopologies_RectangularStripTopology_H 00002 #define Geometry_CommonTopologies_RectangularStripTopology_H 00003 00009 #include "Geometry/CommonTopologies/interface/StripTopology.h" 00010 00011 class RectangularStripTopology GCC11_FINAL : public StripTopology { 00012 public: 00013 00014 RectangularStripTopology(int nstrips, float pitch, float detlength); 00015 00016 virtual LocalPoint localPosition(float strip) const; 00017 00018 virtual LocalPoint localPosition(const MeasurementPoint&) const; 00019 00020 virtual LocalError 00021 localError(float strip, float stripErr2) const; 00022 00023 virtual LocalError 00024 localError(const MeasurementPoint&, const MeasurementError&) const; 00025 00026 virtual float strip(const LocalPoint&) const; 00027 00028 // the number of strip span by the segment between the two points.. 00029 virtual float coveredStrips(const LocalPoint& lp1, const LocalPoint& lp2) const ; 00030 00031 00032 virtual MeasurementPoint measurementPosition(const LocalPoint&) const; 00033 00034 virtual MeasurementError 00035 measurementError(const LocalPoint&, const LocalError&) const; 00036 00037 virtual int channel(const LocalPoint& lp) const { return std::min(int(strip(lp)),theNumberOfStrips-1); } 00038 00039 virtual float pitch() const { return thePitch; } 00040 00041 virtual float localPitch(const LocalPoint&) const { return thePitch;} 00042 00043 virtual float stripAngle(float strip) const { return 0;} 00044 00045 virtual int nstrips() const { return theNumberOfStrips;} 00046 00047 virtual float stripLength() const {return theStripLength;} 00048 00049 virtual float localStripLength(const LocalPoint& /*aLP*/) const { 00050 return stripLength(); 00051 } 00052 00053 private: 00054 float thePitch; 00055 int theNumberOfStrips; 00056 float theStripLength; 00057 float theOffset; 00058 }; 00059 00060 #endif 00061 00062