SHiP Geometry
SHiP experiment geometry implementation using GeoModel.
Loading...
Searching...
No Matches
MagnetFactory.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) CERN for the benefit of the SHiP Collaboration
3
4#pragma once
5
6#include <GeoModelKernel/Units.h>
7
8#include <string>
9
10class GeoPhysVol;
11
12namespace SHiPGeometry {
13
14class SHiPMaterials;
15
25 public:
26 explicit MagnetFactory(SHiPMaterials& materials);
27 ~MagnetFactory() = default;
28
33 [[nodiscard]] GeoPhysVol* build();
34
35 private:
36 SHiPMaterials& m_materials;
37
38 GeoPhysVol* createYoke();
39 GeoPhysVol* createCoil(const std::string& name);
40 GeoPhysVol* createVerticalConnector(const std::string& name);
41
42 // Unit shorthand (GeoModel's native length unit is mm)
43 static constexpr double mm = GeoModelKernelUnits::mm;
44
45 // Yoke dimensions from GDML (half-sizes)
46 // GDML: outer 600×860×280 cm, inner 440×700×282 cm
47 static constexpr double s_yokeOuterHalfX = 3000.0 * mm;
48 static constexpr double s_yokeOuterHalfY = 4300.0 * mm;
49 static constexpr double s_yokeOuterHalfZ = 1400.0 * mm;
50 static constexpr double s_yokeInnerHalfX = 2200.0 * mm;
51 static constexpr double s_yokeInnerHalfY = 3500.0 * mm;
52 static constexpr double s_yokeInnerHalfZ = 1410.0 * mm;
53
54 // Coil dimensions (simplified as boxes)
55 static constexpr double s_coilHalfX = 800.0 * mm;
56 static constexpr double s_coilHalfY = 400.0 * mm;
57 static constexpr double s_coilHalfZ = 1660.0 * mm;
58 static constexpr double s_coilXOffset = 2200.0 * mm;
59 static constexpr double s_coilYOffset = 3250.0 * mm;
60
61 // Vertical connector dimensions from GDML: 80×650×25 cm
62 static constexpr double s_connectorHalfX = 400.0 * mm;
63 static constexpr double s_connectorHalfY = 3250.0 * mm;
64 static constexpr double s_connectorHalfZ = 125.0 * mm;
65 static constexpr double s_connectorXOffset = 2600.0 * mm;
66 static constexpr double s_connectorZOffset = 1525.0 * mm; // From GDML positions
67
68 // Container sized to enclose the yoke, coils, and connectors: HalfX and
69 // HalfZ exceed the yoke outer dimensions, while HalfY matches it.
70 static constexpr double s_containerHalfX = 3250.0 * mm;
71 static constexpr double s_containerHalfY = 4300.0 * mm;
72 static constexpr double s_containerHalfZ = 2500.0 * mm;
73};
74
75} // namespace SHiPGeometry
Factory for the Magnet (spectrometer magnet) geometry.
Definition MagnetFactory.h:24
GeoPhysVol * build()
Build the Magnet geometry.
Definition MagnetFactory.cpp:21
Central material manager for the SHiP detector.
Definition SHiPMaterials.h:20
Definition ConfigPath.h:9