Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Detectors/Upgrades/ALICE3/Passive/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@
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)

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)
Original file line number Diff line number Diff line change
@@ -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 MagnetLayout : int {
AluminiumStabilizer = 0,
CopperStabilizer = 1
};

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

int mLayout = MagnetLayout::AluminiumStabilizer;

O2ParamDef(Alice3PassiveBaseParam, "Alice3PassiveBase");
};

} // namespace passive
} // end namespace o2

#endif // ALICEO2_PASSIVE_BASEPARAM_H_
33 changes: 28 additions & 5 deletions Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <DetectorsBase/Detector.h>
#include <DetectorsBase/MaterialManager.h>
#include <Alice3DetectorsPassive/Magnet.h>
#include <Alice3DetectorsPassive/PassiveBaseParam.h>
#include <TGeoCompositeShape.h>
#include <TGeoManager.h>
#include <TGeoMatrix.h>
Expand Down Expand Up @@ -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 enabledby setting Alice3PassiveBase.mLayout=1
// +------------------+-------------------------+----------+--------+
// | 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.

//
Expand Down Expand Up @@ -90,6 +104,15 @@ void Alice3Magnet::ConstructGeometry()
{
createMaterials();

// Passive Base configuration parameters
auto& passiveBaseParam = Alice3PassiveBaseParam::Instance();
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;
TGeoVolume* barrel = geoManager->GetVolume("barrel");
if (!barrel) {
Expand All @@ -102,22 +125,22 @@ 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);
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);

Expand Down
13 changes: 13 additions & 0 deletions Detectors/Upgrades/ALICE3/Passive/src/PassiveBaseParam.cxx
Original file line number Diff line number Diff line change
@@ -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);
1 change: 1 addition & 0 deletions Detectors/Upgrades/ALICE3/Passive/src/PassiveLinkDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 + ;
Expand Down