Skip to content

Commit 2949b69

Browse files
[MI3] Add superconducting magnet/cryostat geometry to ALICE3 MID simulation
1 parent ca745f8 commit 2949b69

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

Detectors/Upgrades/ALICE3/MID/simulation/src/Detector.cxx

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,26 @@ void Detector::createMaterials()
8686

8787
o2::base::Detector::Mixture(1, "POLYSTYRENE", aPolys, zPolys, dPolys, 2, wPolys);
8888
o2::base::Detector::Medium(1, "POLYSTYRENE", 1, 0, ifield, fieldm, tmaxfdPolys, stemaxPolys, deemaxPolys, epsilPolys, stminPolys);
89+
90+
// Iron (pure Fe) - cryostat walls (Steel variant)
91+
float aIron = 55.845;
92+
float zIron = 26.;
93+
float dIron = 7.874;
94+
o2::base::Detector::Material(2, "IRON", aIron, zIron, dIron, 0., 0.);
95+
o2::base::Detector::Medium(2, "IRON", 2, 0, ifield, fieldm, tmaxfdPolys, stemaxPolys, deemaxPolys, epsilPolys, stminPolys);
96+
97+
// WindingPack - superconducting coil (NbTi + Cu + Al)
98+
// Mass fractions: NbTi=8.10%, Cu=11.18%, Al=80.72%, density=2.96 g/cm3 (Arnaud report v0.2)
99+
float aWP[4] = {92.90638, 47.867, 63.546, 26.982};
100+
float zWP[4] = {41., 22., 29., 13.};
101+
float wWP[4] = {0.0405, 0.0405, 0.1118, 0.8072};
102+
float dWP = 2.96;
103+
o2::base::Detector::Mixture(3, "WINDINGPACK", aWP, zWP, dWP, 4, wWP);
104+
o2::base::Detector::Medium(3, "WINDINGPACK", 3, 0, ifield, fieldm, tmaxfdPolys, stemaxPolys, deemaxPolys, epsilPolys, stminPolys);
105+
106+
// Vacuum - thermal insulation gaps
107+
o2::base::Detector::Material(4, "VACUUM", 1e-16, 1e-16, 1e-16, 0., 0.);
108+
o2::base::Detector::Medium(4, "VACUUM", 4, 0, ifield, fieldm, tmaxfdPolys, stemaxPolys, deemaxPolys, epsilPolys, stminPolys);
89109
}
90110

91111
void Detector::InitializeO2Detector()
@@ -140,6 +160,46 @@ void Detector::createGeometry()
140160
for (auto& layer : mLayers) {
141161
layer.createLayer(vMID);
142162
}
163+
164+
// Superconducting magnet/cryostat geometry
165+
// Port of GEANT4 simulation by Ian Perez Garcia (ICN-UNAM)
166+
// Reference: github.com/IanPG/MID-Geometry-Studies
167+
// Aluminium walls variant: 11 cm total, Rmin=140 cm, Rmax=200 cm, half-length=400 cm
168+
const float kRmin = 140.0f;
169+
const float kRmax = 200.0f;
170+
const float kHalfLen = 400.0f;
171+
const float kWallInner = 2.5f;
172+
const float kWallOuter = 1.5f;
173+
const float kCoilInner = 160.0f;
174+
const float kCoilThick = 4.8f;
175+
const float kMLI = 0.2f;
176+
const float kSupport = 2.0f;
177+
178+
const float kR1 = kRmin + kWallInner;
179+
const float kR2 = kCoilInner;
180+
const float kR3 = kCoilInner + kCoilThick;
181+
const float kR4 = kR3 + kMLI;
182+
const float kR5 = kR4 + kSupport;
183+
const float kR6 = kRmax - kWallOuter;
184+
185+
auto* magnetMother = new TGeoVolume("MI3MagnetMother",
186+
new TGeoTube("MI3MagnetMother_S", kRmin, kRmax, kHalfLen),
187+
gGeoManager->GetMedium("MI3_POLYSTYRENE"));
188+
gGeoManager->GetTopVolume()->AddNode(magnetMother, 1, new TGeoTranslation(0., 0., -1155.));
189+
190+
magnetMother->AddNode(new TGeoVolumeAssembly("MI3InnerWall"), 1, nullptr);
191+
192+
magnetMother->AddNode(new TGeoVolumeAssembly("MI3VacGap1"), 1, nullptr);
193+
194+
magnetMother->AddNode(new TGeoVolumeAssembly("MI3Coil"), 1, nullptr);
195+
196+
magnetMother->AddNode(new TGeoVolumeAssembly("MI3MLI"), 1, nullptr);
197+
198+
magnetMother->AddNode(new TGeoVolumeAssembly("MI3CoilSupport"), 1, nullptr);
199+
200+
magnetMother->AddNode(new TGeoVolumeAssembly("MI3VacGap2"), 1, nullptr);
201+
202+
magnetMother->AddNode(new TGeoVolumeAssembly("MI3OuterWall"), 1, nullptr);
143203
}
144204

145205
void Detector::Reset()

0 commit comments

Comments
 (0)