4#ifndef INDET_PIXELMODULEHELPER_H
5#define INDET_PIXELMODULEHELPER_H
41 if (pixelModuleDesign) {
75 std::array<unsigned int, N_MASKS>
masks()
const {
76 return std::array<unsigned int,N_MASKS> {
100 unsigned int chip =0;
102 unsigned int tmp=row;
112 column =
columns() - column -1;
119 return makeKey(0u, chip, column, row);
126 unsigned int chip =
getChip(key);
128 unsigned int row =
getRow(key);
149 throw std::runtime_error(
"Invvalid offline coordinates");
151 return std::make_pair(row,column);
187 std::array<unsigned int,4>
offlineRange(
const std::pair<unsigned int,unsigned int> &range)
const {
188 if (range.first != range.second) {
195 return std::array<unsigned int,4>{ std::min(start.first, end.first), std::max(start.first, end.first)+1,
196 std::min(start.second, end.second), std::max(start.second,end.second)+1};
200 return std::array<unsigned int,4>{ start.first, start.first+1,
201 start.second, start.second+1};
Class used to describe the design of a module (diode segmentation and readout scheme)
int columns() const
Number of cell columns per module:
int rows() const
Number of cell rows per module:
int numberOfCircuitsPerRow() const
Number of circuits per row:
int rowsPerCircuit() const
Number of cell rows per circuit:
int numberOfCircuitsPerColumn() const
Number of circuits per column:
int columnsPerCircuit() const
Number of cell columns per circuit:
virtual double etaPitch() const
Pitch in eta direction.
virtual double phiPitch() const
Pitch in phi direction.
Base class for the detector design classes for Pixel and SCT.
unsigned short m_sensorColumns
unsigned short m_rowsPerCircuit
static constexpr unsigned int getColGroup8Mask()
float columnPitch() const
bool m_swapOfflineRowsColumns
unsigned int circuitsPerColumn() const
std::pair< unsigned int, unsigned int > offlineCoordinates(unsigned int key) const
compute offline coordinates from "hardware" coordinates
unsigned int rows() const
unsigned short m_sensorRows
static constexpr std::array< unsigned short, 2 > N_COLS_PER_GROUP
static constexpr unsigned int nMasks()
unsigned int columnsPerCircuit() const
unsigned int nSensorRows() const
Return the number of offline rows.
unsigned int nCells() const
Return total number of pixels per module.
unsigned int hardwareCoordinates(unsigned int row, unsigned int column) const
compute "hardware" coordinates from offline coordinates.
unsigned int rowsPerCircuit() const
static constexpr unsigned int getPixelMask()
PixelModuleHelper(const InDetDD::SiDetectorDesign &design)
unsigned char m_circuitsPerColumn
std::array< unsigned int, 4 > offlineRange(const std::pair< unsigned int, unsigned int > &range) const
Function to return offline column and row ranges matching the defect-area of the given key (used for ...
unsigned int columns() const
static constexpr unsigned int getChipMask()
unsigned short m_columnsPerCircuit
unsigned char m_circuitsPerRow
bool swapOfflineRowsColumns() const
std::array< unsigned int, N_MASKS > masks() const
unsigned int nElements(unsigned int mask_i) const
return the maximum number of unique mask (or group) defects per module.
unsigned int circuitsPerRow() const
unsigned int nSensorColumns() const
Return the number of offline columns.
static constexpr unsigned int N_MASKS
static constexpr unsigned int getColGroup4Mask()
static consteval T createMask()
Convenience method to create a mask for which exactly one contiguous sequence of bits is set to 1.
void swap(ElementLinkVector< DOBJ > &lhs, ElementLinkVector< DOBJ > &rhs)
Helper class to create keys for defects described by chip, column and row indices,...
static constexpr unsigned int makeKey(bool is_range, unsigned int chip, unsigned int col, unsigned int row=0u)
static constexpr unsigned int getRow(unsigned int key)
static constexpr unsigned int getChip(unsigned int key)
static constexpr unsigned int getColumn(unsigned int key)
static constexpr unsigned int getLimitRowMax()