1 #ifndef ThirdHitPredictionFromInvParabola_H
2 #define ThirdHitPredictionFromInvParabola_H
36 double ip,
double curv,
double tolerance);
47 inline double coeffA(
double impactParameter,
double charge)
const;
48 inline double coeffB(
double impactParameter,
double charge)
const;
49 inline double predV(
double u,
double ip,
double charge)
const;
89 double overU1u2 = 1./
u1u2;
90 double inInf = -charge*
pv*
overDu*overU1u2;
91 return inInf-curvature*overU1u2*0.5;
97 return -charge*(
coeffA(ip,charge) -
coeffB(ip,charge)*u - ip*u*u);
101 double & u,
double &
v)
const
111 double ipOverR = ip/
r;
113 double delta = 1-4*(0.5*B+ipOverR)*(-B+A*r-ipOverR);
116 double alpha = (c>0)? (-c+sqrtdelta)/(B+2*ipOverR) : (-c-sqrtdelta)/(B+2*ipOverR);
119 double d2 = 1. - v*
v;
Basic2DVector< double > Point2D
PixelRecoRange< float > Range
Point2D transform(Point2D const &p) const
double predV(double u, double ip, double charge) const
double coeffA(double impactParameter, double charge) const
Range operator()(double radius, int charge) const
double coeffB(double impactParameter, double charge) const
void init(const GlobalPoint &P1, const GlobalPoint &P2, double ip, double curv)
T curvature(T InversePt, const edm::EventSetup &iSetup)
double ipFromCurvature(double curvature, double charge) const
ThirdHitPredictionFromInvParabola(const GlobalPoint &P1, const GlobalPoint &P2, double ip, double curv, double tolerance)
TkRotation2D< double > Rotation
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
PixelRecoRange< double > RangeD
Range rangeRPhi(double radius, int charge) const __attribute__((optimize(3
BasicVector rotateBack(const BasicVector &v) const
class Geom::Polar2Cartesian __attribute__
Point2D transformBack(Point2D const &p) const
void findPointAtCurve(double radius, double charge, double ip, double &u, double &v) const
BasicVector rotate(const BasicVector &v) const