File indexing completed on 2024-04-06 12:31:34
0001 #ifndef _Tracker_TwoTrackMinimumDistanceHelixHelix_H_
0002 #define _Tracker_TwoTrackMinimumDistanceHelixHelix_H_
0003
0004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0005
0006
0007 #include <utility>
0008
0009
0010
0011
0012
0013
0014
0015
0016 class GlobalTrajectoryParameters;
0017
0018 class TwoTrackMinimumDistanceHelixHelix {
0019 public:
0020 TwoTrackMinimumDistanceHelixHelix();
0021 ~TwoTrackMinimumDistanceHelixHelix();
0022
0023 bool calculate(const GlobalTrajectoryParameters &,
0024 const GlobalTrajectoryParameters &,
0025 const float qual = .001);
0026
0027 std::pair<GlobalPoint, GlobalPoint> points() const { return std::pair<GlobalPoint, GlobalPoint>(pointG, pointH); }
0028
0029 std::pair<double, double> pathLength() const { return std::pair<double, double>(pathG, pathH); }
0030
0031 double firstAngle() const { return thepG; }
0032 double secondAngle() const { return thepH; }
0033
0034 private:
0035 bool updateCoeffs(const GlobalPoint &, const GlobalPoint &);
0036 bool oneIteration(double &, double &);
0037
0038
0039 void finalPoints();
0040
0041 private:
0042 GlobalTrajectoryParameters const *theH, *theG;
0043
0044 double thea, theb, thec1, thec2, thed1, thed2, thee1, thee2, theg, theh;
0045
0046 double thetanlambdaG, thetanlambdaH;
0047 double thesinpG0, thecospG0;
0048 double thesinpH0, thecospH0;
0049 double thepG0, thepH0;
0050
0051
0052
0053 double thepG, thepH;
0054 double thesinpG, thesinpH;
0055 double thecospG, thecospH;
0056 GlobalPoint pointG, pointH;
0057 double pathG, pathH;
0058 bool pointsUpdated;
0059
0060 double themaxjump, thesingjacI;
0061 int themaxiter;
0062 };
0063 #endif