ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/IPHCalignment2/RecoTracker/TransientTrackingRecHit/src/ProjectedRecHit2D.cc
Revision: 1.1
Committed: Fri Nov 25 17:05:36 2011 UTC (13 years, 5 months ago) by econte
Content type: text/plain
Branch: MAIN
CVS Tags: TBD2011, TBD_2011, HEAD
Log Message:
new IPHC alignment

File Contents

# Content
1 #include "RecoTracker/TransientTrackingRecHit/interface/ProjectedRecHit2D.h"
2 #include "TrackingTools/TransientTrackingRecHit/interface/TrackingRecHitProjector.h"
3 #include "RecoTracker/TransientTrackingRecHit/interface/TSiStripRecHit2DLocalPos.h"
4 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
5
6
7 ProjectedRecHit2D::ProjectedRecHit2D( const LocalPoint& pos, const LocalError& err,
8 const GeomDet* det, const GeomDet* originalDet,
9 const TransientTrackingRecHit& originalTransientHit,
10 float weight, float annealing ) :
11 GenericTransientTrackingRecHit( det, new ProjectedSiStripRecHit2D( pos, err, det->geographicalId(),
12 static_cast<const SiStripRecHit2D*>(originalTransientHit.hit())),weight, annealing)
13 {
14 const TSiStripRecHit2DLocalPos* specificOriginalTransientHit = static_cast<const TSiStripRecHit2DLocalPos*>(&originalTransientHit);
15 theCPE = specificOriginalTransientHit->cpe();
16 theOriginalDet = originalDet;
17 }
18
19 ProjectedRecHit2D::RecHitPointer
20 ProjectedRecHit2D::clone( const TrajectoryStateOnSurface& ts) const
21 {
22 if (theCPE != 0) {
23 TrackingRecHitProjector<ProjectedRecHit2D> proj;
24 if(!originalHit().cluster().isNull()){
25 const SiStripCluster& clust = *(originalHit().cluster());
26
27 const GeomDetUnit * gdu = reinterpret_cast<const GeomDetUnit *>(theOriginalDet);
28 //if (!gdu) std::cout<<"no luck dude"<<std::endl;
29 StripClusterParameterEstimator::LocalValues lv =
30 theCPE->localParameters( clust, *gdu, ts);
31
32 RecHitPointer updatedOriginalHit =
33 TSiStripRecHit2DLocalPos::build( lv.first, lv.second, theOriginalDet,
34 originalHit().cluster(), theCPE, weight(), getAnnealingFactor());
35
36 RecHitPointer hit = proj.project( *updatedOriginalHit, *det(), ts);
37
38 return hit;
39 }else{
40 const SiStripCluster& clust = *(originalHit().cluster_regional());
41
42 const GeomDetUnit * gdu = reinterpret_cast<const GeomDetUnit *>(theOriginalDet);
43 StripClusterParameterEstimator::LocalValues lv =
44 theCPE->localParameters( clust, *gdu, ts);
45
46 RecHitPointer updatedOriginalHit =
47 TSiStripRecHit2DLocalPos::build( lv.first, lv.second, theOriginalDet,
48 originalHit().cluster_regional(), theCPE, weight(), getAnnealingFactor());
49
50 RecHitPointer hit = proj.project( *updatedOriginalHit, *det(), ts);
51
52 return hit;
53
54 }
55 }
56 /// FIXME: should report the problem somehow
57 else return clone();
58 }
59
60 TransientTrackingRecHit::ConstRecHitContainer
61 ProjectedRecHit2D::transientHits () const {
62 ConstRecHitContainer result;
63 result.push_back(TSiStripRecHit2DLocalPos::build( theOriginalDet,&originalHit(),theCPE));
64
65 return result;
66 }
67
68 ProjectedRecHit2D::ProjectedRecHit2D( const GeomDet * geom, const GeomDet* originaldet,
69 const ProjectedSiStripRecHit2D* rh,
70 const StripClusterParameterEstimator* cpe,
71 float weight, float annealing,
72 bool computeCoarseLocalPosition) :
73 GenericTransientTrackingRecHit( geom, *rh,weight, annealing), theCPE(cpe), theOriginalDet(originaldet) {
74 if (computeCoarseLocalPosition){
75 if (theCPE != 0) {
76 TrackingRecHitProjector<ProjectedRecHit2D> proj;
77 if(!originalHit().cluster().isNull()){
78 const SiStripCluster& clust = *(originalHit().cluster());
79
80 StripClusterParameterEstimator::LocalValues lv =
81 theCPE->localParameters( clust, *detUnit());
82
83 RecHitPointer updatedOriginalHit =
84 TSiStripRecHit2DLocalPos::build( lv.first, lv.second, theOriginalDet,
85 originalHit().cluster(), theCPE, weight, annealing);
86
87 RecHitPointer hit = proj.project( *updatedOriginalHit, *det());
88 trackingRecHit_ = hit->hit()->clone();
89 }else{
90 const SiStripCluster& clust = *(originalHit().cluster_regional());
91
92 StripClusterParameterEstimator::LocalValues lv =
93 theCPE->localParameters( clust, *detUnit());
94
95 RecHitPointer updatedOriginalHit =
96 TSiStripRecHit2DLocalPos::build( lv.first, lv.second, theOriginalDet,
97 originalHit().cluster_regional(), theCPE, weight, annealing);
98
99 RecHitPointer hit = proj.project( *updatedOriginalHit, *det());
100 trackingRecHit_ = hit->hit()->clone();
101 }
102 }
103 }
104 }