CMS 3D CMS Logo

CSCWireTopology.h
Go to the documentation of this file.
1 #ifndef CSC_WIRE_TOPOLOGY_H
2 #define CSC_WIRE_TOPOLOGY_H
3 
16 #include <utility> // for std::pair
17 
18 class CSCWireTopology : public WireTopology {
19 public:
20  ~CSCWireTopology() override;
21 
26  CSCWireTopology(const CSCWireGroupPackage& wg, double yOfFirstWire, float wireAngleInDegrees);
31 
36 
41  LocalPoint localPosition(const MeasurementPoint&) const override;
42  LocalError localError(const MeasurementPoint&, const MeasurementError&) const override;
43  MeasurementPoint measurementPosition(const LocalPoint&) const override;
44  MeasurementError measurementError(const LocalPoint&, const LocalError&) const override;
45 
50  int channel(const LocalPoint& p) const override;
51 
59  double wireSpacing() const { return theWireGeometry->wireSpacing(); }
60 
65  float wirePitch() const override { return static_cast<float>(wireSpacing()); }
66 
70  float wireAngle() const override { return theWireGeometry->wireAngle(); }
71 
76  int nearestWire(const LocalPoint& lp) const override { return theWireGeometry->nearestWire(lp); }
77 
81  float yOfWire(float wire, float x = 0.) const { return theWireGeometry->yOfWire(wire, x); }
82 
87 
91  double wideWidthOfPlane() const { return theWireGeometry->wideWidthOfPlane(); }
92 
96  double lengthOfPlane() const { return theWireGeometry->lengthOfPlane(); }
97 
108  int numberOfWires() const override { return theWireGrouping->numberOfWires(); }
109 
114 
119 
123  int wireGroup(int wire) const { return theWireGrouping->wireGroup(wire); }
124 
132 
140  float yOfWireGroup(int wireGroup, float x = 0.) const;
141 
148  float yResolution(int wireGroup = 1) const;
149 
155  double extentOfWirePlane() const { return wireSpacing() * (numberOfWires() - 1); }
156 
162  std::pair<LocalPoint, LocalPoint> wireEnds(float wire) const { return theWireGeometry->wireEnds(wire); }
163 
167  std::vector<float> wireValues(float wire) const { return theWireGeometry->wireValues(wire); }
168 
174  std::pair<float, float> equationOfWire(float wire) const;
175 
179  float restrictToYOfWirePlane(float y) const;
180 
184  bool insideYOfWirePlane(float y) const;
185 
186 private:
187  CSCWireGrouping* theWireGrouping; // handles grouping of wires for read out
188  CSCWireGeometry* theWireGeometry; // handles non-zero angle w.r.t x axis
189 
190  double theAlignmentPinToFirstWire; //@@ Not sure this is actually required!
191 };
192 
193 #endif
CSCWireTopology::insideYOfWirePlane
bool insideYOfWirePlane(float y) const
Definition: CSCWireTopology.cc:148
Point2DBase
Definition: Point2DBase.h:9
DDAxes::y
CSCWireTopology::wireAngle
float wireAngle() const override
Definition: CSCWireTopology.h:70
CSCWireTopology::theAlignmentPinToFirstWire
double theAlignmentPinToFirstWire
Definition: CSCWireTopology.h:190
CSCWireTopology::theWireGeometry
CSCWireGeometry * theWireGeometry
Definition: CSCWireTopology.h:188
CSCWireTopology::localPosition
LocalPoint localPosition(const MeasurementPoint &) const override
Definition: CSCWireTopology.cc:84
CSCWireGrouping.h
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CSCWireTopology::lengthOfPlane
double lengthOfPlane() const
Definition: CSCWireTopology.h:96
CSCWireTopology::yOfWireGroup
float yOfWireGroup(int wireGroup, float x=0.) const
Definition: CSCWireTopology.cc:114
CSCWireGeometry::wireSpacing
double wireSpacing() const
Definition: CSCWireGeometry.h:35
CSCWireTopology::nearestWire
int nearestWire(const LocalPoint &lp) const override
Definition: CSCWireTopology.h:76
CSCWireTopology::operator=
CSCWireTopology & operator=(const CSCWireTopology &)
Definition: CSCWireTopology.cc:65
CSCWireGrouping::numberOfWireGroups
virtual int numberOfWireGroups() const =0
CSCWireTopology::extentOfWirePlane
double extentOfWirePlane() const
Definition: CSCWireTopology.h:155
DDAxes::x
CSCWireTopology::numberOfWires
int numberOfWires() const override
Definition: CSCWireTopology.h:108
CSCWireTopology::CSCWireTopology
CSCWireTopology(const CSCWireGroupPackage &wg, double yOfFirstWire, float wireAngleInDegrees)
Definition: CSCWireTopology.cc:21
CSCWireTopology::narrowWidthOfPlane
double narrowWidthOfPlane() const
Definition: CSCWireTopology.h:86
CSCWireTopology::channel
int channel(const LocalPoint &p) const override
Definition: CSCWireTopology.cc:108
CSCWireTopology::equationOfWire
std::pair< float, float > equationOfWire(float wire) const
Definition: CSCWireTopology.cc:131
CSCWireTopology::measurementPosition
MeasurementPoint measurementPosition(const LocalPoint &) const override
Definition: CSCWireTopology.cc:96
CSCWireGrouping::middleWireOfGroup
virtual float middleWireOfGroup(int wireGroup) const =0
CSCWireGeometry::yOfWire
virtual float yOfWire(float wire, float x=0.) const =0
CSCWireTopology::middleWireOfGroup
float middleWireOfGroup(int wireGroup) const
Definition: CSCWireTopology.h:131
CSCWireGroupPackage.h
CSCWireTopology::wireEnds
std::pair< LocalPoint, LocalPoint > wireEnds(float wire) const
Definition: CSCWireTopology.h:162
CSCWireTopology::yResolution
float yResolution(int wireGroup=1) const
Definition: CSCWireTopology.cc:119
CSCWireTopology::measurementError
MeasurementError measurementError(const LocalPoint &, const LocalError &) const override
Definition: CSCWireTopology.cc:102
MeasurementError
Definition: MeasurementError.h:8
WireTopology.h
CSCWireGeometry.h
WireTopology
Definition: WireTopology.h:16
CSCWireTopology::wireValues
std::vector< float > wireValues(float wire) const
Definition: CSCWireTopology.h:167
Point3DBase< float, LocalTag >
CSCWireTopology::restrictToYOfWirePlane
float restrictToYOfWirePlane(float y) const
Definition: CSCWireTopology.cc:135
CSCWireGeometry
Definition: CSCWireGeometry.h:17
LocalError
Definition: LocalError.h:12
CSCWireTopology::wirePitch
float wirePitch() const override
Definition: CSCWireTopology.h:65
CSCWireGeometry::narrowWidthOfPlane
double narrowWidthOfPlane() const
Definition: CSCWireGeometry.h:45
CSCWireGroupPackage
Definition: CSCWireGroupPackage.h:18
CSCWireTopology::wideWidthOfPlane
double wideWidthOfPlane() const
Definition: CSCWireTopology.h:91
CSCWireGrouping::numberOfWires
virtual int numberOfWires() const =0
CSCWireGeometry::lengthOfPlane
double lengthOfPlane() const
Definition: CSCWireGeometry.h:55
CSCWireTopology::wireGroup
int wireGroup(int wire) const
Definition: CSCWireTopology.h:123
CSCWireTopology::~CSCWireTopology
~CSCWireTopology() override
Definition: CSCWireTopology.cc:16
CSCWireGeometry::wireAngle
virtual float wireAngle() const =0
CSCWireTopology::yOfWire
float yOfWire(float wire, float x=0.) const
Definition: CSCWireTopology.h:81
CSCWireTopology::localError
LocalError localError(const MeasurementPoint &, const MeasurementError &) const override
Definition: CSCWireTopology.cc:90
CSCWireTopology
Definition: CSCWireTopology.h:18
CSCWireTopology::theWireGrouping
CSCWireGrouping * theWireGrouping
Definition: CSCWireTopology.h:187
CSCWireGeometry::wireEnds
std::pair< LocalPoint, LocalPoint > wireEnds(float wire) const
Definition: CSCWireGeometry.cc:32
CSCWireGrouping::wireGroup
virtual int wireGroup(int wire) const =0
CSCWireGeometry::wideWidthOfPlane
double wideWidthOfPlane() const
Definition: CSCWireGeometry.h:50
CSCWireGrouping::numberOfWiresPerGroup
virtual int numberOfWiresPerGroup(int wireGroup) const =0
CSCWireTopology::numberOfWiresPerGroup
int numberOfWiresPerGroup(int wireGroup) const
Definition: CSCWireTopology.h:118
CSCWireTopology::numberOfWireGroups
int numberOfWireGroups() const
Definition: CSCWireTopology.h:113
CSCWireTopology::wireSpacing
double wireSpacing() const
Definition: CSCWireTopology.h:59
CSCWireGeometry::nearestWire
virtual int nearestWire(const LocalPoint &lp) const =0
CSCWireGeometry::wireValues
std::vector< float > wireValues(float wire) const
Definition: CSCWireGeometry.cc:16
CSCWireGrouping
Definition: CSCWireGrouping.h:12