SHiP Geometry
SHiP experiment geometry implementation using GeoModel.
Loading...
Searching...
No Matches
Namespaces | Classes | Enumerations | Functions | Variables
SHiPGeometry Namespace Reference

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< HeliumPieceheliumPieces (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
 

Enumeration Type Documentation

◆ BarAxis

enum class SHiPGeometry::BarAxis
strong

Which transverse axis the bars are replicated along.

Enumerator
AlongX 
AlongY 

◆ LayerCode

enum class SHiPGeometry::LayerCode : int
strong

Layer type codes used in the ECAL/HCAL layer sequences.

Enumerator
WidePVT_H 

Wide PVT bar layer, bars along X (H orientation)

WidePVT_V 

Wide PVT bar layer, bars along Y (V orientation)

ThinPS_H 

Thin PS bar layer, bars along X (H orientation)

ThinPS_V 

Thin PS bar layer, bars along Y (V orientation)

FibreHPL_Y 

HPL fibre layer, fibres along Y.

FibreHPL_X 

HPL fibre layer, fibres along X.

Absorber 

Absorber plate (Lead in ECAL, Iron in HCAL)

AirGap 

Air gap (no volume, just advances z cursor)

Function Documentation

◆ buildHelium()

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.

◆ envelopeKnots()

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.

◆ heliumPieces()

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).

Exceptions
std::runtime_errorif any slab would have a non-positive half-width, i.e. the configured beams/containers have swallowed the decay region.

◆ innerFreeHalfX()

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.

◆ innerFreeHalfY()

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.

◆ placeChild()

void SHiPGeometry::placeChild ( GeoVPhysVol *  mother,
GeoVPhysVol *  child,
const std::string &  name,
int  id,
const GeoTrf::Transform3D &  transform 
)
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.

◆ readCaloConfig()

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.

Exceptions
std::runtime_errorif the file cannot be opened, contains malformed TOML, or is missing the mandatory layers field.

◆ readSBTConfig()

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.

Exceptions
std::runtime_errorif the file cannot be opened or is malformed.

◆ resolveConfigPath()

std::string SHiPGeometry::resolveConfigPath ( const std::string &  path,
const std::string &  srcFallback,
const std::string &  installFallback 
)
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.

◆ resolveTomlPath()

static std::string SHiPGeometry::resolveTomlPath ( const std::string &  path)
static

Variable Documentation

◆ kThinPSBarPitch_mm

constexpr double SHiPGeometry::kThinPSBarPitch_mm = 10.0
staticconstexpr

◆ kWidePVTBarPitch_mm

constexpr double SHiPGeometry::kWidePVTBarPitch_mm = 60.0
staticconstexpr