ATLAS Offline Software
Loading...
Searching...
No Matches
InDetDD::PixelDiodeMatrix Class Reference

Class used to describe the segmentation of the pixel and allow for conversion between cell id and position. More...

#include <PixelDiodeMatrix.h>

Collaboration diagram for InDetDD::PixelDiodeMatrix:

Public Types

enum  Direction { phiDir , etaDir }

Public Member Functions

 ~PixelDiodeMatrix ()=default
 Destructor.
const PixelDiodeMatrixcellIdOfPosition (const Amg::Vector2D &position, SiCellId &cellId) const
 Return cell Id corresponding to a relative position within the matrix.
const PixelDiodeMatrixpositionOfCell (const SiCellId &cellId, Amg::Vector2D &position) const
 Search diode matching the given cell id and compute its position.
double phiWidth () const
 Width in phi (x) direction.
double phiHalfWidth () const
double phiWidthInverse () const
 Inverse of width in phi (x) direction.
double etaWidth () const
 Width in eta (y) direction.
double etaHalfWidth () const
double etaWidthInverse () const
 Inverse of width in eta (y) direction.
int phiCells () const
 Number of cells in phi (x) direction.
int etaCells () const
 Number of cells in eta (y) direction.
bool singleCell () const
 Query wether the matrix is just a single cell.
std::string createDebugStringRepr () const
 Create debug representation.

Static Public Member Functions

static std::shared_ptr< const PixelDiodeMatrixconstruct (double phiWidth, double etaWidth)
 Construct method for just a single cell.
static std::shared_ptr< const PixelDiodeMatrixconstruct (Direction direction, std::shared_ptr< const PixelDiodeMatrix > lowerCell, std::shared_ptr< const PixelDiodeMatrix > middleCells, int numCells, std::shared_ptr< const PixelDiodeMatrix > upperCells)
 Construct method with multiple matrices.

Private Member Functions

 PixelDiodeMatrix ()
 Hidden constructor.
void initialize (double phiWidth, double etaWidth)
 Initialize for just a single cell.
void initialize (Direction direction, std::shared_ptr< const PixelDiodeMatrix > lowerCell, std::shared_ptr< const PixelDiodeMatrix > middleCells, int numCells, std::shared_ptr< const PixelDiodeMatrix > upperCells)
 Initialize for multiple matrices.
std::string createDebugStringRepr (unsigned int level) const
 Create debug representation for a specific level.

Static Private Member Functions

static const PixelDiodeMatrixpositionOfCell (const PixelDiodeMatrix *matrix, const SiCellId &cellId, Amg::Vector2D &position)
 Search diode matching the given cell id and compute its position.

Private Attributes

double m_phiWidth = 0
double m_phiWidthInverse = 0
double m_etaWidth = 0
double m_etaWidthInverse = 0
int m_phiCells = 0
int m_etaCells = 0
Direction m_direction {}
int m_numCells = 0
std::shared_ptr< const PixelDiodeMatrixm_lowerCell
std::shared_ptr< const PixelDiodeMatrixm_middleCells
std::shared_ptr< const PixelDiodeMatrixm_upperCell
bool m_singleCell = false

Detailed Description

Class used to describe the segmentation of the pixel and allow for conversion between cell id and position.

The class PixelDiodeMatrix represents what it calls a cell. In the context of this class a cell can either be just a simple cell as one would normally think of a pixel cell (eg a 50x400um or 50x600um cell) or it can be a container of multiple cells. To allow for different size cells and layout, it contains a lower cell, an upper cell and multiple middle cells. The middle cells are all the same (so all have the same size), but the upper and lower cells can be different and can have different size or be left out if they are not needed. The direction of replication is also specified (eta or phi direction). The size of the cells in the direction orthoganal to the replication direction must all be the same (there is no check for this though).

To help understand the structure and its use, consider the current pixel geometry. The pixel module has two cell sizes short and long cells. These are refered to as normal and big bellow. The long cells are in the region at the edge of the the FE chips in order to cover the gap between FE chips.

