Skip to content

Commit 9ca2abd

Browse files
authored
[ALICE3] Add Copper stabilizers for A3 Magnet (#14410)
1 parent aaa0cf5 commit 9ca2abd

File tree

5 files changed

+87
-5
lines changed

5 files changed

+87
-5
lines changed

Detectors/Upgrades/ALICE3/Passive/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
o2_add_library(Alice3DetectorsPassive
1313
SOURCES src/Pipe.cxx
1414
src/PassiveBase.cxx
15+
src/PassiveBaseParam.cxx
1516
src/Absorber.cxx
1617
src/Magnet.cxx
1718
PUBLIC_LINK_LIBRARIES O2::Field O2::DetectorsBase O2::SimConfig)
1819

1920
o2_target_root_dictionary(Alice3DetectorsPassive
2021
HEADERS include/Alice3DetectorsPassive/Pipe.h
2122
include/Alice3DetectorsPassive/PassiveBase.h
23+
include/Alice3DetectorsPassive/PassiveBaseParam.h
2224
include/Alice3DetectorsPassive/Absorber.h
2325
include/Alice3DetectorsPassive/Magnet.h
2426
LINKDEF src/PassiveLinkDef.h)
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
#ifndef ALICEO2_PASSIVE_BASEPARAM_H_
13+
#define ALICEO2_PASSIVE_BASEPARAM_H_
14+
15+
#include "CommonUtils/ConfigurableParam.h"
16+
#include "CommonUtils/ConfigurableParamHelper.h"
17+
18+
namespace o2
19+
{
20+
namespace passive
21+
{
22+
23+
// **
24+
// ** Parameters for Passive base configuration
25+
// **
26+
27+
enum MagnetLayout : int {
28+
AluminiumStabilizer = 0,
29+
CopperStabilizer = 1
30+
};
31+
32+
struct Alice3PassiveBaseParam : public o2::conf::ConfigurableParamHelper<Alice3PassiveBaseParam> {
33+
// Geometry Builder parameters
34+
35+
int mLayout = MagnetLayout::AluminiumStabilizer;
36+
37+
O2ParamDef(Alice3PassiveBaseParam, "Alice3PassiveBase");
38+
};
39+
40+
} // namespace passive
41+
} // end namespace o2
42+
43+
#endif // ALICEO2_PASSIVE_BASEPARAM_H_

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

Lines changed: 28 additions & 5 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/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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
#include "Alice3DetectorsPassive/PassiveBaseParam.h"
13+
O2ParamImpl(o2::passive::Alice3PassiveBaseParam);

Detectors/Upgrades/ALICE3/Passive/src/PassiveLinkDef.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#pragma link off all functions;
1717

1818
#pragma link C++ class o2::passive::Alice3PassiveBase + ;
19+
#pragma link C++ class o2::passive::Alice3PassiveBaseParam + ;
1920
#pragma link C++ class o2::passive::Alice3Pipe + ;
2021
#pragma link C++ class o2::passive::Alice3Absorber + ;
2122
#pragma link C++ class o2::passive::Alice3Magnet + ;

0 commit comments

Comments
 (0)