Warning, /physics_benchmarks/benchmarks/Inclusive/dis/Snakefile is written in an unsupported language. File is not indexed.
0001 import shutil
0002
0003
0004 rule dis_compile:
0005 input:
0006 ROOT_BUILD_DIR_PREFIX + "benchmarks/Inclusive/dis/analysis/dis_electrons_cxx.so",
0007
0008
0009 rule dis_sim:
0010 input:
0011 warmup="warmup/{DETECTOR_CONFIG}.edm4hep.rnt.root",
0012 geometry_lib=find_epic_libraries(),
0013 output:
0014 "sim_output/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_1.{INDEX}.edm4hep.rnt.root",
0015 wildcard_constraints:
0016 INDEX=r"\d{4}",
0017 params:
0018 N_EVENTS=100,
0019 SEED=lambda wildcards: "1" + wildcards.INDEX,
0020 EBEAM=lambda wildcards: wildcards.EBEAM,
0021 PBEAM=lambda wildcards: wildcards.PBEAM,
0022 MINQ2=lambda wildcards: wildcards.MINQ2,
0023 DETECTOR_PATH=config["DETECTOR_PATH"],
0024 DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
0025 DD4HEP_HASH=get_spack_package_hash("dd4hep"),
0026 NPSIM_HASH=get_spack_package_hash("npsim"),
0027 cache: True
0028 shell:
0029 """
0030 npsim \
0031 --runType batch \
0032 --part.minimalKineticEnergy 1000*GeV \
0033 --filter.tracker edep0 \
0034 -v WARNING \
0035 --numberOfEvents {params.N_EVENTS} \
0036 --compactFile {params.DETECTOR_PATH}/{params.DETECTOR_CONFIG}.xml \
0037 --random.seed {params.SEED} \
0038 --inputFiles root://dtn-eic.jlab.org//volatile/eic/EPIC/EVGEN/DIS/NC/{params.EBEAM}x{params.PBEAM}/minQ2={params.MINQ2}/pythia8NCDIS_{params.EBEAM}x{params.PBEAM}_minQ2={params.MINQ2}_beamEffects_xAngle=-0.025_hiDiv_vtxfix_1.hepmc3.tree.root \
0039 --outputConfig.useRNTuple true \
0040 --outputFile {output}
0041 """
0042
0043
0044 rule dis_reco_eicrecon:
0045 # This rule produces RNTuple format output (.edm4eic.rnt.root)
0046 # Analysis scripts (dis_electrons.cxx, kinematics_correlations.py) are format-agnostic
0047 # and work with both TTree and RNTuple formats:
0048 # - RNTuple: .edm4eic.rnt.root (default, used here with -Ppodio:output_backend=rntuple)
0049 # - TTree: .edm4eic.root (remove -Ppodio:output_backend=rntuple for legacy format)
0050 input:
0051 "sim_output/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_1.{INDEX}.edm4hep.rnt.root",
0052 output:
0053 "sim_output/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_1.{INDEX}.eicrecon.edm4eic.rnt.root",
0054 params:
0055 DETECTOR_CONFIG=lambda wildcards: wildcards.DETECTOR_CONFIG,
0056 EICRECON_HASH=get_spack_package_hash("eicrecon"),
0057 cache: True
0058 shell:
0059 """
0060 DETECTOR_CONFIG={params.DETECTOR_CONFIG} eicrecon {input} -Ppodio:output_file={output} -Ppodio:output_backend=rntuple
0061 """
0062
0063
0064 rule dis_generate_config:
0065 input:
0066 data="sim_output/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_1.0000.eicrecon.edm4eic.rnt.root",
0067 output:
0068 config="results/{DETECTOR_CONFIG}/dis/{EBEAM}on{PBEAM}/minQ2={MINQ2}_config.json",
0069 shell: """
0070 cat > {output.config} <<EOF
0071 {{
0072 "rec_file": "{input.data}",
0073 "detector": "{wildcards.DETECTOR_CONFIG}",
0074 "output_prefix": "results/{wildcards.DETECTOR_CONFIG}/dis/{wildcards.EBEAM}on{wildcards.PBEAM}/minQ2={wildcards.MINQ2}/dis_{wildcards.EBEAM}x{wildcards.PBEAM}_minQ2={wildcards.MINQ2}",
0075 "results_path": "results/{wildcards.DETECTOR_CONFIG}/dis/{wildcards.EBEAM}on{wildcards.PBEAM}/minQ2={wildcards.MINQ2}",
0076 "ebeam": {wildcards.EBEAM},
0077 "pbeam": {wildcards.PBEAM},
0078 "minq2": {wildcards.MINQ2},
0079 "plot_tag": "dis_{wildcards.EBEAM}x{wildcards.PBEAM}_minQ2={wildcards.MINQ2}",
0080 "test_tag": "dis_{wildcards.EBEAM}x{wildcards.PBEAM}_minQ2={wildcards.MINQ2}"
0081 }}
0082 EOF
0083 """
0084
0085
0086 rule dis_analysis_electrons:
0087 input:
0088 script="benchmarks/Inclusive/dis/analysis/dis_electrons.cxx",
0089 script_compiled=ROOT_BUILD_DIR_PREFIX + "benchmarks/Inclusive/dis/analysis/dis_electrons_cxx.so",
0090 data="sim_output/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_1.0000.eicrecon.edm4eic.rnt.root",
0091 config="results/{DETECTOR_CONFIG}/dis/{EBEAM}on{PBEAM}/minQ2={MINQ2}_config.json",
0092 output:
0093 expand("results/{{DETECTOR_CONFIG}}/dis/{{EBEAM}}on{{PBEAM}}/minQ2={{MINQ2}}/{FILENAME}", FILENAME=[
0094 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_logQ2_panels.png",
0095 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_logQ2_overlays.png",
0096 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_Q2_res_panels.png",
0097 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_Q2_res_overlays.png",
0098 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_x_panels.png",
0099 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_x_overlays.png",
0100 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_x_res_panels.png",
0101 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}_x_res_overlays.png",
0102 "dis_{EBEAM}x{PBEAM}_minQ2={MINQ2}dis_electrons.json"
0103 ]),
0104 shell: """
0105 root -l -b -q '{input.script}+("{input.config}")'
0106 """
0107
0108
0109 rule dis_analysis_kinematics_correlations:
0110 input:
0111 data="sim_output/{DETECTOR_CONFIG}/pythia8NCDIS_{EBEAM}x{PBEAM}_minQ2={MINQ2}_beamEffects_xAngle=-0.025_hiDiv_1.0000.eicrecon.edm4eic.rnt.root",
0112 output:
0113 results_path=directory("results/{DETECTOR_CONFIG}/dis/{EBEAM}on{PBEAM}/minQ2={MINQ2}/kinematics_correlations"),
0114 params:
0115 N_EVENTS=100
0116 wildcard_constraints:
0117 EBEAM=r"\d+",
0118 PBEAM=r"\d+",
0119 MINQ2=r"\d+",
0120 shell: """
0121 mkdir {output.results_path}
0122 python benchmarks/Inclusive/dis/analysis/kinematics_correlations.py --rec_file "{input.data}" --config dis_{wildcards.EBEAM}x{wildcards.PBEAM}_minQ2={wildcards.MINQ2}_{wildcards.DETECTOR_CONFIG} --results_path {output.results_path} --nevents {params.N_EVENTS}
0123 """