Skip to content

Commit e4539fb

Browse files
committed
Add constants for hollow stave based geometry
1 parent 2983860 commit e4539fb

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

Detectors/Upgrades/ALICE3/FT3/simulation/include/FT3Simulation/FT3ModuleConstants.h

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <vector>
1919
#include <map>
2020
#include <TColor.h>
21+
#include <TMath.h>
2122

2223
namespace o2::ft3::ModuleConstants
2324
{
@@ -56,6 +57,7 @@ namespace o2::ft3::ModuleConstants
5657
const double sensor_stack_height = kSensorsPerStack * sensor2x1_height +
5758
(kSensorsPerStack - 1) * sensor2x1_gap;
5859

60+
// OLD VERSION: RECTANGULAR STAVES
5961
const double carbonFiberThickness = 0.01;
6062
const double foamSpacingThickness = 1.0;
6163

@@ -89,7 +91,10 @@ namespace o2::ft3::ModuleConstants
8991
2.25, 6.75, 11.25, 15.75, 20.25, 24.75, 29.25, 33.75, // R
9092
38.25, 42.75, 47.25, 51.75, 56.25, 60.75, 65.25 // R
9193
};
94+
const double x_midpoint_spacing = 4.5; // assume constant for now
9295
// which side of the disc do we place the stave?
96+
// used for kSegmentedMarch26 for front/back face, and for
97+
// kSegmentedStave for staggering staves in z (see z_offsetStave)
9398
// accessed via stave index, NOT stave ID
9499
const std::vector<bool> staveOnFront =
95100
{
@@ -100,7 +105,7 @@ namespace o2::ft3::ModuleConstants
100105
// small helper function to get 1-indexed stave ID, counting from the middle outwards,
101106
// with negative IDs on the left and positive IDs on the right
102107
inline const int staveIdxToID(int staveIdx) {
103-
unsigned nStavesOneSide = staveOnFront.size() / 2;
108+
unsigned nStavesOneSide = y_lengths.size() / 2;
104109
bool isRight = staveIdx >= nStavesOneSide;
105110
return staveIdx - nStavesOneSide + isRight;
106111
}
@@ -111,11 +116,32 @@ namespace o2::ft3::ModuleConstants
111116
const double kaptonThickness = 0.03;
112117
const double epoxyThickness = 0.0012;
113118

119+
const double effectiveCarbonThickness_Stave = 0.02; // foam + shell
120+
const double staveOpeningAngle = 60 * TMath::DegToRad();
121+
const double sinTheta = TMath::Sin(staveOpeningAngle / 2);
122+
const double alpha = TMath::Pi() / 2 - staveOpeningAngle / 2; // bottom angles
123+
const double staveSensorGap = 0.1; // 2mm padding on each side when sensor is glued
124+
const double staveTriangleHeight = (sensor2x1_width + 2 * staveSensorGap) / 2.0
125+
/ tan(staveOpeningAngle / 2.0);
126+
/*
127+
* Now describe the offset of every other stave in z to avoid overlaps
128+
* ______ ______
129+
* \ /______\ / | <-- z_offsetStave
130+
* \ / \ / \ /
131+
* \/ \ / \/
132+
* \/
133+
*/
134+
// If midpoint spacing becomes non constant, this becomes a function
135+
// TODO: add some tolerance to avoid overlaps?
136+
const double z_offsetStave =
137+
staveTriangleHeight * (2 - x_midpoint_spacing / ( sensor2x1_width / 2 + staveSensorGap ) );
138+
114139
const int SiColor = kGreen;
115140
const int SiInactiveColor = kRed;
116141
const int glueColor = kBlue;
117-
const int CuColor = kBlack;
142+
const int CuColor = kOrange;
118143
const int kaptonColor = kYellow;
144+
const int carbonColor = kBlack;
119145
}
120146

121147
#endif // FT3MODULECONSTANTS_H

0 commit comments

Comments
 (0)