aboutsummaryrefslogtreecommitdiff
path: root/src/optics.h
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2019-03-23 17:28:27 -0500
committertlatorre <tlatorre@uchicago.edu>2019-03-23 17:28:27 -0500
commitd1b5cf39aa7885bdade01d31ce22c5675df86e4f (patch)
tree792ba2d7351606c8612a5b7ee28004a50a91201e /src/optics.h
parent2ef4619bb38e02a5a57cacad0759f0a918ded112 (diff)
downloadsddm-d1b5cf39aa7885bdade01d31ce22c5675df86e4f.tar.gz
sddm-d1b5cf39aa7885bdade01d31ce22c5675df86e4f.tar.bz2
sddm-d1b5cf39aa7885bdade01d31ce22c5675df86e4f.zip
fix a bug in the absorption and scattering probabilities
Previously I was computing the fraction of light absorbed and scattered by calculating an average absorption and scattering length weighted by the Cerenkov spectrum and the PMT quantum efficiency, which isn't correct since we should be averaging the absorption and scattering probabilities, not the absorption and scattering lengths. This commit fixes this by instead computing the average probability that a photon is absorbed or scattered as a function of the distance travelled by integrating the absorption and scattering probabilities over all wavelengths weighted by the PMT quantum efficiency and the Cerenkov spectrum.
Diffstat (limited to 'src/optics.h')
-rw-r--r--src/optics.h31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/optics.h b/src/optics.h
index 19db2b9..70ff53b 100644
--- a/src/optics.h
+++ b/src/optics.h
@@ -19,21 +19,32 @@
#include "dict.h"
+/* Global error string when optics_init() returns -1. */
extern char optics_err[256];
+/* Initialize the optics data by reading in the RSPR bank and precomputing the
+ * average absorption and scattering tables. */
int optics_init(dict *db);
-double get_rayleigh_scattering_length_snoman_d2o(double wavelength);
-double get_rayleigh_scattering_length_snoman_h2o(double wavelength);
-double get_weighted_rayleigh_scattering_length_snoman_d2o(void);
-double get_weighted_rayleigh_scattering_length_snoman_h2o(void);
-double get_weighted_absorption_length_snoman_h2o(void);
-double get_absorption_length_snoman_h2o(double wavelength);
-double get_weighted_absorption_length_snoman_d2o(void);
-double get_absorption_length_snoman_d2o(double wavelength);
-double get_weighted_absorption_length_snoman_acrylic(void);
-double get_absorption_length_snoman_acrylic(double wavelength);
+
+/* Functions for computing the index of refraction. */
double get_index(double p, double wavelength, double T);
double get_index_snoman_h2o(double wavelength);
double get_index_snoman_d2o(double wavelength);
+/* Functions for computing the probability that a photon is not absorbed or
+ * scattered after a certain distance. */
+double get_fabs_d2o(double x);
+double get_fabs_h2o(double x);
+double get_fabs_acrylic(double x);
+double get_fsct_d2o(double x);
+double get_fsct_h2o(double x);
+
+/* Functions for computing the absorption and scattering length as a funcion of
+ * wavelength. */
+double get_absorption_length_snoman_d2o(double wavelength);
+double get_absorption_length_snoman_h2o(double wavelength);
+double get_absorption_length_snoman_acrylic(double wavelength);
+double get_rayleigh_scattering_length_snoman_d2o(double wavelength);
+double get_rayleigh_scattering_length_snoman_h2o(double wavelength);
+
#endif