Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef CSC_STRIP_TOPOLOGY_H
0002 #define CSC_STRIP_TOPOLOGY_H
0003 
0004 #include "Geometry/CSCGeometry/interface/OffsetRadialStripTopology.h"
0005 #include <iosfwd>
0006 #include <utility>  // for std::pair
0007 
0008 /** \class CSCStripTopology
0009  * ABC interface for all endcap muon CSC radial strip topologies. <BR>
0010  * In the Endcap Muon CSCs, the cathode strips are strictly fan-shaped, 
0011  * each subtending a constant azimuthal angle, and project to a point. 
0012  * In every station and ring except for ME13 the nominal (perfect) geometry 
0013  * has this point of intersection (approximately) on the beam line. 
0014  * That constraint is unused as far as possible in order
0015  * to allow non-perfect geometry and misalignment scenarios.<BR>
0016  * Note that the base class RST is concrete but this class is again abstract
0017  * (for both historical and operational reasons.) <BR>
0018  * Alternate strip layers in each CSC are relatively offset by half-a-strip width
0019  * (except in ME11)
0020  * so the CSCStripTopology must be an OffsetRadialStripTopology, rather than
0021  * a simple RadialStripTopology in which the long symmetry axis of the plane
0022  * of strips is aligned with the local y axis of the detector. <BR>
0023  *
0024  * \author Tim Cox
0025  *
0026  */
0027 
0028 class CSCStripTopology : public OffsetRadialStripTopology {
0029 public:
0030   /** 
0031    * Constructor
0032    *    \param ns number of strips
0033    *    \param aw angular width of a strip
0034    *    \param dh detector height (extent of strip plane along long symmetry axis))
0035    *    \param r radial distance from symmetry centre of strip plane to the point at which 
0036    *    the outer edges of the two extreme strips (projected) intersect.
0037    *    \param aoff offset of y symmetry axis from local y as fraction of angular strip width.
0038    *    \param ymid local y of symmetry centre of strip plane _before_ it is offset. <BR>
0039    */
0040   CSCStripTopology(int ns, float aw, float dh, float r, float aoff, float ymid);
0041 
0042   ~CSCStripTopology() override;
0043 
0044   /**
0045    * Return slope and intercept of straight line representing (centre-line of) a strip in 2-dim local coordinates.
0046    *
0047    * The return value is a pair p with p.first = m, p.second = c, where y=mx+c.
0048    */
0049   std::pair<float, float> equationOfStrip(float strip) const;
0050 
0051   /**
0052    * Return local y limits of strip plane
0053    */
0054   std::pair<float, float> yLimitsOfStripPlane() const;
0055 
0056   virtual CSCStripTopology* clone() const = 0;
0057 
0058   /**
0059    * Virtual output function which is used to implement op<<
0060    */
0061   virtual std::ostream& put(std::ostream&) const = 0;
0062 
0063   friend std::ostream& operator<<(std::ostream& s, const CSCStripTopology& r);
0064 };
0065 
0066 #endif