@@ -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
4848const double single_sensor_width = 2.5 ;
4949const double single_sensor_height = 2.9 ;
5050const 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
5252const double stackGap = 0.035 ; // gap between 2xN module stacks
5353
5454const double active_width = single_sensor_width - inactive_width;
5555const 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;
5958const double sensor2x1_height = single_sensor_height;
6059const std::vector<unsigned > kSensorsPerStack = {4 , 2 , 1 };
6160inline 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 */
191190const 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 */
205204const 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 ;
214214const std::vector<double > x_midpoints = makeStaveXMidpoints(nStaves, x_midpoint_spacing);
215215const double maxToleranceInner = 9 .; // close but not directly at 10cm yet
216216const double maxToleranceOuter = 3.4 ; // leave 1mm for layer air encapsulation
217217const 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 */
227228const 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
0 commit comments