Skip to content

Commit 24fe222

Browse files
committed
update FT3ModuleConstants.h with original tiling again -- with 150um sensor gaps, 350um module gap. Change 2x1 sensor size with the gap as well and fix placement accordingly
1 parent 91a4fca commit 24fe222

2 files changed

Lines changed: 57 additions & 58 deletions

File tree

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

Lines changed: 55 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -32,30 +32,29 @@ namespace o2::ft3::ModuleConstants
3232
*
3333
* |<- 25mm ->||<- 25mm ->|
3434
* _______________________
35-
* ------------------------ 0.2mm gap above
35+
* ------------------------ 0.15mm gap above
3636
* | | || | |
3737
* | | || | |
3838
* | | || | |
3939
* | | || | | 29mm sensor height
4040
* | | || | |
4141
* | | || | |
42-
* ------------------------
42+
* ------------------------ 0.15mm gap below
4343
* ^
4444
* |
45-
* 0.2mm gap in the middle
45+
* 0.15mm gap in the middle
4646
*/
4747
// First set all layout constants for the rest of the function
4848
const double single_sensor_width = 2.5;
4949
const double single_sensor_height = 2.9;
5050
const double inactive_width = 0.2;
51-
const double sensor2x1_gap = 0.015; // between L&R sensors in 2x1, and between sensors in a stack
51+
const double sensor2x1_gap = 0.015; // gap between L&R sensors in 2x1, and between sensors in a stack
5252
const double stackGap = 0.035; // gap between 2xN module stacks
5353

5454
const double active_width = single_sensor_width - inactive_width;
5555
const double active_height = single_sensor_height;
5656

