From febb3903fa890223a717c9cc351f408e5624740d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Jacazio?= Date: Mon, 16 Jun 2025 10:37:49 +0200 Subject: [PATCH 1/2] UpdateMange --- .../Upgrades/ALICE3/Passive/CMakeLists.txt | 2 + .../Alice3DetectorsPassive/PassiveBaseParam.h | 43 +++++++++++++++++++ .../Upgrades/ALICE3/Passive/src/Magnet.cxx | 26 ++++++++++- .../ALICE3/Passive/src/PassiveBaseParam.cxx | 13 ++++++ .../ALICE3/Passive/src/PassiveLinkDef.h | 1 + 5 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h create mode 100644 Detectors/Upgrades/ALICE3/Passive/src/PassiveBaseParam.cxx diff --git a/Detectors/Upgrades/ALICE3/Passive/CMakeLists.txt b/Detectors/Upgrades/ALICE3/Passive/CMakeLists.txt index 2689130c495d9..2bd732dfe3b31 100644 --- a/Detectors/Upgrades/ALICE3/Passive/CMakeLists.txt +++ b/Detectors/Upgrades/ALICE3/Passive/CMakeLists.txt @@ -12,6 +12,7 @@ o2_add_library(Alice3DetectorsPassive SOURCES src/Pipe.cxx src/PassiveBase.cxx + src/PassiveBaseParam.cxx src/Absorber.cxx src/Magnet.cxx PUBLIC_LINK_LIBRARIES O2::Field O2::DetectorsBase O2::SimConfig) @@ -19,6 +20,7 @@ o2_add_library(Alice3DetectorsPassive o2_target_root_dictionary(Alice3DetectorsPassive HEADERS include/Alice3DetectorsPassive/Pipe.h include/Alice3DetectorsPassive/PassiveBase.h + include/Alice3DetectorsPassive/PassiveBaseParam.h include/Alice3DetectorsPassive/Absorber.h include/Alice3DetectorsPassive/Magnet.h LINKDEF src/PassiveLinkDef.h) diff --git a/Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h b/Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h new file mode 100644 index 0000000000000..1b6e065e20251 --- /dev/null +++ b/Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h @@ -0,0 +1,43 @@ +// Copyright 2019-2020 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. + +#ifndef ALICEO2_PASSIVE_BASEPARAM_H_ +#define ALICEO2_PASSIVE_BASEPARAM_H_ + +#include "CommonUtils/ConfigurableParam.h" +#include "CommonUtils/ConfigurableParamHelper.h" + +namespace o2 +{ +namespace passive +{ + +// ** +// ** Parameters for Passive base configuration +// ** + +enum MagnetGeometry : int { + AluminiumStabilizer = 0, + CopperStabilizer = 1 +}; + +struct Alice3PassiveBaseParam : public o2::conf::ConfigurableParamHelper { + // Geometry Builder parameters + + int mGeometry = MagnetGeometry::AluminiumStabilizer; + + O2ParamDef(Alice3PassiveBaseParam, "PassiveBase"); +}; + +} // namespace passive +} // end namespace o2 + +#endif // ALICEO2_PASSIVE_BASEPARAM_H_ diff --git a/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx b/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx index 3e3e6590720cf..c801172e82775 100644 --- a/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx +++ b/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -54,11 +55,24 @@ void Alice3Magnet::createMaterials() // | Support cylinder | 20 | 8.896 | 0.225 | // | Al-strip | 1 | 8.896 | 0.011 | // | NbTi/Cu | 3 | 1.598 | 0.188 | - // | Insulation | 11 | 17.64 | 0.062 | + // | Insulation | 11 | 17.64 | 0.062 | // | Al-stabiliser | 33 | 8.896 | 0.371 | // | Inner cryostat | 10 | 8.896 | 0.112 | // | Outer cryostat | 30 | 8.896 | 0.337 | // +------------------+-------------------------+----------+--------+ + // Update: 2025-06-16 + // +------------------+-------------------------+----------+--------+ + // | layer | effective thickness [mm]| X0 [cm] | X0 [%] | + // +------------------+-------------------------+----------+--------+ + // | Support cylinder | 20 | 8.896 | 0.225 | + // | Al-strip | 1 | 8.896 | 0.011 | + // | NbTi/Cu | 3 | 1.598 | 0.188 | + // | Insulation | 11 | 17.64 | 0.062 | + // | Cu-stabiliser | 22 | 1.436 | 1.532 | + // | Inner cryostat | 10 | 8.896 | 0.112 | + // | Outer cryostat | 30 | 8.896 | 0.337 | + // | total | | | 2.468 | + // +------------------+-------------------------+----------+--------+ // Geometry will be oversimplified in two wrapping cylindrical Al layers (symmetric for the time being) with a Copper layer in between. // @@ -90,6 +104,14 @@ void Alice3Magnet::ConstructGeometry() { createMaterials(); + // Passive Base configuration parameters + auto& passiveBaseParam = Alice3PassiveBaseParam::Instance(); + const bool doCopperStabilizer = (passiveBaseParam.mGeometry == o2::passive::MagnetGeometry::CopperStabilizer); + if (doCopperStabilizer) { + mRestMaterialThickness -= 3.3; // cm Remove the Aluminium stabiliser + mRestMaterialThickness += 2.2; // cm Add the Copper stabiliser + } + TGeoManager* geoManager = gGeoManager; TGeoVolume* barrel = geoManager->GetVolume("barrel"); if (!barrel) { @@ -117,7 +139,7 @@ void Alice3Magnet::ConstructGeometry() TGeoVolume* innerWrapVol = new TGeoVolume("innerWrap", innerLayer, kMedAl); TGeoVolume* innerVacuumVol = new TGeoVolume("innerVacuum", innerVacuum, kMedVac); TGeoVolume* coilsVol = new TGeoVolume("coils", coilsLayer, kMedCu); - TGeoVolume* restMaterialVol = new TGeoVolume("restMaterial", restMaterial, kMedAl); + TGeoVolume* restMaterialVol = new TGeoVolume("restMaterial", restMaterial, doCopperStabilizer ? kMedCu : kMedAl); TGeoVolume* outerVacuumVol = new TGeoVolume("outerVacuum", outerVacuum, kMedVac); TGeoVolume* outerWrapVol = new TGeoVolume("outerWrap", outerLayer, kMedAl); diff --git a/Detectors/Upgrades/ALICE3/Passive/src/PassiveBaseParam.cxx b/Detectors/Upgrades/ALICE3/Passive/src/PassiveBaseParam.cxx new file mode 100644 index 0000000000000..6b6a6191f0bf5 --- /dev/null +++ b/Detectors/Upgrades/ALICE3/Passive/src/PassiveBaseParam.cxx @@ -0,0 +1,13 @@ +// Copyright 2019-2020 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. + +#include "Alice3DetectorsPassive/PassiveBaseParam.h" +O2ParamImpl(o2::passive::Alice3PassiveBaseParam); diff --git a/Detectors/Upgrades/ALICE3/Passive/src/PassiveLinkDef.h b/Detectors/Upgrades/ALICE3/Passive/src/PassiveLinkDef.h index daac6de56a124..803d308671536 100644 --- a/Detectors/Upgrades/ALICE3/Passive/src/PassiveLinkDef.h +++ b/Detectors/Upgrades/ALICE3/Passive/src/PassiveLinkDef.h @@ -16,6 +16,7 @@ #pragma link off all functions; #pragma link C++ class o2::passive::Alice3PassiveBase + ; +#pragma link C++ class o2::passive::Alice3PassiveBaseParam + ; #pragma link C++ class o2::passive::Alice3Pipe + ; #pragma link C++ class o2::passive::Alice3Absorber + ; #pragma link C++ class o2::passive::Alice3Magnet + ; From 9dbc10238001008a5ed7971dd263af70b1383a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Jacazio?= Date: Mon, 16 Jun 2025 13:20:42 +0200 Subject: [PATCH 2/2] Update --- .../include/Alice3DetectorsPassive/PassiveBaseParam.h | 6 +++--- Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h b/Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h index 1b6e065e20251..3ac53c1bfb92b 100644 --- a/Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h +++ b/Detectors/Upgrades/ALICE3/Passive/include/Alice3DetectorsPassive/PassiveBaseParam.h @@ -24,7 +24,7 @@ namespace passive // ** Parameters for Passive base configuration // ** -enum MagnetGeometry : int { +enum MagnetLayout : int { AluminiumStabilizer = 0, CopperStabilizer = 1 }; @@ -32,9 +32,9 @@ enum MagnetGeometry : int { struct Alice3PassiveBaseParam : public o2::conf::ConfigurableParamHelper { // Geometry Builder parameters - int mGeometry = MagnetGeometry::AluminiumStabilizer; + int mLayout = MagnetLayout::AluminiumStabilizer; - O2ParamDef(Alice3PassiveBaseParam, "PassiveBase"); + O2ParamDef(Alice3PassiveBaseParam, "Alice3PassiveBase"); }; } // namespace passive diff --git a/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx b/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx index c801172e82775..5c94c3e31a244 100644 --- a/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx +++ b/Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx @@ -60,7 +60,7 @@ void Alice3Magnet::createMaterials() // | Inner cryostat | 10 | 8.896 | 0.112 | // | Outer cryostat | 30 | 8.896 | 0.337 | // +------------------+-------------------------+----------+--------+ - // Update: 2025-06-16 + // Update: 2025-06-16 enabledby setting Alice3PassiveBase.mLayout=1 // +------------------+-------------------------+----------+--------+ // | layer | effective thickness [mm]| X0 [cm] | X0 [%] | // +------------------+-------------------------+----------+--------+ @@ -106,10 +106,11 @@ void Alice3Magnet::ConstructGeometry() // Passive Base configuration parameters auto& passiveBaseParam = Alice3PassiveBaseParam::Instance(); - const bool doCopperStabilizer = (passiveBaseParam.mGeometry == o2::passive::MagnetGeometry::CopperStabilizer); + const bool doCopperStabilizer = (passiveBaseParam.mLayout == o2::passive::MagnetLayout::CopperStabilizer); if (doCopperStabilizer) { mRestMaterialThickness -= 3.3; // cm Remove the Aluminium stabiliser mRestMaterialThickness += 2.2; // cm Add the Copper stabiliser + LOG(debug) << "Alice 3 magnet: using Copper Stabilizer with thickness " << mRestMaterialThickness << " cm"; } TGeoManager* geoManager = gGeoManager; @@ -124,16 +125,16 @@ void Alice3Magnet::ConstructGeometry() auto kMedVac = matmgr.getTGeoMedium("ALICE3_MAGNET_VACUUM"); // inner wrap - LOGP(debug, "Alice 3 magnet: creating inner wrap with inner radius {} and thickness {}", mInnerWrapInnerRadius, mInnerWrapThickness); + LOGP(debug, "Alice 3 magnet: creating inner wrap with inner radius {} cm and thickness {} cm", mInnerWrapInnerRadius, mInnerWrapThickness); TGeoTube* innerLayer = new TGeoTube(mInnerWrapInnerRadius, mInnerWrapInnerRadius + mInnerWrapThickness, mZLength / 2); TGeoTube* innerVacuum = new TGeoTube(mInnerWrapInnerRadius + mInnerWrapThickness, mCoilInnerRadius, mZLength / 2); // coils layer - LOGP(debug, "Alice 3 magnet: creating coils layer with inner radius {} and thickness {}", mCoilInnerRadius, mCoilThickness); + LOGP(debug, "Alice 3 magnet: creating coils layer with inner radius {} cm and thickness {} cm", mCoilInnerRadius, mCoilThickness); TGeoTube* coilsLayer = new TGeoTube(mCoilInnerRadius, mCoilInnerRadius + mCoilThickness, mZLength / 2); TGeoTube* restMaterial = new TGeoTube(mRestMaterialRadius, mRestMaterialRadius + mRestMaterialThickness, mZLength / 2); TGeoTube* outerVacuum = new TGeoTube(mRestMaterialRadius + mRestMaterialThickness, mOuterWrapInnerRadius, mZLength / 2); // outer wrap - LOGP(debug, "Alice 3 magnet: creating outer wrap with inner radius {} and thickness {}", mOuterWrapInnerRadius, mOuterWrapThickness); + LOGP(debug, "Alice 3 magnet: creating outer wrap with inner radius {} cm and thickness {} cm", mOuterWrapInnerRadius, mOuterWrapThickness); TGeoTube* outerLayer = new TGeoTube(mOuterWrapInnerRadius, mOuterWrapInnerRadius + mOuterWrapThickness, mZLength / 2); TGeoVolume* innerWrapVol = new TGeoVolume("innerWrap", innerLayer, kMedAl);