The assembly of this structure is done when building the sensitive detector in GeoModel in the class GeoPixelSiCrystal.

  • normalCell (short pixel cell) 50x400um
  • bigCell (long pixel cell): 50x600um
  • singleChipRow (represents one row associated to a FE)
    • Size: phiWidth = 50um, etaWidth = 600*2+400*16) um = 7.6 CLHEP::mm
    • upper cell: bigCell
    • middle cells: 16 x normalCell
    • lower cell: bigcell
    • direction: eta
  • singleRow (represents a row of cells covering the full length of the module)
    • Size: phiWidth = 50um, etaWidth = 8 * (600*2+400*16) um = 60.8 CLHEP::mm
    • upper cell: none
    • middle cells: 8 x singleChipRow
    • lower cell: none
    • direction: eta
  • fullMatrix (represents the full module)
    • Size: phiWidth = 50 * 328 um = 16.4 CLHEP::mm, etaWidth = 60.8 CLHEP::mm
    • upper cell: none
    • middle cells: 328 x singleRow
    • lower cell: non
    • direction: phi

Each cell knows its total size and total number of child cells in the phi and eta direction. This is determined by totaling up these quantities when the object is constructed.

The structure allows for efficient navigation from cell number to position and vice-versa. There are two main methods which allow for this navigation: cellIdOfPosition() (from cell id to position) and positionOfCell() (from position to cell id).

As it is assumed that child cells fill up completely its parent, there is no range check in these methods. The methods are called from PixelDiodeMap where it first checks that is within range of the top level cell (refered to as the top level matrix).

PixelDiodeMatrix might inherit std::shared_ptr but needs to return std::shared_ptr of this pointer. To do this, std::enable_shared_from_this and shared_from_this() have to be used. https://en.cppreference.com/w/cpp/memory/enable_shared_from_this

See the description of these methods for more details.

Author
Grant Gorfine
  • modified & maintained: Nick Styles, Andreas Salzburger

Definition at line 93 of file PixelDiodeMatrix.h.

Member Enumeration Documentation

◆ Direction

Constructor & Destructor Documentation

◆ ~PixelDiodeMatrix()

InDetDD::PixelDiodeMatrix::~PixelDiodeMatrix ( )
default

Destructor.

◆ PixelDiodeMatrix()

InDetDD::PixelDiodeMatrix::PixelDiodeMatrix ( )
inlineprivate

Hidden constructor.

Definition at line 161 of file PixelDiodeMatrix.h.

161{};

Member Function Documentation

◆ cellIdOfPosition()

const PixelDiodeMatrix * InDetDD::PixelDiodeMatrix::cellIdOfPosition ( const Amg::Vector2D & relPosition,
SiCellId & cellId ) const

Return cell Id corresponding to a relative position within the matrix.

Description.

The cellId is modified and returns the id relative to the passed cellId. That is, it adds the relative cellId to the cellId passed to the function. A pointer to the correspond cell is returned. This can be used to get the size of the cell.

Overview of algoritm:

  • Before calling this method on the top level matrix the 2D position is calculated relative to the bottom left corner.
  • The method cellIdOfPosition is always called with the position relative to bottom left of the cell and the cell id of bottom left child cell. For the top level matrix this is the position (-halfWidth, -halfLength) and a starting cell id of (0,0).
  • It first checks if it is in the lower cell (if it exists).
  • If not, it determines which cell by dividing the position relative to the start of the cell array by the pitch in that direction.
  • If it is beyond the range of the middle cells it is taken as being in the upper cell.
  • The cell number is added to the cellId that is passed to the method
  • Once the cell is determined the function is called recursively until it reaches a single cell.

Definition at line 131 of file PixelDiodeMatrix.cxx.

