ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/IPHCalignment2/TrackingTools/PatternTools/src/TSCBLBuilderNoMaterial.cc
Revision: 1.1
Committed: Fri Nov 25 16:38:25 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 "TrackingTools/PatternTools/interface/TSCBLBuilderNoMaterial.h"
2     #include "TrackingTools/AnalyticalJacobians/interface/AnalyticalCurvilinearJacobian.h"
3     #include "TrackingTools/PatternTools/interface/TwoTrackMinimumDistance.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5    
6     using namespace std;
7    
8     TrajectoryStateClosestToBeamLine
9     TSCBLBuilderNoMaterial::operator()
10     (const FreeTrajectoryState& originalFTS,
11     const reco::BeamSpot& beamSpot) const
12     {
13     TwoTrackMinimumDistance ttmd;
14     bool status = ttmd.calculate( originalFTS.parameters(),
15     GlobalTrajectoryParameters(
16     GlobalPoint(beamSpot.position().x(), beamSpot.position().y(), beamSpot.position().z()),
17     GlobalVector(beamSpot.dxdz(), beamSpot.dydz(), 1.),
18     0, &(originalFTS.parameters().magneticField()) ) );
19     if (!status) {
20     LogDebug ("TrackingTools|PatternTools")
21     << "TSCBLBuilderNoMaterial: Failure in TTMD when searching for PCA of track to beamline.\n"
22     << "TrajectoryStateClosestToBeamLine is now invalid.";
23     return TrajectoryStateClosestToBeamLine();
24     }
25    
26     pair<GlobalPoint, GlobalPoint> points = ttmd.points();
27    
28     GlobalPoint xTrack = points.first;
29     GlobalVector pTrack = GlobalVector ( GlobalVector::Cylindrical(originalFTS.momentum().perp(), ttmd.firstAngle(), originalFTS.momentum().z()) );
30    
31     double s = ttmd.pathLength().first;
32    
33     FreeTrajectoryState theFTS;
34     if (originalFTS.hasError()) {
35     const AlgebraicSymMatrix55 &errorMatrix = originalFTS.curvilinearError().matrix();
36     AnalyticalCurvilinearJacobian curvilinJacobian(originalFTS.parameters(), xTrack,
37     pTrack, s);
38     const AlgebraicMatrix55 &jacobian = curvilinJacobian.jacobian();
39     CurvilinearTrajectoryError cte( ROOT::Math::Similarity(jacobian, errorMatrix) );
40    
41     theFTS = FreeTrajectoryState(GlobalTrajectoryParameters(xTrack, pTrack, originalFTS.charge(),
42     &(originalFTS.parameters().magneticField())),
43     cte);
44     }
45     else {
46     theFTS = FreeTrajectoryState(GlobalTrajectoryParameters(xTrack, pTrack, originalFTS.charge(),
47     &(originalFTS.parameters().magneticField())));
48     }
49     return TrajectoryStateClosestToBeamLine(theFTS, points.second, beamSpot);
50     }