local-x/phi/row ^ big (1) .... normal pitch (columnsPerCircuit-2) ... big
1175{
1176
1177
1179
1180
1181
1182 double thickness =
m_gmt_mgr->PixelBoardThickness();
1183 int circuitsPerEta =
m_gmt_mgr->DesignCircuitsPerColumn();
1184 int circuitsPerPhi =
m_gmt_mgr->DesignCircuitsPerRow();
1185 int CellRowPerCirc =
m_gmt_mgr->DesignCellRowsPerCircuit(isBLayer);
1186 int CellColPerCirc =
m_gmt_mgr->DesignCellColumnsPerCircuit(isBLayer);
1187 int rowsPerCircuit =
m_gmt_mgr->DesignDiodeRowsPerCircuit(isBLayer);
1188 int columnsPerCircuit =
m_gmt_mgr->DesignDiodeColumnsPerCircuit(isBLayer);
1189
1190
1191
1192
1193
1194
1196 double pitchPhi =
m_gmt_mgr->DesignPitchRP(isBLayer);
1197 double pitchEta =
m_gmt_mgr->DesignPitchZ(isBLayer);
1198
1200
1201
1202
1204
1205
1206
1207
1208
1209
1210
1211
1212
1217 readoutTechnology,
1218 std::array<int,kNDirections>{circuitsPerPhi,circuitsPerEta},
1219 std::array<int,kNDirections>{rowsPerCircuit,columnsPerCircuit},
1221 std::array<double,kNDirections>{pitchPhi,pitchEta},
1222 std::array<double,kNDirections>{0.,pitchEtaBig},
1223 std::array<double,kNDirections>{0.,pitchEtaBig}},
1224 fe_numbering);
1225
1226 std::unique_ptr<PixelModuleDesign> p_barrelDesign2 = std::make_unique<PixelModuleDesign>(thickness,
1227 circuitsPerEta,
1228 circuitsPerPhi,
1229 CellColPerCirc,
1230 CellRowPerCirc,
1231 columnsPerCircuit,
1232 rowsPerCircuit,
1233 std::move(diode_tree),
1235 -1,
1236 false,
1238 readoutTechnology);
1239
1240
1241 if (
m_gmt_mgr->NumberOfEmptyRows() > 0) {
1243 int maxRow = minRow;
1244
1245
1246 for (
int iConnect = 0; iConnect <
m_gmt_mgr->NumberOfEmptyRows(); iConnect++){
1247 minRow = std::min(minRow,
m_gmt_mgr->EmptyRows(iConnect));
1248 minRow = std::min(minRow,
m_gmt_mgr->EmptyRowConnections(iConnect));
1249 maxRow = std::max(maxRow,
m_gmt_mgr->EmptyRows(iConnect));
1250 maxRow = std::max(minRow,
m_gmt_mgr->EmptyRowConnections(iConnect));
1251 }
1252
1253 std::vector <int> connections(maxRow-minRow+1);
1254
1255
1256 for (unsigned int iRow = 0; iRow < connections.size(); iRow++){
1257 connections[iRow] = iRow + minRow;
1258 }
1259
1260
1261 for (
int iConnect = 0; iConnect <
m_gmt_mgr->NumberOfEmptyRows(); iConnect++){
1262 connections[
m_gmt_mgr->EmptyRows(iConnect)-minRow] =
m_gmt_mgr->EmptyRowConnections(iConnect);
1263 }
1264
1265
1266
1267
1268
1269
1270
1271 p_barrelDesign2->addMultipleRowConnection(minRow, connections);
1272
1273 } else {
1274
1275 std::cout << "GeoPixelSiCrystal: Warning - No ganged pixels" << std::endl;
1276 }
1277
1278
1280
1281}
const InDetDD::SiDetectorDesign * m_design
PixelGeometryManager * m_gmt_mgr
GeoVPixelFactory(InDetDD::PixelDetectorManager *ddmgr, PixelGeometryManager *mgr)
InDetDD::PixelDetectorManager * m_DDmgr
PixelDiodeTree makePixelDiodeTree(T_MsgParent *gmt_mgr, InDetDD::PixelReadoutTechnology readoutTechnology, const std::array< int, kNDirections > &circuits, const std::array< int, kNDirections > &dimPerCircuit, const std::array< std::array< double, kNDirections >, kNPixelLocations > &pitch, FENumbering fe_numbering)