Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ShipSoft/FairShip/llms.txt

Use this file to discover all available pages before exploring further.

The SHiP experiment at CERN is designed to search for hidden particles produced by 400 GeV proton interactions on a dense tungsten target. Particles travel downstream through a sequence of purpose-built detectors, each with a distinct role: suppressing the dominant muon background, identifying neutrino interactions, spotting hidden-particle decays inside an evacuated vessel, and precisely reconstructing the final-state tracks and energy deposits. This page maps the full chain from the proton beam target to the timing detector, giving the C++ geometry class and Python digitiser for every element so you can quickly locate the relevant source when debugging a simulation or adding a new detector feature.

Detector chain

The coordinate origin (z = 0) sits at the upstream face of the proton target. All positions downstream increase in z.
z = 0                  z ≈ 0.5 m               z ≈ 10 – 50 m
|--- Target/Absorber ---|--- Muon Shield ---|--- SND ---|
                                                        |
                        z ≈ 58 m             z ≈ 84 m  |
--- Decay Vessel (helium) ---|--- Upstream Tagger ------|
                                                        |
z ≈ 86 m     z ≈ 90 m     z ≈ 92 m    z ≈ 93 m        |
|--- T1 ---|--- T2 ---|Magnet|--- T3 ---|--- T4 --------|
                                                        |
z ≈ 97 m          z ≈ 99 – 102 m       z ≈ 103 m       |
|--- SplitCal ---|--- Muon/SBT Veto ---|--- TimeDet ----|

Sub-detector reference table

#Sub-detectorC++ classPython digitiserSource directory
1Proton target / hadron absorberShipTargetStationpassive/
2Muon shieldShipMuonShieldpassive/
3SND (NuTau target)Target + TargetTrackerSND/EmulsionTarget/
3SND (MTC)MTCDetectorMTCDetectorSND/MTC/
3SND (SiliconTarget)SiliconTargetSND/SiliconTarget/
4Decay vessel / SBT vetovetoSBTDetectorveto/
5Upstream TaggerUpstreamTaggerUpstreamTaggerDetectorUpstreamTagger/
6Straw Tube SpectrometerstrawtubesstrawtubesDetectorstrawtubes/
7Split-Cal (ECAL)splitcalsplitcalDetectorsplitcal/
8Timing detector (TimeDet)TimeDettimeDetectorTimeDet/

Component descriptions

