Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef CSC_WIRE_GROUPING_H
0002 #define CSC_WIRE_GROUPING_H
0003 
0004 /** \class CSCWireGrouping
0005  * An ABC defining interface for wire-grouping related functionality
0006  * for detectors modelled by a WireTopology.
0007  *
0008  * \author Tim Cox
0009  *
0010  */
0011 
0012 class CSCWireGrouping {
0013 public:
0014   virtual ~CSCWireGrouping() {}
0015 
0016   /**
0017    * Total number of (virtual) wires.
0018    * Some wires may not be implemented in the hardware.
0019    * This is the number which would fill the region covered
0020    * by wires, assuming the constant wire spacing.
0021    */
0022   virtual int numberOfWires() const = 0;
0023 
0024   /**
0025    * How many wire groups
0026    */
0027   virtual int numberOfWireGroups() const = 0;
0028 
0029   /**
0030    * How many wires in a wiregroup
0031    */
0032   virtual int numberOfWiresPerGroup(int wireGroup) const = 0;
0033 
0034   /**
0035    * Wire group containing a given wire
0036    */
0037   virtual int wireGroup(int wire) const = 0;
0038 
0039   /**
0040    * Middle of wire-group.
0041    * This is the central wire no. for a group with an odd no. of wires.
0042    * This is a pseudo-wire no. for a group with an even no. of wires.
0043    * Accordingly, it is non-integer.
0044    */
0045   virtual float middleWireOfGroup(int wireGroup) const = 0;
0046 
0047   /**
0048    * Allow proper copying of derived classes via base pointer
0049    */
0050   virtual CSCWireGrouping* clone() const = 0;
0051 };
0052 
0053 #endif