@@ -560,9 +560,25 @@ void FT3Module::create_layout_staveGeo(double mZ, int layerNumber, int direction
560560 bool mirrorStaveAroundX = false ;
561561 // default positive and negative starting points has a gap around x-axis for symmetry
562562 double stave_half_length = Constants::y_lengths[i_stave] / 2 ;
563- PositionRangeType y_ranges =
564- {{Constants::stackGap / 2 , stave_half_length},
565- {-Constants::stackGap / 2 , -stave_half_length}};
563+ PositionRangeType y_ranges;
564+ if (ft3Params.placeSensorInMiddleOfStave ) {
565+ /*
566+ * We want a sensor to cross over the x-axis for coverage at y=0
567+ * N.B. not necessarily exactly mirrored, only if stack gap is the same
568+ * as the gap between sensors in a stack.
569+ */
570+ y_ranges = {{-Constants::sensor2x1_height / 2 ,
571+ stave_half_length},
572+ {-Constants::sensor2x1_height / 2 - Constants::stackGap,
573+ -stave_half_length}};
574+ } else {
575+ /*
576+ * Otherwise have a gap around y=0, so sensors are not placed there.
577+ * This means the stave is perfectly mirrored around the x-axis.
578+ */
579+ y_ranges = {{Constants::stackGap / 2 , stave_half_length},
580+ {-Constants::stackGap / 2 , -stave_half_length}};
581+ }
566582 auto y_midpoint_it = Constants::staveID_to_y_midpoint.find (staveID);
567583 if ( y_midpoint_it != Constants::staveID_to_y_midpoint.end () ) {
568584 // there is a defined midpoint for this stave, use this for starting points
0 commit comments