From a1e3b4aa56df365ec0aef5573831c5de19e71ee4 Mon Sep 17 00:00:00 2001 From: Oliver Lantwin Date: Wed, 7 Oct 2026 18:08:58 +0200 Subject: [PATCH 1/2] fix(timing): use the 0.46 m slot of the integration layout The container was 0.5 m long with the bar layer at its centre. The integration layout 2026-0.1 (EDMS 3287817 v1.1) allocates 0.46 m to the timing detector, and in the CAD model ST1967028_01 the first bar layer is at the front of that slot. Shorten the container to 0.46 m and move the bar layer to its front face. With the container at the slot centre (96.37 m) the bars span 96.14 to 96.25 m. Assisted-by: claude-code:claude-fable-5-1 --- subsystems/TimingDetector/README.md | 5 +++-- .../include/TimingDetector/TimingDetectorFactory.h | 6 ++++-- subsystems/TimingDetector/src/TimingDetectorFactory.cpp | 6 ++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/subsystems/TimingDetector/README.md b/subsystems/TimingDetector/README.md index 4dafbb2b..d758eb9d 100644 --- a/subsystems/TimingDetector/README.md +++ b/subsystems/TimingDetector/README.md @@ -9,9 +9,10 @@ The TimingDetector subsystem implements 330 scintillator bars (3 columns x 110 r ## Geometry Tree ``` -Timing_Detector (Air, 5500×6500×500 mm) +Timing_Detector (Air, 5500×6500×460 mm) └─ 330 × scintillator bars (1400×60×10 mm each) - 3 columns × 110 rows; z stagger = (row%2)·12 + (col%2)·90 mm + 3 columns × 110 rows; z stagger = (row%2)·12 + (col%2)·90 mm, + bar layer at the front of the container ``` Position in world: z = 95902 mm. diff --git a/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h b/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h index e3b26b6f..72bee8a7 100644 --- a/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h +++ b/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h @@ -39,10 +39,12 @@ class TimingDetectorFactory { SHiPMaterials& m_materials; int m_barCount{0}; - // Container dimensions + // Container dimensions. The length is the 0.46 m slot of the integration + // layout 2026-0.1 (EDMS 3287817 v1.1); the bar layer sits at the front + // of the slot, where the CAD model ST1967028_01 has the first bar layer. static constexpr double s_containerHalfX = 2750.0 * GeoModelKernelUnits::mm; static constexpr double s_containerHalfY = 3250.0 * GeoModelKernelUnits::mm; - static constexpr double s_containerHalfZ = 250.0 * GeoModelKernelUnits::mm; + static constexpr double s_containerHalfZ = 230.0 * GeoModelKernelUnits::mm; // Bar dimensions static constexpr double s_barHalfX = 700.0 * GeoModelKernelUnits::mm; // 140 cm full length diff --git a/subsystems/TimingDetector/src/TimingDetectorFactory.cpp b/subsystems/TimingDetector/src/TimingDetectorFactory.cpp index 57478055..50978587 100644 --- a/subsystems/TimingDetector/src/TimingDetectorFactory.cpp +++ b/subsystems/TimingDetector/src/TimingDetectorFactory.cpp @@ -35,13 +35,15 @@ GeoPhysVol* TimingDetectorFactory::build() { // 3 columns × 110 rows = 330 bars. Positions are analytic: // x = (ic - 1) * pitch → -1300, 0, +1300 mm // y = y0 + ir * step → -3220 … +3220 mm (step 6440/109) - // z = (ir%2)*12 + (ic%2)*90 → 4 stagger levels: 0, 12, 90, 102 mm + // z = (ir%2)*12 + (ic%2)*90 → 4 stagger levels: 0, 12, 90, 102 mm, + // measured from the front face of the slot m_barCount = 0; for (int ic = 0; ic < s_nColumns; ++ic) { const double x = (ic - 1) * s_columnPitchX; for (int ir = 0; ir < s_nRows; ++ir) { const double y = s_rowY0 + ir * s_rowStepY; - const double z = (ir % 2) * s_zStaggerRow + (ic % 2) * s_zStaggerCol; + const double z = -s_containerHalfZ + s_barHalfZ + (ir % 2) * s_zStaggerRow + + (ic % 2) * s_zStaggerCol; const std::string name = "/SHiP/timing_detector/bar_" + std::to_string(ic) + "_" + std::to_string(ir); containerPhys->add(new GeoNameTag(name)); From f1af1e841822841a2070e21866a4cbdaa182c98d Mon Sep 17 00:00:00 2001 From: Oliver Lantwin Date: Sat, 17 Oct 2026 13:34:54 +0200 Subject: [PATCH 2/2] docs(timing): give the 230 mm container half-length in the class summary Assisted-by: Claude Code:claude-opus-5-5 --- .../include/TimingDetector/TimingDetectorFactory.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h b/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h index 72bee8a7..2637d205 100644 --- a/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h +++ b/subsystems/TimingDetector/include/TimingDetector/TimingDetectorFactory.h @@ -20,7 +20,7 @@ class SHiPMaterials; * "/SHiP/timing_detector/bar__" names; sensitive-detector assignment * is performed downstream by name pattern. * - * Container half-sizes (mm): 2750 × 3250 × 250. + * Container half-sizes (mm): 2750 × 3250 × 230. * Bar half-sizes (mm): 700 × 30 × 5. * Z stagger (mm): z = (row%2)·12 + (col%2)·90 → levels 0/12/90/102. */