CMS 3D CMS Logo

HelixExtrapolatorToLine2Order.h
Go to the documentation of this file.
1 #ifndef HelixExtrapolatorToLine2Order_h_
2 #define HelixExtrapolatorToLine2Order_h_
3 
7 
12 public:
15  const DirectionType& direction,
16  const float curvature,
17  const PropagationDirection propDir = alongMomentum);
18 
21  const double& y0,
22  const double& z0,
23  const double& cosPhi0,
24  const double& sinPhi0,
25  const double& cosTheta,
26  const double& sinTheta,
27  const double& rho,
28  const PropagationDirection propDir = alongMomentum)
29  : thePosition(x0, y0, z0),
30  theDirection(cosPhi0, sinPhi0, cosTheta / sinTheta),
31  theSinTheta(sinTheta),
32  theRho(rho),
33  thePropDir(propDir) {}
34 
35  // destructor
37 
42  std::pair<bool, double> pathLength(const GlobalPoint& point) const override;
43 
48  std::pair<bool, double> pathLength(const Line& line) const override;
49 
51  PositionType position(double s) const override;
52 
54  DirectionType direction(double s) const override;
55 
58 
61 
62 private:
64  virtual std::pair<bool, double> pathLengthFromCoefficients(const double ceq[4]) const dso_internal;
66  int solve3rdOrder(const double ceq[], double sol[]) const dso_internal;
68  int solve2ndOrder(const double ceq[], double sol[]) const dso_internal;
69 
70 private:
73  double theSinTheta;
74  const double theRho;
76 };
77 
78 #endif
HelixExtrapolatorToLine2Order::theRho
const double theRho
Definition: HelixExtrapolatorToLine2Order.h:74
Visibility.h
HelixExtrapolatorToLine2Order::~HelixExtrapolatorToLine2Order
~HelixExtrapolatorToLine2Order() override
Definition: HelixExtrapolatorToLine2Order.h:36
HelixExtrapolatorToLine2Order::directionInDouble
DirectionTypeDouble directionInDouble(double s) const
Direction at pathlength s from the starting point in double precision.
Definition: HelixExtrapolatorToLine2Order.cc:217
HelixExtrapolatorToLine2Order::position
PositionType position(double s) const override
Position at pathlength s from the starting point.
Definition: HelixExtrapolatorToLine2Order.cc:189
HelixExtrapolatorToLine2Order::solve2ndOrder
int solve2ndOrder(const double ceq[], double sol[]) const
Solutions of 2nd order equation.
Definition: HelixExtrapolatorToLine2Order.cc:159
PixelRecoUtilities::curvature
T curvature(T InversePt, const edm::EventSetup &iSetup)
Definition: PixelRecoUtilities.h:42
HelixExtrapolatorToLine2Order
Definition: HelixExtrapolatorToLine2Order.h:11
HelixExtrapolatorToLine2Order::pathLengthFromCoefficients
virtual std::pair< bool, double > pathLengthFromCoefficients(const double ceq[4]) const
common part for propagation to point and line
Definition: HelixExtrapolatorToLine2Order.cc:76
alignCSCRings.s
s
Definition: alignCSCRings.py:92
HelixExtrapolatorToLine2Order::HelixExtrapolatorToLine2Order
HelixExtrapolatorToLine2Order(const double &x0, const double &y0, const double &z0, const double &cosPhi0, const double &sinPhi0, const double &cosTheta, const double &sinTheta, const double &rho, const PropagationDirection propDir=alongMomentum)
Fast constructor (for use by IterativeHelixExtrapolatorToLine).
Definition: HelixExtrapolatorToLine2Order.h:20
HelixLineExtrapolation
Definition: HelixLineExtrapolation.h:15
HelixExtrapolatorToLine2Order::theSinTheta
double theSinTheta
Definition: HelixExtrapolatorToLine2Order.h:73
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
Point3DBase< float, GlobalTag >
DDAxes::rho
HelixExtrapolatorToLine2Order::solve3rdOrder
int solve3rdOrder(const double ceq[], double sol[]) const
Solutions of 3rd order equation.
Definition: HelixExtrapolatorToLine2Order.cc:117
HelixExtrapolatorToLine2Order::thePropDir
const PropagationDirection thePropDir
Definition: HelixExtrapolatorToLine2Order.h:75
HelixLineExtrapolation::PositionType
Basic3DVector< float > PositionType
Definition: HelixLineExtrapolation.h:22
dso_internal
#define dso_internal
Definition: Visibility.h:13
HelixExtrapolatorToLine2Order::theDirection
DirectionTypeDouble theDirection
Definition: HelixExtrapolatorToLine2Order.h:72
HelixLineExtrapolation::DirectionType
Basic3DVector< float > DirectionType
Definition: HelixLineExtrapolation.h:23
Line
Definition: Line.h:10
HelixLineExtrapolation::PositionTypeDouble
Basic3DVector< double > PositionTypeDouble
Definition: HelixLineExtrapolation.h:24
PropagationDirection.h
PropagationDirection
PropagationDirection
Definition: PropagationDirection.h:4
HelixExtrapolatorToLine2Order::direction
DirectionType direction(double s) const override
Direction at pathlength s from the starting point.
Definition: HelixExtrapolatorToLine2Order.cc:208
HelixExtrapolatorToLine2Order::thePosition
const PositionTypeDouble thePosition
Definition: HelixExtrapolatorToLine2Order.h:71
HelixExtrapolatorToLine2Order::pathLength
std::pair< bool, double > pathLength(const GlobalPoint &point) const override
Definition: HelixExtrapolatorToLine2Order.cc:28
HelixLineExtrapolation::DirectionTypeDouble
Basic3DVector< double > DirectionTypeDouble
Definition: HelixLineExtrapolation.h:25
point
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
HelixLineExtrapolation.h
mps_splice.line
line
Definition: mps_splice.py:76
alongMomentum
Definition: PropagationDirection.h:4
Basic3DVector< float >
HelixExtrapolatorToLine2Order::HelixExtrapolatorToLine2Order
HelixExtrapolatorToLine2Order(const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum)
Constructor using point, direction and (transverse!) curvature.
Definition: HelixExtrapolatorToLine2Order.cc:7
HelixExtrapolatorToLine2Order::positionInDouble
PositionTypeDouble positionInDouble(double s) const
Position at pathlength s from the starting point in double precision.
Definition: HelixExtrapolatorToLine2Order.cc:198