aboutsummaryrefslogtreecommitdiff
path: root/src/muon.c
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2019-06-14 15:31:20 -0500
committertlatorre <tlatorre@uchicago.edu>2019-06-14 15:31:20 -0500
commitb1e355f5249126f8a5bec4eab427bfe260dfb1a3 (patch)
tree4357f8fce80ee772d66a7d12bc9e4ec94e1f83fd /src/muon.c
parent46b88c43a669fbdc0fd6438de5ecf6f02ee08677 (diff)
downloadsddm-b1e355f5249126f8a5bec4eab427bfe260dfb1a3.tar.gz
sddm-b1e355f5249126f8a5bec4eab427bfe260dfb1a3.tar.bz2
sddm-b1e355f5249126f8a5bec4eab427bfe260dfb1a3.zip
set the maximum kinetic energy in the fit dynamically based on particle ID
The range and energy loss tables have different maximum values for electrons, muons, and protons so we have to dynamically set the maximum energy of the fit in order to avoid a GSL interpolation error. This commit adds {electron,muon,proton}_get_max_energy() functions to return the maximum energy in the tables and that is then used to set the maximum value in the fit.
Diffstat (limited to 'src/muon.c')
-rw-r--r--src/muon.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/muon.c b/src/muon.c
index aea2309..9d6c91a 100644
--- a/src/muon.c
+++ b/src/muon.c
@@ -312,6 +312,21 @@ err:
return -1;
}
+/* Returns the maximum kinetic energy for a muon in the range tables.
+ *
+ * If you call muon_get_range() or muon_get_dEdx() with a kinetic energy higher
+ * you will get a GSL interpolation error. */
+double muon_get_max_energy(void)
+{
+ if (!initialized) {
+ if (init()) {
+ exit(1);
+ }
+ }
+
+ return x[size-1];
+}
+
double muon_get_range(double T, double rho)
{
/* Returns the approximate range a muon with kinetic energy `T` will travel