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