4#ifndef INDET_STRIPMODULEHELPER_H
5#define INDET_STRIPMODULEHELPER_H
34 if (stripModuleDesign) {
39 static constexpr unsigned int N_MASKS = 1;
41 std::array<unsigned int, N_MASKS>
masks()
const {
42 return std::array<unsigned int,N_MASKS> {
47 operator bool ()
const {
return m_rows>0; }
56 static constexpr unsigned int columnsPerMask([[maybe_unused]]
unsigned int mask_idx) {
return 1u;}
77 return makeKey(0u, chip, column, row);
84 unsigned int chip =
getChip(key);
86 unsigned int row =
getRow(key);
105 throw std::runtime_error(
"Invvalid offline coordinates");
107 return std::make_pair(row,column);
128 unsigned int nElements([[maybe_unused]]
unsigned int mask_i)
const {
137 std::array<unsigned int,4>
offlineRange(
const std::pair<unsigned int,unsigned int> &range)
const {
138 if (range.first != range.second) {
145 return std::array<unsigned int,4>{ std::min(start.first, end.first), std::max(start.first, end.first)+1,
146 std::min(start.second, end.second), std::max(start.second,end.second)+1};
150 return std::array<unsigned int,4>{ start.first, start.first+1,
151 start.second, start.second+1 };
Base class for the SCT module side design, extended by the Forward and Barrel module design.
int cells() const
number of readout stips within module side:
Base class for the detector design classes for Pixel and SCT.
static constexpr unsigned int circuitsPerColumn()
std::array< unsigned int, N_MASKS > masks() const
static constexpr unsigned int columnsPerMask(unsigned int mask_idx)
unsigned int nCells() const
Return the total number strips of this module.
unsigned int rows() const
std::array< unsigned int, 4 > offlineRange(const std::pair< unsigned int, unsigned int > &range) const
Convenience function to return offline column and row ranges matching the defect-area of the given ke...
unsigned int nSensorRows() const
Number of offline rows aka.
unsigned int nSensorColumns() const
Number of offline columns aka.
StripModuleHelper(const InDetDD::SiDetectorDesign &design)
static constexpr unsigned int N_MASKS
static constexpr unsigned int getChipMask()
unsigned int rowsPerCircuit() const
unsigned int columns() const
KEY_TYPE hardwareCoordinates(unsigned int row, unsigned int column) const
Compute "hardware" coordinates from offline coordinates.
static constexpr unsigned int circuitsPerRow()
unsigned int nElements(unsigned int mask_i) const
return the maximum number of unique mask (or group) defects per module.
static constexpr unsigned int getStripMask()
static constexpr unsigned int nMasks()
std::pair< unsigned int, unsigned int > offlineCoordinates(unsigned int key) const
compute offline coordinates from "hardware" coordinates
static constexpr bool swapOfflineRowsColumns()
static constexpr unsigned int columnsPerCircuit()
static consteval T createMask()
Convenience method to create a mask for which exactly one contiguous sequence of bits is set to 1.
Helper class to create keys for defects described by chip, column and row indices,...
static constexpr unsigned short makeKey(bool is_range, unsigned int chip, unsigned int col, unsigned int row=0u)
static constexpr unsigned short getRow(unsigned short key)
static constexpr unsigned short getChip(unsigned short key)
static constexpr unsigned short getColumn(unsigned short key)
static constexpr unsigned short getLimitRowMax()