ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/IPHCalignment2/TrackingTools/PatternTools/interface/ClosestApproachInRPhi.h
Revision: 1.1
Committed: Fri Nov 25 16:38:23 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 #ifndef _ClosestApproachInRPhi_H_
2     #define _ClosestApproachInRPhi_H_
3    
4     #include "TrackingTools/PatternTools/interface/ClosestApproachOnHelices.h"
5     #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h"
6    
7     /** Given two trajectory states, computes the two points of closest approach
8     * in the transverse plane for the helices extrapolated from these states.
9     * 1) computes the intersections of the circles in transverse plane.
10     * Two cases: - circles have one or two intersection points;
11     * - circles do not cross; the points used are
12     * the points of closest approach of the two circles.
13     * 2) computes the corresponding z-coordinates. In the case where
14     * the circles have two intersections, the point for which
15     * the z-coordinates on the 2 tracks are the closest is chosen.
16     */
17    
18     class ClosestApproachInRPhi : public ClosestApproachOnHelices {
19    
20     public:
21    
22     ClosestApproachInRPhi() {status_ = false;}
23    
24     virtual bool calculate(const TrajectoryStateOnSurface & sta,
25     const TrajectoryStateOnSurface & stb);
26    
27     virtual bool calculate(const FreeTrajectoryState & sta,
28     const FreeTrajectoryState & stb);
29    
30     virtual bool status() const {return status_;}
31    
32     /**
33     * Returns the two PCA on the trajectories.
34     */
35     virtual std::pair<GlobalPoint, GlobalPoint> points() const;
36    
37     /** Returns not only the points, but the full GlobalTrajectoryParemeters
38     * at the points of closest approach */
39     std::pair <GlobalTrajectoryParameters, GlobalTrajectoryParameters >
40     trajectoryParameters () const;
41    
42     /** arithmetic mean of the two points of closest approach */
43     virtual GlobalPoint crossingPoint() const;
44    
45     /** distance between the two points of closest approach in 3D */
46     virtual float distance() const;
47    
48     /**
49     * Clone method
50     */
51     virtual ClosestApproachInRPhi * clone() const {
52     return new ClosestApproachInRPhi(* this);
53     }
54    
55     private:
56    
57     bool compute(const TrackCharge & chargeA,
58     const GlobalVector & momentumA,
59     const GlobalPoint & positionA,
60     const TrackCharge & chargeB,
61     const GlobalVector & momentumB,
62     const GlobalPoint & positionB);
63    
64     // given the old Parameters, and a new GlobalPoint,
65     // we return the full new GlobalTrajectoryParameters at the
66     // Point.
67     static GlobalTrajectoryParameters
68     newTrajectory( const GlobalPoint & newpt,
69     const GlobalTrajectoryParameters & oldpar, double bz);
70    
71     // Computes center coordinates and unsigned radius of circle;
72     static void circleParameters(const TrackCharge& charge,
73     const GlobalVector& momemtum,
74     const GlobalPoint& position,
75     double& xc, double& yc, double& r,
76     double bz);
77    
78     // Computes crossing points of 2 circles with centres (cx_i, cy_i)
79     // and unsigned radii r_i.
80     // Two cases: - circles have one or two intersection points;
81     // return value = 1;
82     // - circles do not cross; computes point of closest approach
83     // on each circle; return value = 2;
84     // if the calculation fails (e.g. concentric circles), return value = 0;
85    
86     static int transverseCoord(double cxa, double cya, double ra,
87     double cxb, double cyb, double rb,
88     double & xg1, double & yg1,
89     double & xg2, double & yg2);
90    
91     // Computes z-coordinate on helix at given transverse coordinates
92     static double zCoord(const GlobalVector& mom, const GlobalPoint& pos,
93     double r, double xc, double yc, double xg, double yg);
94    
95    
96     private:
97     GlobalPoint posA, posB;
98     GlobalTrajectoryParameters paramA, paramB;
99     double bz;
100     bool status_;
101    
102     };
103    
104     #endif