From e7cc0669f6fae96c791ea4a06892580373ba07a3 Mon Sep 17 00:00:00 2001 From: Justus Rudolph Date: Tue, 5 May 2026 16:46:12 +0200 Subject: [PATCH 1/2] Change carbon fiber colour to very dark grey, and add it to stave volume to get consistent colours. Also update sensor height to 2.9cm in line with new documents, and fix bug in ML stave positioning to get staggering right. --- .../simulation/include/FT3Simulation/FT3ModuleConstants.h | 6 +++--- Detectors/Upgrades/ALICE3/FT3/simulation/src/FT3Module.cxx | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Detectors/Upgrades/ALICE3/FT3/simulation/include/FT3Simulation/FT3ModuleConstants.h b/Detectors/Upgrades/ALICE3/FT3/simulation/include/FT3Simulation/FT3ModuleConstants.h index 1fe9f404245c1..5c976bc3bd902 100644 --- a/Detectors/Upgrades/ALICE3/FT3/simulation/include/FT3Simulation/FT3ModuleConstants.h +++ b/Detectors/Upgrades/ALICE3/FT3/simulation/include/FT3Simulation/FT3ModuleConstants.h @@ -43,7 +43,7 @@ namespace o2::ft3::ModuleConstants */ // First set all layout constants for the rest of the function const double single_sensor_width = 2.5; -const double single_sensor_height = 3.2; +const double single_sensor_height = 2.9; const double inactive_width = 0.2; const double sensor2x1_gap = 0.02; const double stackGap = sensor2x1_gap; // gap between 2xN module stacks @@ -103,7 +103,7 @@ const int SiInactiveColor = kRed; const int glueColor = kBlue; const int CuColor = kOrange; const int kaptonColor = kYellow; -const int carbonColor = kBlack; +const int carbonFiberColor = kGray + 1; // Struct for stave position configuration (varies between IT/OT) struct StaveConfig { @@ -177,7 +177,7 @@ const double x_midpoint_spacing = 4.5; const std::vector staveOnFront = { 1, 0, 1, 0, 1, 0, 1, 0, // L - 0, 1, 0, 1, 0, 1, 0, 1 // R + 1, 0, 1, 0, 1, 0, 1, 0 // R }; } // namespace ML_StavePositions diff --git a/Detectors/Upgrades/ALICE3/FT3/simulation/src/FT3Module.cxx b/Detectors/Upgrades/ALICE3/FT3/simulation/src/FT3Module.cxx index 221136000a371..c439da9d539d0 100644 --- a/Detectors/Upgrades/ALICE3/FT3/simulation/src/FT3Module.cxx +++ b/Detectors/Upgrades/ALICE3/FT3/simulation/src/FT3Module.cxx @@ -326,6 +326,9 @@ void FT3Module::addStaveVolume( (volumeName).c_str(), staveShape, carbonFiberMed); + staveVolume->SetLineColor(Constants::carbonFiberColor); + staveVolume->SetFillColorAlpha(Constants::carbonFiberColor, 0.4); + TGeoRotation* rot = new TGeoRotation(); rot->RotateX(-90); // lift from xy plane into xz plane /* From 96e9aef534a27074fbb16b2ede44c8ae478c8e0c Mon Sep 17 00:00:00 2001 From: Justus Rudolph Date: Tue, 5 May 2026 17:31:34 +0200 Subject: [PATCH 2/2] update readme with recent changes --- Detectors/Upgrades/ALICE3/FT3/README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Detectors/Upgrades/ALICE3/FT3/README.md b/Detectors/Upgrades/ALICE3/FT3/README.md index 34a6782a2b0c2..c11352607db85 100644 --- a/Detectors/Upgrades/ALICE3/FT3/README.md +++ b/Detectors/Upgrades/ALICE3/FT3/README.md @@ -12,18 +12,22 @@ This is top page for the FT3 detector documentation. Configuration of the endcap disks can be done by setting values for the `FT3Base.layoutFT3` configurable, the available options are presented in the following Table: -| Option | Comments | -| ---------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `kSegmented` (default) | Currently, only OT disks have realistic implementation, for ML - simple trapezoids | -| `kTrapezoidal` | Simple trapezoisal disks (in both ML and OT), with `FT3Base.nTrapezoidalSegments=32` | -| `kCylindrical` | Simplest possible disks as TGeoTubes (ML and OT), bad for ACTS (wrong digi due to polar coorinates on disk sides) | +| Option | Comments | +| --------------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| `kSegmentedStave` | Segmentation of ML and OT disks: Modules are placed on staggered staves with user defined constants | +| `kSegmentedStaveOTOnly` (default) | Only OT disks are contain staves with modules, ML layers are segmented with strips of modules on front/back | +| `kSegmented` | Segmentation of ML and OT disk with strips of modules of chips on the front and back of a layer | +| `kTrapezoidal` | Simple trapezoidal disks (in both ML and OT), with `FT3Base.nTrapezoidalSegments=32` | +| `kCylindrical` | Simplest possible disks as TGeoTubes (ML and OT), bad for ACTS (wrong digi due to polar coorinates on disk sides) | + +Furthermore, there are more options in the case of stave segmentation -- for only OT or both. The user can set to cut the staves exactly on the nominal inner radii (true by default), and outer radii (false by default) of the disks. This exists since (planned) placements of sensors & staves often protrude out of the nominal radii to be more able to cover the nominal disk area. In addition, it is possible to draw reference circles in root for the stave segmented layouts for both the inner (red) and outer (blue) radii. This is off by default, yet can be toggled if the user wants to see how tight the tiling is to the nominal radii -- for visualisation purposes only. [ [Link to definitions](./base/include/FT3Base/FT3BaseParam.h) ] -For example, a geometry with the endcaps-only can be obtained by +For example, see the command below to generate a geometry with the endcaps only, all layers with the stave geometry, and including reference circles of nominal radii for visualisation. ```bash o2-sim-serial-run5 -n 1 -g pythia8hi -m FT3 \ - --configKeyValues "FT3Base.layoutFT3=kTrapezoidal" + --configKeyValues "FT3Base.layoutFT3=kSegmented; FT3Base.drawReferenceCircles=true" ```