CMS 3D CMS Logo

GenericTransientTrackingRecHit.h
Go to the documentation of this file.
1 #ifndef GenericTransientTrackingRecHit_H
2 #define GenericTransientTrackingRecHit_H
3 
6 
8 public:
10 
12 
13  AlgebraicVector parameters() const override { return trackingRecHit_->parameters(); }
16  int dimension() const override { return trackingRecHit_->dimension(); }
17 
18  // virtual void getKfComponents( KfComponentsHolder & holder ) const override { trackingRecHit_->getKfComponents(holder); }
19  // NO, because someone might specialize parametersError, projectionMatrix or parameters in the transient rechit
20  // and in fact this happens for alignment
21 
22  LocalPoint localPosition() const override { return trackingRecHit_->localPosition(); }
24 
25  bool canImproveWithTrack() const override { return false; }
26 
27  const TrackingRecHit* hit() const override { return trackingRecHit_; }
28  TrackingRecHit* cloneHit() const override { return hit()->clone(); }
29 
30  std::vector<const TrackingRecHit*> recHits() const override {
31  return ((const TrackingRecHit*)(trackingRecHit_))->recHits();
32  }
33  std::vector<TrackingRecHit*> recHits() override { return trackingRecHit_->recHits(); }
34 
35  static RecHitPointer build(const GeomDet* geom, const TrackingRecHit* rh) {
36  return RecHitPointer(new GenericTransientTrackingRecHit(*geom, *rh));
37  }
38 
39 protected:
40  // private constructors enforce usage of builders
42  trackingRecHit_ = rh.clone();
43  }
44 
47  : TValidTrackingRecHit(geom, *rh), trackingRecHit_(rh) {}
48 
50  : TValidTrackingRecHit(*other.det(), other) {
51  trackingRecHit_ = other.cloneHit();
52  }
53 
55 
56 private:
57  // should not have assignment operator (?)
59  trackingRecHit_ = t.cloneHit();
60  return *(this);
61  }
62 
63  // hide the clone method for ReferenceCounted. Warning: this method is still
64  // accessible via the bas class TrackingRecHit interface!
65  GenericTransientTrackingRecHit* clone() const override { return new GenericTransientTrackingRecHit(*this); }
66 };
67 
68 #endif
LocalError localPositionError() const override
GenericTransientTrackingRecHit(const GeomDet &geom, const TrackingRecHit &rh)
GenericTransientTrackingRecHit * clone() const override
std::vector< TrackingRecHit * > recHits() override
Non-const access to component RecHits (if any)
AlgebraicVector parameters() const override
const TrackingRecHit * hit() const override
virtual std::vector< const TrackingRecHit * > recHits() const =0
Access to component RecHits (if any)
static RecHitPointer build(const GeomDet *geom, const TrackingRecHit *rh)
CLHEP::HepMatrix AlgebraicMatrix
const GeomDet * det() const
TrackingRecHit * cloneHit() const override
virtual int dimension() const =0
GenericTransientTrackingRecHit(const GenericTransientTrackingRecHit &other)
virtual TrackingRecHit * clone() const =0
GenericTransientTrackingRecHit & operator=(const GenericTransientTrackingRecHit &t)
virtual LocalPoint localPosition() const =0
std::vector< const TrackingRecHit * > recHits() const override
Access to component RecHits (if any)
std::shared_ptr< TrackingRecHit const > RecHitPointer
AlgebraicSymMatrix parametersError() const override
virtual AlgebraicSymMatrix parametersError() const =0
virtual AlgebraicVector parameters() const =0
CLHEP::HepVector AlgebraicVector
CLHEP::HepSymMatrix AlgebraicSymMatrix
virtual LocalError localPositionError() const =0
GenericTransientTrackingRecHit(const GeomDet &geom, TrackingRecHit *rh)
for derived classes convenience, does not clone!
AlgebraicMatrix projectionMatrix() const override
virtual AlgebraicMatrix projectionMatrix() const =0