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 = {
-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)
sector.geometry = geometry
sector.scattering_model = pp.scattering.ScatteringModel.Highland
density_distr = pp.density_distribution.density_homogeneous(
PROPOSAL_TARGET.mass_density)
cfg = Config()
interpolation = pp.InterpolationDef()
interpolation.path_to_tables = cfg.proposal_itp_tables
interpolation.path_to_tables_readonly = cfg.proposal_itp_tables
propagator = pp.Propagator(particle_definition,
[(geometry, utility, density_distr)])
return pp.Propagator(sector_defs=[sector],
particle_def=lepton_definition,
detector=geometry,
interpolation_def=interpolation)
return propagator
def propagate_lepton(lepout_data, pdgid):
......@@ -76,28 +86,30 @@ def propagate_lepton(lepout_data, pdgid):
lepout_data.lepOut_E) / lepton_info.mass #[cm]
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)
propagated_data = defaultdict(list)
for entry in lepout_data:
lepton.energy = entry.lepOut_E * 1e3
lepton.position = pp.Vector3D(0, 0, 0)
lepton.direction = pp.Vector3D(entry.lepOut_Px, entry.lepOut_Py,
entry.lepOut_Pz)
lepton.direction.normalize()
secondaries = propagator.propagate(lepton, 5 * prop_range)
E = np.array(secondaries.energy) / 1e3
pdgid = [p.type for p in secondaries.particles]
Px = [p.direction.x * p.momentum / 1e3 for p in secondaries.particles]
Py = [p.direction.y * p.momentum / 1e3 for p in secondaries.particles]
Pz = [p.direction.z * p.momentum / 1e3 for p in secondaries.particles]
x = [p.position.x / 100 for p in secondaries.particles]
y = [p.position.y / 100 for p in secondaries.particles]
z = [p.position.z / 100 for p in secondaries.particles]
dt = [p.time for p in secondaries.particles]
init_state = pp.particle.ParticleState()
init_state.energy = entry.lepOut_E * 1e3
init_state.position = pp.Cartesian3D(0, 0, 0)
init_state.direction = pp.Cartesian3D(entry.lepOut_Px, entry.lepOut_Py,
entry.lepOut_Pz)
init_state.direction.normalize()
track = propagator.propagate(init_state, 5 * prop_range)
secondaries = track.decay_products()
E = [s.energy / 1e3 for s in secondaries]
pdgid = [p.type for p in secondaries]
Px = [p.direction.x * p.momentum / 1e3 for p in secondaries]
Py = [p.direction.y * p.momentum / 1e3 for p in secondaries]
Pz = [p.direction.z * p.momentum / 1e3 for p in secondaries]
x = [p.position.x / 100 for p in secondaries]
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["Px"].append(Px)
......
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