152{
153 using Trk::distPhi;
154 using Trk::distEta;
155
156 if (m_singleCell) {
157 return this;
158 }
159
160 double relPosDir = 0; // Relative position along m_direction
161 int startIndex = 0;
162 double pitch = 0;
163 double pitchInverse = 0;
164 int middleCells = 0;
165
166 if (m_direction == phiDir) {
167
168 relPosDir = relPosition[distPhi];
169 pitch = m_middleCells->phiWidth();
170 pitchInverse = m_middleCells->phiWidthInverse();
171 middleCells = m_middleCells->phiCells();
172
173 if (m_lowerCell) {
174 if (relPosDir < m_lowerCell->phiWidth()) {
175 return m_lowerCell->cellIdOfPosition(relPosition, cellId);
176 } else {
177 relPosDir -= m_lowerCell->phiWidth();
178 startIndex += m_lowerCell->phiCells();
179 }
180 }
181 } else { // etaDir
182
183 relPosDir = relPosition[distEta];
184 pitch = m_middleCells->etaWidth();
185 pitchInverse = m_middleCells->etaWidthInverse();
186 middleCells = m_middleCells->etaCells();
187
188 if (m_lowerCell) {
189 if (relPosDir < m_lowerCell->etaWidth()) {
190 return m_lowerCell->cellIdOfPosition(relPosition, cellId);
191 } else {
192 relPosDir -= m_lowerCell->etaWidth();
193 startIndex += m_lowerCell->etaCells();
194 }
195 }
196 }
197
198
199 int index = relPosDir * pitchInverse;
200
201 const PixelDiodeMatrix *nextCell{};
202
203 bool outOfBounds = index >= m_numCells;
204 if (m_upperCell != nullptr && outOfBounds) {
205 // We are in the upper cell.
207 nextCell = m_upperCell.get();
208 } else {
209 // We are in the middle cells
210 // Make sure its in range (in case of rounding errors)
211 if (outOfBounds) index = m_numCells - 1;
212 nextCell = m_middleCells.get();
213 }
214
215 if (index > 0) { // Make sure its in range (in case of rounding errors)
216 relPosDir -= index * pitch;
217 startIndex += index * middleCells;
218 }
219
220 int newPhiIndex = cellId.phiIndex();
221 int newEtaIndex = cellId.etaIndex();
222 const PixelDiodeMatrix *cell{};
223
224 if (m_direction == phiDir) {
225 if (nextCell->singleCell()) {
226 newPhiIndex += startIndex;
227 cell = nextCell;
228 } else {
229 Amg::Vector2D newRelPos(relPosDir, relPosition[distEta]);
230 SiCellId relId(0,0);
231 cell = nextCell->cellIdOfPosition(newRelPos, relId);
232 newPhiIndex += startIndex + relId.phiIndex();
233 newEtaIndex += relId.etaIndex();
234 }
235 } else {
236 if (nextCell->singleCell()) {
237 newEtaIndex += startIndex;
238 cell = nextCell;
239 } else {
240 Amg::Vector2D newRelPos(relPosition[distPhi], relPosDir);
241 SiCellId relId(0,0);
242 cell = nextCell->cellIdOfPosition(newRelPos, relId);
243 newPhiIndex += relId.phiIndex();
244 newEtaIndex += startIndex + relId.etaIndex();
245 }
246 }
247
248 cellId = SiCellId(newPhiIndex, newEtaIndex);
249 return cell;
250}
std::shared_ptr< const PixelDiodeMatrix > m_upperCell
std::shared_ptr< const PixelDiodeMatrix > m_middleCells
PixelDiodeMatrix()
Hidden constructor.
double etaWidth() const
Width in eta (y) direction.
double phiWidth() const
Width in phi (x) direction.
std::shared_ptr< const PixelDiodeMatrix > m_lowerCell
int phiIndex() const
Get phi index. Equivalent to strip().
Definition SiCellId.h:122
int etaIndex() const
Get eta index.
Definition SiCellId.h:114
Eigen::Matrix< double, 2, 1 > Vector2D
str index
Definition DeMoScan.py:362
@ distEta
readout for silicon
Definition ParamDefs.h:51
@ distPhi
Definition ParamDefs.h:50
@ distEta
readout for silicon
Definition ParamDefs.h:51
@ distPhi
Definition ParamDefs.h:50

◆ construct() [1/2]

