Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:14:22

0001 #ifndef Geometry_CommonTopologies_RectangularStripTopology_H
0002 #define Geometry_CommonTopologies_RectangularStripTopology_H
0003 
0004 /** Specialised strip topology for rectangular barrel detectors.
0005  *  The strips are parallel to the local Y axis, so X is the precisely
0006  *  measured coordinate.
0007  */
0008 
0009 #include "Geometry/CommonTopologies/interface/StripTopology.h"
0010 
0011 class RectangularStripTopology final : public StripTopology {
0012 public:
0013   RectangularStripTopology(int nstrips, float pitch, float detlength);
0014 
0015   using StripTopology::localPosition;
0016   LocalPoint localPosition(float strip) const override;
0017 
0018   LocalPoint localPosition(const MeasurementPoint&) const override;
0019 
0020   using StripTopology::localError;
0021   LocalError localError(float strip, float stripErr2) const override;
0022 
0023   LocalError localError(const MeasurementPoint&, const MeasurementError&) const override;
0024 
0025   float strip(const LocalPoint&) const override;
0026 
0027   // the number of strip span by the segment between the two points..
0028   float coveredStrips(const LocalPoint& lp1, const LocalPoint& lp2) const override;
0029 
0030   MeasurementPoint measurementPosition(const LocalPoint&) const override;
0031 
0032   MeasurementError measurementError(const LocalPoint&, const LocalError&) const override;
0033 
0034   int channel(const LocalPoint& lp) const override { return std::min(int(strip(lp)), theNumberOfStrips - 1); }
0035 
0036   float pitch() const override { return thePitch; }
0037 
0038   float localPitch(const LocalPoint&) const override { return thePitch; }
0039 
0040   float stripAngle(float strip) const override { return 0; }
0041 
0042   int nstrips() const override { return theNumberOfStrips; }
0043 
0044   float stripLength() const override { return theStripLength; }
0045 
0046   float localStripLength(const LocalPoint& /*aLP*/) const override { return stripLength(); }
0047 
0048 private:
0049   float thePitch;
0050   int theNumberOfStrips;
0051   float theStripLength;
0052   float theOffset;
0053 };
0054 
0055 #endif