ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/IPHCalignment2/TrackingTools/PatternTools/interface/TwoTrackMinimumDistanceHelixLine.h
Revision: 1.1
Committed: Fri Nov 25 16:38:24 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 #ifndef _Tracker_TwoTrackMinimumDistanceHelixLine_H_
2 #define _Tracker_TwoTrackMinimumDistanceHelixLine_H_
3
4 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
5 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
6 #include <utility>
7 /** \class TwoTrackMinimumDistanceHelixLine
8 * This is a helper class for TwoTrackMinimumDistance, for the
9 * case where one of the tracks is charged and the other not.
10 * No user should need direct access to this class.
11 * It implements a Newton method
12 * for finding the minimum distance between two tracks.
13 */
14
15 class GlobalTrajectoryParameters;
16
17 class TwoTrackMinimumDistanceHelixLine {
18
19 public:
20
21 TwoTrackMinimumDistanceHelixLine(): theH(0), theL(0), themaxiter(12),
22 pointsUpdated(false){}
23 ~TwoTrackMinimumDistanceHelixLine() {}
24
25
26 /**
27 * Calculates the PCA between a charged particle (helix) and a neutral
28 * particle (line). The order of the trajectories (helix-line or line-helix)
29 * is irrelevent, and will be conserved.
30 */
31
32 bool calculate( const GlobalTrajectoryParameters &,
33 const GlobalTrajectoryParameters &,
34 const float qual=.0001 ); // retval=true? error occured.
35
36 /**
37 * Returns the PCA's on the two trajectories. The first point lies on the
38 * first trajectory, the second point on the second trajectory.
39 */
40
41 std::pair <GlobalPoint, GlobalPoint> points() const;
42 std::pair <double, double> pathLength() const;
43
44 double firstAngle() const;
45 double secondAngle() const;
46
47 private:
48 GlobalTrajectoryParameters *theH, *theL, *firstGTP, *secondGTP;
49 GlobalVector posDiff;
50 GlobalVector theLp;
51 double X, Y, Z, px, py, pz, px2, py2, pz2, baseFct, baseDer;
52 double theh, thePhiH0, thesinPhiH0, thecosPhiH0, thetanlambdaH;
53 double thePhiH;
54 double Hn, Ln;
55 double aa,bb,cc,dd,ee,ff;
56
57 int themaxiter;
58 bool updateCoeffs();
59 void finalPoints() const;
60 bool oneIteration(double & thePhiH, double & fct, double & derivative ) const;
61 mutable GlobalPoint helixPoint, linePoint;
62 mutable double tL, linePath, helixPath;
63 mutable bool pointsUpdated;
64
65 };
66 #endif