std::shared_ptr< const PixelDiodeMatrix > InDetDD::PixelDiodeMatrix::construct ( Direction direction,
std::shared_ptr< const PixelDiodeMatrix > lowerCell,
std::shared_ptr< const PixelDiodeMatrix > middleCells,
int numCells,
std::shared_ptr< const PixelDiodeMatrix > upperCells )
static

Construct method with multiple matrices.

There may be zero or one lower matrix (pointer can be 0). Multiple (numCells) middle matrics (must pass a non zero pointer). There may be zero or one upper matrix (pointer can be 0). These must all have the same width and cells in the non replicating direction.

Definition at line 38 of file PixelDiodeMatrix.cxx.

43{
44 class Helper : public PixelDiodeMatrix{};
45 std::shared_ptr<PixelDiodeMatrix> ptr = std::make_shared<Helper>();
46 ptr->initialize(direction,
47 std::move(lowerCell),
48 std::move(middleCells),
49 numCells,
50 std::move(upperCell));
51 return ptr;
52}
std::vector< T > Helper(const std::string &input, TEnv &env)
void * ptr(T *p)
Definition SGImplSvc.cxx:74

◆ construct() [2/2]

std::shared_ptr< const PixelDiodeMatrix > InDetDD::PixelDiodeMatrix::construct ( double phiWidth,
double etaWidth )
static

Construct method for just a single cell.

Definition at line 14 of file PixelDiodeMatrix.cxx.

15{
16 class Helper : public PixelDiodeMatrix{};
17 std::shared_ptr<PixelDiodeMatrix> ptr = std::make_shared<Helper>();
18 ptr->initialize(phiWidth, etaWidth);
19 return ptr;
20}

◆ createDebugStringRepr() [1/2]

std::string InDetDD::PixelDiodeMatrix::createDebugStringRepr ( ) const
inline

Create debug representation.

Definition at line 249 of file PixelDiodeMatrix.h.

250 {
251 return this->createDebugStringRepr(0);
252 }
std::string createDebugStringRepr() const
Create debug representation.

◆ createDebugStringRepr() [2/2]

std::string InDetDD::PixelDiodeMatrix::createDebugStringRepr ( unsigned int level) const
private

Create debug representation for a specific level.

Definition at line 350 of file PixelDiodeMatrix.cxx.

351{
352 std::string prefix(level, ' ');
353
354 // base case: single cell
355 if (m_singleCell) {
356 std::string cellSize = "";
357 cellSize += prefix + "phi: " + std::to_string(m_phiWidth) + "\n";
358 cellSize += prefix + "eta: " + std::to_string(m_etaWidth) + "\n";
359 return cellSize;
360 }
361
362 std::string cellContent = "";
363
364 if (m_lowerCell == nullptr && m_middleCells == nullptr && m_upperCell == nullptr) {
365 cellContent += prefix + "completly empty (WARNING: there should always be at least one cell!)\n";
366 return cellContent;
367 }
368
369 cellContent += prefix + "direction: ";
370 if (m_direction == phiDir) { cellContent += "phi\n"; }
371 else if (m_direction == etaDir) { cellContent += "eta\n"; }
372 else { cellContent += "unknown\n"; }
373
374 // recursive call for nested cells
375 if (m_lowerCell != nullptr) {
376 cellContent += prefix + "lowerCell: \n";
377 cellContent += m_lowerCell->createDebugStringRepr(level + 1);
378 }
379 if (m_middleCells != nullptr) {
380 cellContent += prefix + "middleCells: " + std::to_string(m_numCells) + "x :\n";
381 cellContent += m_middleCells->createDebugStringRepr(level + 1);
382 }
383 if (m_upperCell != nullptr) {
384 cellContent += prefix + "upperCell: \n";
385 cellContent += m_upperCell->createDebugStringRepr(level + 1);
386 }
387
388 return cellContent;
389}

◆ etaCells()

int InDetDD::PixelDiodeMatrix::etaCells ( ) const
inline

Number of cells in eta (y) direction.

Definition at line 239 of file PixelDiodeMatrix.h.

240 {
241 return m_etaCells;
242 }

◆ etaHalfWidth()

double InDetDD::PixelDiodeMatrix::etaHalfWidth ( ) const
inline

