Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef Geometry_GEMGeometry_ME0EtaPartition_H
0002 #define Geometry_GEMGeometry_ME0EtaPartition_H
0003 
0004 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
0005 #include "Geometry/CommonDetUnit/interface/GeomDetType.h"
0006 #include "DataFormats/MuonDetId/interface/ME0DetId.h"
0007 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0008 
0009 class StripTopology;
0010 class ME0EtaPartitionSpecs;
0011 
0012 class ME0EtaPartition : public GeomDet {
0013 public:
0014   ME0EtaPartition(ME0DetId id, const BoundPlane::BoundPlanePointer& bp, ME0EtaPartitionSpecs* rrs);
0015   ~ME0EtaPartition() override;
0016 
0017   const ME0EtaPartitionSpecs* specs() const { return specs_; }
0018   ME0DetId id() const { return id_; }
0019 
0020   const Topology& topology() const override;
0021   const StripTopology& specificTopology() const;
0022 
0023   const Topology& padTopology() const;
0024   const StripTopology& specificPadTopology() const;
0025 
0026   const GeomDetType& type() const override;
0027 
0028   /// Return the chamber this roll belongs to
0029   //const ME0Chamber* chamber() const;
0030 
0031   // strip-related methods:
0032 
0033   /// number of readout strips in partition
0034   int nstrips() const;
0035 
0036   /// returns center of strip position for INTEGER strip number
0037   /// that has a value range of [1, nstrip]
0038   LocalPoint centreOfStrip(int strip) const;
0039 
0040   /// returns center of strip position for FRACTIONAL strip number
0041   /// that has a value range of [0., nstrip]
0042   LocalPoint centreOfStrip(float strip) const;
0043   LocalError localError(float strip, float cluster_size = 1.) const;
0044 
0045   /// returns fractional strip number [0..nstrips] for a LocalPoint
0046   /// E.g., if local point hit strip #2, the fractional strip number would be
0047   /// somewhere in the (1., 2] interval
0048   float strip(const LocalPoint& lp) const;
0049 
0050   float pitch() const;
0051   float localPitch(const LocalPoint& lp) const;
0052 
0053   // ME0-CSC pad-related methods:
0054 
0055   /// number of ME0-CSC trigger readout pads in partition
0056   int npads() const;
0057 
0058   /// returns center of pad position for INTEGER pad number
0059   /// that has a value range of [1, npads]
0060   LocalPoint centreOfPad(int pad) const;
0061 
0062   /// returns center of pad position for FRACTIONAL pad number
0063   /// that has a value range of [0., npads]
0064   LocalPoint centreOfPad(float pad) const;
0065 
0066   /// returns FRACTIONAL pad number [0.,npads] for a point
0067   float pad(const LocalPoint& lp) const;
0068 
0069   /// pad pitch in a center
0070   float padPitch() const;
0071   /// pad pitch at a particular point
0072   float localPadPitch(const LocalPoint& lp) const;
0073 
0074   // relations between strips and pads:
0075 
0076   /// returns FRACTIONAL pad number [0.,npads] for an integer strip [1,nstrip]
0077   float padOfStrip(int strip) const;
0078 
0079   /// returns first strip (INT number [1,nstrip]) for pad (an integer [1,npads])
0080   int firstStripInPad(int pad) const;
0081 
0082   /// returns last strip (INT number [1,nstrip]) for pad (an integer [1,npads])
0083   int lastStripInPad(int pad) const;
0084 
0085 private:
0086   ME0DetId id_;
0087   ME0EtaPartitionSpecs* specs_;
0088 };
0089 
0090 #endif