Back to home page

EIC code displayed by LXR

 
 

    


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 """