Skip to content

Commit dec2fe8

Browse files
authored
A3: Add customization of detector MID/Magnet/Absorber radius (#14621)
1 parent ff42ca2 commit dec2fe8

File tree

5 files changed

+110
-26
lines changed

5 files changed

+110
-26
lines changed

Detectors/Upgrades/ALICE3/MID/base/include/MI3Base/MI3BaseParam.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,19 @@ namespace o2
1919
{
2020
namespace mi3
2121
{
22+
23+
// **
24+
// ** Parameters for MID base configuration
25+
// **
26+
27+
enum MIDLayout : int {
28+
StandardRadius = 0,
29+
ReducedRadius = 1
30+
};
31+
2232
struct MIDBaseParam : public o2::conf::ConfigurableParamHelper<MIDBaseParam> {
33+
int mLayout = MIDLayout::StandardRadius;
34+
2335
O2ParamDef(MIDBaseParam, "MIDBase");
2436
};
2537

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,16 @@ void Detector::createGeometry()
126126

127127
// Build the MID
128128
mLayers.resize(2);
129-
mLayers[0] = MIDLayer(0, GeometryTGeo::composeSymNameLayer(0), 301.f, 500.f);
130-
mLayers[1] = MIDLayer(1, GeometryTGeo::composeSymNameLayer(1), 311.f, 520.f); // arbitrarily reduced to get multiple of 5.2f
129+
auto& midParam = MIDBaseParam::Instance();
130+
const bool standardRadius = (midParam.mLayout == o2::mi3::MIDLayout::StandardRadius);
131+
132+
if (standardRadius) {
133+
mLayers[0] = MIDLayer(0, GeometryTGeo::composeSymNameLayer(0), 301.f, 500.f);
134+
mLayers[1] = MIDLayer(1, GeometryTGeo::composeSymNameLayer(1), 311.f, 520.f); // arbitrarily reduced to get multiple of 5.2f
135+
} else {
136+
mLayers[0] = MIDLayer(0, GeometryTGeo::composeSymNameLayer(0), 266.f, 500.f);
137+
mLayers[1] = MIDLayer(1, GeometryTGeo::composeSymNameLayer(1), 276.f, 520.f);
138+
}
131139

132140
for (auto& layer : mLayers) {
133141
layer.createLayer(vMID);

Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,16 @@ enum MagnetLayout : int {
2929
CopperStabilizer = 1
3030
};
3131

32+
enum DetLayout : int {
33+
StandardRadius = 0,
34+
ReducedRadius = 1
35+
};
36+
3237
struct Alice3PassiveBaseParam : public o2::conf::ConfigurableParamHelper<Alice3PassiveBaseParam> {
3338
// Geometry Builder parameters
3439

3540
int mLayout = MagnetLayout::AluminiumStabilizer;
41+
int mDetLayout = DetLayout::StandardRadius;
3642

3743
O2ParamDef(Alice3PassiveBaseParam, "Alice3PassiveBase");
3844
};

Detectors/Upgrades/ALICE3/Passive/src/Absorber.cxx

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <DetectorsBase/Detector.h>
1313
#include <DetectorsBase/MaterialManager.h>
1414
#include <Alice3DetectorsPassive/Absorber.h>
15+
#include <Alice3DetectorsPassive/PassiveBaseParam.h>
1516
#include <TGeoArb8.h> // for TGeoTrap
1617
#include <TGeoCompositeShape.h>
1718
#include <TGeoCone.h>
@@ -130,25 +131,52 @@ void Alice3Absorber::ConstructGeometry()
130131
}
131132

132133
TGeoPcon* absorings = new TGeoPcon(0., 360., 18);
133-
134-
absorings->DefineSection(0, 500, 236, 274);
135-
absorings->DefineSection(1, 400, 236, 274);
136-
absorings->DefineSection(2, 400, 232.5, 277.5);
137-
absorings->DefineSection(3, 300, 232.5, 277.5);
138-
absorings->DefineSection(4, 300, 227.5, 282.5);
139-
absorings->DefineSection(5, 200, 227.5, 282.5);
140-
absorings->DefineSection(6, 200, 222.5, 287.5);
141-
absorings->DefineSection(7, 100, 222.5, 287.5);
142-
absorings->DefineSection(8, 100, 220, 290);
143-
absorings->DefineSection(9, -100, 220, 290);
144-
absorings->DefineSection(10, -100, 222.5, 287.5);
145-
absorings->DefineSection(11, -200, 222.5, 287.5);
146-
absorings->DefineSection(12, -200, 227.5, 282.5);
147-
absorings->DefineSection(13, -300, 227.5, 282.5);
148-
absorings->DefineSection(14, -300, 232.5, 277.5);
149-
absorings->DefineSection(15, -400, 232.5, 277.5);
150-
absorings->DefineSection(16, -400, 236, 274);
151-
absorings->DefineSection(17, -500, 236, 274);
134+
auto& passiveBaseParam = Alice3PassiveBaseParam::Instance();
135+
switch (passiveBaseParam.mDetLayout) {
136+
case o2::passive::DetLayout::StandardRadius:
137+
absorings->DefineSection(0, 500, 236, 274);
138+
absorings->DefineSection(1, 400, 236, 274);
139+
absorings->DefineSection(2, 400, 232.5, 277.5);
140+
absorings->DefineSection(3, 300, 232.5, 277.5);
141+
absorings->DefineSection(4, 300, 227.5, 282.5);
142+
absorings->DefineSection(5, 200, 227.5, 282.5);
143+
absorings->DefineSection(6, 200, 222.5, 287.5);
144+
absorings->DefineSection(7, 100, 222.5, 287.5);
145+
absorings->DefineSection(8, 100, 220, 290);
146+
absorings->DefineSection(9, -100, 220, 290);
147+
absorings->DefineSection(10, -100, 222.5, 287.5);
148+
absorings->DefineSection(11, -200, 222.5, 287.5);
149+
absorings->DefineSection(12, -200, 227.5, 282.5);
150+
absorings->DefineSection(13, -300, 227.5, 282.5);
151+
absorings->DefineSection(14, -300, 232.5, 277.5);
152+
absorings->DefineSection(15, -400, 232.5, 277.5);
153+
absorings->DefineSection(16, -400, 236, 274);
154+
absorings->DefineSection(17, -500, 236, 274);
155+
break;
156+
case o2::passive::DetLayout::ReducedRadius:
157+
absorings->DefineSection(0, 500, 201, 239);
158+
absorings->DefineSection(1, 400, 201, 239);
159+
absorings->DefineSection(2, 400, 197.5, 242.5);
160+
absorings->DefineSection(3, 300, 197.5, 242.5);
161+
absorings->DefineSection(4, 300, 192.5, 247.5);
162+
absorings->DefineSection(5, 200, 192.5, 247.5);
163+
absorings->DefineSection(6, 200, 187.5, 252.5);
164+
absorings->DefineSection(7, 100, 187.5, 252.5);
165+
absorings->DefineSection(8, 100, 185, 255);
166+
absorings->DefineSection(9, -100, 185, 255);
167+
absorings->DefineSection(10, -100, 187.5, 252.5);
168+
absorings->DefineSection(11, -200, 187.5, 252.5);
169+
absorings->DefineSection(12, -200, 192.5, 247.5);
170+
absorings->DefineSection(13, -300, 192.5, 247.5);
171+
absorings->DefineSection(14, -300, 197.5, 242.5);
172+
absorings->DefineSection(15, -400, 197.5, 242.5);
173+
absorings->DefineSection(16, -400, 201, 239);
174+
absorings->DefineSection(17, -500, 201, 239);
175+
break;
176+
default:
177+
LOG(fatal) << "Unknown detector layout " << passiveBaseParam.mDetLayout;
178+
break;
179+
}
152180

153181
// Insert
154182
absorings->SetName("absorings");

Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,41 @@ void Alice3Magnet::ConstructGeometry()
106106

107107
// Passive Base configuration parameters
108108
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";
109+
110+
switch (passiveBaseParam.mDetLayout) {
111+
case o2::passive::DetLayout::StandardRadius:
112+
// Defined in the header file
113+
break;
114+
case o2::passive::DetLayout::ReducedRadius:
115+
mInnerWrapInnerRadius = 125.f; // cm
116+
mInnerWrapThickness = 1.f; // cm
117+
mCoilInnerRadius = 145.f; // cm
118+
mCoilThickness = 0.3f; // cm
119+
mRestMaterialRadius = 145.3f; // cm
120+
mRestMaterialThickness = 6.8f; // cm
121+
mOuterWrapInnerRadius = 165.f; // cm
122+
mOuterWrapThickness = 3.f; // cm
123+
mZLength = 800.f; // cm
124+
break;
125+
default:
126+
LOG(fatal) << "Unknown detector layout " << passiveBaseParam.mDetLayout;
127+
break;
128+
}
129+
130+
bool doCopperStabilizer = false;
131+
switch (passiveBaseParam.mLayout) {
132+
case o2::passive::MagnetLayout::AluminiumStabilizer:
133+
// Handled in the header file
134+
break;
135+
case o2::passive::MagnetLayout::CopperStabilizer:
136+
doCopperStabilizer = true;
137+
mRestMaterialThickness -= 3.3; // cm Remove the Aluminium stabiliser
138+
mRestMaterialThickness += 2.2; // cm Add the Copper stabiliser
139+
LOG(debug) << "Alice 3 magnet: using Copper Stabilizer with thickness " << mRestMaterialThickness << " cm";
140+
break;
141+
default:
142+
LOG(fatal) << "Unknown magnet layout " << passiveBaseParam.mLayout;
143+
break;
114144
}
115145

116146
TGeoManager* geoManager = gGeoManager;

0 commit comments

Comments
 (0)