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

# Content
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 }