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
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,19 @@ namespace o2
{
namespace mi3
{

// **
// ** Parameters for MID base configuration
// **

enum MIDLayout : int {
StandardRadius = 0,
ReducedRadius = 1
};

struct MIDBaseParam : public o2::conf::ConfigurableParamHelper<MIDBaseParam> {
int mLayout = MIDLayout::StandardRadius;

O2ParamDef(MIDBaseParam, "MIDBase");
};

Expand Down
12 changes: 10 additions & 2 deletions Detectors/Upgrades/ALICE3/MID/simulation/src/Detector.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,16 @@ void Detector::createGeometry()

// Build the MID
mLayers.resize(2);
mLayers[0] = MIDLayer(0, GeometryTGeo::composeSymNameLayer(0), 301.f, 500.f);
mLayers[1] = MIDLayer(1, GeometryTGeo::composeSymNameLayer(1), 311.f, 520.f); // arbitrarily reduced to get multiple of 5.2f
auto& midParam = MIDBaseParam::Instance();
const bool standardRadius = (midParam.mLayout == o2::mi3::MIDLayout::StandardRadius);

if (standardRadius) {
mLayers[0] = MIDLayer(0, GeometryTGeo::composeSymNameLayer(0), 301.f, 500.f);
mLayers[1] = MIDLayer(1, GeometryTGeo::composeSymNameLayer(1), 311.f, 520.f); // arbitrarily reduced to get multiple of 5.2f
} else {
mLayers[0] = MIDLayer(0, GeometryTGeo::composeSymNameLayer(0), 266.f, 500.f);
mLayers[1] = MIDLayer(1, GeometryTGeo::composeSymNameLayer(1), 276.f, 520.f);
}

for (auto& layer : mLayers) {
layer.createLayer(vMID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,16 @@ enum MagnetLayout : int {
CopperStabilizer = 1
};

enum DetLayout : int {
StandardRadius = 0,
ReducedRadius = 1
};

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

int mLayout = MagnetLayout::AluminiumStabilizer;
int mDetLayout = DetLayout::StandardRadius;

O2ParamDef(Alice3PassiveBaseParam, "Alice3PassiveBase");
};
Expand Down
66 changes: 47 additions & 19 deletions Detectors/Upgrades/ALICE3/Passive/src/Absorber.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/Absorber.h>
#include <Alice3DetectorsPassive/PassiveBaseParam.h>
#include <TGeoArb8.h> // for TGeoTrap
#include <TGeoCompositeShape.h>
#include <TGeoCone.h>
Expand Down Expand Up @@ -130,25 +131,52 @@ void Alice3Absorber::ConstructGeometry()
}

TGeoPcon* absorings = new TGeoPcon(0., 360., 18);

absorings->DefineSection(0, 500, 236, 274);
absorings->DefineSection(1, 400, 236, 274);
absorings->DefineSection(2, 400, 232.5, 277.5);
absorings->DefineSection(3, 300, 232.5, 277.5);
absorings->DefineSection(4, 300, 227.5, 282.5);
absorings->DefineSection(5, 200, 227.5, 282.5);
absorings->DefineSection(6, 200, 222.5, 287.5);
absorings->DefineSection(7, 100, 222.5, 287.5);
absorings->DefineSection(8, 100, 220, 290);
absorings->DefineSection(9, -100, 220, 290);
absorings->DefineSection(10, -100, 222.5, 287.5);
absorings->DefineSection(11, -200, 222.5, 287.5);
absorings->DefineSection(12, -200, 227.5, 282.5);
absorings->DefineSection(13, -300, 227.5, 282.5);
absorings->DefineSection(14, -300, 232.5, 277.5);
absorings->DefineSection(15, -400, 232.5, 277.5);
absorings->DefineSection(16, -400, 236, 274);
absorings->DefineSection(17, -500, 236, 274);
auto& passiveBaseParam = Alice3PassiveBaseParam::Instance();
switch (passiveBaseParam.mDetLayout) {
case o2::passive::DetLayout::StandardRadius:
absorings->DefineSection(0, 500, 236, 274);
absorings->DefineSection(1, 400, 236, 274);
absorings->DefineSection(2, 400, 232.5, 277.5);
absorings->DefineSection(3, 300, 232.5, 277.5);
absorings->DefineSection(4, 300, 227.5, 282.5);
absorings->DefineSection(5, 200, 227.5, 282.5);
absorings->DefineSection(6, 200, 222.5, 287.5);
absorings->DefineSection(7, 100, 222.5, 287.5);
absorings->DefineSection(8, 100, 220, 290);
absorings->DefineSection(9, -100, 220, 290);
absorings->DefineSection(10, -100, 222.5, 287.5);
absorings->DefineSection(11, -200, 222.5, 287.5);
absorings->DefineSection(12, -200, 227.5, 282.5);
absorings->DefineSection(13, -300, 227.5, 282.5);
absorings->DefineSection(14, -300, 232.5, 277.5);
absorings->DefineSection(15, -400, 232.5, 277.5);
absorings->DefineSection(16, -400, 236, 274);
absorings->DefineSection(17, -500, 236, 274);
break;
case o2::passive::DetLayout::ReducedRadius:
absorings->DefineSection(0, 500, 201, 239);
absorings->DefineSection(1, 400, 201, 239);
absorings->DefineSection(2, 400, 197.5, 242.5);
absorings->DefineSection(3, 300, 197.5, 242.5);
absorings->DefineSection(4, 300, 192.5, 247.5);
absorings->DefineSection(5, 200, 192.5, 247.5);
absorings->DefineSection(6, 200, 187.5, 252.5);
absorings->DefineSection(7, 100, 187.5, 252.5);
absorings->DefineSection(8, 100, 185, 255);
absorings->DefineSection(9, -100, 185, 255);
absorings->DefineSection(10, -100, 187.5, 252.5);
absorings->DefineSection(11, -200, 187.5, 252.5);
absorings->DefineSection(12, -200, 192.5, 247.5);
absorings->DefineSection(13, -300, 192.5, 247.5);
absorings->DefineSection(14, -300, 197.5, 242.5);
absorings->DefineSection(15, -400, 197.5, 242.5);
absorings->DefineSection(16, -400, 201, 239);
absorings->DefineSection(17, -500, 201, 239);
break;
default:
LOG(fatal) << "Unknown detector layout " << passiveBaseParam.mDetLayout;
break;
}

// Insert
absorings->SetName("absorings");
Expand Down
40 changes: 35 additions & 5 deletions Detectors/Upgrades/ALICE3/Passive/src/Magnet.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,41 @@ void Alice3Magnet::ConstructGeometry()

// 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";

switch (passiveBaseParam.mDetLayout) {
case o2::passive::DetLayout::StandardRadius:
// Defined in the header file
break;
case o2::passive::DetLayout::ReducedRadius:
mInnerWrapInnerRadius = 125.f; // cm
mInnerWrapThickness = 1.f; // cm
mCoilInnerRadius = 145.f; // cm
mCoilThickness = 0.3f; // cm
mRestMaterialRadius = 145.3f; // cm
mRestMaterialThickness = 6.8f; // cm
mOuterWrapInnerRadius = 165.f; // cm
mOuterWrapThickness = 3.f; // cm
mZLength = 800.f; // cm
break;
default:
LOG(fatal) << "Unknown detector layout " << passiveBaseParam.mDetLayout;
break;
}

bool doCopperStabilizer = false;
switch (passiveBaseParam.mLayout) {
case o2::passive::MagnetLayout::AluminiumStabilizer:
// Handled in the header file
break;
case o2::passive::MagnetLayout::CopperStabilizer:
doCopperStabilizer = true;
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";
break;
default:
LOG(fatal) << "Unknown magnet layout " << passiveBaseParam.mLayout;
break;
}

TGeoManager* geoManager = gGeoManager;
Expand Down