CMS 3D CMS Logo

RecHitPropagator.h
Go to the documentation of this file.
1 #ifndef RecHitPropagator_H
2 #define RecHitPropagator_H
3 
5 
6 class TrackingRecHit;
7 class MagneticField;
8 class Plane;
9 
11 public:
13  const Plane& plane,
14  const TrajectoryStateOnSurface& ts) const;
15 };
16 
18 
19 // propagate from glued to mono/stereo
20 inline TrajectoryStateOnSurface fastProp(const TrajectoryStateOnSurface& ts, const Plane& oPlane, const Plane& tPlane) {
21  GlobalVector gdir = ts.globalMomentum();
22  LocalVector ldir = tPlane.toLocal(gdir); // fast prop!
23 
24  // if ldir.z() == 0, return an invalid TrajectoryStateOnSurface
25  if (ldir.z() == 0) {
26  return TrajectoryStateOnSurface();
27  }
28 
29  double delta = tPlane.localZ(oPlane.position());
30  LocalPoint lPos = tPlane.toLocal(ts.globalPosition());
31  LocalPoint projectedPos = lPos - ldir * delta / ldir.z();
32  // we can also patch it up as only the position-errors are used...
34  tPlane.toGlobal(projectedPos), gdir, ts.charge(), &ts.globalParameters().magneticField());
35  if (ts.hasError())
36  return TrajectoryStateOnSurface(gp, ts.curvilinearError(), tPlane);
37  else
38  return TrajectoryStateOnSurface(gp, tPlane);
39 }
40 
41 #endif
T z() const
Definition: PV3DBase.h:61
const GlobalTrajectoryParameters & globalParameters() const
LocalPoint toLocal(const GlobalPoint &gp) const
Definition: Plane.h:16
TrajectoryStateOnSurface fastProp(const TrajectoryStateOnSurface &ts, const Plane &oPlane, const Plane &tPlane)
GlobalPoint globalPosition() const
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
#define dso_hidden
Definition: Visibility.h:12
float localZ(const GlobalPoint &gp) const
Definition: Plane.h:45
const PositionType & position() const
const CurvilinearTrajectoryError & curvilinearError() const
const MagneticField & magneticField() const
GlobalVector globalMomentum() const