Skip to content

Commit 43f081c

Browse files
committed
Add magnet
1 parent 28cd933 commit 43f081c

4 files changed

Lines changed: 34 additions & 11 deletions

File tree

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,16 @@ enum MagnetLayout : int {
3131

3232
enum DetLayout : int {
3333
StandardRadius = 0,
34-
ReducedRadius = 1
34+
ReducedRadius = 1,
35+
Version2 = 2 // Specs from engineering note 2026-05-06
3536
};
3637

3738
struct Alice3PassiveBaseParam : public o2::conf::ConfigurableParamHelper<Alice3PassiveBaseParam> {
3839
// Geometry Builder parameters
3940

40-
int mLayout = MagnetLayout::AluminiumStabilizer;
41-
int mDetLayout = DetLayout::StandardRadius;
41+
MagnetLayout mLayout = MagnetLayout::AluminiumStabilizer; // Magnet layout: Aluminium or Copper stabilizer
42+
// DetLayout mDetLayout = DetLayout::StandardRadius; // Detector layout: Standard or Reduced radius
43+
DetLayout mDetLayout = o2::passive::DetLayout::Version2; // Detector layout: Standard or Reduced radius
4244

4345
O2ParamDef(Alice3PassiveBaseParam, "Alice3PassiveBase");
4446
};

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ void Alice3Absorber::ConstructGeometry()
154154
absorings->DefineSection(17, -500, 236, 274);
155155
break;
156156
case o2::passive::DetLayout::ReducedRadius:
157+
case o2::passive::DetLayout::Version2:
157158
absorings->DefineSection(0, 500, 201, 239);
158159
absorings->DefineSection(1, 400, 201, 239);
159160
absorings->DefineSection(2, 400, 197.5, 242.5);

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ void Alice3Magnet::ConstructGeometry()
107107
// Passive Base configuration parameters
108108
auto& passiveBaseParam = Alice3PassiveBaseParam::Instance();
109109

110+
const bool isVersion2 = (passiveBaseParam.mDetLayout == o2::passive::DetLayout::Version2);
111+
110112
switch (passiveBaseParam.mDetLayout) {
111113
case o2::passive::DetLayout::StandardRadius:
112114
// Defined in the header file
@@ -122,6 +124,19 @@ void Alice3Magnet::ConstructGeometry()
122124
mOuterWrapThickness = 3.f; // cm
123125
mZLength = 800.f; // cm
124126
break;
127+
case o2::passive::DetLayout::Version2:
128+
// Engineering note 2026-05-06 baseline stack (radial):
129+
// inner wall 3 mm + winding pack 48 mm + support cylinder 20 mm + MLI 2 mm + outer wall 3 mm.
130+
mInnerWrapInnerRadius = 125.f; // cm
131+
mInnerWrapThickness = 0.3f; // cm
132+
mCoilInnerRadius = mInnerWrapInnerRadius + mInnerWrapThickness; // cm
133+
mCoilThickness = 4.8f; // cm
134+
mRestMaterialRadius = mCoilInnerRadius + mCoilThickness; // cm
135+
mRestMaterialThickness = 2.2f; // cm
136+
mOuterWrapInnerRadius = mRestMaterialRadius + mRestMaterialThickness; // cm
137+
mOuterWrapThickness = 0.3f; // cm
138+
mZLength = 800.f; // cm
139+
break;
125140
default:
126141
LOG(fatal) << "Unknown detector layout " << passiveBaseParam.mDetLayout;
127142
break;
@@ -133,6 +148,10 @@ void Alice3Magnet::ConstructGeometry()
133148
// Handled in the header file
134149
break;
135150
case o2::passive::MagnetLayout::CopperStabilizer:
151+
if (isVersion2) {
152+
LOG(warn) << "Alice 3 magnet: CopperStabilizer override ignored for Version2 (engineering-note stack)";
153+
break;
154+
}
136155
doCopperStabilizer = true;
137156
mRestMaterialThickness -= 3.3; // cm Remove the Aluminium stabiliser
138157
mRestMaterialThickness += 2.2; // cm Add the Copper stabiliser

Detectors/Upgrades/ALICE3/macros/ALICE3Field.C

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ std::function<void(const double*, double*)> field()
1717
double Rc;
1818
double R1;
1919
double R2;
20-
double B1;
20+
const double B1 = 0.5; // [T]
2121
double B2;
22-
const double beamStart = 500.; //[cm]
23-
const double tokGauss = 1. / 0.1; // conversion from Tesla to kGauss
22+
const double beamStart = 500.; // [cm]
23+
static constexpr double tokGauss = 1. / 0.1; // conversion from Tesla to kGauss
2424

2525
bool isMagAbs = true;
2626

@@ -34,7 +34,6 @@ std::function<void(const double*, double*)> field()
3434
R2 = 290.; //[cm]
3535

3636
// To set the B2
37-
B1 = 2.; //[T]
3837
B2 = -Rc * Rc / ((R2 * R2 - R1 * R1) * B1); //[T]
3938

4039
if ((abs(x[2]) <= beamStart) && (sqrt(x[0] * x[0] + x[1] * x[1]) < Rc)) {
@@ -69,8 +68,9 @@ void ALICE3Field()
6968
{
7069
auto fieldFunc = field();
7170
// RZ plane visualization
72-
TCanvas* cRZ = new TCanvas("cRZ", "Field in RZ plane", 800, 600);
73-
TH2F* hRZ = new TH2F("hRZ", "Magnetic Field B_z in RZ plane;Z [m];R [m]", 100, -10, 10, 100, -5, 5);
71+
TCanvas* cRZ = new TCanvas("cRZ", "Field in RZ plane", 800, 800);
72+
gPad->SetRightMargin(0.15);
73+
TH2F* hRZ = new TH2F("hRZ", "Magnetic Field B_z in RZ plane;Z [m];R [m];B_{z} [kGauss]", 100, -10, 10, 100, -5, 5);
7474
hRZ->SetBit(TH1::kNoStats); // disable stats box
7575
for (int i = 1; i <= hRZ->GetNbinsX(); i++) {
7676
const double Z = hRZ->GetXaxis()->GetBinCenter(i);
@@ -87,8 +87,9 @@ void ALICE3Field()
8787
cRZ->Update();
8888

8989
// XY plane visualization
90-
TCanvas* cXY = new TCanvas("cXY", "Field in XY plane", 800, 600);
91-
TH2F* hXY = new TH2F("hXY", "Magnetic Field B_z in XY plane;X [m];Y [m]", 100, -5, 5, 100, -5, 5);
90+
TCanvas* cXY = new TCanvas("cXY", "Field in XY plane", 800, 800);
91+
gPad->SetRightMargin(0.15);
92+
TH2F* hXY = new TH2F("hXY", "Magnetic Field B_z in XY plane;X [m];Y [m];B_{z} [kGauss]", 100, -5, 5, 100, -5, 5);
9293
hXY->SetBit(TH1::kNoStats); // disable stats box
9394

9495
for (int i = 1; i <= hXY->GetNbinsX(); i++) {

0 commit comments

Comments
 (0)