57-
const double sensor2x1_width = 2 * single_sensor_width;
58-
const double sensor2x1_active_width = 2 * active_width;
57+
const double sensor2x1_width = 2 * single_sensor_width + sensor2x1_gap;
5958
const double sensor2x1_height = single_sensor_height;
6059
const std::vector<unsigned> kSensorsPerStack = {4, 2, 1};
6160
inline const double getStackHeight(unsigned nSensorsPerStack)
@@ -189,72 +188,72 @@ namespace OT_StavePositions
189188
* Do NOT add any zero midpoints, this is taken off separately.
190189
*/
191190
const std::map<int, std::pair<double, bool>> staveID_to_y_midpoint = {
192-
{-4, {39.679, true}},
193-
{-3, {42.065, true}},
194-
{-2, {42.991, true}},
195-
{-1, {43.772, true}},
196-
{1, {43.772, true}},
197-
{2, {42.991, true}},
198-
{3, {42.065, true}},
199-
{4, {39.679, true}}};
191+
{-4, {35.659, true}},
192+
{-3, {41.735, true}},
193+
{-2, {42.882, true}},
194+
{-1, {43.761, true}},
195+
{1, {43.761, true}},
196+
{2, {42.882, true}},
197+
{3, {41.735, true}},
198+
{4, {35.659, true}}};
200199
/*
201200
* Length of one stave piece: for a stave in staveID_to_y_midpoint that is one
202-
* of its two pieces, otherwise the whole stave centred on y=0. Sized to cover
203-
* the modules in exactStaveFills, with 1 mm of margin.
201+
* of its two pieces, otherwise the whole stave centred on y=0. Trimmed to the
202+
* modules in exactStaveFills, rounded up to the nearest 10 um.
204203
*/
205204
const std::vector<double> y_lengths = {
206-
41, 61.35, 73.03, 87.63, 96.39,
207-
105.14, 110.99, 116.82, 122.67, 125.58,
208-
128.5, 52.59, 49.67, 49.67, 46.78,
209-
46.78, 49.67, 49.67, 52.59, 128.5,
210-
125.58, 122.67, 116.82, 110.99, 105.14,
211-
96.39, 87.63, 73.03, 61.35, 41};
212-
const unsigned nStaves = 30; // y_lengths, staveOnFront and exactStaveFills follow this
213-
const double x_midpoint_spacing = 4.5;
205+
32.225, 58.401, 73.016, 87.611,
206+
99.29, 108.055, 113.886, 119.736,
207+
125.566, 128.481, 61.336, 49.655,
208+
49.656, 46.818, 46.818, 49.656,
209+
49.655, 61.336, 128.481, 125.566,
210+
119.736, 113.886, 108.055, 99.29,
211+
87.611, 73.016, 58.401, 32.225};
212+
const unsigned nStaves = 28; // y_lengths, staveOnFront and exactStaveFills follow this
213+
const double x_midpoint_spacing = 4.92;
214214
const std::vector<double> x_midpoints = makeStaveXMidpoints(nStaves, x_midpoint_spacing);
215215
const double maxToleranceInner = 9.; // close but not directly at 10cm yet
216216
const double maxToleranceOuter = 3.4; // leave 1mm for layer air encapsulation
217217
const std::vector<bool> staveOnFront = makeStaveOnFront(nStaves);
218218
/*
219-
* From the disk optimiser: Rin 20, Rout 68, stave width 5.22, overlap 0.72,
220-
* intrusion <= 9, extrusion <= 3, giving 99.84% filling with staves and
221-
* 99.29% with modules. One entry per stave in x_midpoints order; a stave cut
222-
* in two by the beam pipe has one fill either side of the hole.
219+
* From the disk optimiser: Rin 20, Rout 68, stave width 5.22, overlap 0.30,
220+
* intrusion and extrusion <= 2 with 6 exception staves at 9 and 3, giving
221+
* 99.37% filling with staves and 93.48% with active silicon. One entry per
222+
* stave in x_midpoints order; a stave cut in two by the beam pipe has one
223+
* fill either side of the hole.
223224
*
224-
* Each fill is anchored on its centre rather than the optimiser's own yStart,
225-
* because FT3 puts a stackGap between modules and the optimiser does not.
225+
* yStart is the bottom of the first SENSOR, which is half a module gap above
226+
* the bottom of the module the optimiser reports.
226227
*/
227228
const std::vector<std::vector<StaveFill>> exactStaveFills = {
228-
{{-20.476, {4, 4, 3, 3}}}, // ID -15
229-
{{-30.65, {4, 4, 4, 3, 3, 3}}}, // ID -14
230-
{{-36.49, {4, 4, 4, 4, 3, 3, 3}}}, // ID -13
231-
{{-43.7875, {4, 4, 4, 4, 4, 4, 3, 3}}}, // ID -12
232-
{{-48.17, {4, 4, 4, 4, 4, 4, 3, 3, 3}}}, // ID -11
233-
{{-52.5425, {4, 4, 4, 4, 4, 4, 4, 4, 4}}}, // ID -10
234-
{{-55.4675, {4, 4, 4, 4, 4, 4, 4, 4, 3, 3}}}, // ID -9
235-
{{-58.3825, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4}}}, // ID -8
236-
{{-61.3075, {4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3}}}, // ID -7
229+
{{-15.9953, {4, 4, 3}}}, // ID -14
230+
{{-29.1825, {4, 4, 4, 4, 4}}}, // ID -13
231+
{{-36.49, {4, 4, 4, 4, 3, 3, 3}}}, // ID -12
232+
{{-43.7875, {4, 4, 4, 4, 4, 4, 3, 3}}}, // ID -11
233+
{{-49.6275, {4, 4, 4, 4, 4, 4, 4, 3, 3}}}, // ID -10
234+
{{-54.01, {4, 4, 4, 4, 4, 4, 4, 3, 3, 3}}}, // ID -9
235+
{{-56.925, {4, 4, 4, 4, 4, 4, 4, 4, 4, 3}}}, // ID -8
236+
{{-59.85, {4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3}}}, // ID -7
237237
{{-62.765, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3}}}, // ID -6
238238
{{-64.2225, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}}}, // ID -5
239-
{{-65.946, {4, 4, 4, 3, 3}}, {13.411, {4, 4, 4, 3, 3}}}, // ID -4
240-
{{-66.8749, {4, 4, 3, 3, 3}}, {17.2549, {4, 4, 3, 3, 3}}}, // ID -3
241-
{{-67.8015, {4, 4, 3, 3, 3}}, {18.1815, {4, 4, 3, 3, 3}}}, // ID -2
242-
{{-67.1397, {4, 4, 4, 4}}, {20.4051, {4, 4, 4, 4}}}, // ID -1
243-
{{-67.0901, {4, 4, 4, 4}}, {20.4547, {4, 4, 4, 4}}}, // ID +1
244-
{{-67.8015, {4, 4, 3, 3, 3}}, {18.1815, {4, 4, 3, 3, 3}}}, // ID +2
245-
{{-66.8749, {4, 4, 3, 3, 3}}, {17.2549, {4, 4, 3, 3, 3}}}, // ID +3
246-
{{-65.946, {4, 4, 4, 3, 3}}, {13.411, {4, 4, 4, 3, 3}}}, // ID +4
239+
{{-66.3087, {4, 4, 4, 3, 3, 3}}, {5.0087, {4, 4, 4, 3, 3, 3}}}, // ID -4
240+
{{-66.545, {4, 4, 3, 3, 3}}, {16.925, {4, 4, 3, 3, 3}}}, // ID -3
241+
{{-67.6917, {4, 4, 3, 3, 3}}, {18.0717, {4, 4, 3, 3, 3}}}, // ID -2
242+
{{-67.0542, {4, 4, 4, 4}}, {20.4669, {4, 4, 4, 4}}}, // ID -1
243+
{{-67.1519, {4, 4, 4, 4}}, {20.3692, {4, 4, 4, 4}}}, // ID +1
244+
{{-67.6917, {4, 4, 3, 3, 3}}, {18.0717, {4, 4, 3, 3, 3}}}, // ID +2
245+
{{-66.545, {4, 4, 3, 3, 3}}, {16.925, {4, 4, 3, 3, 3}}}, // ID +3
246+
{{-66.3087, {4, 4, 4, 3, 3, 3}}, {5.0087, {4, 4, 4, 3, 3, 3}}}, // ID +4
247247
{{-64.2225, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}}}, // ID +5
248248
{{-62.765, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3}}}, // ID +6
249-
{{-61.3075, {4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3}}}, // ID +7
250-
{{-58.3825, {4, 4, 4, 4, 4, 4, 4, 4, 4, 4}}}, // ID +8
251-
{{-55.4675, {4, 4, 4, 4, 4, 4, 4, 4, 3, 3}}}, // ID +9
252-
{{-52.5425, {4, 4, 4, 4, 4, 4, 4, 4, 4}}}, // ID +10
253-
{{-48.17, {4, 4, 4, 4, 4, 4, 3, 3, 3}}}, // ID +11
254-
{{-43.7875, {4, 4, 4, 4, 4, 4, 3, 3}}}, // ID +12
255-
{{-36.49, {4, 4, 4, 4, 3, 3, 3}}}, // ID +13
256-
{{-30.65, {4, 4, 4, 3, 3, 3}}}, // ID +14
257-
{{-20.379, {4, 4, 3, 3}}}, // ID +15
249+
{{-59.85, {4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3}}}, // ID +7
250+
{{-56.925, {4, 4, 4, 4, 4, 4, 4, 4, 4, 3}}}, // ID +8
251+
{{-54.01, {4, 4, 4, 4, 4, 4, 4, 3, 3, 3}}}, // ID +9
252+
{{-49.6275, {4, 4, 4, 4, 4, 4, 4, 3, 3}}}, // ID +10
253+
{{-43.7875, {4, 4, 4, 4, 4, 4, 3, 3}}}, // ID +11
254+
{{-36.49, {4, 4, 4, 4, 3, 3, 3}}}, // ID +12
255+
{{-29.1825, {4, 4, 4, 4, 4}}}, // ID +13
256+
{{-16.0947, {4, 4, 3}}}, // ID +14
258257
};
259258
} // namespace OT_StavePositions
260259

‎Detectors/Upgrades/ALICE3/TRKFT3/FT3/simulation/src/FT3Module.cxx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -820,12 +820,12 @@ void FT3Module::create_layout_staveGeo(double mZ, int layerNumber, int direction
820820
double z_mid = z_offset_to_silicon * z_offset_multiplier + z_stave_shift;
821821
addSingleSensorVolume(
822822
motherVolume, layerNumber, direction, i_stave, sensor_count,
823-
x_mid - Constants::active_width / 2 - Constants::sensor2x1_gap / 2,
823+
x_mid - Constants::sensor2x1_width / 2,
824824
y_mid, z_mid, true);
825825
// right single sensor of the 2x1: place left edge half of sensor gap from center
826826
addSingleSensorVolume(
827827
motherVolume, layerNumber, direction, i_stave, sensor_count + 1,
828-
x_mid + Constants::active_width / 2 + Constants::sensor2x1_gap / 2,
828+
x_mid + Constants::sensor2x1_width / 2,
829829
y_mid, z_mid, false);
830830
// ------------ (2) Epoxy glue layer between silicon and copper (FPC) ------------
831831
z_mid = z_offset_to_glue_Si * z_offset_multiplier + z_stave_shift;

0 commit comments

Comments
 (0)