1212#include < DetectorsBase/Detector.h>
1313#include < DetectorsBase/MaterialManager.h>
1414#include < Alice3DetectorsPassive/Magnet.h>
15+ #include < Alice3DetectorsPassive/PassiveBaseParam.h>
1516#include < TGeoCompositeShape.h>
1617#include < TGeoManager.h>
1718#include < TGeoMatrix.h>
@@ -54,11 +55,24 @@ void Alice3Magnet::createMaterials()
5455 // | Support cylinder | 20 | 8.896 | 0.225 |
5556 // | Al-strip | 1 | 8.896 | 0.011 |
5657 // | NbTi/Cu | 3 | 1.598 | 0.188 |
57- // | Insulation | 11 | 17.64 | 0.062 |
58+ // | Insulation | 11 | 17.64 | 0.062 |
5859 // | Al-stabiliser | 33 | 8.896 | 0.371 |
5960 // | Inner cryostat | 10 | 8.896 | 0.112 |
6061 // | Outer cryostat | 30 | 8.896 | 0.337 |
6162 // +------------------+-------------------------+----------+--------+
63+ // Update: 2025-06-16 enabledby setting Alice3PassiveBase.mLayout=1
64+ // +------------------+-------------------------+----------+--------+
65+ // | layer | effective thickness [mm]| X0 [cm] | X0 [%] |
66+ // +------------------+-------------------------+----------+--------+
67+ // | Support cylinder | 20 | 8.896 | 0.225 |
68+ // | Al-strip | 1 | 8.896 | 0.011 |
69+ // | NbTi/Cu | 3 | 1.598 | 0.188 |
70+ // | Insulation | 11 | 17.64 | 0.062 |
71+ // | Cu-stabiliser | 22 | 1.436 | 1.532 |
72+ // | Inner cryostat | 10 | 8.896 | 0.112 |
73+ // | Outer cryostat | 30 | 8.896 | 0.337 |
74+ // | total | | | 2.468 |
75+ // +------------------+-------------------------+----------+--------+
6276 // Geometry will be oversimplified in two wrapping cylindrical Al layers (symmetric for the time being) with a Copper layer in between.
6377
6478 //
@@ -90,6 +104,15 @@ void Alice3Magnet::ConstructGeometry()
90104{
91105 createMaterials ();
92106
107+ // Passive Base configuration parameters
108+ auto & passiveBaseParam = Alice3PassiveBaseParam::Instance ();
109+ const bool doCopperStabilizer = (passiveBaseParam.mLayout == o2::passive::MagnetLayout::CopperStabilizer);
110+ if (doCopperStabilizer) {
111+ mRestMaterialThickness -= 3.3 ; // cm Remove the Aluminium stabiliser
112+ mRestMaterialThickness += 2.2 ; // cm Add the Copper stabiliser
113+ LOG (debug) << " Alice 3 magnet: using Copper Stabilizer with thickness " << mRestMaterialThickness << " cm" ;
114+ }
115+
93116 TGeoManager* geoManager = gGeoManager ;
94117 TGeoVolume* barrel = geoManager->GetVolume (" barrel" );
95118 if (!barrel) {
@@ -102,22 +125,22 @@ void Alice3Magnet::ConstructGeometry()
102125 auto kMedVac = matmgr.getTGeoMedium (" ALICE3_MAGNET_VACUUM" );
103126
104127 // inner wrap
105- LOGP (debug, " Alice 3 magnet: creating inner wrap with inner radius {} and thickness {}" , mInnerWrapInnerRadius , mInnerWrapThickness );
128+ LOGP (debug, " Alice 3 magnet: creating inner wrap with inner radius {} cm and thickness {} cm " , mInnerWrapInnerRadius , mInnerWrapThickness );
106129 TGeoTube* innerLayer = new TGeoTube (mInnerWrapInnerRadius , mInnerWrapInnerRadius + mInnerWrapThickness , mZLength / 2 );
107130 TGeoTube* innerVacuum = new TGeoTube (mInnerWrapInnerRadius + mInnerWrapThickness , mCoilInnerRadius , mZLength / 2 );
108131 // coils layer
109- LOGP (debug, " Alice 3 magnet: creating coils layer with inner radius {} and thickness {}" , mCoilInnerRadius , mCoilThickness );
132+ LOGP (debug, " Alice 3 magnet: creating coils layer with inner radius {} cm and thickness {} cm " , mCoilInnerRadius , mCoilThickness );
110133 TGeoTube* coilsLayer = new TGeoTube (mCoilInnerRadius , mCoilInnerRadius + mCoilThickness , mZLength / 2 );
111134 TGeoTube* restMaterial = new TGeoTube (mRestMaterialRadius , mRestMaterialRadius + mRestMaterialThickness , mZLength / 2 );
112135 TGeoTube* outerVacuum = new TGeoTube (mRestMaterialRadius + mRestMaterialThickness , mOuterWrapInnerRadius , mZLength / 2 );
113136 // outer wrap
114- LOGP (debug, " Alice 3 magnet: creating outer wrap with inner radius {} and thickness {}" , mOuterWrapInnerRadius , mOuterWrapThickness );
137+ LOGP (debug, " Alice 3 magnet: creating outer wrap with inner radius {} cm and thickness {} cm " , mOuterWrapInnerRadius , mOuterWrapThickness );
115138 TGeoTube* outerLayer = new TGeoTube (mOuterWrapInnerRadius , mOuterWrapInnerRadius + mOuterWrapThickness , mZLength / 2 );
116139
117140 TGeoVolume* innerWrapVol = new TGeoVolume (" innerWrap" , innerLayer, kMedAl );
118141 TGeoVolume* innerVacuumVol = new TGeoVolume (" innerVacuum" , innerVacuum, kMedVac );
119142 TGeoVolume* coilsVol = new TGeoVolume (" coils" , coilsLayer, kMedCu );
120- TGeoVolume* restMaterialVol = new TGeoVolume (" restMaterial" , restMaterial, kMedAl );
143+ TGeoVolume* restMaterialVol = new TGeoVolume (" restMaterial" , restMaterial, doCopperStabilizer ? kMedCu : kMedAl );
121144 TGeoVolume* outerVacuumVol = new TGeoVolume (" outerVacuum" , outerVacuum, kMedVac );
122145 TGeoVolume* outerWrapVol = new TGeoVolume (" outerWrap" , outerLayer, kMedAl );
123146
0 commit comments