1 |
#ifndef TSiTrackerMultiRecHit_h
|
2 |
#define TSiTrackerMultiRecHit_h
|
3 |
|
4 |
#include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
|
5 |
#include "DataFormats/TrackerRecHit2D/interface/SiTrackerMultiRecHit.h"
|
6 |
#include "TrackingTools/TransientTrackingRecHit/interface/HelpertRecHit2DLocalPos.h"
|
7 |
#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
|
8 |
|
9 |
/*
|
10 |
A TransientTrackingRecHit for the SiTrackerMultiRecHit
|
11 |
*/
|
12 |
|
13 |
class TSiTrackerMultiRecHit : public TransientTrackingRecHit {
|
14 |
public:
|
15 |
//virtual ~TSiTrackerMultiRecHit() {delete theHitData;}
|
16 |
virtual ~TSiTrackerMultiRecHit() {}
|
17 |
|
18 |
virtual AlgebraicVector parameters() const {return theHitData.parameters();}
|
19 |
virtual AlgebraicSymMatrix parametersError() const {
|
20 |
return HelpertRecHit2DLocalPos().parError( theHitData.localPositionError(), *det());
|
21 |
//return theHitData.parametersError();
|
22 |
}
|
23 |
|
24 |
virtual void getKfComponents( KfComponentsHolder & holder ) const {
|
25 |
HelpertRecHit2DLocalPos().getKfComponents(holder, theHitData, *det());
|
26 |
}
|
27 |
virtual DetId geographicalId() const {return theHitData.geographicalId();}
|
28 |
virtual AlgebraicMatrix projectionMatrix() const {return theHitData.projectionMatrix();}
|
29 |
virtual int dimension() const {return theHitData.dimension();}
|
30 |
|
31 |
virtual LocalPoint localPosition() const {return theHitData.localPosition();}
|
32 |
virtual LocalError localPositionError() const {return theHitData.localPositionError();}
|
33 |
|
34 |
virtual const TrackingRecHit * hit() const {return &theHitData;};
|
35 |
const SiTrackerMultiRecHit* specificHit() const {return &theHitData;}
|
36 |
|
37 |
virtual bool isValid() const{return theHitData.isValid();}
|
38 |
|
39 |
virtual std::vector<const TrackingRecHit*> recHits() const {
|
40 |
return theHitData.recHits();
|
41 |
}
|
42 |
virtual std::vector<TrackingRecHit*> recHits() {
|
43 |
return theHitData.recHits();
|
44 |
}
|
45 |
|
46 |
virtual const GeomDetUnit* detUnit() const;
|
47 |
|
48 |
virtual bool canImproveWithTrack() const {return true;}
|
49 |
|
50 |
virtual RecHitPointer clone(const TrajectoryStateOnSurface& ts) const;
|
51 |
|
52 |
virtual ConstRecHitContainer transientHits() const {return theComponents;};
|
53 |
|
54 |
static RecHitPointer build( const GeomDet * geom, const SiTrackerMultiRecHit* rh,
|
55 |
const ConstRecHitContainer& components, float annealing=1.){
|
56 |
return RecHitPointer(new TSiTrackerMultiRecHit( geom, rh, components, annealing));
|
57 |
}
|
58 |
private:
|
59 |
SiTrackerMultiRecHit theHitData;
|
60 |
//holds the TransientTrackingRecHit components of the MultiRecHit with up-to-date weights
|
61 |
ConstRecHitContainer theComponents;
|
62 |
|
63 |
TSiTrackerMultiRecHit(const GeomDet * geom, const SiTrackerMultiRecHit* rh,
|
64 |
const ConstRecHitContainer& components, float annealing):
|
65 |
TransientTrackingRecHit(geom,1, annealing), theHitData(*rh), theComponents(components){}
|
66 |
|
67 |
virtual TSiTrackerMultiRecHit* clone() const {
|
68 |
return new TSiTrackerMultiRecHit(*this);
|
69 |
}
|
70 |
|
71 |
};
|
72 |
|
73 |
#endif
|