9 #include "CLHEP/Units/GlobalSystemOfUnits.h"
21 float wireAngleInDegrees ) :
22 theWireGrouping( 0 ), theWireGeometry( 0 ),
23 theAlignmentPinToFirstWire( wg.alignmentPinToFirstWire / 10. ) {
32 const float zeroprecision = 1.E-06;
34 float wireAngleInRadians = wireAngleInDegrees*degree;
43 "CSCWireTopology constructing CSCWireGeometry with:\n" <<
44 " wireSpacing = " << wireSpacing*10. <<
" (mm) " <<
45 ", yOfFirstWire = " << yOfFirstWire <<
" (cm) " <<
46 ", wireAngle = " << wireAngleInDegrees <<
" (deg) = " << wireAngleInRadians <<
" (rads)" <<
47 ", extent: n, w, l = " << nw <<
", " << ww <<
", " << lw <<
" (cm)";
49 if ( fabs(wireAngleInDegrees) > zeroprecision ) {
58 theAlignmentPinToFirstWire(mewt.theAlignmentPinToFirstWire) {
67 if ( &mewt !=
this ) {
87 edm::LogWarning(
"CSC") <<
"CSCWireTopology: localPosition unimplemented. Don't use it." <<
"\n";
93 edm::LogWarning(
"CSC") <<
"CSCWireTopology: localError unimplemented. Don't use it." <<
"\n";
99 edm::LogWarning(
"CSC") <<
"CSCWireTopology: measurementPosition unimplemented. Don't use it." <<
"\n";
105 edm::LogWarning(
"CSC") <<
"CSCWireTopology: measurementError unimplemented. Don't use it." <<
"\n";
141 if ( y < ylim.first ) {
144 else if ( y > ylim.second ) {
155 if ( y < ylim.first ) {
158 else if ( y > ylim.second ) {
virtual int channel(const LocalPoint &p) const
virtual CSCWireGeometry * clone() const =0
std::pair< float, float > equationOfWire(float wire) const
CSCWireTopology(const CSCWireGroupPackage &wg, double yOfFirstWire, float wireAngleInDegrees)
double narrowWidthOfWirePlane
virtual int wireGroup(int wire) const =0
virtual int numberOfWiresPerGroup(int wireGroup) const =0
double theAlignmentPinToFirstWire
CSCWireGrouping * theWireGrouping
Container wiresInEachGroup
double wireSpacing() const
float yOfWireGroup(int wireGroup, float x=0.) const
CSCWireTopology & operator=(const CSCWireTopology &)
virtual float yOfWire(float wire, float x=0.) const =0
bool insideYOfWirePlane(float y) const
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
std::pair< float, float > yLimitsOfWirePlane() const
double wideWidthOfWirePlane
virtual int nearestWire(const LocalPoint &lp) const =0
virtual LocalError localError(const MeasurementPoint &, const MeasurementError &) const
float middleWireOfGroup(int wireGroup) const
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const
virtual CSCWireGrouping * clone() const =0
std::pair< float, float > equationOfWire(float wire) const
virtual MeasurementPoint measurementPosition(const LocalPoint &) const
virtual LocalPoint localPosition(const MeasurementPoint &) const
float yResolution(int wireGroup=1) const
float restrictToYOfWirePlane(float y) const
virtual ~CSCWireTopology()
Container consecutiveGroups
CSCWireGeometry * theWireGeometry