Skip to content
Snippets Groups Projects
Commit 6d808bbe authored by Johannes Schumann's avatar Johannes Schumann
Browse files

Fix muon range wrt. start stop ranges

parent 8487553f
No related branches found
No related tags found
1 merge request!25Visible energy
......@@ -279,25 +279,27 @@ def muon_range_seawater(start_energy, stop_energy):
muon_mass = Particle.from_string("mu").mass / 1e3
if start_energy <= muon_mass:
return 0
elif start_energy < stop_energy:
raise ValueError("Final energy must be smaller than initial energy.")
etmp = start_energy
dx = 0.0
params = np.array(
[(0., 2.3e-1 * DENSITY_SEA_WATER, 15.5e-4 * DENSITY_SEA_WATER),
(30., 2.67e-1 * DENSITY_SEA_WATER, 3.4e-4 * DENSITY_SEA_WATER),
(35.3e3, -6.5e-1 * DENSITY_SEA_WATER, 3.66e-4 * DENSITY_SEA_WATER)],
dtype=[("energy", "f8"), ("a", "f8"), ("b", "f8")])
mask_stages = (params["energy"] < stop_energy) & (np.append(
params["energy"][1:], np.inf) > start_energy)
energy_steps = np.append(params["energy"][mask_stages], stop_energy)
energy_steps[0] = start_energy
for i in np.where(mask_stages)[0]:
dx += muon_range(energy_steps[i], energy_steps[i + 1], params["a"][i],
params["b"][i])
params = np.array([
(35.3e3, -6.5e-1 * DENSITY_SEA_WATER, 3.66e-4 * DENSITY_SEA_WATER),
(30., 2.67e-1 * DENSITY_SEA_WATER, 3.4e-4 * DENSITY_SEA_WATER),
(0., 2.3e-1 * DENSITY_SEA_WATER, 15.5e-4 * DENSITY_SEA_WATER),
],
dtype=[("energy", "f8"), ("a", "f8"), ("b", "f8")])
mask_stages = (params["energy"] < start_energy) & (np.append(
np.inf, params["energy"][:-1]) > stop_energy)
energy_steps = np.append(start_energy, params["energy"][mask_stages])
energy_steps[-1] = stop_energy
for i, stage in enumerate(np.where(mask_stages)[0]):
dx += muon_range(energy_steps[i], energy_steps[i + 1],
params["a"][stage], params["b"][stage])
return dx
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment