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

Change to km3io definitions

parent eb4be9c8
No related branches found
No related tags found
1 merge request!46Cleanups
Pipeline #38791 passed with warnings
...@@ -26,6 +26,7 @@ import scipy.constants as constants ...@@ -26,6 +26,7 @@ import scipy.constants as constants
from scipy.optimize import curve_fit from scipy.optimize import curve_fit
import mendeleev import mendeleev
from datetime import datetime from datetime import datetime
import km3io
from .physics import visible_energy_fraction from .physics import visible_energy_fraction
from .jobcard import Jobcard, read_jobcard, PDGID_LOOKUP from .jobcard import Jobcard, read_jobcard, PDGID_LOOKUP
...@@ -178,88 +179,7 @@ EMPTY_KM3NET_HEADER_DICT = { ...@@ -178,88 +179,7 @@ EMPTY_KM3NET_HEADER_DICT = {
"primary": "0", "primary": "0",
} }
PARTICLE_MC_STATUS = { W2LIST_LENGTH = max(km3io.definitions.w2list_km3buu.values()) + 1
"TRK_MOTHER_UNDEFINED":
# mother id was not defined for this MC track (all reco tracks have this value)
-1,
"TRK_MOTHER_NONE":
-2, # mother id of a particle if it has no parent
"TRK_ST_UNDEFINED":
# status was not defined for this MC track (all reco tracks have this value)
0,
"TRK_ST_FINALSTATE":
# particle to be tracked by detector-level MC ('track_in' tag in evt files from gseagen, genhen, mupage).
1,
"TRK_ST_PRIMARYNEUTRINO":
# initial state neutrino ('neutrino' tag in evt files from gseagen and genhen).
100,
"TRK_ST_PRIMARYCOSMIC":
# initial state cosmic ray ('track_primary' tag in evt files from corant).
200,
"TRK_ST_ININUCLEI":
5, # Initial state nuclei (gseagen)
"TRK_ST_INTERSTATE":
2, # Intermidiate state particles produced in hadronic showers (gseagen)
"TRK_ST_DECSTATE":
3, # Short-lived particles that are forced to decay, like pi0 (gseagen)
"TRK_ST_NUCTGT":
11, # Nucleon target (gseagen)
"TRK_ST_PREHAD":
12, # DIS pre-fragmentation hadronic state (gseagen)
"TRK_ST_PRERES":
13, # resonant pre-decayed state (gseagen)
"TRK_ST_HADNUC":
14, # Hadrons inside the nucleus before FSI (gseagen)
"TRK_ST_NUCLREM":
15, # Low energy nuclear fragments (gseagen)
"TRK_ST_NUCLCLT":
16, # For composite nucleons before phase space decay (gseagen)
"TRK_ST_FAKECORSIKA":
# fake particle from corant/CORSIKA to add parent information (gseagen)
21,
"TRK_ST_FAKECORSIKA_DEC_MU_START":
22, # fake particle from CORSIKA: decaying mu at start (gseagen)
"TRK_ST_FAKECORSIKA_DEC_MU_END":
23, # fake particle from CORSIKA: decaying mu at end (gseagen)
"TRK_ST_FAKECORSIKA_ETA_2GAMMA":
24, # fake particle from CORSIKA: eta -> 2 gamma (gseagen)
"TRK_ST_FAKECORSIKA_ETA_3PI0":
25, # fake particle from CORSIKA: eta -> 3 pi0 (gseagen)
"TRK_ST_FAKECORSIKA_ETA_PIP_PIM_PI0":
26, # fake particle from CORSIKA: eta -> pi+ pi- pi0 (gseagen)
"TRK_ST_FAKECORSIKA_ETA_2PI_GAMMA":
27, # fake particle from CORSIKA: eta -> pi+ pi- gamma (gseagen)
"TRK_ST_FAKECORSIKA_CHERENKOV_GAMMA":
# fake particle from CORSIKA: Cherenkov photons on particle output file (gseagen)
28,
"TRK_ST_PROPLEPTON":
1001, # lepton propagated that reaches the can (gseagen)
"TRK_ST_PROPDECLEPTON":
2001 # lepton propagated and decayed before got to the can (gseagen)
}
W2LIST_LOOKUP = {
"PS": 0,
"EG": 1,
"XSEC_MEAN": 2,
"COLUMN_DEPTH": 3,
"P_EARTH": 4,
"WATER_INT_LEN": 5,
"BX": 7,
"BY": 8,
"ICHAN": 9,
"CC": 10,
"XSEC": 13,
"DXSEC": 14,
"TARGETA": 15,
"TARGETZ": 16,
"VERINCAN": 17,
"LEPINCAN": 18,
"GIBUU_WEIGHT": 23,
"GIBUU_SCAT_TYPE": 24
}
W2LIST_LENGTH = max(W2LIST_LOOKUP.values()) + 1
GIBUU_FIELDNAMES = [ GIBUU_FIELDNAMES = [
'weight', 'barcode', 'Px', 'Py', 'Pz', 'E', 'evType', 'lepIn_E', 'weight', 'barcode', 'Px', 'Py', 'Pz', 'E', 'evType', 'lepIn_E',
...@@ -769,27 +689,27 @@ def write_detector_file(gibuu_output, ...@@ -769,27 +689,27 @@ def write_detector_file(gibuu_output,
evt.w.push_back(-1.0) # w3 (= w2*flux) evt.w.push_back(-1.0) # w3 (= w2*flux)
# Event Information (w2list) # Event Information (w2list)
evt.w2list.resize(W2LIST_LENGTH) evt.w2list.resize(W2LIST_LENGTH)
evt.w2list[W2LIST_LOOKUP["PS"]] = global_generation_weight evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_PS"]] = global_generation_weight
evt.w2list[W2LIST_LOOKUP["EG"]] = gibuu_output.flux_index evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_EG"]] = gibuu_output.flux_index
evt.w2list[W2LIST_LOOKUP["XSEC_MEAN"]] = mean_xsec_func( evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_XSEC_MEAN"]] = mean_xsec_func(
event.lepIn_E) event.lepIn_E)
evt.w2list[W2LIST_LOOKUP["XSEC"]] = event.xsec evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_XSEC"]] = event.xsec
evt.w2list[W2LIST_LOOKUP["TARGETA"]] = gibuu_output.A evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_TARGETA"]] = gibuu_output.A
evt.w2list[W2LIST_LOOKUP["TARGETZ"]] = gibuu_output.Z evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_TARGETZ"]] = gibuu_output.Z
evt.w2list[W2LIST_LOOKUP["BX"]] = bjorkenx[mc_event_id] evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_BX"]] = bjorkenx[mc_event_id]
evt.w2list[W2LIST_LOOKUP["BY"]] = bjorkeny[mc_event_id] evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_BY"]] = bjorkeny[mc_event_id]
evt.w2list[W2LIST_LOOKUP["CC"]] = ichan evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_CC"]] = ichan
evt.w2list[W2LIST_LOOKUP["ICHAN"]] = SCATTERING_TYPE_TO_GENIE[ evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_ICHAN"]] = SCATTERING_TYPE_TO_GENIE[
event.evType] event.evType]
evt.w2list[W2LIST_LOOKUP["VERINCAN"]] = 1 evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_VERINCAN"]] = 1
evt.w2list[W2LIST_LOOKUP["LEPINCAN"]] = 1 evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_LEPINCAN"]] = 1
evt.w2list[W2LIST_LOOKUP["GIBUU_WEIGHT"]] = event.weight evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_GIBUU_WEIGHT"]] = event.weight
evt.w2list[W2LIST_LOOKUP["GIBUU_SCAT_TYPE"]] = event.evType evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_GIBUU_SCAT_TYPE"]] = event.evType
# TODO # TODO
evt.w2list[W2LIST_LOOKUP["DXSEC"]] = np.nan evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_DXSEC"]] = np.nan
evt.w2list[W2LIST_LOOKUP["COLUMN_DEPTH"]] = np.nan evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_COLUMN_DEPTH"]] = np.nan
evt.w2list[W2LIST_LOOKUP["P_EARTH"]] = np.nan evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_P_EARTH"]] = np.nan
evt.w2list[W2LIST_LOOKUP["WATER_INT_LEN"]] = np.nan evt.w2list[km3io.definitions.w2list_km3buu["W2LIST_KM3BUU_WATER_INT_LEN"]] = np.nan
# Vertex Position # Vertex Position
vtx_pos = np.array(geometry.random_pos()) vtx_pos = np.array(geometry.random_pos())
...@@ -816,7 +736,7 @@ def write_detector_file(gibuu_output, ...@@ -816,7 +736,7 @@ def write_detector_file(gibuu_output,
nu_in_trk.dir.set(*direction) nu_in_trk.dir.set(*direction)
nu_in_trk.E = event.lepIn_E nu_in_trk.E = event.lepIn_E
nu_in_trk.t = timestamp nu_in_trk.t = timestamp
nu_in_trk.status = PARTICLE_MC_STATUS["TRK_ST_PRIMARYNEUTRINO"] nu_in_trk.status = km3io.definitions.trkmembers["TRK_ST_PRIMARYNEUTRINO"]
evt.mc_trks.push_back(nu_in_trk) evt.mc_trks.push_back(nu_in_trk)
lep_out_trk = ROOT.Trk() lep_out_trk = ROOT.Trk()
...@@ -832,20 +752,20 @@ def write_detector_file(gibuu_output, ...@@ -832,20 +752,20 @@ def write_detector_file(gibuu_output,
lep_out_trk.t = timestamp lep_out_trk.t = timestamp
if tau_secondaries is not None: if tau_secondaries is not None:
lep_out_trk.status = PARTICLE_MC_STATUS["TRK_ST_UNDEFINED"] lep_out_trk.status = km3io.definitions.trkmembers["TRK_ST_UNDEFINED"]
else: else:
lep_out_trk.status = PARTICLE_MC_STATUS["TRK_ST_FINALSTATE"] lep_out_trk.status = km3io.definitions.trkmembers["TRK_ST_FINALSTATE"]
evt.mc_trks.push_back(lep_out_trk) evt.mc_trks.push_back(lep_out_trk)
if tau_secondaries is not None: if tau_secondaries is not None:
event_tau_sec = tau_secondaries[mc_event_id] event_tau_sec = tau_secondaries[mc_event_id]
add_particles(event_tau_sec, vtx_pos, R, mc_trk_id, timestamp, add_particles(event_tau_sec, vtx_pos, R, mc_trk_id, timestamp,
PARTICLE_MC_STATUS["TRK_ST_FINALSTATE"]) km3io.definitions.trkmembers["TRK_ST_FINALSTATE"])
mc_trk_id += len(event_tau_sec.E) mc_trk_id += len(event_tau_sec.E)
add_particles(event, vtx_pos, R, mc_trk_id, timestamp, add_particles(event, vtx_pos, R, mc_trk_id, timestamp,
PARTICLE_MC_STATUS["TRK_ST_FINALSTATE"]) km3io.definitions.trkmembers["TRK_ST_FINALSTATE"])
tree.Fill() tree.Fill()
for k, v in geometry.header_entries(mc_event_id + 1).items(): for k, v in geometry.header_entries(mc_event_id + 1).items():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment