CMS 3D CMS Logo

HelixArbitraryPlaneCrossing2Order.h
Go to the documentation of this file.
1 #ifndef HELIXARBITRARYPLANECROSSING2ORDER_H_
2 #define HELIXARBITRARYPLANECROSSING2ORDER_H_
6 
11 public:
15  const DirectionType& direction,
16  const float curvature,
17  const PropagationDirection propDir = alongMomentum);
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  : theX0(x0),
30  theY0(y0),
31  theZ0(z0),
32  theCosPhi0(cosPhi0),
33  theSinPhi0(sinPhi0),
34  theCosTheta(cosTheta),
35  theSinThetaI(1. / sinTheta),
36  theRho(rho),
37  thePropDir(propDir) {}
38 
39  // destructor
41 
46  std::pair<bool, double> pathLength(const Plane&) override;
47 
50  PositionType position(double s) const override;
51 
54  DirectionType direction(double s) const override;
55  //
56  // double precision vectors
57  //
60 
64 
68 
71  inline double smallestPathLength(const double firstPathLength, const double secondPathLength) const {
72  return fabs(firstPathLength) < fabs(secondPathLength) ? firstPathLength : secondPathLength;
73  }
74 
75 private:
78  std::pair<bool, double> solutionByDirection(const double dS1, const double dS2) const dso_internal;
79 
80 private:
81  const double theX0, theY0, theZ0;
84  const double theRho;
86 };
87 
88 #endif
Visibility.h
HelixArbitraryPlaneCrossing2Order::HelixArbitraryPlaneCrossing2Order
HelixArbitraryPlaneCrossing2Order(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)
Definition: HelixArbitraryPlaneCrossing2Order.h:20
HelixArbitraryPlaneCrossing2Order::smallestPathLength
double smallestPathLength(const double firstPathLength, const double secondPathLength) const
Definition: HelixArbitraryPlaneCrossing2Order.h:71
HelixPlaneCrossing::DirectionType
Basic3DVector< float > DirectionType
Definition: HelixPlaneCrossing.h:23
HelixArbitraryPlaneCrossing2Order::theSinThetaI
double theSinThetaI
Definition: HelixArbitraryPlaneCrossing2Order.h:83
HelixArbitraryPlaneCrossing2Order::PositionTypeDouble
Basic3DVector< double > PositionTypeDouble
Definition: HelixArbitraryPlaneCrossing2Order.h:58
HelixArbitraryPlaneCrossing2Order::theY0
const double theY0
Definition: HelixArbitraryPlaneCrossing2Order.h:81
PixelRecoUtilities::curvature
T curvature(T InversePt, const edm::EventSetup &iSetup)
Definition: PixelRecoUtilities.h:42
HelixArbitraryPlaneCrossing2Order::solutionByDirection
std::pair< bool, double > solutionByDirection(const double dS1, const double dS2) const
Definition: HelixArbitraryPlaneCrossing2Order.cc:133
HelixArbitraryPlaneCrossing2Order::thePropDir
const PropagationDirection thePropDir
Definition: HelixArbitraryPlaneCrossing2Order.h:85
alignCSCRings.s
s
Definition: alignCSCRings.py:92
HelixArbitraryPlaneCrossing2Order::theZ0
const double theZ0
Definition: HelixArbitraryPlaneCrossing2Order.h:81
HelixArbitraryPlaneCrossing2Order::directionInDouble
DirectionTypeDouble directionInDouble(double s) const
Definition: HelixArbitraryPlaneCrossing2Order.cc:122
HelixArbitraryPlaneCrossing2Order::theRho
const double theRho
Definition: HelixArbitraryPlaneCrossing2Order.h:84
HelixArbitraryPlaneCrossing2Order::position
PositionType position(double s) const override
Definition: HelixArbitraryPlaneCrossing2Order.cc:95
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
HelixArbitraryPlaneCrossing2Order::theCosPhi0
double theCosPhi0
Definition: HelixArbitraryPlaneCrossing2Order.h:82
DDAxes::rho
HelixArbitraryPlaneCrossing2Order::theX0
const double theX0
Definition: HelixArbitraryPlaneCrossing2Order.h:81
HelixArbitraryPlaneCrossing2Order::DirectionTypeDouble
Basic3DVector< double > DirectionTypeDouble
Definition: HelixArbitraryPlaneCrossing2Order.h:59
dso_internal
#define dso_internal
Definition: Visibility.h:13
HelixArbitraryPlaneCrossing2Order::pathLength
std::pair< bool, double > pathLength(const Plane &) override
Definition: HelixArbitraryPlaneCrossing2Order.cc:35
HelixArbitraryPlaneCrossing2Order::theSinPhi0
double theSinPhi0
Definition: HelixArbitraryPlaneCrossing2Order.h:82
HelixArbitraryPlaneCrossing2Order::positionInDouble
PositionTypeDouble positionInDouble(double s) const
Definition: HelixArbitraryPlaneCrossing2Order.cc:103
PropagationDirection.h
HelixPlaneCrossing
Definition: HelixPlaneCrossing.h:13
HelixArbitraryPlaneCrossing2Order::theCosTheta
double theCosTheta
Definition: HelixArbitraryPlaneCrossing2Order.h:83
PropagationDirection
PropagationDirection
Definition: PropagationDirection.h:4
Plane
Definition: Plane.h:16
HelixArbitraryPlaneCrossing2Order::HelixArbitraryPlaneCrossing2Order
HelixArbitraryPlaneCrossing2Order(const PositionType &point, const DirectionType &direction, const float curvature, const PropagationDirection propDir=alongMomentum)
Definition: HelixArbitraryPlaneCrossing2Order.cc:11
HelixArbitraryPlaneCrossing2Order::direction
DirectionType direction(double s) const override
Definition: HelixArbitraryPlaneCrossing2Order.cc:114
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
HelixArbitraryPlaneCrossing2Order::~HelixArbitraryPlaneCrossing2Order
~HelixArbitraryPlaneCrossing2Order() override
Definition: HelixArbitraryPlaneCrossing2Order.h:40
HelixArbitraryPlaneCrossing2Order
Definition: HelixArbitraryPlaneCrossing2Order.h:10
alongMomentum
Definition: PropagationDirection.h:4
Basic3DVector< float >
HelixPlaneCrossing.h
HelixPlaneCrossing::PositionType
Basic3DVector< float > PositionType
the helix is passed to the constructor and does not appear in the interface
Definition: HelixPlaneCrossing.h:22