194 std::shared_ptr<const PixelDiodeMatrix> fullMatrix =
nullptr;
196 if (etaPitchLongEnd == etaPitchLong && etaPitchLong != etaPitch) {
200 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
201 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
203 std::shared_ptr<const PixelDiodeMatrix> singleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
209 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
210 nullptr, singleChipRow, circuitsEta,
nullptr);
212 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
213 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
214 }
else if (etaPitchLongEnd == etaPitchLong && (etaPitchLong == etaPitch || circuitsEta == 1)) {
217 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
218 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
219 nullptr, normalCell, circuitsEta*diodeColPerCirc,
nullptr);
220 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
221 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
222 }
else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta > 2) {
225 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
226 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
228 std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
233 std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
238 std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
243 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
244 lowerSingleChipRow, middleSingleChipRow, circuitsEta-2, upperSingleChipRow);
245 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
246 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
247 }
else if (etaPitchLongEnd == etaPitch && etaPitchLong != etaPitch && circuitsEta == 2) {
250 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
251 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
253 std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
258 std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
263 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
264 lowerSingleChipRow, upperSingleChipRow, 1,
nullptr);
265 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
266 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
267 }
else if (circuitsEta == 1 || (etaPitchLongEnd != etaPitch && etaPitchLong == etaPitch )){
271 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
272 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
274 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
277 circuitsEta*diodeColPerCirc-2,
279 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
280 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);
284 std::shared_ptr<const PixelDiodeMatrix> normalCell = PixelDiodeMatrix::construct(phiPitch, etaPitch);
285 std::shared_ptr<const PixelDiodeMatrix> bigCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLong);
286 std::shared_ptr<const PixelDiodeMatrix> endCell = PixelDiodeMatrix::construct(phiPitch, etaPitchLongEnd);
288 std::shared_ptr<const PixelDiodeMatrix> lowerSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
293 std::shared_ptr<const PixelDiodeMatrix> middleSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
298 std::shared_ptr<const PixelDiodeMatrix> upperSingleChipRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
303 std::shared_ptr<const PixelDiodeMatrix> singleRow = PixelDiodeMatrix::construct(PixelDiodeMatrix::etaDir,
304 lowerSingleChipRow, middleSingleChipRow, circuitsEta-2, upperSingleChipRow);
305 fullMatrix = PixelDiodeMatrix::construct(PixelDiodeMatrix::phiDir,
306 nullptr, singleRow, circuitsPhi*diodeRowPerCirc,
nullptr);