10 #ifndef PHOTONVISIBILITYSERVICE_H 11 #define PHOTONVISIBILITYSERVICE_H 45 template <
typename Po
int>
51 template <
typename Po
int>
58 template <
typename Po
int>
65 template <
typename Po
int>
72 template <
typename Po
int>
90 template <
typename Po
int>
100 template <
typename Po
int>
110 template <
typename Po
int>
122 double& tf1_sampling_factor)
const;
125 double& t0_break_point)
const;
130 double& vuv_vgroup_mean,
131 double& vuv_vgroup_max,
132 double& inflexion_point_distance,
133 double& angle_bin_timing_vuv)
const;
135 std::vector<double>& radial_distances,
139 double& angle_bin_timing_vis)
const;
142 double &delta_angulo_vuv,
143 double &radius)
const;
145 std::vector<double> &border_corr_angulo_flat,
146 std::vector<std::vector<double>> &border_corr_flat)
const;
148 std::vector<double> &border_corr_angulo_dome,
149 std::vector<std::vector<double>> &border_corr_dome)
const;
151 double &radius)
const;
153 std::vector<double> &vis_distances_r_flat,
156 std::vector<double> &vis_distances_r_dome,
273 std::vector<std::vector<double>>
fMpv;
282 std::vector<std::vector<std::vector<double>>>
fCut_off;
283 std::vector<std::vector<std::vector<double>>>
fTau;
318 std::unique_ptr<phot::IPhotonMappingTransformations>
fMapping;
332 bool wantReflected =
false)
const;
345 unsigned int OpChannel,
346 bool wantReflected =
false)
const;
362 #endif // PHOTONVISIBILITYSERVICE_H
Definitions of voxel data structures.
std::vector< std::vector< std::vector< double > > > fTau
MappedParams_t doGetTimingPar(geo::Point_t const &p) const
void LoadTimingsForVISPar(std::vector< double > &distances, std::vector< double > &radial_distances, std::vector< std::vector< std::vector< double >>> &cut_off, std::vector< std::vector< std::vector< double >>> &tau, double &vis_vmean, double &angle_bin_timing_vis) const
bool IncludePropTime() const
Index OpChannel(Index detNum, Index channel)
Utilities to extend the interface of geometry vectors.
phot::IPhotonLibrary::Counts_t GetLibraryReflT0Entries(int VoxID) const
MappedCounts_t doGetAllVisibilities(geo::Point_t const &p, bool wantReflected=false) const
phot::IPhotonLibrary::Counts_t GetLibraryEntries(int VoxID, bool wantReflected=false) const
~PhotonVisibilityService()
std::unique_ptr< phot::IPhotonMappingTransformations > fMapping
Mapping of detector space into library space.
void RetrieveLightProd(int &VoxID, double &N) const
bool UseParameterization() const
void SetDirectLightPropFunctions(TF1 const *functions[8], double &d_break, double &d_max, double &tf1_sampling_factor) const
std::vector< std::vector< double > > fborder_corr_flat
std::vector< double > fvis_distances_r_flat
void LoadTimingsForVUVPar(std::vector< std::vector< double >>(&v)[7], double &step_size, double &max_d, double &min_d, double &vuv_vgroup_mean, double &vuv_vgroup_max, double &inflexion_point_distance, double &angle_bin_timing_vuv) const
std::vector< double > fvis_distances_x_dome
void SetLibraryTimingParEntry(int VoxID, int OpChannel, float value, size_t parnum)
std::vector< std::vector< double > > fWidth
std::vector< double > fvis_distances_r_dome
sim::PhotonVoxelDef fVoxelDef
phot::IPhotonMappingTransformations::LibraryIndex_t LibraryIndex_t
Type of optical library index.
double fangle_bin_timing_vis
Representation of a region of space diced into voxels.
double fTF1_sampling_factor
std::vector< double > fDistances_exp
::geo::Point_t toPoint(Point const &p)
Convert the specified point into a geo::Point_t.
float GetLibraryTimingParEntry(int VoxID, OpDetID_t libOpChannel, size_t npar) const
std::vector< double > fDistances_refl
bool HasLibraryEntries(int VoxID, bool wantReflected=false) const
void LoadVisParsFlat(std::vector< double > &vis_distances_x_flat, std::vector< double > &vis_distances_r_flat, std::vector< std::vector< std::vector< double >>> &vispars_flat) const
float doGetVisibilityOfOpLib(geo::Point_t const &p, LibraryIndex_t libIndex, bool wantReflected=false) const
MappedFunctions_t GetTimingTF1(Point const &p) const
bool doHasVisibility(geo::Point_t const &p, bool wantReflected=false) const
std::string fVISBorderCorrectionType
std::vector< double > fvis_distances_x_flat
static double DistanceToOpDet(Point const &p, unsigned int OpDet)
std::vector< std::vector< std::vector< double > > > fCut_off
float GetLibraryEntry(int VoxID, OpDetID_t libOpChannel, bool wantReflected=false) const
void LoadGHDome(std::vector< std::vector< double >> &GHvuvpars_dome, std::vector< double > &border_corr_angulo_dome, std::vector< std::vector< double >> &border_corr_dome) const
int VoxelAt(geo::Point_t const &p) const
int GetVoxelID(Point const &p) const
Returns the ID of the voxel containing p, or -1 if none.
std::vector< double > fDistances_landau
int fParPropTime_MaxRange
void LoadVUVSemiAnalyticProperties(bool &isFlatPDCorr, bool &isDomePDCorr, double &delta_angulo_vuv, double &radius) const
double GetQuenchingFactor(double dQdx) const
float GetLibraryReflT0Entry(int VoxID, OpDetID_t libOpChannel) const
bool HasVisibility(Point const &p, bool wantReflected=false) const
void SetReflectedCOLightPropFunctions(TF1 const *functions[5], double &t0_max, double &t0_break_point) const
std::string fParPropTime_formula
void StoreLightProd(int VoxID, double N)
bool StoreReflected() const
PhotonVisibilityService(fhicl::ParameterSet const &pset)
void LoadGHFlat(std::vector< std::vector< double >> &GHvuvpars_flat, std::vector< double > &border_corr_angulo_flat, std::vector< std::vector< double >> &border_corr_flat) const
size_t ParPropTimeNpar() const
MappedFunctions_t doGetTimingTF1(geo::Point_t const &p) const
geo::Point_t LibLocation(geo::Point_t const &p) const
MappedT0s_t GetReflT0s(Point const &p) const
void LoadVisParsDome(std::vector< double > &vis_distances_x_dome, std::vector< double > &vis_distances_r_dome, std::vector< std::vector< std::vector< double >>> &vispars_dome) const
std::vector< double > fDistances_radial_refl
#define DECLARE_ART_SERVICE(svc, scope)
std::string VISBorderCorrectionType() const
void SetLibraryReflT0Entry(int VoxID, int OpChannel, float value)
void reconfigure(fhicl::ParameterSet const &p)
std::vector< std::vector< double > > fGHvuvpars_flat
phot::IPhotonMappingTransformations::OpDetID_t OpDetID_t
Type of (global) optical detector ID.
std::vector< float > const * Params_t
MappedCounts_t GetAllVisibilities(Point const &p, bool wantReflected=false) const
double fangle_bin_timing_vuv
bool fApplyVISBorderCorrection
std::vector< std::vector< double > > fGHvuvpars_dome
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
std::vector< std::vector< double > > fExpo_over_Landau_norm
const sim::PhotonVoxelDef & GetVoxelDef() const
void LoadVisSemiAnalyticProperties(double &delta_angulo_vis, double &radius) const
General LArSoft Utilities.
std::vector< std::vector< double > > fMpv
void SetLibraryEntry(int VoxID, OpDetID_t libOpChannel, float N, bool wantReflected=false)
A container for photon visibility mapping data.
Declaration of types related to photon visibility.
IPhotonLibrary * fTheLibrary
bool ApplyVISBorderCorrection() const
double finflexion_point_distance
std::vector< std::vector< double > > fborder_corr_dome
bool UseNhitsModel() const
float doGetVisibility(geo::Point_t const &p, unsigned int OpChannel, bool wantReflected=false) const
std::vector< double > fborder_corr_angulo_flat
void SetLibraryTimingTF1Entry(int VoxID, int OpChannel, TF1 const &func)
std::string ParPropTimeFormula() const
std::vector< std::vector< std::vector< double > > > fvispars_dome
std::vector< std::vector< double > > fNorm_over_entries
Definitions of geometry vector data types.
static double SolidAngleFactor(Point const &p, unsigned int OpDet)
const float * Counts_t
Type for visibility count per optical channel.
Interface shared by all PhotonLibrary-like classes.
static double DistanceToOpDetImpl(geo::Point_t const &p, unsigned int OpDet)
MappedT0s_t doGetReflT0s(geo::Point_t const &p) const
bool IncludeParPropTime() const
static double SolidAngleFactorImpl(geo::Point_t const &p, unsigned int OpDet)
size_t NOpChannels() const
MappedParams_t GetTimingPar(Point const &p) const
std::vector< std::vector< double > > fSlope
float GetVisibility(Point const &p, unsigned int OpChannel, bool wantReflected=false) const
phot::IPhotonLibrary::Functions_t GetLibraryTimingTF1Entries(int VoxID) const
std::vector< double > fborder_corr_angulo_dome
phot::IPhotonLibrary::Params_t GetLibraryTimingParEntries(int VoxID) const
std::vector< std::vector< std::vector< double > > > fvispars_flat