13 using namespace geant_units;
14 using namespace geant_units::operators;
17 delete theWireGrouping;
18 delete theWireGeometry;
22 : theWireGrouping(nullptr), theWireGeometry(nullptr), theAlignmentPinToFirstWire(wg.alignmentPinToFirstWire / 10.) {
29 const float zeroprecision = 1.E-06;
39 LogTrace(
"CSCWireTopology|CSC") <<
"CSCWireTopology constructing CSCWireGeometry with:\n"
40 <<
" wireSpacing = " << wireSpacing * 10. <<
" (mm) "
41 <<
", yOfFirstWire = " << yOfFirstWire <<
" (cm) "
42 <<
", wireAngle = " << wireAngleInDegrees <<
" (deg) = " << wireAngleInRadians
44 <<
", extent: n, w, l = " << nw <<
", " << ww <<
", " << lw <<
" (cm)";
46 if (fabs(wireAngleInDegrees) > zeroprecision) {
54 : theAlignmentPinToFirstWire(mewt.theAlignmentPinToFirstWire) {
85 edm::LogWarning(
"CSC") <<
"CSCWireTopology: localPosition unimplemented. Don't use it."
91 edm::LogWarning(
"CSC") <<
"CSCWireTopology: localError unimplemented. Don't use it."
97 edm::LogWarning(
"CSC") <<
"CSCWireTopology: measurementPosition unimplemented. Don't use it."
103 edm::LogWarning(
"CSC") <<
"CSCWireTopology: measurementError unimplemented. Don't use it."
140 if (y < ylim.first) {
142 }
else if (y > ylim.second) {
153 if (y < ylim.first) {
155 }
else if (y > ylim.second) {
virtual CSCWireGeometry * clone() const =0
Point3DBase< Scalar, LocalTag > LocalPoint
std::pair< float, float > equationOfWire(float wire) const
constexpr double convertDegToRad(NumType degrees)
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
LocalPoint localPosition(const MeasurementPoint &) const override
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
~CSCWireTopology() override
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
std::pair< float, float > yLimitsOfWirePlane() const
uint16_t const *__restrict__ x
MeasurementError measurementError(const LocalPoint &, const LocalError &) const override
double wideWidthOfWirePlane
virtual int nearestWire(const LocalPoint &lp) const =0
float middleWireOfGroup(int wireGroup) const
constexpr NumType convertMmToCm(NumType millimeters)
virtual CSCWireGrouping * clone() const =0
std::pair< float, float > equationOfWire(float wire) const
float yResolution(int wireGroup=1) const
LocalError localError(const MeasurementPoint &, const MeasurementError &) const override
float restrictToYOfWirePlane(float y) const
Container consecutiveGroups
Log< level::Warning, false > LogWarning
int channel(const LocalPoint &p) const override
MeasurementPoint measurementPosition(const LocalPoint &) const override
CSCWireGeometry * theWireGeometry