Definition at line 224 of file PixelDiodeMatrix.h.

225 {
226 return m_etaWidth*0.5;
227 }

◆ etaWidth()

double InDetDD::PixelDiodeMatrix::etaWidth ( ) const
inline

Width in eta (y) direction.

Definition at line 219 of file PixelDiodeMatrix.h.

220 {
221 return m_etaWidth;
222 }

◆ etaWidthInverse()

double InDetDD::PixelDiodeMatrix::etaWidthInverse ( ) const
inline

Inverse of width in eta (y) direction.

Definition at line 229 of file PixelDiodeMatrix.h.

230 {
231 return m_etaWidthInverse;
232 }

◆ initialize() [1/2]

void InDetDD::PixelDiodeMatrix::initialize ( Direction direction,
std::shared_ptr< const PixelDiodeMatrix > lowerCell,
std::shared_ptr< const PixelDiodeMatrix > middleCells,
int numCells,
std::shared_ptr< const PixelDiodeMatrix > upperCells )
private

Initialize for multiple matrices.

There may be zero or one lower matrix (pointer can be 0). Multiple (numCells) middle matrics (must pass a non zero pointer). There may be zero or one upper matrix (pointer can be 0). These must all have the same width and cells in the non replicating direction.

Definition at line 54 of file PixelDiodeMatrix.cxx.

59{
60 m_phiWidth = 0;
61 m_etaWidth = 0;
62 m_phiCells = 0;
63 m_etaCells = 0;
64 m_direction = direction;
66 m_lowerCell = std::move(lowerCell);
67 m_middleCells = std::move(middleCells);
68 m_upperCell = std::move(upperCell);
69 m_singleCell = false;
70
71 // middleCells must be non zero.
72 assert(m_middleCells);
73
74 if (m_direction == phiDir) {
75
76 // In eta direction widths must be all the same.
77 if (m_middleCells){
78 m_etaWidth = m_middleCells->etaWidth();
79 m_etaCells = m_middleCells->etaCells();
80 }
81 // Check lower and upper are consistent
82 // TODO.
83
84 if (m_lowerCell) {
85 m_phiWidth += m_lowerCell->phiWidth();
86 m_phiCells += m_lowerCell->phiCells();
87 }
88
89 if (m_middleCells){
90 m_phiWidth += m_numCells * m_middleCells->phiWidth();
91 m_phiCells += m_numCells * m_middleCells->phiCells();
92 }
93
94 if (m_upperCell) {
95 m_phiWidth += m_upperCell->phiWidth();
96 m_phiCells += m_upperCell->phiCells();
97 }
98
99 } else { // eta Direction
100
101 // In phi direction widths must be all the same.
102 if (m_middleCells){
103 m_phiWidth = m_middleCells->phiWidth();
104 m_phiCells = m_middleCells->phiCells();
105 }
106 // Check lower and upper are consistent
107 // TODO.
108
109 if (m_lowerCell) {
110 m_etaWidth += m_lowerCell->etaWidth();
111 m_etaCells += m_lowerCell->etaCells();
112 }
113
114 if (m_middleCells){
115 m_etaWidth += m_numCells * m_middleCells->etaWidth();
116 m_etaCells += m_numCells * m_middleCells->etaCells();
117 }
118
119 if (m_upperCell) {
120 m_etaWidth += m_upperCell->etaWidth();
121 m_etaCells += m_upperCell->etaCells();
122 }
123
124 }
125
128}

◆ initialize() [2/2]

void InDetDD::PixelDiodeMatrix::initialize ( double phiWidth,
double etaWidth )
private

Initialize for just a single cell.

Definition at line 22 of file PixelDiodeMatrix.cxx.

23{
28 m_phiCells = 1;
29 m_etaCells = 1;
30 m_direction = phiDir; // Irrelevant
31 m_numCells = 0;
32 m_lowerCell = nullptr;
33 m_middleCells = nullptr;
34 m_upperCell = nullptr;
35 m_singleCell = true;
36}

◆ phiCells()

int InDetDD::PixelDiodeMatrix::phiCells ( ) const
inline

Number of cells in phi (x) direction.

