26 [[nodiscard]] GeoPhysVol*
build();
31 GeoPhysVol* m_world{
nullptr};
32 GeoPhysVol* m_cavern{
nullptr};
35 static constexpr double s_worldHalfX = 200.0 * GeoModelKernelUnits::m;
36 static constexpr double s_worldHalfY = 200.0 * GeoModelKernelUnits::m;
37 static constexpr double s_worldHalfZ = 200.0 * GeoModelKernelUnits::m;
56 static constexpr double s_stepZ = 21.37 * GeoModelKernelUnits::m;
57 static constexpr double s_tcc8Length =
58 170.0 * GeoModelKernelUnits::m;
59 static constexpr double s_stairLength =
60 0.82 * GeoModelKernelUnits::m;
61 static constexpr double s_ecn3EndZ =
62 122.18 * GeoModelKernelUnits::m;
63 static constexpr double s_tcc8FloorY = -1.703 * GeoModelKernelUnits::m;
64 static constexpr double s_tcc8CeilingY = 5.761 * GeoModelKernelUnits::m;
65 static constexpr double s_tcc8LeftX = -3.587 * GeoModelKernelUnits::m;
66 static constexpr double s_tcc8RightX = 6.413 * GeoModelKernelUnits::m;
67 static constexpr double s_stairFloorY = -2.503 * GeoModelKernelUnits::m;
68 static constexpr double s_ecn3FloorY = -3.364 * GeoModelKernelUnits::m;
69 static constexpr double s_ecn3SpringlineY = 8.636 * GeoModelKernelUnits::m;
70 static constexpr double s_ecn3LeftX = -4.566 * GeoModelKernelUnits::m;
71 static constexpr double s_ecn3RightX = 11.434 * GeoModelKernelUnits::m;
72 static constexpr double s_magnetZ =
73 89.72 * GeoModelKernelUnits::m;
74 static constexpr double s_targetEndZ =
75 1.46 * GeoModelKernelUnits::m;
78 static constexpr double s_rockHalfX = 20.0 * GeoModelKernelUnits::m;
79 static constexpr double s_rockHalfY = 20.0 * GeoModelKernelUnits::m;
80 static constexpr double s_rockHalfZ = 140.0 * GeoModelKernelUnits::m;
81 static constexpr double s_cavernPosZ = (s_stepZ - s_tcc8Length + s_ecn3EndZ) / 2.0;
86 static constexpr double s_muonCavernHalfX = (s_tcc8RightX - s_tcc8LeftX) / 2.0;
87 static constexpr double s_muonCavernHalfY = (s_tcc8CeilingY - s_tcc8FloorY) / 2.0;
88 static constexpr double s_muonCavernHalfZ = s_tcc8Length / 2.0;
89 static constexpr double s_muonCavernPosX = (s_tcc8RightX + s_tcc8LeftX) / 2.0;
90 static constexpr double s_muonCavernPosY = (s_tcc8CeilingY + s_tcc8FloorY) / 2.0;
91 static constexpr double s_muonCavernPosZ = s_stepZ - s_muonCavernHalfZ - s_cavernPosZ;
94 static constexpr double s_stairHalfX = s_muonCavernHalfX;
95 static constexpr double s_stairHalfY = (s_tcc8CeilingY - s_stairFloorY) / 2.0;
96 static constexpr double s_stairHalfZ = s_stairLength / 2.0;
97 static constexpr double s_stairPosX = s_muonCavernPosX;
98 static constexpr double s_stairPosY = (s_tcc8CeilingY + s_stairFloorY) / 2.0;
99 static constexpr double s_stairPosZ = s_stepZ + s_stairHalfZ - s_cavernPosZ;
102 static constexpr double s_expCavernHalfX = (s_ecn3RightX - s_ecn3LeftX) / 2.0;
103 static constexpr double s_expCavernHalfY = (s_ecn3SpringlineY - s_ecn3FloorY) / 2.0;
104 static constexpr double s_expCavernHalfZ = (s_ecn3EndZ - s_stepZ - s_stairLength) / 2.0;
105 static constexpr double s_expCavernPosX = (s_ecn3RightX + s_ecn3LeftX) / 2.0;
106 static constexpr double s_expCavernPosY = (s_ecn3SpringlineY + s_ecn3FloorY) / 2.0;
107 static constexpr double s_expCavernPosZ = s_ecn3EndZ - s_expCavernHalfZ - s_cavernPosZ;
110 static constexpr double s_yokePitHalfX = 4.2 * GeoModelKernelUnits::m;
111 static constexpr double s_yokePitHalfY = 0.5 * GeoModelKernelUnits::m;
112 static constexpr double s_yokePitHalfZ = 4.5 * GeoModelKernelUnits::m;
113 static constexpr double s_yokePitPosX = 0.0;
114 static constexpr double s_yokePitPosY = s_ecn3FloorY - s_yokePitHalfY;
115 static constexpr double s_yokePitPosZ = s_magnetZ - s_cavernPosZ;
118 static constexpr double s_targetPitHalfX = 2.0 * GeoModelKernelUnits::m;
119 static constexpr double s_targetPitHalfY = 0.5 * GeoModelKernelUnits::m;
120 static constexpr double s_targetPitHalfZ = 2.0 * GeoModelKernelUnits::m;
121 static constexpr double s_targetPitPosX = 0.0;
122 static constexpr double s_targetPitPosY = s_tcc8FloorY - s_targetPitHalfY;
123 static constexpr double s_targetPitPosZ = s_targetEndZ - s_cavernPosZ;