217 if (trackdirection.
mag2() < FLT_MIN) {
229 LocalVector RPHIpositiononGluedendvector = projectedstripmono.second - projectedstripmono.first;
230 double c1 =
sin(RPHIpositiononGluedendvector.
phi());
231 double s1 = -
cos(RPHIpositiononGluedendvector.
phi());
234 double sigmap12 = errormonoRH.uu() * pitch * pitch;
246 StripPosition projectedstripstereo =
project(partnerstripdet, gluedDet, stripstereo, trackdirection);
252 m(0, 0) = -(projectedstripmono.second.y() - projectedstripmono.first.y());
253 m(0, 1) = (projectedstripmono.second.x() - projectedstripmono.first.x());
254 m(1, 0) = -(projectedstripstereo.second.y() - projectedstripstereo.first.y());
255 m(1, 1) = (projectedstripstereo.second.x() - projectedstripstereo.first.x());
256 c(0) =
m(0, 1) * projectedstripmono.first.y() +
m(0, 0) * projectedstripmono.first.x();
257 c(1) =
m(1, 1) * projectedstripstereo.first.y() +
m(1, 0) * projectedstripstereo.first.x();
269 LocalVector stereopositiononGluedendvector = projectedstripstereo.second - projectedstripstereo.first;
270 double c2 =
sin(stereopositiononGluedendvector.
phi());
271 double s2 = -
cos(stereopositiononGluedendvector.
phi());
275 double sigmap22 = errorstereoRH.uu() * pitch * pitch;
276 double diff = (
c1 * s2 - c2 * s1);
278 float xx = invdet2 * (sigmap12 * s2 * s2 + sigmap22 * s1 * s1);
279 float xy = -invdet2 * (sigmap12 * c2 * s2 + sigmap22 *
c1 * s1);
280 float yy = invdet2 * (sigmap12 * c2 * c2 + sigmap22 *
c1 *
c1);
285 if (det.subdetId() > 2) {
286 return std::make_unique<FastMatchedTrackerRecHit>(
position,
error, *gluedDet, *monoRH, *stereoRH, stereoHitFirst);
291 throw cms::Exception(
"FastTrackerRecHitMatcher") <<
"Matched Pixel!?";
std::pair< LocalPoint, LocalPoint > StripPosition
Point3DBase< Scalar, LocalTag > LocalPoint
virtual const Topology & topology() const
Geom::Phi< T > phi() const
Sin< T >::type sin(const T &t)
Global3DPoint GlobalPoint
virtual float localPitch(const LocalPoint &) const =0
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
ROOT::Math::SVector< double, 2 > AlgebraicVector2
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
Cos< T >::type cos(const T &t)
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
const GeomDetUnit * monoDet() const
LocalError localPositionError() const override
const Plane & surface() const
The nominal surface of the GeomDet.
DetId geographicalId() const
const GeomDetUnit * stereoDet() const
LocalPoint localPosition() const override
static int position[264][3]
ROOT::Math::SMatrix< double, 2, 2, ROOT::Math::MatRepStd< double, 2, 2 > > AlgebraicMatrix22
virtual LocalPoint localPosition(float strip) const =0
StripPosition project(const GeomDetUnit *det, const GluedGeomDet *glueddet, const StripPosition &strip, const LocalVector &trackdirection) const