109 return absorberThickness;
125constexpr double sectionZ(std::span<const LayerCode> codes,
double absorberThickness) {
144 n += code ==
AirGap ? 0 : 1;
158static_assert(
kEcalLayers.size() == 89,
"transcription guard: 89 entries in the ECAL sequence");
162 "plate size must be a whole number of wide PVT bars");
164 "plate size must be a whole number of thin PS bars");
167 "module array exceeds the container in X");
169 "module array exceeds the container in Y");
Compile-time parameters of the SHiP calorimeter geometry.
Definition CalorimeterConstants.h:16
constexpr double kModulePitchX
Definition CalorimeterConstants.h:51
constexpr double sectionZ(std::span< const LayerCode > codes, double absorberThickness)
Z extent of one calorimeter section (mm).
Definition CalorimeterConstants.h:125
LayerCode
Layer types used in the ECAL/HCAL layer sequences.
Definition CalorimeterConstants.h:19
@ FibreHPL_X
HPL fibre layer, fibres along X.
@ ThinPS_H
Thin PS bar layer, bars along X (H orientation)
@ WidePVT_V
Wide PVT bar layer, bars along Y (V orientation)
@ WidePVT_H
Wide PVT bar layer, bars along X (H orientation)
@ Absorber
Absorber plate (Lead in ECAL, Iron in HCAL)
@ FibreHPL_Y
HPL fibre layer, fibres along Y.
@ ThinPS_V
Thin PS bar layer, bars along Y (V orientation)
@ AirGap
Air gap (no volume, just advances z cursor)
constexpr int kModuleNX
Definition CalorimeterConstants.h:49
constexpr double kContainerHalfY
Definition CalorimeterConstants.h:98
constexpr int kVolsPerModule
Child volumes one module contributes to the container.
Definition CalorimeterConstants.h:149
constexpr double kLeadThickness
Definition CalorimeterConstants.h:32
constexpr auto kHcalLayers
HCAL layer sequence (Absorber means iron here rather than lead).
Definition CalorimeterConstants.h:86
constexpr double kFiberCoreDiameter
Definition CalorimeterConstants.h:36
constexpr auto kEcalLayers
ECAL layer sequence.
Definition CalorimeterConstants.h:62
constexpr int sectionVolumeCount(std::span< const LayerCode > codes)
Child volumes one section contributes to the container, per module.
Definition CalorimeterConstants.h:140
constexpr double layerThickness(LayerCode code, double absorberThickness)
Z advance of one layer of the given type (mm).
Definition CalorimeterConstants.h:105
constexpr double kScintThickness
Definition CalorimeterConstants.h:33
constexpr double kGapEcalHcal
Gap between the ECAL and HCAL stacks (mm).
Definition CalorimeterConstants.h:42
constexpr double kFiberDiameter
Definition CalorimeterConstants.h:35
constexpr double kTotalStackZ
Total Z extent of one ECAL+gap+HCAL stack (mm).
Definition CalorimeterConstants.h:133
constexpr int kModuleNY
Definition CalorimeterConstants.h:50
constexpr int kWidePVTBarCount
Bars per layer, from the plate size and the bar pitch.
Definition CalorimeterConstants.h:153
constexpr double kThinPSBarPitch
Definition CalorimeterConstants.h:46
constexpr double kIronThickness
Definition CalorimeterConstants.h:37
constexpr double kContainerHalfX
Definition CalorimeterConstants.h:97
constexpr double kAirGap
Air gap within the ECAL layer sequence (mm).
Definition CalorimeterConstants.h:40
constexpr double kContainerHalfZ
Definition CalorimeterConstants.h:99
constexpr double kHplThickness
Definition CalorimeterConstants.h:34
constexpr int kThinPSBarCount
Definition CalorimeterConstants.h:154
constexpr double kPlateXY
Definition CalorimeterConstants.h:31
constexpr double kModulePitchY
Definition CalorimeterConstants.h:52
constexpr double kWidePVTBarPitch
Definition CalorimeterConstants.h:45