1 #ifndef SEMIANALYTICALMODEL_H 2 #define SEMIANALYTICALMODEL_H 24 typedef boost::math::policies::policy<boost::math::policies::promote_double<false>>
noLDoublePromote;
41 bool AnodeMode =
false);
67 geo::Point_t const& hotspot,
double &ReflDetThis,
bool AnodeMode =
false);
86 double interpolate(
const std::vector<double>& xData,
87 const std::vector<double>& yData,
92 double interpolate2(
const std::vector<double>& xDistances,
93 const std::vector<double>& rDistances,
97 const size_t k)
const;
101 template <
typename TReal>
102 inline constexpr
static bool 105 TReal diff = std::fabs(a - b);
107 if (diff < std::fmax(std::fabs(a), std::fabs(b)) *
tolerance)
return true;
114 template <
typename TReal>
115 inline constexpr
static bool 118 if (std::fabs(a) <=
tolerance)
return true;
124 template <
typename TReal>
125 inline constexpr
static bool 130 if (diff < std::fmax(std::fabs(a), std::fabs(b)) *
tolerance)
return true;
134 template <
typename TReal>
135 inline constexpr
static bool 140 if (diff > std::fmax(std::fabs(a), std::fabs(b)) *
tolerance)
return true;
bool fIncludeAnodeReflections
std::vector< double > fvis_distances_r_dome
std::vector< std::vector< std::vector< double > > > fGHvuvpars_flat_lateral
std::vector< double > fvis_distances_r_flat_lateral
static constexpr bool isDefinitelyLessThan(TReal a, TReal b, TReal tolerance=std::numeric_limits< TReal >::epsilon())
double Gaisser_Hillas(const double x, const double *par) const
std::vector< std::vector< double > > fborder_corr_dome
double fcathode_zdimension
double interpolate2(const std::vector< double > &xDistances, const std::vector< double > &rDistances, const std::vector< std::vector< std::vector< double >>> ¶meters, const double x, const double r, const size_t k) const
std::vector< std::vector< std::vector< double > > > fvispars_flat_lateral
double Omega_Dome_Model(const double distance, const double theta) const
void detectedDirectVisibilities(std::map< size_t, double > &DetectedVisibilities, geo::Point_t const &ScintPoint)
std::vector< double > fGH_distances_anode
std::vector< std::vector< double > > fGHvuvpars_flat
std::vector< std::vector< double > > fGHvuvpars_dome
boost::math::policies::policy< boost::math::policies::promote_double< false > > noLDoublePromote
std::vector< double > fvis_distances_r_flat
std::vector< double > fOpDetHeight
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Vector_t
Type for representation of momenta in 3D space.
void VUVVisibility(geo::Point_t const &ScintPoint, OpticalDetector const &opDet, double &DetThis)
std::vector< std::vector< std::vector< double > > > fvispars_flat
void detectedReflectedVisibilities(std::map< size_t, double > &ReflDetectedVisibilities, geo::Point_t const &ScintPoint, bool AnodeMode=false)
double fast_acos(double x) const
bool fApplyFieldCageTransparency
double fFieldCageTransparencyCathode
double Rectangle_SolidAngle(const double a, const double b, const double d) const
std::vector< geo::BoxBoundedGeo > fActiveVolumes
std::vector< double > fvis_distances_x_flat
double interpolate(const std::vector< double > &xData, const std::vector< double > &yData, double x, bool extrapolate, size_t i=0) const
std::vector< double > fvis_distances_x_flat_lateral
double distance(double x1, double y1, double z1, double x2, double y2, double z2)
std::vector< geo::Point_t > fOpDetCenter
std::vector< double > fOpDetLength
std::vector< std::vector< double > > fborder_corr_flat
double fAnodeReflectivity
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
static constexpr bool isApproximatelyEqual(TReal a, TReal b, TReal tolerance=std::numeric_limits< TReal >::epsilon())
void VISVisibility(geo::Point_t const &ScintPoint, OpticalDetector const &opDet, const double cathode_visibility, geo::Point_t const &hotspot, double &ReflDetThis, bool AnodeMode=false)
static constexpr bool isApproximatelyZero(TReal a, TReal tolerance=std::numeric_limits< TReal >::epsilon())
std::vector< int > fOpDetType
std::vector< double > fborder_corr_angulo_dome
bool isOpDetInSameTPC(geo::Point_t const &ScintPoint, geo::Point_t const &OpDetPoint) const
std::vector< double > fvis_distances_x_dome
static constexpr bool isDefinitelyGreaterThan(TReal a, TReal b, TReal tolerance=std::numeric_limits< TReal >::epsilon())
double fcathode_ydimension
double Disk_SolidAngle(const double d, const double h, const double b) const
fhicl::ParameterSet fVISHitsParams
double fanode_plane_depth
SemiAnalyticalModel(fhicl::ParameterSet VUVHits, fhicl::ParameterSet VISHits, bool doReflectedLight=false, bool includeAnodeReflections=false)
std::vector< double > fborder_corr_angulo_flat
std::vector< int > fOpDetOrientation
fhicl::ParameterSet fVUVHitsParams
double fFieldCageTransparencyLateral
std::vector< std::vector< std::vector< double > > > fvispars_dome