CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/TrackingTools/PatternTools/interface/TwoTrackMinimumDistance.h

Go to the documentation of this file.
00001 #ifndef _TwoTrackMinimumDistance_H_
00002 #define _TwoTrackMinimumDistance_H_
00003 
00004 #include "TrackingTools/PatternTools/interface/ClosestApproachOnHelices.h"
00005 #include "TrackingTools/PatternTools/interface/ClosestApproachInRPhi.h"
00006 #include "TrackingTools/PatternTools/interface/TwoTrackMinimumDistanceHelixHelix.h"
00007 #include "TrackingTools/PatternTools/interface/TwoTrackMinimumDistanceLineLine.h"
00008 #include "TrackingTools/PatternTools/interface/TwoTrackMinimumDistanceHelixLine.h"
00009 
00019 class TwoTrackMinimumDistance : public ClosestApproachOnHelices {
00020 
00021 public:
00022 
00023   enum Mode { FastMode=0, SlowMode=1 };
00024 
00025   TwoTrackMinimumDistance( const Mode m=FastMode ) { theModus=m; status_ = false;};
00026 
00027   virtual bool calculate(const TrajectoryStateOnSurface & sta, 
00028          const TrajectoryStateOnSurface & stb);
00029 
00030   virtual bool calculate(const FreeTrajectoryState & sta,
00031         const FreeTrajectoryState & stb);
00032 
00033   virtual bool calculate(const GlobalTrajectoryParameters & sta,
00034         const GlobalTrajectoryParameters & stb);
00035 
00036   virtual bool status() const {return status_;}
00037 
00042   virtual std::pair<GlobalPoint, GlobalPoint> points() const;
00043 
00045   virtual GlobalPoint crossingPoint() const;
00046 
00048   virtual float distance() const;
00049 
00050 
00054   virtual TwoTrackMinimumDistance * clone() const {
00055     return new TwoTrackMinimumDistance(* this);
00056   }
00057 
00058   double firstAngle() const;
00059   double secondAngle() const;
00060   std::pair <double, double> pathLength() const;
00061 
00062 private:
00063   enum Charge { hh, hl, ll };
00064   Mode theModus;
00065   mutable Charge theCharge;
00066   ClosestApproachInRPhi theIniAlgo;
00067   mutable TwoTrackMinimumDistanceHelixHelix theTTMDhh;
00068   mutable TwoTrackMinimumDistanceLineLine theTTMDll;
00069   mutable TwoTrackMinimumDistanceHelixLine theTTMDhl;
00070   bool status_;
00071   std::pair<GlobalPoint, GlobalPoint> points_;
00072 
00073   bool pointsLineLine(const GlobalTrajectoryParameters & sta,
00074         const GlobalTrajectoryParameters & stb);
00075   bool pointsHelixLine(const GlobalTrajectoryParameters & sta,
00076         const GlobalTrajectoryParameters & stb);
00077   bool pointsHelixHelix(const GlobalTrajectoryParameters & sta,
00078         const GlobalTrajectoryParameters & stb);
00079 };
00080 
00081 #endif