Definition at line 234 of file PixelDiodeMatrix.h.

235 {
236 return m_phiCells;
237 }

◆ phiHalfWidth()

double InDetDD::PixelDiodeMatrix::phiHalfWidth ( ) const
inline

Definition at line 209 of file PixelDiodeMatrix.h.

210 {
211 return m_phiWidth*0.5;
212 }

◆ phiWidth()

double InDetDD::PixelDiodeMatrix::phiWidth ( ) const
inline

Width in phi (x) direction.

Definition at line 204 of file PixelDiodeMatrix.h.

205 {
206 return m_phiWidth;
207 }

◆ phiWidthInverse()

double InDetDD::PixelDiodeMatrix::phiWidthInverse ( ) const
inline

Inverse of width in phi (x) direction.

Definition at line 214 of file PixelDiodeMatrix.h.

215 {
216 return m_phiWidthInverse;
217 }

◆ positionOfCell() [1/2]

const PixelDiodeMatrix * InDetDD::PixelDiodeMatrix::positionOfCell ( const PixelDiodeMatrix * matrix,
const SiCellId & cellId,
Amg::Vector2D & dest_position )
staticprivate

Search diode matching the given cell id and compute its position.

Description.

Parameters
matrixthe diode matrix in which the search is started
cellIdthe cell id relative to the given matrix
positionstorage for the position of the diode.
Returns
pointer to the sub-matrix which is representative for the diode.

Overview of algoritm:

  • It starts with the position of the bottom left corner of the cell. For the full matrix this is (-halfwidth,-halflength)
  • It first checks if is in the lower cell (if it exists).
  • If not it determines the bottom edge of the cell by multiplying the cell number by the pitch.
  • If it is beyond the range of the middle cells it is taken as being in the upper cell.
  • This position is then passed recursively to the same method until it reaches a single cell.
  • At the end the 2D position is then transformed to the position relative to the module center.

Definition at line 255 of file PixelDiodeMatrix.cxx.

272{
273 using Trk::distPhi;
274 using Trk::distEta;
275 Amg::Vector2D position{
276 -matrix->phiHalfWidth(),
277 -matrix->etaHalfWidth()
278 };
279
280 int rel_phi_index = cellId.phiIndex();
281 int rel_eta_index = cellId.etaIndex();
282 for( ;!matrix->m_singleCell; ) {
283
284 int relIndex = 0; // Relative index along m_direction
285 double pitch = 0;
286 int nMiddleCells = 0;
287 double startPos = 0;
288 const auto direction = matrix->m_direction;
289
290 if (direction == PixelDiodeMatrix::phiDir) {
291
292 relIndex = rel_phi_index;
293
294 const PixelDiodeMatrix *lowerCell = matrix->m_lowerCell.get();
295 if (lowerCell) {
296 if (relIndex < lowerCell->phiCells()) {
297 matrix = lowerCell;
298 continue;
299 } else {
300 relIndex -= lowerCell->phiCells();
301 startPos += lowerCell->phiWidth();
302 }
303 }
304 const PixelDiodeMatrix *middleCells = matrix->m_middleCells.get();
305 assert(middleCells);
306 pitch = middleCells->phiWidth();
307 nMiddleCells = middleCells->phiCells();
308
309 } else { // etaDir
310
311 relIndex = rel_eta_index;
312 const PixelDiodeMatrix *lowerCell = matrix->m_lowerCell.get();
313 if (lowerCell) {
314 if (relIndex < lowerCell->etaCells()) {
315 matrix = lowerCell;
316 continue;
317 } else {
318 relIndex -= lowerCell->etaCells();
319 startPos += lowerCell->etaWidth();
320 }
321 }
322 const PixelDiodeMatrix *middleCells = matrix->m_middleCells.get();
323 assert(middleCells);
324 pitch = middleCells->etaWidth();
325 nMiddleCells = middleCells->etaCells();
326
327 }
328
329 int index = std::min(relIndex / nMiddleCells,matrix->m_numCells); // @TODO upper bound correct ?
330 relIndex -= index * nMiddleCells;
331 startPos += index * pitch;
332
333 matrix = (matrix->m_upperCell && index == matrix->m_numCells ) ? matrix->m_upperCell.get() : matrix->m_middleCells.get();
334
335 if (direction == PixelDiodeMatrix::phiDir) {
336 rel_phi_index = relIndex;
337 position[distPhi] += startPos;
338 } else {
339 rel_eta_index = relIndex;
340 position[distEta] += startPos;
341 }
342 }
343 position[distPhi] += matrix->phiHalfWidth();
344 position[distEta] += matrix->etaHalfWidth();
345 dest_position = position;
346 return matrix;
347}
int phiCells() const
Number of cells in phi (x) direction.
int etaCells() const
Number of cells in eta (y) direction.

