|
ATLAS Offline Software
|
Go to the documentation of this file.
16 #include "Identifier/Identifier.h"
31 const int circuitsPerColumn,
32 const int circuitsPerRow,
33 const int cellColumnsPerCircuit,
34 const int cellRowsPerCircuit,
35 const int diodeColumnsPerCircuit,
36 const int diodeRowsPerCircuit,
37 std::shared_ptr<const PixelDiodeMatrix>
matrix,
47 m_diodeMap(std::move(
matrix)),
48 m_readoutScheme(circuitsPerColumn,circuitsPerRow,
49 cellColumnsPerCircuit,cellRowsPerCircuit,
50 diodeColumnsPerCircuit,diodeRowsPerCircuit),
53 m_detectorType(detectorType)
62 double & etaDist,
double & phiDist)
const
66 double xEta = abs(localPosition.
xEta());
67 double xPhi = abs(localPosition.
xPhi());
69 double xEtaEdge = 0.5*
length();
70 double xPhiEdge = 0.5*
width();
73 etaDist = xEtaEdge - xEta;
76 phiDist = xPhiEdge - xPhi;
94 HepGeom::Vector3D<double>
segment;
102 return std::pair<SiLocalPosition,SiLocalPosition>(position,position);
140 return fabs(
maxEta-minEta);
152 return fabs(maxPhi-minPhi);
virtual double width() const
Method to calculate average width of a module.
double widthFromRowRange(const int rowMin, const int rowMax) const
Method to calculate phi width from a row range.
int columns() const
Number of cell columns per module:
SiDiodesParameters parameters(const SiCellId &diodeId) const
Get diodes parameters (position and size):
int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
number of cells connected to this readout.
int rows() const
Number of cell rows per module:
virtual SiCellId cellIdInRange(const SiCellId &cellId) const
Check if cell is in range.
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const
readout id -> id of connected diodes.
virtual double etaPitch() const
Pitch in eta direction.
virtual const Trk::SurfaceBounds & bounds() const
Element boundary.
virtual double length() const
Method to calculate length of a module.
SiLocalPosition positionFromColumnRow(const int column, const int row) const
Given row and column index of a diode, return position of diode center ALTERNATIVE/PREFERED way is to...
double xPhi() const
position along phi direction:
virtual double phiPitch() const
Pitch in phi direction.
SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
Readout id of this diode.
double widthFromColumnRange(const int colMin, const int colMax) const
Method to calculate eta width from a column range.
SiLocalPosition centre() const
position of the diodes centre:
SiCellId connectedCell(const SiReadoutCellId &readoutId, unsigned int number) const
Cell ids of cell connected to this readout.
double xEta() const
position along eta direction:
InDetDD::DetectorType m_detectorType
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
Returns distance to nearest detector active edge +ve = inside -ve = outside.
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition &localPos) const
position -> id
CxxUtils::CachedUniquePtr< Trk::RectangleBounds > m_bounds
virtual HepGeom::Vector3D< double > phiMeasureSegment(const SiLocalPosition &) const
Helper method for stereo angle computation.
virtual int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
readout id -> id of connected diodes
virtual SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
PixelReadoutScheme m_readoutScheme
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
double xEtaMin() const
boundaries of the diodes:
void setGeneralLayout()
Indicate that it is a more complex layout where cells are not lined up with each other.
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
diode id -> readout id
void setGeneralLayout()
Set general layout flag.
Axis etaAxis() const
local axis corresponding to eta direction:
virtual double minWidth() const
Method to calculate minimum width of a module.
SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const
Special method for SCT (irrelevant here):
virtual double maxWidth() const
Method to calculate maximum width of a module.
SiCellId cellIdOfPosition(const Amg::Vector2D &localPosition) const
cell id for a given local position
SiCellId cellIdInRange(const SiCellId &cellId) const
Check if cellId is within range.
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
virtual DetectorType type() const final
Type of element.