CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TValidTrackingRecHit.h
Go to the documentation of this file.
1 #ifndef TValidTrackingRecHit_H
2 #define TValidTrackingRecHit_H
3 
7 
13 public:
15 
16  template <typename... Args>
17  TValidTrackingRecHit(Args&&... args) : TrackingRecHit(std::forward<Args>(args)...) {}
18 
19  // to be moved in children
20  TrackingRecHit* cloneHit() const override { return hit()->clone(); }
21 
22  // Extension of the TrackingRecHit interface
23  const Surface* surface() const final { return &(det()->surface()); }
24 
26 
29  }
30  float errorGlobalR() const final { return std::sqrt(globalPositionError().rerr(globalPosition())); }
31  float errorGlobalZ() const final { return std::sqrt(globalPositionError().czz()); }
32  float errorGlobalRPhi() const final {
33  return globalPosition().perp() * sqrt(globalPositionError().phierr(globalPosition()));
34  }
35 
36  // once cache removed will obsolete the above
39  auto gp = globalPosition();
40  float r = gp.perp();
41  float errorRPhi = r * std::sqrt(float(globalError.phierr(gp)));
42  float errorR = std::sqrt(float(globalError.rerr(gp)));
43  float errorZ = std::sqrt(float(globalError.czz()));
44  return (TrackingRecHitGlobalState){gp.basicVector(), r, gp.barePhi(), errorR, errorZ, errorRPhi};
45  }
46 
51  bool canImproveWithTrack() const override { return false; }
52 
54  virtual float clusterProbability() const { return 1.f; }
55 
56 private:
57  // hide the clone method for ReferenceCounted. Warning: this method is still
58  // accessible via the bas class TrackingRecHit interface!
59  TValidTrackingRecHit* clone() const override = 0;
60 };
61 
62 #endif
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
static GlobalError transform(const LocalError &le, const Surface &surf)
TValidTrackingRecHit * clone() const override=0
T perp() const
Definition: PV3DBase.h:69
GlobalError globalPositionError() const final
const Surface * surface() const final
TrackingRecHitGlobalState globalState() const
TrackingRecHit * cloneHit() const override
TValidTrackingRecHit(Args &&...args)
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
T phierr(const GlobalPoint &aPoint) const
GlobalPoint globalPosition() const final
float errorGlobalR() const final
TValidTrackingRecHit(const GeomDet &geom)
const GeomDet * det() const
T sqrt(T t)
Definition: SSEVec.h:19
bool canImproveWithTrack() const override
float errorGlobalRPhi() const final
virtual TrackingRecHit * clone() const =0
float errorGlobalZ() const final
virtual TrackingRecHit const * hit() const
virtual LocalError localPositionError() const =0
virtual float clusterProbability() const
cluster probability, overloaded by pixel rechits.
T rerr(const GlobalPoint &aPoint) const
virtual LocalPoint localPosition() const =0