1 |
econte |
1.1 |
#ifndef RECOTRACKER_TRANSIENTRACKINGRECHIT_ProjectedRecHit2D_H
|
2 |
|
|
#define RECOTRACKER_TRANSIENTRACKINGRECHIT_ProjectedRecHit2D_H
|
3 |
|
|
|
4 |
|
|
#include "DataFormats/TrackerRecHit2D/interface/ProjectedSiStripRecHit2D.h"
|
5 |
|
|
#include "TrackingTools/TransientTrackingRecHit/interface/GenericTransientTrackingRecHit.h"
|
6 |
|
|
#include "TrackingTools/TransientTrackingRecHit/interface/HelpertRecHit2DLocalPos.h"
|
7 |
|
|
#include "RecoLocalTracker/ClusterParameterEstimator/interface/StripClusterParameterEstimator.h"
|
8 |
|
|
|
9 |
|
|
class SiStripRecHit2D;
|
10 |
|
|
|
11 |
|
|
class ProjectedRecHit2D : public GenericTransientTrackingRecHit {
|
12 |
|
|
public:
|
13 |
|
|
|
14 |
|
|
virtual void getKfComponents( KfComponentsHolder & holder ) const {
|
15 |
|
|
HelpertRecHit2DLocalPos().getKfComponents(holder, *hit(), *det());
|
16 |
|
|
}
|
17 |
|
|
|
18 |
|
|
|
19 |
|
|
virtual AlgebraicSymMatrix parametersError() const {
|
20 |
|
|
return HelpertRecHit2DLocalPos().parError( localPositionError(), *det());
|
21 |
|
|
}
|
22 |
|
|
|
23 |
|
|
const GeomDetUnit* detUnit() const {return 0;}
|
24 |
|
|
const GeomDet* originalDet() const {return theOriginalDet;}
|
25 |
|
|
|
26 |
|
|
static RecHitPointer build( const GeomDet * geom,
|
27 |
|
|
const GeomDet* originaldet,
|
28 |
|
|
const ProjectedSiStripRecHit2D* rh,
|
29 |
|
|
const StripClusterParameterEstimator* cpe,
|
30 |
|
|
float weight=1., float annealing=1.,
|
31 |
|
|
bool computeCoarseLocalPosition=false) {
|
32 |
|
|
return RecHitPointer( new ProjectedRecHit2D( geom, originaldet, rh, cpe, weight, annealing, computeCoarseLocalPosition));
|
33 |
|
|
}
|
34 |
|
|
|
35 |
|
|
static RecHitPointer build( const LocalPoint& pos, const LocalError& err,
|
36 |
|
|
const GeomDet* det, const GeomDet* originaldet,
|
37 |
|
|
const TransientTrackingRecHit& originalHit,
|
38 |
|
|
float weight=1., float annealing=1.) {
|
39 |
|
|
return RecHitPointer( new ProjectedRecHit2D( pos, err, det, originaldet, originalHit, weight, annealing));
|
40 |
|
|
}
|
41 |
|
|
|
42 |
|
|
RecHitPointer clone( const TrajectoryStateOnSurface& ts) const;
|
43 |
|
|
|
44 |
|
|
const SiStripRecHit2D& originalHit() const { return static_cast<const ProjectedSiStripRecHit2D*>( hit() )->originalHit();}
|
45 |
|
|
|
46 |
|
|
virtual ConstRecHitContainer transientHits () const;
|
47 |
|
|
|
48 |
|
|
private:
|
49 |
|
|
const StripClusterParameterEstimator* theCPE;
|
50 |
|
|
const GeomDet* theOriginalDet;
|
51 |
|
|
|
52 |
|
|
ProjectedRecHit2D( const LocalPoint& pos, const LocalError& err,
|
53 |
|
|
const GeomDet* det, const GeomDet* originaldet,
|
54 |
|
|
const TransientTrackingRecHit& originalHit,
|
55 |
|
|
float weight, float annealing);
|
56 |
|
|
|
57 |
|
|
ProjectedRecHit2D( const GeomDet * geom, const GeomDet* originaldet,
|
58 |
|
|
const ProjectedSiStripRecHit2D* rh,
|
59 |
|
|
const StripClusterParameterEstimator* cpe,
|
60 |
|
|
float weight, float annealing,
|
61 |
|
|
bool computeCoarseLocalPosition);
|
62 |
|
|
|
63 |
|
|
virtual ProjectedRecHit2D* clone() const {
|
64 |
|
|
return new ProjectedRecHit2D(*this);
|
65 |
|
|
}
|
66 |
|
|
|
67 |
|
|
};
|
68 |
|
|
|
69 |
|
|
|
70 |
|
|
|
71 |
|
|
#endif
|