1 #ifndef PROPAGATIONTIMEMODEL_H
2 #define PROPAGATIONTIMEMODEL_H
18 #include "fhiclcpp/ParameterSet.h"
20 #include "CLHEP/Random/RandFlat.h"
23 class HepRandomEngine;
40 fhicl::ParameterSet VISTimingParams,
41 CLHEP::HepRandomEngine& ScintTimeEngine,
42 bool doReflectedLight =
false,
43 bool GeoPropTimeOnly =
false);
48 const size_t OpChannel,
49 bool Reflected =
false);
58 const double distance_in_cm,
59 const size_t angle_bin);
62 const double distance_in_cm);
65 const size_t angle_bin);
69 const TVector3 &ScintPoint,
70 const TVector3 &OpDetPoint);
75 double interpolate(
const std::vector<double>& xData,
76 const std::vector<double>& yData,
82 const std::vector<double>& xData,
83 const std::vector<double>& yData1,
84 const std::vector<double>& yData2,
85 const std::vector<double>& yData3,
89 static double finter_d(
const double* x,
const double* par);
91 static double model_close(
const double* x,
const double* par);
93 static double model_far(
const double* x,
const double* par);
134 std::vector<std::vector<std::vector<double>>>
ftau_pars;
double fangle_bin_timing_vuv
void propagationTime(std::vector< double > &arrival_time_dist, geo::Point_t const &x0, const size_t OpChannel, bool Reflected=false)
process_name opflash particleana ie x
CLHEP::HepRandomEngine & fScintTimeEngine
void getVUVTimes(std::vector< double > &arrivalTimes, const double distance_in_cm, const size_t angle_bin)
double fangle_bin_timing_vis
PropagationTimeModel(fhicl::ParameterSet VUVTimingParams, fhicl::ParameterSet VISTimingParams, CLHEP::HepRandomEngine &ScintTimeEngine, bool doReflectedLight=false, bool GeoPropTimeOnly=false)
static double model_close(const double *x, const double *par)
void getVISTimes(std::vector< double > &arrivalTimes, const TVector3 &ScintPoint, const TVector3 &OpDetPoint)
static double finter_d(const double *x, const double *par)
std::vector< geo::Point_t > fOpDetCenter
const bool fdoReflectedLight
void interpolate3(std::array< double, 3 > &inter, const std::vector< double > &xData, const std::vector< double > &yData1, const std::vector< double > &yData2, const std::vector< double > &yData3, double x, bool extrapolate)
double interpolate(const std::vector< double > &xData, const std::vector< double > &yData, double x, bool extrapolate, size_t i=0) const
std::vector< std::vector< std::vector< double > > > ftau_pars
std::vector< double > fradial_distances_refl
static double model_far(const double *x, const double *par)
const bool fGeoPropTimeOnly
Definitions of geometry vector data types.
std::vector< geo::BoxBoundedGeo > fActiveVolumes
double finflexion_point_distance
double fast_acos(double x) const
std::vector< int > fOpDetOrientation
std::vector< std::vector< double > > fVUV_max
Provides a base class aware of world box coordinates.
void getVUVTimesGeo(std::vector< double > &arrivalTimes, const double distance_in_cm)
std::vector< std::vector< double > > fparameters[7]
const fhicl::ParameterSet fVUVTimingParams
std::vector< std::vector< std::vector< double > > > fcut_off_pars
std::vector< std::vector< TF1 > > fVUV_timing
std::vector< std::vector< double > > fVUV_min
std::vector< double > fdistances_refl
CLHEP::RandFlat fUniformGen
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
void generateParam(const size_t index, const size_t angle_bin)
const fhicl::ParameterSet fVISTimingParams