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

Update PROPOSAL workflow to v7

parent fb7054c6
No related branches found
No related tags found
1 merge request!20Proposal 7
Pipeline #23566 failed
...@@ -36,23 +36,33 @@ PROPOSAL_LEPTON_DEFINITIONS = { ...@@ -36,23 +36,33 @@ PROPOSAL_LEPTON_DEFINITIONS = {
-16: pp.particle.NuTauBarDef -16: pp.particle.NuTauBarDef
} }
PROPOSAL_TARGET = pp.medium.AntaresWater()
def _setup_propagator(max_distance, particle_definition):
pp.InterpolationSettings.tables_path = Config().proposal_itp_tables
crosssection = pp.crosssection.make_std_crosssection(
particle_def=particle_definition,
target=PROPOSAL_TARGET,
interpolate=True,
cuts=pp.EnergyCutSettings(np.inf, 0.05, False))
collection = pp.PropagationUtilityCollection()
collection.displacement = pp.make_displacement(crosssection, True)
collection.interaction = pp.make_interaction(crosssection, True)
collection.decay = pp.make_decay(crosssection, True)
collection.time = pp.make_time(crosssection, True)
utility = pp.PropagationUtility(collection=collection)
def _setup_propagator(max_distance, lepton_definition):
sector = pp.SectorDefinition()
sector.medium = pp.medium.AntaresWater(1.0)
geometry = pp.geometry.Sphere(pp.Vector3D(), max_distance, 0) geometry = pp.geometry.Sphere(pp.Vector3D(), max_distance, 0)
sector.geometry = geometry density_distr = pp.density_distribution.density_homogeneous(
sector.scattering_model = pp.scattering.ScatteringModel.Highland PROPOSAL_TARGET.mass_density)
cfg = Config() propagator = pp.Propagator(particle_definition,
interpolation = pp.InterpolationDef() [(geometry, utility, density_distr)])
interpolation.path_to_tables = cfg.proposal_itp_tables
interpolation.path_to_tables_readonly = cfg.proposal_itp_tables
return pp.Propagator(sector_defs=[sector], return propagator
particle_def=lepton_definition,
detector=geometry,
interpolation_def=interpolation)
def propagate_lepton(lepout_data, pdgid): def propagate_lepton(lepout_data, pdgid):
...@@ -76,28 +86,30 @@ def propagate_lepton(lepout_data, pdgid): ...@@ -76,28 +86,30 @@ def propagate_lepton(lepout_data, pdgid):
lepout_data.lepOut_E) / lepton_info.mass #[cm] lepout_data.lepOut_E) / lepton_info.mass #[cm]
lepton_def = PROPOSAL_LEPTON_DEFINITIONS[pdgid]() lepton_def = PROPOSAL_LEPTON_DEFINITIONS[pdgid]()
lepton = pp.particle.DynamicData(lepton_def.particle_type)
propagated_data = defaultdict(list)
propagator = _setup_propagator(10 * prop_range, lepton_def) propagator = _setup_propagator(10 * prop_range, lepton_def)
propagated_data = defaultdict(list)
for entry in lepout_data: for entry in lepout_data:
lepton.energy = entry.lepOut_E * 1e3 init_state = pp.particle.ParticleState()
lepton.position = pp.Vector3D(0, 0, 0) init_state.energy = entry.lepOut_E * 1e3
lepton.direction = pp.Vector3D(entry.lepOut_Px, entry.lepOut_Py, init_state.position = pp.Cartesian3D(0, 0, 0)
entry.lepOut_Pz) init_state.direction = pp.Cartesian3D(entry.lepOut_Px, entry.lepOut_Py,
lepton.direction.normalize() entry.lepOut_Pz)
secondaries = propagator.propagate(lepton, 5 * prop_range) init_state.direction.normalize()
track = propagator.propagate(init_state, 5 * prop_range)
E = np.array(secondaries.energy) / 1e3 secondaries = track.decay_products()
pdgid = [p.type for p in secondaries.particles]
Px = [p.direction.x * p.momentum / 1e3 for p in secondaries.particles] E = [s.energy / 1e3 for s in secondaries]
Py = [p.direction.y * p.momentum / 1e3 for p in secondaries.particles] pdgid = [p.type for p in secondaries]
Pz = [p.direction.z * p.momentum / 1e3 for p in secondaries.particles] Px = [p.direction.x * p.momentum / 1e3 for p in secondaries]
x = [p.position.x / 100 for p in secondaries.particles] Py = [p.direction.y * p.momentum / 1e3 for p in secondaries]
y = [p.position.y / 100 for p in secondaries.particles] Pz = [p.direction.z * p.momentum / 1e3 for p in secondaries]
z = [p.position.z / 100 for p in secondaries.particles] x = [p.position.x / 100 for p in secondaries]
dt = [p.time for p in secondaries.particles] y = [p.position.y / 100 for p in secondaries]
z = [p.position.z / 100 for p in secondaries]
dt = [p.time for p in secondaries]
propagated_data["E"].append(E) propagated_data["E"].append(E)
propagated_data["Px"].append(Px) propagated_data["Px"].append(Px)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment