Skip to content

Detector simulation

Detector

This tutorial will focus on one particular detector geometry: MuColl_v1. A description is provided on mcd-wiki and enumerated on github at MuonColliderSoft/lcgeo. This 3 TeV detector is composed of trackers, calorimeters, a solenoid magnet, and a muon spectrometer.

When working with muon collider software, the geometry is often managed with the environment variable MUCOLL_GEO. You can check which detector geometry you're simulating with echo $MUCOLL_GEO:

echo $MUCOLL_GEO
# Should give:
# /opt/spack/opt/spack/linux-almalinux9-x86_64/gcc-11.3.1/lcgeo-0.20-grx3loszut2wlx5dbtguwxcuxs7whjad/share/lcgeo/compact/MuColl/MuColl_v1/MuColl_v1.xml

This tutorial will not cover how to modify the detector geometry. This is an important area of study, but it's too involved for this tutorial. Please follow up with experts if you're interested!

Simulation

In the simulation step, MC particles are propagated through the detector with GEANT4. GEANT4 is the standard toolkit for the simulation of the passage of particles through matter. This is a computationally expensive step, and it is often the slowest step in the production of data.

We use the ddsim simulation program, which is part of the DD4Hep detector description toolkit. To see a complete list of available command-line parameters:

ddsim --help

Typically, the detector description and configurable options are gathered in a steering file and provided to ddsim:

# Check the geometry
echo $MUCOLL_GEO

# Runs in 1-2 minutes
cd /scratch/$USER/tutorial2024
ddsim --steeringFile mucoll-benchmarks/simulation/ilcsoft/steer_baseline.py \
    --inputFile output_gen.slcio \
    --outputFile output_sim.slcio
ls

Command-line arguments like --inputFile/--outputFile override whatever exists in the steering file. Alternatively, you could modify the relevant parameters in the steering file, and run ddsim without any additional command-line parameters.

Output of a simulation job is stored in the LCIO format and contains several kinds of objects:

  • input MCParticles
  • potential secondary MCParticles created during the interaction with detector material
  • SimHits representing energy deposits of individual MCParticles in the detector

A number of different SimHit classes are available to represent the most relevant information for each type of subdetector, such as SimTrackerHit, SimCalorimeterHit, etc. In order to check the collections in the simulation output file:

lcio_event_counter output_sim.slcio
anajob output_sim.slcio

You can also inspect individual SimCalorimeterHits with a python script using pyLCIO:

python MuC-Tutorial/dumpers/print_calo_sim_hits.py -i output_sim.slcio -n 1