10 #ifndef PHOTONVISIBILITYSERVICE_H 11 #define PHOTONVISIBILITYSERVICE_H 48 double GetQuenchingFactor(
double dQdx)
const;
50 template <
typename Po
int>
55 template <
typename Po
int>
61 template <
typename Po
int>
67 template <
typename Po
int>
73 template <
typename Po
int>
79 void LoadLibrary()
const;
82 void StoreLightProd(
int VoxID,
double N);
83 void RetrieveLightProd(
int& VoxID,
double& N)
const;
85 void SetLibraryEntry(
int VoxID,
OpDetID_t libOpChannel,
float N,
bool wantReflected =
false);
86 float GetLibraryEntry(
int VoxID,
OpDetID_t libOpChannel,
bool wantReflected =
false)
const;
87 bool HasLibraryEntries(
int VoxID,
bool wantReflected =
false)
const;
90 template <
typename Po
int>
95 void SetLibraryReflT0Entry(
int VoxID,
int OpChannel,
float value);
97 float GetLibraryReflT0Entry(
int VoxID,
OpDetID_t libOpChannel)
const;
99 template <
typename Po
int>
104 void SetLibraryTimingParEntry(
int VoxID,
int OpChannel,
float value,
size_t parnum);
106 float GetLibraryTimingParEntry(
int VoxID,
OpDetID_t libOpChannel,
size_t npar)
const;
108 template <
typename Po
int>
113 void SetLibraryTimingTF1Entry(
int VoxID,
int OpChannel, TF1
const& func);
116 void SetDirectLightPropFunctions(TF1
const* functions[8],
119 double& tf1_sampling_factor)
const;
120 void SetReflectedCOLightPropFunctions(TF1
const* functions[5],
122 double& t0_break_point)
const;
123 void LoadTimingsForVUVPar(
std::vector<std::vector<double>> (&v)[7],
127 double& vuv_vgroup_mean,
128 double& vuv_vgroup_max,
129 double& inflexion_point_distance,
130 double& angle_bin_timing_vuv)
const;
131 void LoadTimingsForVISPar(std::vector<double>& distances,
132 std::vector<double>& radial_distances,
136 double& angle_bin_timing_vis)
const;
137 void LoadVUVSemiAnalyticProperties(
bool& isFlatPDCorr,
139 double& delta_angulo_vuv,
141 void LoadGHFlat(
std::vector<std::vector<double>>& GHvuvpars_flat,
142 std::vector<double>& border_corr_angulo_flat,
143 std::vector<std::vector<double>>& border_corr_flat)
const;
144 void LoadGHDome(
std::vector<std::vector<double>>& GHvuvpars_dome,
145 std::vector<double>& border_corr_angulo_dome,
146 std::vector<std::vector<double>>& border_corr_dome)
const;
147 void LoadVisSemiAnalyticProperties(
double& delta_angulo_vis,
double& radius)
const;
148 void LoadVisParsFlat(std::vector<double>& vis_distances_x_flat,
149 std::vector<double>& vis_distances_r_flat,
151 void LoadVisParsDome(std::vector<double>& vis_distances_x_dome,
152 std::vector<double>& vis_distances_r_dome,
169 size_t NOpChannels()
const;
204 TF1* fparslogNorm =
nullptr;
205 TF1* fparslogNorm_far =
nullptr;
206 TF1* fparsMPV =
nullptr;
207 TF1* fparsMPV_far =
nullptr;
208 TF1* fparsWidth =
nullptr;
209 TF1* fparsCte =
nullptr;
210 TF1* fparsCte_far =
nullptr;
211 TF1* fparsSlope =
nullptr;
213 TF1* fparslogNorm_refl =
nullptr;
214 TF1* fparsMPV_refl =
nullptr;
215 TF1* fparsWidth_refl =
nullptr;
216 TF1* fparsCte_refl =
nullptr;
217 TF1* fparsSlope_refl =
nullptr;
223 std::vector<std::vector<double>>
fMpv;
228 double fstep_size, fmax_d, fmin_d,
fvuv_vgroup_mean, fvuv_vgroup_max, finflexion_point_distance,
229 fangle_bin_timing_vuv;
233 std::vector<std::vector<std::vector<double>>>
fCut_off;
234 std::vector<std::vector<std::vector<double>>>
fTau;
269 std::unique_ptr<phot::IPhotonMappingTransformations>
fMapping;
279 bool wantReflected =
false)
const;
285 static double DistanceToOpDetImpl(
geo::Point_t const& p,
unsigned int OpDet);
287 static double SolidAngleFactorImpl(
geo::Point_t const& p,
unsigned int OpDet);
289 bool doHasVisibility(
geo::Point_t const& p,
bool wantReflected =
false)
const;
292 unsigned int OpChannel,
293 bool wantReflected =
false)
const;
303 void findVoxelSuggestion(
float tpcMin,
311 std::string* logString =
nullptr)
const;
313 float testVoxelSuggestion(
float tpcMin,
322 std::string* logString =
nullptr)
const;
330 #endif // PHOTONVISIBILITYSERVICE_H
Definitions of voxel data structures.
std::vector< std::vector< std::vector< double > > > fTau
bool IncludePropTime() const
std::unique_ptr< phot::IPhotonMappingTransformations > fMapping
Mapping of detector space into library space.
bool UseParameterization() const
std::vector< std::vector< double > > fborder_corr_flat
std::vector< double > fvis_distances_r_flat
std::vector< double > fvis_distances_x_dome
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.
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.
std::vector< double > fDistances_refl
MappedFunctions_t GetTimingTF1(Point const &p) 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
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
bool HasVisibility(Point const &p, bool wantReflected=false) const
std::string fParPropTime_formula
bool StoreReflected() const
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
size_t ParPropTimeNpar() const
MappedT0s_t GetReflT0s(Point const &p) const
Definitions of geometry vector data types.
std::vector< double > fDistances_radial_refl
#define DECLARE_ART_SERVICE(svc, scope)
std::string VISBorderCorrectionType() const
std::string fSaveTPCVoxels
Utilities to extend the interface of geometry vectors.
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
bool fApplyVISBorderCorrection
std::vector< std::vector< double > > fGHvuvpars_dome
std::vector< std::vector< double > > fExpo_over_Landau_norm
const sim::PhotonVoxelDef & GetVoxelDef() const
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
General LArSoft Utilities.
std::vector< std::vector< double > > fMpv
A container for photon visibility mapping data.
Declaration of types related to photon visibility.
IPhotonLibrary * fTheLibrary
std::tuple< double, double, const reco::ClusterHit3D * > Point
Definitions used by the VoronoiDiagram algorithm.
bool ApplyVISBorderCorrection() const
std::vector< std::vector< double > > fborder_corr_dome
bool UseNhitsModel() const
std::vector< double > fborder_corr_angulo_flat
std::string ParPropTimeFormula() const
std::vector< std::vector< std::vector< double > > > fvispars_dome
std::vector< std::vector< double > > fNorm_over_entries
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.
bool IncludeParPropTime() 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
std::vector< double > fborder_corr_angulo_dome
std::vector< std::vector< std::vector< double > > > fvispars_flat