Skip to content

Commit

Permalink
Added benchmark for single neutron in the ZDC (#99)
Browse files Browse the repository at this point in the history
  • Loading branch information
bschmookler authored Nov 10, 2024
1 parent e30c6f3 commit 5b43263
Show file tree
Hide file tree
Showing 8 changed files with 855 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ include:
- local: 'benchmarks/lfhcal/config.yml'
- local: 'benchmarks/zdc/config.yml'
- local: 'benchmarks/zdc_lyso/config.yml'
- local: 'benchmarks/zdc_neutron/config.yml'
- local: 'benchmarks/zdc_photon/config.yml'
- local: 'benchmarks/zdc_pi0/config.yml'
- local: 'benchmarks/material_scan/config.yml'
Expand Down Expand Up @@ -170,6 +171,7 @@ deploy_results:
- "collect_results:tracking_performances_dis"
- "collect_results:zdc"
- "collect_results:zdc_lyso"
- "collect_results:zdc_neutron"
- "collect_results:insert_muon"
- "collect_results:insert_tau"
- "collect_results:zdc_photon"
Expand Down
1 change: 1 addition & 0 deletions Snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ include: "benchmarks/tracking_performances/Snakefile"
include: "benchmarks/tracking_performances_dis/Snakefile"
include: "benchmarks/lfhcal/Snakefile"
include: "benchmarks/zdc_lyso/Snakefile"
include: "benchmarks/zdc_neutron/Snakefile"
include: "benchmarks/insert_muon/Snakefile"
include: "benchmarks/zdc_lambda/Snakefile"
include: "benchmarks/zdc_photon/Snakefile"
Expand Down
10 changes: 10 additions & 0 deletions benchmarks/zdc_neutron/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Detector Benchmark for single neutron in the ZDC
=================================================

## Overview
This benchmark generates single-neutron events. The neutrons are generated with 100 GeV total momentum; polar angles of 0-6 mRad with respect to the proton/ion beam direction, uniform over cosine of the polar angle; and uniform azimuthal angles with respect to the proton/ion beam direction. The benchmark creates acceptance and reconstruction performance plots.

## Contacts
[Barak Schmookler]([email protected])


65 changes: 65 additions & 0 deletions benchmarks/zdc_neutron/Snakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Generate the single neutrons and put them into a HepMC file
rule zdc_neutron_hepmc:
input:
script = "benchmarks/zdc_neutron/gen_forward_neutrons.cxx",
output:
hepmcfile="sim_output/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons.hepmc",
params:
num_events=1000,
shell:
"""
root -l -b -q '{input.script}({params.num_events}, 0, "{output.hepmcfile}")'
"""

# Run the generated events through the Geant simulation
rule zdc_neutron_sim:
input:
hepmcfile="sim_output/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons.hepmc",
warmup="warmup/{DETECTOR_CONFIG}.edm4hep.root",
output:
"sim_output/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons.edm4hep.root",
params:
num_events=100,
shell:
"""
set -m # monitor mode to prevent lingering processes
exec npsim \
--runType batch \
-v WARNING \
--compactFile $DETECTOR_PATH/{wildcards.DETECTOR_CONFIG}.xml \
--numberOfEvents {params.num_events} \
--inputFiles {input.hepmcfile} \
--outputFile {output}
"""


# Process the file produced in the previous step through EICRecon
rule zdc_neutron_reco:
input:
"sim_output/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons.edm4hep.root",
output:
"sim_output/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons.edm4eic.root",
shell:
"""
set -m # monitor mode to prevent lingering processes
exec env DETECTOR_CONFIG={wildcards.DETECTOR_CONFIG} \
eicrecon {input} -Ppodio:output_file={output} \
-Ppodio:output_collections=MCParticles,EcalFarForwardZDCRawHits,EcalFarForwardZDCRecHits,EcalFarForwardZDCClusters,HcalFarForwardZDCRawHits,HcalFarForwardZDCRecHits,HcalFarForwardZDCClusters,ReconstructedFarForwardZDCNeutrons
"""


# Run the analysis scripts
rule zdc_neutron_analyses:
input:
geant_script = "benchmarks/zdc_neutron/analysis/fwd_neutrons_geant.C",
data_geant = "sim_output/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons.edm4hep.root",
recon_script = "benchmarks/zdc_neutron/analysis/fwd_neutrons_recon.C",
data_recon = "sim_output/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons.edm4eic.root",
output:
geant_analysis_out = "results/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons_geant.pdf",
recon_analysis_out = "results/zdc_neutron/{DETECTOR_CONFIG}/fwd_neutrons_recon.pdf",
shell:
"""
root -l -b -q '{input.geant_script}("{input.data_geant}","{output.geant_analysis_out}")'
root -l -b -q '{input.recon_script}("{input.data_recon}","{output.recon_analysis_out}")'
"""
Loading

0 comments on commit 5b43263

Please sign in to comment.