Warning, /detector_benchmarks/benchmarks/backgrounds/Snakefile is written in an unsupported language. File is not indexed.
0001 import os
0002 import shutil
0003
0004
0005 rule backgrounds_sim:
0006 input:
0007 warmup=ancient("warmup/{DETECTOR_CONFIG}.edm4hep.root"),
0008 geometry_lib=find_epic_libraries(),
0009 output:
0010 "sim_output/{DETECTOR_CONFIG}/backgrounds/{PATH}.edm4hep.root",
0011 log:
0012 "sim_output/{DETECTOR_CONFIG}/backgrounds/{PATH}.edm4hep.root.log",
0013 params:
0014 N_EVENTS=100,
0015 hepmc=lambda wildcards: get_remote_path(f"{wildcards.PATH}.hepmc3.tree.root"),
0016 DD4HEP_HASH=get_spack_package_hash("dd4hep"),
0017 NPSIM_HASH=get_spack_package_hash("npsim"),
0018 cache: True
0019 shell:
0020 """
0021 set -m # monitor mode to prevent lingering processes
0022 exec npsim \
0023 --runType batch \
0024 --part.minimalKineticEnergy 100*GeV \
0025 --filter.tracker edep0 \
0026 -v WARNING \
0027 --numberOfEvents {params.N_EVENTS} \
0028 --compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
0029 --inputFiles {params.hepmc} \
0030 --outputFile {output}
0031 """
0032
0033
0034 DETECTOR_CONFIG=os.environ["DETECTOR_CONFIG"]
0035
0036 rule backgrounds_ecal_backwards:
0037 input:
0038 matplotlibrc=".matplotlibrc",
0039 script="benchmarks/backgrounds/ecal_backwards.py",
0040 electron_beam_gas_sim="sim_output/" + DETECTOR_CONFIG + "/backgrounds/EPIC/EVGEN/BACKGROUNDS/BEAMGAS/electron/GETaLM1.0.0-1.0/10GeV/GETaLM1.0.0-1.0_ElectronBeamGas_10GeV_foam_emin10keV_run001.edm4hep.root",
0041 physics_signal_sim="sim_output/" + DETECTOR_CONFIG + "/backgrounds/EPIC/EVGEN/DIS/NC/10x100/minQ2=1/pythia8NCDIS_10x100_minQ2=1_beamEffects_xAngle=-0.025_hiDiv_1.edm4hep.root",
0042 proton_beam_gas_sim="sim_output/" + DETECTOR_CONFIG + "/backgrounds/EPIC/EVGEN/BACKGROUNDS/BEAMGAS/proton/pythia8.306-1.0/100GeV/pythia8.306-1.0_ProtonBeamGas_100GeV_run001.edm4hep.root",
0043 output:
0044 directory("results/backgrounds/backwards_ecal")
0045 log:
0046 scheduler=".logs/results/backgrounds/backwards_ecal/scheduler.log",
0047 worker=".logs/results/backgrounds/backwards_ecal/worker.log",
0048 threads: workflow.cores
0049 shell:
0050 """
0051 set -m # monitor mode to prevent lingering processes
0052 cleanup() {{
0053 echo Cleaning up
0054 kill $WORKER_PID $SCHEDULER_PID
0055 }}
0056 trap cleanup EXIT
0057
0058 PORT=$RANDOM
0059 dask scheduler --port $PORT 2>{log.scheduler} &
0060 export DASK_SCHEDULER=localhost:$PORT
0061 SCHEDULER_PID=$!
0062 dask worker tcp://$DASK_SCHEDULER --nworkers {threads} --nthreads 1 2>{log.worker} &
0063 WORKER_PID=$!
0064 env \
0065 MATPLOTLIBRC={input.matplotlibrc} \
0066 ELECTRON_BEAM_GAS_GEN=root://dtn-eic.jlab.org//volatile/eic/EPIC/EVGEN/BACKGROUNDS/BEAMGAS/electron/GETaLM1.0.0-1.0/10GeV/GETaLM1.0.0-1.0_ElectronBeamGas_10GeV_foam_emin10keV_run001.hepmc3.tree.root \
0067 ELECTRON_BEAM_GAS_SIM=$(realpath {input.electron_beam_gas_sim}) \
0068 PHYSICS_PROCESS_SIM=$(realpath {input.physics_signal_sim}) \
0069 PROTON_BEAM_GAS_GEN=root://dtn-eic.jlab.org//volatile/eic/EPIC/EVGEN/BACKGROUNDS/BEAMGAS/proton/pythia8.306-1.0/100GeV/pythia8.306-1.0_ProtonBeamGas_100GeV_run001.hepmc3.tree.root \
0070 PROTON_BEAM_GAS_SIM=$(realpath {input.proton_beam_gas_sim}) \
0071 OUTPUT_DIR={output} \
0072 python {input.script}
0073 """