Warning, /detector_benchmarks/benchmarks/barrel_ecal/Snakefile is written in an unsupported language. File is not indexed.
0001 DETECTOR_PATH = os.environ["DETECTOR_PATH"]
0002
0003
0004 rule emcal_barrel_particles_gen:
0005 input:
0006 workflow.source_path("scripts/emcal_barrel_common_functions.h"),
0007 script=workflow.source_path("scripts/emcal_barrel_particles_gen.cxx"),
0008 params:
0009 JUGGLER_N_EVENTS = 100,
0010 output:
0011 "data/emcal_barrel_{PARTICLE}_energies{E_MIN}_{E_MAX}.hepmc",
0012 shell:
0013 """
0014 root -l -b -q '{input.script}+("{output}", {params.JUGGLER_N_EVENTS}, {wildcards.E_MIN}, {wildcards.E_MAX}, "{wildcards.PARTICLE}")'
0015 """
0016
0017
0018 rule emcal_barrel_particles:
0019 input:
0020 "data/emcal_barrel_{PARTICLE}_energies{E_MIN}_{E_MAX}.hepmc"
0021 params:
0022 JUGGLER_N_EVENTS = 100,
0023 output:
0024 "{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_{PARTICLE}_energies{E_MIN}_{E_MAX}.edm4hep.root"
0025 shell:
0026 """
0027 set -m # monitor mode to prevent lingering processes
0028 exec ddsim \
0029 --runType batch \
0030 -v WARNING \
0031 --part.minimalKineticEnergy 0.5*GeV \
0032 --filter.tracker edep0 \
0033 --numberOfEvents {params.JUGGLER_N_EVENTS} \
0034 --compactFile """ + DETECTOR_PATH + """/{wildcards.DETECTOR_CONFIG}.xml \
0035 --inputFiles {input} \
0036 --outputFile {output}
0037 """
0038
0039
0040 # This is needed to bridge snakemake rule files to "normal" benchmarks
0041 rule emcal_barrel_particles_compat_normal:
0042 input:
0043 "{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_{PARTICLE}_energies5.0_5.0.edm4hep.root",
0044 wildcard_constraints:
0045 PARTICLE="[^_]+",
0046 output:
0047 "{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_{PARTICLE}.edm4hep.root",
0048 shell:
0049 """
0050 ln {input} {output}
0051 """
0052
0053
0054 # This is needed to bridge snakemake rule files to "energy_scan" benchmarks
0055 rule emcal_barrel_particles_compat_energy_scan:
0056 input:
0057 "{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_{PARTICLE}_energies{E}_{E}.edm4hep.root",
0058 wildcard_constraints:
0059 PARTICLE="[^_]+",
0060 output:
0061 "{DETECTOR_CONFIG}/sim_output/energy_scan/{E}/sim_emcal_barrel_{PARTICLE}.edm4hep.root",
0062 shell:
0063 """
0064 ln {input} {output}
0065 """
0066
0067
0068 rule emcal_barrel_particles_analysis:
0069 input:
0070 workflow.source_path("scripts/emcal_barrel_common_functions.h"),
0071 script=workflow.source_path("scripts/emcal_barrel_particles_analysis.cxx"),
0072 sim="{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_{PARTICLE}.edm4hep.root",
0073 wildcard_constraints:
0074 PARTICLE="(electron|photon|piplus|piminus)", # avoid clash with "pions"
0075 output:
0076 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_calibration.json",
0077 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_Ethr.png",
0078 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_Ethr.pdf",
0079 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_nhits.png",
0080 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_nhits.pdf",
0081 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_Esim.png",
0082 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_Esim.pdf",
0083 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_fsam.png",
0084 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_fsam.pdf",
0085 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_fsamImg.png",
0086 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_fsamImg.pdf",
0087 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_fsamScFi.png",
0088 "{DETECTOR_CONFIG}/results/emcal_barrel_{PARTICLE}_fsamScFi.pdf",
0089 shell:
0090 """
0091 cd {wildcards.DETECTOR_CONFIG}
0092 root -l -b -q '{input.script}+("{wildcards.PARTICLE}", true)'
0093 """
0094
0095
0096 rule emcal_barrel_pions_analysis:
0097 input:
0098 script=workflow.source_path("scripts/emcal_barrel_pions_analysis.cxx"),
0099 sim="{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_piplus_energies5.0_5.0.edm4hep.root",
0100 output:
0101 expand(
0102 "{{DETECTOR_CONFIG}}/results/emcal_barrel_pions_{var_name}.{extension}",
0103 var_name=["Ethr", "nhits", "Esim", "fsam", "pid"],
0104 extension=["pdf", "png"],
0105 ),
0106 shell:
0107 """
0108 cd {wildcards.DETECTOR_CONFIG}
0109 root -l -b -q '{input.script}+("../{input.sim}")'
0110 """
0111
0112
0113 rule emcal_barrel_pi0_analysis:
0114 input:
0115 script=workflow.source_path("scripts/emcal_barrel_pi0_analysis.cxx"),
0116 sim="{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_pi0_energies5.0_5.0.edm4hep.root",
0117 fsam="{DETECTOR_CONFIG}/results/emcal_barrel_electron_calibration.json",
0118 output:
0119 expand(
0120 "{{DETECTOR_CONFIG}}/results/emcal_barrel_pi0_{var_name}.{extension}",
0121 var_name=["Ethr", "nhits", "Esim", "dE_rel"],
0122 extension=["pdf", "png"],
0123 ),
0124 "{DETECTOR_CONFIG}/results/Barrel_emcal_pi0.json"
0125 shell:
0126 """
0127 cd {wildcards.DETECTOR_CONFIG}
0128 root -l -b -q '{input.script}+("../{input.sim}")'
0129 """
0130
0131
0132 ENERGY_SCAN_ENERGIES = [0.5, 1., 2., 5., 10.]
0133 rule emcal_energy_scan:
0134 input:
0135 # Require all simulations produced for this rule
0136 expand("{{DETECTOR_CONFIG}}/sim_output/energy_scan/{energy}/sim_emcal_barrel_{{PARTICLE}}.edm4hep.root", energy=ENERGY_SCAN_ENERGIES),
0137 output:
0138 "{DETECTOR_CONFIG}/sim_output/emcal_barrel_energy_scan_points_{PARTICLE}.txt",
0139 run:
0140 with open(output[0], "wt") as fp:
0141 for energy in ENERGY_SCAN_ENERGIES:
0142 fp.write(f"{energy}\n")
0143
0144
0145 rule emcal_barrel_particles_energy_scan_analysis:
0146 input:
0147 script=workflow.source_path("scripts/emcal_barrel_energy_scan_analysis.cxx"),
0148 scan_points="{DETECTOR_CONFIG}/sim_output/emcal_barrel_energy_scan_points_{PARTICLE}.txt",
0149 output:
0150 "{DETECTOR_CONFIG}/results/energy_scan/emcal_barrel_{PARTICLE}_fsam_scan.png",
0151 "{DETECTOR_CONFIG}/results/energy_scan/emcal_barrel_{PARTICLE}_fsam_scan_res.png",
0152 expand(
0153 "{{DETECTOR_CONFIG}}/results/energy_scan/{energy}/emcal_barrel_{{PARTICLE}}_{plot}.png",
0154 energy=ENERGY_SCAN_ENERGIES,
0155 plot=["Esim_layer", "Layer_nodep", "Layer_Esim_mean", "Ethr", "nhits", "Esim", "fsam"],
0156 ),
0157 shell:
0158 """
0159 cd {wildcards.DETECTOR_CONFIG}
0160 root -l -b -q '{input.script}+("{wildcards.PARTICLE}")'
0161 """
0162
0163
0164 rule emcal_barrel_pion_rejection_analysis:
0165 input:
0166 workflow.source_path("scripts/emcal_barrel_common_functions.h"),
0167 script=workflow.source_path("scripts/emcal_barrel_pion_rejection_analysis.cxx"),
0168 electron="{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_electron_energies1.0_18.0.edm4hep.root",
0169 piminus="{DETECTOR_CONFIG}/sim_output/sim_emcal_barrel_piminus_energies1.0_18.0.edm4hep.root",
0170 output:
0171 "{DETECTOR_CONFIG}/results/emcal_barrel_pion_rej_RatioRej.png",
0172 "{DETECTOR_CONFIG}/results/Barrel_emcal_pion_rej.json",
0173 expand(
0174 "{{DETECTOR_CONFIG}}/results/emcal_barrel_pion_rej_uncut_comb_{var_save}.png",
0175 var_save=["Esim", "EsimTot", "EDep6", "EDep6OverP", "pT", "eta", "EsimScFi", "EsimScFiOverP"],
0176 ),
0177 expand(
0178 "{{DETECTOR_CONFIG}}/results/emcal_barrel_pion_rej_uncut_comb_E{i}Eta{j}.png",
0179 i=range(6),
0180 j=range(2),
0181 ),
0182 expand(
0183 "{{DETECTOR_CONFIG}}/results/emcal_barrel_pion_rej_{tag}_E{energy}_eta{eta_bin}.{extension}",
0184 energy=[5, 10, 18],
0185 eta_bin=range(2, 4),
0186 tag=(
0187 ["cut_mom_ele", "cut_mom_pim", "cut_ratio_pim"]
0188 + sum([[f"cut_{var}_ele", f"cut_{var}_pim", f"cut_{var}_comb"] for var in ["pT", "EDep6OverP"]], [])
0189 ),
0190 extension=["pdf", "png"],
0191 ),
0192 shell:
0193 """
0194 cd {wildcards.DETECTOR_CONFIG}
0195 root -l -b -q '{input.script}+("../{input.electron}", "../{input.piminus}")'
0196 """