23 const int circuitsPerRow,
24 const int cellColumnsPerCircuit,
25 const int cellRowsPerCircuit,
26 const int diodeColumnsPerCircuit,
27 const int diodeRowsPerCircuit) :
33 m_columns(circuitsPerRow*diodeColumnsPerCircuit),
34 m_rows(circuitsPerColumn*diodeRowsPerCircuit)
37 if (!
m_columns)
throw std::runtime_error(
"PixelReadoutScheme: Number of columns is 0");
38 if (!
m_rows)
throw std::runtime_error(
"PixelReadoutScheme: Number of columns is 0");
47 if (!readoutId.
isValid())
return 0;
61 if (!readoutId.
isValid())
return {};
68 if (!numConnected ||
static_cast<int>(
number) >= numConnected)
return {};
71 return {newPhiIndex, readoutId.
etaIndex()};
78 if (!cellId.
isValid())
return {};
81 int newPhiIndex = phiIndex;
86 return {newPhiIndex, cellId.
etaIndex()};
93 if (!cellId.
isValid())
return cellId;
97 if (newPhiIndex == phiIndex)
return {};
98 return {newPhiIndex, cellId.
etaIndex()};
103 const std::vector<int> &connections)
int m_numberOfCircuitsPerColumn
number of circuits per column
int m_numberOfCircuitsPerRow
number of circuits per row
int m_numberOfCircuits
total number of circuits
SiCellId connectedCell(const SiReadoutCellId &readoutId, unsigned int number) const
Cell ids of cell connected to this readout.
SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
Readout id of this diode.
PixelMultipleConnection1D m_rowConnections
multiple connections for rows
int m_rowsPerCircuit
number of cell rows per circuit
int m_columns
Number of columns.
int m_rows
Number of rows.
SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
number of cells connected to this readout.
void addMultipleRowConnection(const int lowerRow, const std::vector< int > &connections)
Add a new multiple connection for rows: lower diode row for which the connection scheme is given vect...
int m_columnsPerCircuit
number of cell columns per circuit
Identifier for the strip or pixel cell.
int phiIndex() const
Get phi index. Equivalent to strip().
bool isValid() const
Test if its in a valid state.
int etaIndex() const
Get eta index.
Identifier for the strip or pixel readout cell.
std::string number(const double &d, const std::string &s)