Back to home page

EIC code displayed by LXR

 
 

    


Warning, /detector_benchmarks/benchmarks/backwards_ecal/Snakefile is written in an unsupported language. File is not indexed.

0001 def get_n_events(wildcards):
0002     energy = float(wildcards.ENERGY.replace("GeV", "").replace("MeV", "e-3"))
0003     n_events = 1000 if wildcards.PARTICLE == "e-" else 2000
0004     n_events = int(n_events // (energy ** 0.5))
0005     return n_events
0006 
0007 
0008 rule backwards_ecal_sim:
0009     input:
0010         steering_file=ancient("EPIC/EVGEN/SINGLE/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.steer"),
0011         warmup="warmup/{DETECTOR_CONFIG}.edm4hep.root",
0012     output:
0013         "sim_output/backwards_ecal/{DETECTOR_CONFIG}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.{INDEX}.edm4hep.root",
0014     log:
0015         "sim_output/backwards_ecal/{DETECTOR_CONFIG}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.{INDEX}.edm4hep.root.log",
0016     wildcard_constraints:
0017         PARTICLE="(e-|pi-)",
0018         ENERGY="[0-9]+[kMG]eV",
0019         PHASE_SPACE="(3to50|45to135|130to177)deg",
0020         INDEX="\d{4}",
0021     params:
0022         N_EVENTS=get_n_events
0023     shell:
0024         """
0025 set -m # monitor mode to prevent lingering processes
0026 exec ddsim \
0027   --runType batch \
0028   --enableGun \
0029   --steeringFile "{input.steering_file}" \
0030   --random.seed 1{wildcards.INDEX} \
0031   --filter.tracker edep0 \
0032   -v WARNING \
0033   --numberOfEvents {params.N_EVENTS} \
0034   --compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
0035   --outputFile {output}
0036 """
0037 
0038 
0039 rule backwards_ecal_recon:
0040     input:
0041         "sim_output/backwards_ecal/{DETECTOR_CONFIG}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.{INDEX}.edm4hep.root",
0042     output:
0043         "sim_output/backwards_ecal/{DETECTOR_CONFIG}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.{INDEX}.eicrecon.tree.edm4eic.root",
0044     log:
0045         "sim_output/backwards_ecal/{DETECTOR_CONFIG}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.{INDEX}.eicrecon.tree.edm4eic.root.log",
0046     wildcard_constraints:
0047         INDEX="\d{4}",
0048     shell: """
0049 set -m # monitor mode to prevent lingering processes
0050 exec env DETECTOR_CONFIG={wildcards.DETECTOR_CONFIG} \
0051   eicrecon {input} -Ppodio:output_file={output} \
0052   -Ppodio:output_collections=MCParticles,EcalEndcapNRecHits,EcalEndcapNClusters
0053 """
0054 
0055 
0056 rule backwards_ecal_recon_many:
0057     input:
0058         expand(
0059             "sim_output/backwards_ecal/{{DETECTOR_CONFIG}}/{{PARTICLE}}/{{ENERGY}}/{{PHASE_SPACE}}/{{PARTICLE}}_{{ENERGY}}_{{PHASE_SPACE}}.{INDEX:04d}.eicrecon.tree.edm4eic.root",
0060             INDEX=range(20),
0061         ),
0062     output:
0063         touch("sim_output/backwards_ecal/{DETECTOR_CONFIG}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/flag"),
0064 
0065 
0066 DETECTOR_CONFIG=os.environ["DETECTOR_CONFIG"]
0067 
0068 rule backwards_ecal:
0069     input:
0070         expand(
0071             "sim_output/backwards_ecal/" + DETECTOR_CONFIG + "/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/flag",
0072             PARTICLE=["pi-", "e-"],
0073             ENERGY=[
0074                 "100MeV",
0075                 "200MeV",
0076                 "500MeV",
0077                 "1GeV",
0078                 "2GeV",
0079                 "5GeV",
0080                 "10GeV",
0081                 "20GeV",
0082             ],
0083             PHASE_SPACE=["130to177deg"],
0084         ),
0085         matplotlibrc=".matplotlibrc",
0086         script="benchmarks/backwards_ecal/backwards_ecal.py",
0087     output:
0088         directory("results/backwards_ecal")
0089     shell:
0090         """
0091 env \
0092 MATPLOTLIBRC={input.matplotlibrc} \
0093 DETECTOR_CONFIG=""" + DETECTOR_CONFIG + """ \
0094 PLOT_TITLE=""" + DETECTOR_CONFIG + """ \
0095 INPUT_PATH_FORMAT=sim_output/backwards_ecal/""" + DETECTOR_CONFIG + """/{{particle}}/{{energy}}/130to177deg/{{particle}}_{{energy}}_130to177deg.{{ix:04d}}.eicrecon.tree.edm4eic.root \
0096 OUTPUT_DIR={output} \
0097 python {input.script}
0098 """