1
Proton target and hadron absorber
2
The upstream anchor of the experiment. ShipTargetStation (passive/ShipTargetStation.h) builds a multi-slice tungsten target whose material, thickness, and gaps are read from geometry/target_config.yaml. The hadron absorber downstream suppresses secondary hadrons so that only muons (and long-lived hidden particles) emerge. The geometry is configured in geometry_config.py under c.target and c.hadronAbsorber.
3
# excerpt from geometry_config.py
c.target.z0 = 0          # coordinate origin, upstream face of target
c.target.z  = c.target.z0 + c.target.length / 2.0
4
Muon shield
5
A large, magnetised iron shield that bends the intense muon flux away from the detector acceptance. ShipMuonShield (passive/ShipMuonShield.h) consumes a flat parameter list—15 numbers per magnet section—encoding the longitudinal offset, half-length, inner and outer transverse dimensions, gap sizes, and field goal. The named geometry TRY_2025 in shield_db is the current baseline. See the Muon Shield page for full parameter documentation.
6
SND — Scattering and Neutrino Detector
7
Placed immediately upstream of the decay vessel, the SND searches for neutrino interactions and hidden-particle scattering signatures. Design 1 (configure_snd_old) builds an emulsion-brick wall (Target) interleaved with SciFi tracking planes (TargetTracker). Design 2 (configure_snd_mtc) builds the Muon Tracker for Charm (MTCDetector) and optional silicon strip tracking (SiliconTarget). See the SND page for details.
8
Decay vessel and Surrounding Background Tagger
9
A 50 m helium-filled (or evacuated) cylindrical vessel where hidden particles produced at the target decay to visible final states. The veto class (veto/veto.h) implements the vessel walls and the liquid-scintillator Surrounding Background Tagger (SBT). The medium (helium or vacuum) is set by DecayVolumeMedium and drives which YAML configuration is loaded:
10
configure_veto(
    f"$FAIRSHIP/geometry/veto_config_{ship_geo.DecayVolumeMedium}.yaml",
    ship_geo.decayVolume.z0,
)
11
The Python digitiser for the SBT is SBTDetector in python/detectors/SBTDetector.py.
12
Upstream Tagger (UBT)
13
A thin vacuum-box scoring plane (UpstreamTagger, UpstreamTagger/UpstreamTagger.h) placed ~25 m upstream of the decay-vessel centre. It tags charged particles entering the vessel, providing a key handle for rejecting muon-induced backgrounds. Position smearing is ±1 cm; time resolution is 0.3 ns. Digitisation is performed by UpstreamTaggerDetector in python/detectors/UpstreamTaggerDetector.py.
14
Straw Tube Spectrometer (T1–T4)
15
Four straw-tube tracking stations straddle a dipole spectrometer magnet. The strawtubes class (strawtubes/strawtubes.h) inherits from SHiP::Detector<strawtubesPoint> and places 2 cm diameter aluminium or steel-framed drift tubes in four views (two axial, two ±4.57° stereo). The strawtubesDetector Python class converts strawtubesPoint MC hits to strawtubesHits. See the Spectrometer page for parameter details.
16
Split-Cal (electromagnetic calorimeter)
17
An electromagnetic sampling calorimeter (splitcal, splitcal/splitcal.h) with 50 ECAL samplings of 2.8 mm lead filter + 5.6 mm scintillator active layers, covering a 4 m × 6 m aperture. Precision layers at fixed depths provide pointing information. Configuration is entirely driven by the c.SplitCal AttrDict in geometry_config.py.
18
Muon system / veto (SBT extension)
19
Iron-scintillator muon stations (MuonStation0–3) behind the calorimeter identify muons and provide the last line of background suppression. Stations are spaced 1 m apart starting from c.MuonStation0.z; iron filter slabs of 30 cm thickness sit between stations.
20
Timing detector (TimeDet)
21
A thin scintillator-bar detector (TimeDet, TimeDet/TimeDet.h) just upstream of the spectrometer magnet. Two orthogonal bar layers (1.2 cm and 2.4 cm z-spacing) each cover a 4.5 m × 6.5 m aperture. The timeDetector Python digitiser converts TimeDetPoint MC hits to TimeDetHit objects, selecting the earliest valid hit per cell. Timing is used to associate reconstructed tracks with interaction vertices.

Key pages

Muon Shield

Magnetised shield geometry, named configurations in shield_db, parameter format, and field-map classes.

Straw Tube Spectrometer

Four-station drift-tube tracker: geometry options, digitisation, ACTS digi config, and field map.

SND Detector

Scattering and Neutrino Detector: emulsion target, SciFi tracker, silicon strips, and MTC sub-systems.

Running a Simulation

How to run run_simScript.py and choose geometry options for the full detector chain.

Configuration entry point

All detector objects are instantiated in python/shipDet_conf.py::configure(). This function reads the geometry AttrDict produced by geometry_config.py::create_config(), constructs each ROOT detector object, and registers it with the FairRunSim instance via run.AddModule().
# Minimal usage pattern (python/shipDet_conf.py)
from geometry_config import create_config
import shipDet_conf

ship_geo = create_config(shieldName="TRY_2025", strawDesign=10, SND=True)
det_elements = shipDet_conf.configure(run, ship_geo)
# det_elements is a dict: {"TargetStation": ..., "MuonShield": ..., ...}
The detectorList module-level list in shipDet_conf.py accumulates detector objects in the order they must be registered with FairRoot. Do not reorder entries — FairRoot processes them sequentially during geometry construction.

Build docs developers (and LLMs) love