|
SHiP Geometry
SHiP experiment geometry implementation using GeoModel.
|
Namespaces | |
| namespace | CaloBar |
| Places an array of identical scintillator bars into a mother volume. | |
| namespace | CaloFibreHP |
| Builds one Hadronic Pre-shower Layer (HPL) of scintillating fibres. | |
Classes | |
| struct | CalorimeterConfig |
| Configuration for the SHiP calorimeter geometry. More... | |
| class | CalorimeterFactory |
| Factory for the Calorimeter (ECAL + HCAL) geometry. More... | |
| class | CavernFactory |
| Factory for the Cavern (world volume and rock) geometry. More... | |
| class | DecayVolumeFactory |
| Factory for the DecayVolume subsystem (decay region + SBT). More... | |
| struct | HeliumPiece |
| The innermost free region of the SBT, and the helium that fills it. More... | |
| class | MagnetFactory |
| Factory for the Magnet (spectrometer magnet) geometry. More... | |
| class | MuonShieldFactory |
| Factory for the MuonShield (muon shield magnets) geometry. More... | |
| class | NeutrinoDetectorFactory |
| Factory for the Scattering and Neutrino Detector (SND). More... | |
| struct | SBTConfig |
| Configuration for the Surround Background Tagger (SBT) geometry. More... | |
| class | SBTSensorBuilder |
Builds the SBT scintillator sensor containers into mother. More... | |
| class | SBTStructureBuilder |
Builds the SBT steel H-beam supporting structure into mother. More... | |
| class | SHiPGeometryBuilder |
| Main geometry builder for the SHiP detector. More... | |
| class | SHiPMaterials |
| Central material manager for the SHiP detector. More... | |
| class | SHiPUBTManager |
| Detector manager for the Upstream Background Tagger (UBT). More... | |
| class | TargetFactory |
| Factory for the Target (proton target and shielding) geometry. More... | |
| class | TimingDetectorFactory |
| Factory for the TimingDetector (TimeDet) geometry. More... | |
| class | TrackersFactory |
| Factory for the Trackers (straw tube tracking stations) geometry. More... | |
| class | UpstreamTaggerFactory |
| Factory for the UpstreamTagger (upstream veto tagger) geometry. More... | |
Enumerations | |
| enum class | BarAxis { AlongX , AlongY } |
| Which transverse axis the bars are replicated along. More... | |
| enum class | LayerCode : int { WidePVT_H = 1 , WidePVT_V = 2 , ThinPS_H = 3 , ThinPS_V = 4 , FibreHPL_Y = 5 , FibreHPL_X = 6 , Absorber = 7 , AirGap = 8 } |
| Layer type codes used in the ECAL/HCAL layer sequences. More... | |
Functions | |
| std::string | resolveConfigPath (const std::string &path, const std::string &srcFallback, const std::string &installFallback) |
| Resolve a config-file path against the repo's standard fallback chain. | |
| void | placeChild (GeoVPhysVol *mother, GeoVPhysVol *child, const std::string &name, int id, const GeoTrf::Transform3D &transform) |
Place child under mother using the repo's standard tag sequence: a name tag, an identifier tag, a transform, then the child node. | |
| CalorimeterConfig | readCaloConfig (const std::string &path) |
| Parse a calo.toml file and return a CalorimeterConfig. | |
| static std::string | resolveTomlPath (const std::string &path) |
| SBTConfig | readSBTConfig (const std::string &path) |
| Parse an sbt.toml file and return an SBTConfig. | |
| double | innerFreeHalfX (const SBTConfig &cfg, double z_mm) |
|X| of the innermost SBT material at z_mm (mm). | |
| double | innerFreeHalfY (const SBTConfig &cfg, double z_mm) |
|Y| of the innermost SBT material at z_mm (mm). | |
| std::vector< double > | envelopeKnots (const SBTConfig &cfg) |
| Z values at which innerFreeHalfX/Y change slope. | |
| std::vector< HeliumPiece > | heliumPieces (const SBTConfig &cfg) |
| The helium slabs filling the SBT interior. | |
| void | buildHelium (GeoPhysVol *container, const GeoMaterial *helium, const SBTConfig &cfg) |
Place the helium slabs into container. | |
Variables | |
| static constexpr double | kWidePVTBarPitch_mm = 60.0 |
| static constexpr double | kThinPSBarPitch_mm = 10.0 |
|
strong |
|
strong |
Layer type codes used in the ECAL/HCAL layer sequences.
| void SHiPGeometry::buildHelium | ( | GeoPhysVol * | container, |
| const GeoMaterial * | helium, | ||
| const SBTConfig & | cfg | ||
| ) |
Place the helium slabs into container.
Mirrors SBTStructureBuilder / SBTSensorBuilder: takes an SBTConfig and nothing else, so the geometry can be built (and swept) without going through sbt.toml. Call it after the two builders — the helium is a consequence of them.
| std::vector< double > SHiPGeometry::envelopeKnots | ( | const SBTConfig & | cfg | ) |
Z values at which innerFreeHalfX/Y change slope.
innerFreeHalfX/Y are piecewise linear with knots exactly here, so a linear shape that respects the envelope at these Z values respects it everywhere. The helium slab boundaries are drawn from this list.
| std::vector< HeliumPiece > SHiPGeometry::heliumPieces | ( | const SBTConfig & | cfg | ) |
The helium slabs filling the SBT interior.
Each slab is inset from innerFreeHalfX/Y by cfg.helium_clearance_mm (0 by default: the helium touches the SBT and leaves no margin).
| std::runtime_error | if any slab would have a non-positive half-width, i.e. the configured beams/containers have swallowed the decay region. |
| double SHiPGeometry::innerFreeHalfX | ( | const SBTConfig & | cfg, |
| double | z_mm | ||
| ) |
|X| of the innermost SBT material at z_mm (mm).
Minimum over every volume class that can reach the decay region in X. Currently only the side scintillator containers do; the columns and corner beams sit a further half-flange-width outboard.
| double SHiPGeometry::innerFreeHalfY | ( | const SBTConfig & | cfg, |
| double | z_mm | ||
| ) |
|Y| of the innermost SBT material at z_mm (mm).
Minimum over every volume class that can reach the decay region in Y: the top/bottom scintillator containers and the inner flange of the top/bottom longitudinal beams, which is the binding one.
|
inline |
Place child under mother using the repo's standard tag sequence: a name tag, an identifier tag, a transform, then the child node.
This is the idiom repeated throughout the subsystem factories and the top-level builder.
| CalorimeterConfig SHiPGeometry::readCaloConfig | ( | const std::string & | path | ) |
Parse a calo.toml file and return a CalorimeterConfig.
Uses toml++ for parsing. Unknown top-level keys are reported via stderr (helpful when a stale or mistyped key would otherwise be silently ignored), but do not cause the parse to fail.
| std::runtime_error | if the file cannot be opened, contains malformed TOML, or is missing the mandatory layers field. |
| SBTConfig SHiPGeometry::readSBTConfig | ( | const std::string & | path | ) |
Parse an sbt.toml file and return an SBTConfig.
Uses toml++. Unknown top-level keys are reported on stderr but do not cause the parse to fail.
| std::runtime_error | if the file cannot be opened or is malformed. |
|
inline |
Resolve a config-file path against the repo's standard fallback chain.
Order: the path as-is if it is absolute or exists as a regular file relative to the current working directory; then the build-time source-tree path; then the installed data path. If none exist as a regular file, path is returned unchanged so the caller's reader emits the not-found error.
|
static |
|
staticconstexpr |
|
staticconstexpr |