Go to the documentation of this file.00001 #ifndef HelixExtrapolatorToLine2Order_h_
00002 #define HelixExtrapolatorToLine2Order_h_
00003
00004 #include "TrackingTools/GeomPropagators/interface/HelixLineExtrapolation.h"
00005 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00006 #include "FWCore/Utilities/interface/Visibility.h"
00007
00011 class HelixExtrapolatorToLine2Order : public HelixLineExtrapolation {
00012 public:
00014 HelixExtrapolatorToLine2Order(const PositionType& point,
00015 const DirectionType& direction,
00016 const float curvature,
00017 const PropagationDirection propDir = alongMomentum);
00018
00020 HelixExtrapolatorToLine2Order(const double& x0, const double& y0, const double& z0,
00021 const double& cosPhi0, const double& sinPhi0,
00022 const double& cosTheta, const double& sinTheta,
00023 const double& rho,
00024 const PropagationDirection propDir = alongMomentum) :
00025 thePosition(x0,y0,z0),
00026 theDirection(cosPhi0,sinPhi0,cosTheta/sinTheta),
00027 theSinTheta(sinTheta),
00028 theRho(rho),
00029 thePropDir(propDir) {}
00030
00031
00032 virtual ~HelixExtrapolatorToLine2Order() {}
00033
00038 virtual std::pair<bool,double> pathLength (const GlobalPoint& point) const;
00039
00044 virtual std::pair<bool,double> pathLength (const Line& line) const;
00045
00047 virtual PositionType position(double s) const;
00048
00050 virtual DirectionType direction(double s) const;
00051
00053 PositionTypeDouble positionInDouble(double s) const;
00054
00056 DirectionTypeDouble directionInDouble(double s) const;
00057
00058 private:
00060 virtual std::pair<bool,double> pathLengthFromCoefficients (const double ceq[4]) const dso_internal;
00062 int solve3rdOrder (const double ceq[], double sol[]) const dso_internal;
00064 int solve2ndOrder (const double ceq[], double sol[]) const dso_internal;
00065
00066 private:
00067 const PositionTypeDouble thePosition;
00068 DirectionTypeDouble theDirection;
00069 double theSinTheta;
00070 const double theRho;
00071 const PropagationDirection thePropDir;
00072 };
00073
00074 #endif
00075
00076