14#include "GeoModelKernel/Units.h"
19using namespace GeoModelKernelUnits;
23 const double r2 =
r*
r;
24 const double r3 = r2*
r;
25 const double r4 = r2*r2;
26#if LARWC_SINCOS_POLY > 4
27 const double r5 = r4*
r;
34#if LARWC_SINCOS_POLY > 4
38 cos_a = sqrt(1. - sin_a*sin_a);
43 const double r2 =
r*
r;
44 const double r3 = r2*
r;
45 const double r4 = r2*r2;
46#if LARWC_SINCOS_POLY > 4
47 const double r5 = r4*
r;
54#if LARWC_SINCOS_POLY > 4
63#if LARWC_SINCOS_POLY > 4
73 const double r2 =
r*
r;
74 const double r3 = r2*
r;
75 const double r4 = r2*r2;
92 return m_fanCalcImpl->DistanceToTheNearestFan(p, out_fan_number);
121 return std::vector<double> { np.x(), np.y(), np.z() };
CLHEP::Hep3Vector NearestPointOnNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const
std::array< double, LARWC_SINCOS_POLY+1 > m_cos_parametrization
std::pair< int, int > GetPhiGapAndSide(const CLHEP::Hep3Vector &p) const
double AmplitudeOfSurface(const CLHEP::Hep3Vector &P, int side, int fan_number) const
double DistanceToTheNeutralFibre(const CLHEP::Hep3Vector &p, int fan_number) const
Calculates aproximate, probably underestimate, distance to the neutral fibre of the vertical fan.
std::array< double, 5 > m_slant_parametrization
double DistanceToTheNearestFan(CLHEP::Hep3Vector &p, int &out_fan_number) const
Determines the nearest to the input point fan.
void parameterized_sin(const double, double &, double &) const
LArWheelCalculator_Impl::IFanCalculator * m_fanCalcImpl
void parameterized_sincos(const double, double &, double &) const
double parameterized_slant_angle(double) const
Calculates wave slant angle using parametrization for current wheel for given distance from calorimet...
std::array< double, LARWC_SINCOS_POLY+1 > m_sin_parametrization
LArWheelCalculator_Impl::IDistanceCalculator * m_distanceCalcImpl
std::vector< double > NearestPointOnNeutralFibre_asVector(const CLHEP::Hep3Vector &p, int fan_number) const
Helper to simultaneously calculate sin and cos of the same angle.