◆ positionOfCell() [2/2]

const PixelDiodeMatrix * InDetDD::PixelDiodeMatrix::positionOfCell ( const SiCellId & cellId,
Amg::Vector2D & position ) const
inline

Search diode matching the given cell id and compute its position.

Parameters
cellIdthe cell id relative to this matrix
positionstorage for the position of the diode relative to this matrix.
Returns
pointer to the sub-matrix which is representative for the diode. The position will be overwritten with newly computed diode position, and the position will be relative to this matrix.

Definition at line 255 of file PixelDiodeMatrix.h.

255 {
256 return InDetDD::PixelDiodeMatrix::positionOfCell(this, cellId, position);
257 }
const PixelDiodeMatrix * positionOfCell(const SiCellId &cellId, Amg::Vector2D &position) const
Search diode matching the given cell id and compute its position.

◆ singleCell()

bool InDetDD::PixelDiodeMatrix::singleCell ( ) const
inline

Query wether the matrix is just a single cell.

Mainly for internal use.

Definition at line 244 of file PixelDiodeMatrix.h.

245 {
246 return m_singleCell;
247 }

Member Data Documentation

◆ m_direction

Direction InDetDD::PixelDiodeMatrix::m_direction {}
private

Definition at line 195 of file PixelDiodeMatrix.h.

195{};

◆ m_etaCells

int InDetDD::PixelDiodeMatrix::m_etaCells = 0
private

Definition at line 194 of file PixelDiodeMatrix.h.

◆ m_etaWidth

double InDetDD::PixelDiodeMatrix::m_etaWidth = 0
private

Definition at line 191 of file PixelDiodeMatrix.h.

◆ m_etaWidthInverse

double InDetDD::PixelDiodeMatrix::m_etaWidthInverse = 0
private

Definition at line 192 of file PixelDiodeMatrix.h.

◆ m_lowerCell

std::shared_ptr<const PixelDiodeMatrix> InDetDD::PixelDiodeMatrix::m_lowerCell
private

Definition at line 197 of file PixelDiodeMatrix.h.

◆ m_middleCells

std::shared_ptr<const PixelDiodeMatrix> InDetDD::PixelDiodeMatrix::m_middleCells
private

Definition at line 198 of file PixelDiodeMatrix.h.

◆ m_numCells

int InDetDD::PixelDiodeMatrix::m_numCells = 0
private

Definition at line 196 of file PixelDiodeMatrix.h.

◆ m_phiCells

int InDetDD::PixelDiodeMatrix::m_phiCells = 0
private

Definition at line 193 of file PixelDiodeMatrix.h.

◆ m_phiWidth

double InDetDD::PixelDiodeMatrix::m_phiWidth = 0
private

Definition at line 189 of file PixelDiodeMatrix.h.

◆ m_phiWidthInverse

double InDetDD::PixelDiodeMatrix::m_phiWidthInverse = 0
private

Definition at line 190 of file PixelDiodeMatrix.h.

◆ m_singleCell

bool InDetDD::PixelDiodeMatrix::m_singleCell = false
private

Definition at line 200 of file PixelDiodeMatrix.h.

◆ m_upperCell

std::shared_ptr<const PixelDiodeMatrix> InDetDD::PixelDiodeMatrix::m_upperCell
private

Definition at line 199 of file PixelDiodeMatrix.h.


The documentation for this class was generated from the following files: