SHiP Geometry
SHiP experiment geometry implementation using GeoModel.
Loading...
Searching...
No Matches
CavernFactory.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
8class GeoPhysVol;
9
10namespace SHiPGeometry {
11
12class SHiPMaterials;
13
18 public:
19 explicit CavernFactory(SHiPMaterials& materials);
20 ~CavernFactory() = default;
21
26 [[nodiscard]] GeoPhysVol* build();
27
28 private:
29 SHiPMaterials& m_materials;
30
31 GeoPhysVol* m_world{nullptr};
32 GeoPhysVol* m_cavern{nullptr};
33
34 // World volume dimensions (half-sizes in mm)
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;
38
39 // Rock block dimensions (half-sizes in mm)
40 static constexpr double s_rockHalfX = 20.0 * GeoModelKernelUnits::m;
41 static constexpr double s_rockHalfY = 20.0 * GeoModelKernelUnits::m;
42 static constexpr double s_rockHalfZ = 140.0 * GeoModelKernelUnits::m;
43
44 // Muon shield cavern (half-sizes and position in mm)
45 static constexpr double s_muonCavernHalfX = 3.55 * GeoModelKernelUnits::m;
46 static constexpr double s_muonCavernHalfY = 3.0 * GeoModelKernelUnits::m;
47 static constexpr double s_muonCavernHalfZ = 41.0 * GeoModelKernelUnits::m;
48 static constexpr double s_muonCavernPosX = 0.0;
49 static constexpr double s_muonCavernPosY = 1.7 * GeoModelKernelUnits::m;
50 static constexpr double s_muonCavernPosZ = -58.336 * GeoModelKernelUnits::m;
51
52 // Experiment cavern (half-sizes and position in mm)
53 static constexpr double s_expCavernHalfX = 12.0 * GeoModelKernelUnits::m;
54 static constexpr double s_expCavernHalfY = 11.65 * GeoModelKernelUnits::m;
55 static constexpr double s_expCavernHalfZ = 60.0 * GeoModelKernelUnits::m;
56 static constexpr double s_expCavernPosX = 0.0;
57 static constexpr double s_expCavernPosY = 3.35 * GeoModelKernelUnits::m;
58 static constexpr double s_expCavernPosZ = 42.664 * GeoModelKernelUnits::m;
59
60 // Stair step (half-sizes and position in mm)
61 static constexpr double s_stairHalfX = 3.55 * GeoModelKernelUnits::m;
62 static constexpr double s_stairHalfY = 4.325 * GeoModelKernelUnits::m;
63 static constexpr double s_stairHalfZ = 8.0 * GeoModelKernelUnits::m;
64 static constexpr double s_stairPosX = 0.0;
65 static constexpr double s_stairPosY = -5.625 * GeoModelKernelUnits::m;
66 static constexpr double s_stairPosZ = -9.336 * GeoModelKernelUnits::m;
67
68 // Yoke pit (half-sizes and position in mm)
69 static constexpr double s_yokePitHalfX = 6.0 * GeoModelKernelUnits::m;
70 static constexpr double s_yokePitHalfY = 5.0 * GeoModelKernelUnits::m;
71 static constexpr double s_yokePitHalfZ = 6.0 * GeoModelKernelUnits::m;
72 static constexpr double s_yokePitPosX = 0.0;
73 static constexpr double s_yokePitPosY = -6.65 * GeoModelKernelUnits::m;
74 static constexpr double s_yokePitPosZ = 26.664 * GeoModelKernelUnits::m;
75
76 // Target pit (half-sizes and position in mm)
77 static constexpr double s_targetPitHalfX = 2.0 * GeoModelKernelUnits::m;
78 static constexpr double s_targetPitHalfY = 0.5 * GeoModelKernelUnits::m;
79 static constexpr double s_targetPitHalfZ = 2.0 * GeoModelKernelUnits::m;
80 static constexpr double s_targetPitPosX = 0.0;
81 static constexpr double s_targetPitPosY = -2.2 * GeoModelKernelUnits::m;
82 static constexpr double s_targetPitPosZ = -103.336 * GeoModelKernelUnits::m;
83
84 // Cavern position in world
85 static constexpr double s_cavernPosZ = -3.336 * GeoModelKernelUnits::m;
86};
87
88} // namespace SHiPGeometry
Factory for the Cavern (world volume and rock) geometry.
Definition CavernFactory.h:17
GeoPhysVol * build()
Build the Cavern geometry.
Definition CavernFactory.cpp:24
Central material manager for the SHiP detector.
Definition SHiPMaterials.h:20
Definition SHiPGeometry.h:8