Skip to content
Snippets Groups Projects

Weights update

Merged Johannes Schumann requested to merge weights into master
Files
2
+ 15
1
@@ -49,6 +49,7 @@ FLUXDESCR_FILENAME = "neutrino_initialized_energyFlux.dat"
XSECTION_FILENAMES = {"all": "neutrino_absorption_cross_section_ALL.dat"}
SECONDS_PER_YEAR = 365.25 * 24 * 60 * 60
SECONDS_WEIGHT_TIMESPAN = 1
PARTICLE_COLUMNS = ["E", "Px", "Py", "Pz", "barcode"]
EVENTINFO_COLUMNS = [
@@ -315,6 +316,15 @@ class GiBUUOutput:
bounds_error=False)
return lambda e: xsec_interp(e) * e
def global_generation_weight(solid_angle):
# I_E * I_theta * t_gen (* #NuTypes)
if self.flux_data is not None:
energy_phase_space = self.flux_interpolation.integral(
self._energy_min, self._energy_max)
else:
energy_phase_space = 1
return solid_angle * energy_phase_space * SECONDS_WEIGHT_TIMESPAN
def w2weights(self, volume, target_density, solid_angle):
"""
Calculate w2weights
@@ -341,7 +351,7 @@ class GiBUUOutput:
energy_factor = energy_phase_space * inv_gen_flux
else:
energy_factor = 1
env_factor = volume * SECONDS_PER_YEAR
env_factor = volume * SECONDS_WEIGHT_TIMESPAN
retval = env_factor * solid_angle * energy_factor * xsec * 10**-42 * target_density
return retval
@@ -436,6 +446,8 @@ class GiBUUOutput:
"""
import pandas as pd
df = ak.to_pandas(self.arrays)
if len(df) == 0:
return df
sec_df = df[df.index.get_level_values(1) == 0].copy()
sec_df.loc[:, "E"] = sec_df.lepOut_E
sec_df.loc[:, "Px"] = sec_df.lepOut_Px
@@ -572,6 +584,7 @@ def write_detector_file(gibuu_output,
target[0].atomic_weight)
w2 = gibuu_output.w2weights(geometry.volume, targets_per_volume, 4 * np.pi)
global_generation_weight = gibuu_output.global_generation_weight(4 * np.pi)
head = ROOT.Head()
header_dct = EMPTY_KM3NET_HEADER_DICT.copy()
@@ -606,6 +619,7 @@ def write_detector_file(gibuu_output,
evt.w.push_back(-1.0) #w3 (= w2*flux)
# Event Information (w2list)
evt.w2list.resize(W2LIST_LENGTH)
evt.w2list[W2LIST_LOOKUP["PS"]] = global_generation_weight
evt.w2list[W2LIST_LOOKUP["XSEC_MEAN"]] = mean_xsec_func(event.lepIn_E)
evt.w2list[W2LIST_LOOKUP["XSEC"]] = event.xsec
evt.w2list[W2LIST_LOOKUP["TARGETA"]] = gibuu_output.A
Loading