21 if (localY.
mag() < 0.1) {
24 localY = localY.
unit();
31 Frame frame(fpos, frot);
50 double k = 2.99792458e-3;
51 double transverseMomentum = localMom.
perp();
52 if (!(transverseMomentum != 0)) {
54 return std::pair<bool, double>(
false, 0);
56 double curvature = -k * charge * B.
mag() / transverseMomentum;
74 std::pair<bool, double> res = crossing.
pathLength(localPlane);
std::pair< bool, double > pathLength(const Plane &plane) override
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
T y() const
Cartesian y coordinate.
T x() const
Cartesian x coordinate.
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Basic3DVector unit() const
constexpr uint16_t localY(uint16_t py)
T curvature(T InversePt, const MagneticField &field)
T z() const
Cartesian z coordinate.
LocalPoint toLocal(const GlobalPoint &gp) const
std::pair< bool, double > operator()(const Plane &plane, const Vector3D &position, const Vector3D &momentum, double charge, const PropagationDirection propDir=alongMomentum)
static const std::string B
GlobalPoint toGlobal(const LocalPoint &lp) const
Vector3DBase unit() const
static Plane transformPlane(const Plane &plane, const GloballyPositioned< T > &frame)
constexpr uint16_t localX(uint16_t px)
const RKLocalFieldProvider & theField
const BasicVectorType & basicVector() const
const Frame * theFieldFrame
Vector inTesla(const LocalPoint &lp) const
the argument lp is in the local frame specified in the constructor