CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GenericTransientTrackingRecHit.h
Go to the documentation of this file.
1 #ifndef GenericTransientTrackingRecHit_H
2 #define GenericTransientTrackingRecHit_H
3 
6 
8 public:
10 
12 
16  virtual int dimension() const {return trackingRecHit_->dimension();}
17 
18  // virtual void getKfComponents( KfComponentsHolder & holder ) const { 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 
24 
25  virtual bool canImproveWithTrack() const {return false;}
26 
27  virtual const TrackingRecHit * hit() const {return trackingRecHit_;}
28 
29 
30  virtual std::vector<const TrackingRecHit*> recHits() const {
31  return ((const TrackingRecHit *)(trackingRecHit_))->recHits();
32  }
33  virtual std::vector<TrackingRecHit*> recHits() {
34  return trackingRecHit_->recHits();
35  }
36 
37  static RecHitPointer build( const GeomDet * geom, const TrackingRecHit * rh) {
38  return RecHitPointer( new GenericTransientTrackingRecHit( geom, *rh));
39  }
40 
41 protected:
42 
43  // private constructors enforce usage of builders
46  trackingRecHit_ = rh.clone();
47  }
48 
52 
54  TransientTrackingRecHit( other.det(),other) {
55  trackingRecHit_ = other.hit()->clone();
56  }
57 
59 
60  private:
61 
62  // should not have assignment operator (?)
64  trackingRecHit_ = t.hit()->clone();
65  return *(this);
66  }
67 
68  // hide the clone method for ReferenceCounted. Warning: this method is still
69  // accessible via the bas class TrackingRecHit interface!
71  return new GenericTransientTrackingRecHit(*this);
72  }
73 
74 };
75 
76 #endif
77 
ReferenceCountingPointer< TransientTrackingRecHit > RecHitPointer
virtual int dimension() const =0
virtual const TrackingRecHit * hit() const
virtual AlgebraicMatrix projectionMatrix() const
GenericTransientTrackingRecHit(const GeomDet *geom, TrackingRecHit *rh)
for derived classes convenience, does not clone!
virtual AlgebraicVector parameters() const =0
virtual LocalError localPositionError() const
static RecHitPointer build(const GeomDet *geom, const TrackingRecHit *rh)
CLHEP::HepMatrix AlgebraicMatrix
virtual AlgebraicSymMatrix parametersError() const
GenericTransientTrackingRecHit(const GenericTransientTrackingRecHit &other)
virtual std::vector< const TrackingRecHit * > recHits() const =0
Access to component RecHits (if any)
GenericTransientTrackingRecHit & operator=(const GenericTransientTrackingRecHit &t)
virtual std::vector< TrackingRecHit * > recHits()
Non-const access to component RecHits (if any)
virtual GenericTransientTrackingRecHit * clone() const
virtual TrackingRecHit * clone() const =0
GenericTransientTrackingRecHit(const GeomDet *geom, const TrackingRecHit &rh)
CLHEP::HepVector AlgebraicVector
virtual LocalError localPositionError() const =0
virtual AlgebraicMatrix projectionMatrix() const =0
virtual AlgebraicVector parameters() const
virtual std::vector< const TrackingRecHit * > recHits() const
Access to component RecHits (if any)
const GeomDet * det() const
The GomeDet* can be zero for InvalidTransientRecHits and for TConstraintRecHit2Ds.
CLHEP::HepSymMatrix AlgebraicSymMatrix
virtual LocalPoint localPosition() const =0
virtual AlgebraicSymMatrix parametersError() const =0