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

# User Rev Content
1 econte 1.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     }