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