ATLAS Offline Software
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
InDetDD::PixelModuleDesign Class Reference

#include <PixelModuleDesign.h>

Inheritance diagram for InDetDD::PixelModuleDesign:
Collaboration diagram for InDetDD::PixelModuleDesign:

Public Types

enum  Axis { xAxis =0, yAxis, zAxis }
 

Public Member Functions

 PixelModuleDesign (const double thickness, const int circuitsPerColumn, const int circuitsPerRow, const int cellColumnsPerCircuit, const int cellRowsPerCircuit, const int diodeColumnsPerCircuit, const int diodeRowsPerCircuit, std::shared_ptr< const PixelDiodeMatrix > matrix, InDetDD::CarrierType carrierType, int readoutSide=-1, bool is3D=false, InDetDD::DetectorType detectorType=InDetDD::Undefined)
 Constructor with parameters: local axis corresponding to eta direction local axis corresponding to phi direction local axis corresponding to depth direction thickness of silicon sensor number of circuits in one circuit column number of circuits in one circuit row number of cell columns per circuit number of cell rows per circuit number of diode columns connected to one circuit number of diode rows connected to one circuit. More...
 
 PixelModuleDesign (const double thickness, const bool phiSymmetric, const bool etaSymmetric, const bool depthSymmetric, const int circuitsPerColumn, const int circuitsPerRow, const int cellColumnsPerCircuit, const int cellRowsPerCircuit, const int diodeColumnsPerCircuit, const int diodeRowsPerCircuit, std::shared_ptr< const PixelDiodeMatrix > matrix, InDetDD::CarrierType carrierType, int readoutSide=-1, bool is3D=false, InDetDD::DetectorType detectorType=InDetDD::Undefined)
 
virtual ~PixelModuleDesign ()=default
 
virtual void distanceToDetectorEdge (const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
 Returns distance to nearest detector active edge +ve = inside -ve = outside. More...
 
virtual SiDiodesParameters parameters (const SiCellId &cellId) const
 readout or diode id -> position, size More...
 
virtual SiLocalPosition localPositionOfCell (const SiCellId &cellId) const
 readout or diode id -> position. More...
 
virtual int numberOfConnectedCells (const SiReadoutCellId &readoutId) const
 readout id -> id of connected diodes More...
 
virtual SiCellId connectedCell (const SiReadoutCellId &readoutId, int number) const
 readout id -> id of connected diodes. More...
 
virtual SiCellId gangedCell (const SiCellId &cellId) const
 If cell is ganged return the other cell, otherwise return an invalid id. More...
 
virtual SiReadoutCellId readoutIdOfCell (const SiCellId &cellId) const
 diode id -> readout id More...
 
virtual SiReadoutCellId readoutIdOfPosition (const SiLocalPosition &localPos) const
 position -> id More...
 
virtual SiCellId cellIdOfPosition (const SiLocalPosition &localPos) const
 position -> id More...
 
virtual SiCellId cellIdInRange (const SiCellId &cellId) const
 Check if cell is in range. More...
 
virtual HepGeom::Vector3D< double > phiMeasureSegment (const SiLocalPosition &) const
 Helper method for stereo angle computation. More...
 
virtual std::pair< SiLocalPosition, SiLocalPositionendsOfStrip (const SiLocalPosition &position) const
 Special method for SCT (irrelevant here): More...
 
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 use localPositionOfCell(const SiCellId & cellId) or rawLocalPositionOfCell method in SiDetectorElement. More...
 
virtual void neighboursOfCell (const SiCellId &cellId, std::vector< SiCellId > &neighbours) const
 Get the neighbouring diodes of a given diode: Cell for which the neighbours must be found List of cells which are neighbours of the given one. More...
 
double intersectionLength (const SiCellId &diode1, const SiCellId &diode2) const
 Compute the intersection length of two diodes: return: the intersection length when the two diodes are projected on one of the two axis, or 0 in case of no intersection or problem input: the two diodes for which the intersection length is computed. More...
 
double sensorLeftColumn () const
 Global sensor size: More...
 
double sensorRightColumn () const
 
double sensorLeftRow () const
 
double sensorRightRow () const
 
int numberOfDiodes () const
 Total number of diodes: More...
 
int numberOfCircuits () const
 Total number of circuits: More...
 
int numberOfCircuitsPerColumn () const
 Number of circuits per column: More...
 
int numberOfCircuitsPerRow () const
 Number of circuits per row: More...
 
int columnsPerCircuit () const
 Number of cell columns per circuit: More...
 
int rowsPerCircuit () const
 Number of cell rows per circuit: More...
 
int columns () const
 Number of cell columns per module: More...
 
int rows () const
 Number of cell rows per module: More...
 
virtual double length () const
 Method to calculate length of a module. More...
 
virtual double width () const
 Method to calculate average width of a module. More...
 
virtual double minWidth () const
 Method to calculate minimum width of a module. More...
 
virtual double maxWidth () const
 Method to calculate maximum width of a module. More...
 
virtual double phiPitch () const
 Pitch in phi direction. More...
 
virtual double phiPitch (const SiLocalPosition &localPosition) const
 Pitch in phi direction. More...
 
virtual double etaPitch () const
 Pitch in eta direction. More...
 
double widthFromColumnRange (const int colMin, const int colMax) const
 Method to calculate eta width from a column range. More...
 
double widthFromRowRange (const int rowMin, const int rowMax) const
 Method to calculate phi width from a row range. More...
 
virtual bool nearBondGap (const SiLocalPosition &localPosition, double etaTol) const
 Test if near bond gap within tolerances Only relevant for SCT. More...
 
virtual bool swapHitPhiReadoutDirection () const
 Return true if hit local direction is the same as readout direction. More...
 
virtual bool swapHitEtaReadoutDirection () const
 
virtual const Trk::SurfaceBoundsbounds () const
 Element boundary. More...
 
virtual bool is3D () const
 
PixelReadoutTechnology getReadoutTechnology () const
 
virtual DetectorType type () const final
 Type of element. More...
 
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 vector containing, for each diode, the readout cell row number to which the corresponding diode is connected. More...
 
void setGeneralLayout ()
 Indicate that it is a more complex layout where cells are not lined up with each other. More...
 
std::string debugStringRepr () const
 Debug string representation. More...
 
virtual double sinStripAngleReco (double phiCoord, double etaCoord) const
 Give strip angle in the reco frame. More...
 
virtual int strip1Dim (int strip, int row) const
 only relevant for SCT. More...
 
virtual Amg::Vector3D sensorCenter () const
 Return the centre of a sensor in the local reference frame. More...
 
virtual SiIntersect inDetector (const SiLocalPosition &localPosition, double phiTol, double etaTol) const
 Test if point is in the active part of the detector with specified tolerances. More...
 
void setSymmetry (bool phiSymmetric, bool etaSymmetric, bool depthSymmetric)
 Override default symmetries to prevent swapping of axes. More...
 
Axis etaAxis () const
 local axis corresponding to eta direction: More...
 
Axis phiAxis () const
 local axis corresponding to phi direction: More...
 
Axis depthAxis () const
 local axis corresponding to depth direction: More...
 
double thickness () const
 Method which returns thickness of the silicon wafer. More...
 
InDetDD::CarrierType carrierType () const
 Return carrier type (ie electrons or holes) More...
 
bool phiSymmetric () const
 
bool etaSymmetric () const
 
bool depthSymmetric () const
 
int readoutSide () const
 ReadoutSide. More...
 
virtual DetectorShape shape () const
 Shape of element. More...
 
virtual const Amg::Transform3D moduleShift () const
 

Private Member Functions

 PixelModuleDesign ()
 
 PixelModuleDesign (const PixelModuleDesign &design)
 
PixelModuleDesignoperator= (const PixelModuleDesign &design)
 

Private Attributes

PixelDiodeMap m_diodeMap
 
PixelReadoutScheme m_readoutScheme
 
CxxUtils::CachedUniquePtr< Trk::RectangleBoundsm_bounds
 
bool m_is3D
 
InDetDD::DetectorType m_detectorType
 
Axis m_etaAxis
 
Axis m_phiAxis
 
Axis m_depthAxis
 
double m_thickness
 
InDetDD::CarrierType m_carrierType
 
bool m_phiSymmetric
 
bool m_etaSymmetric
 
bool m_depthSymmetric
 
bool m_readoutSidePosDepth
 

Detailed Description

Class used to describe the design of a module (diode segmentation and readout scheme)

Author
Alessandro Fornaini
  • modified: Grant Gorfine, Nick Styles, Andreas Salzburger

Definition at line 48 of file PixelModuleDesign.h.

Member Enumeration Documentation

◆ Axis

Enumerator
xAxis 
yAxis 
zAxis 

Definition at line 59 of file DetectorDesign.h.

59  {
60  xAxis=0, yAxis, zAxis
61  };

Constructor & Destructor Documentation

◆ PixelModuleDesign() [1/4]

InDetDD::PixelModuleDesign::PixelModuleDesign ( const double  thickness,
const int  circuitsPerColumn,
const int  circuitsPerRow,
const int  cellColumnsPerCircuit,
const int  cellRowsPerCircuit,
const int  diodeColumnsPerCircuit,
const int  diodeRowsPerCircuit,
std::shared_ptr< const PixelDiodeMatrix matrix,
InDetDD::CarrierType  carrierType,
int  readoutSide = -1,
bool  is3D = false,
InDetDD::DetectorType  detectorType = InDetDD::Undefined 
)

Constructor with parameters: local axis corresponding to eta direction local axis corresponding to phi direction local axis corresponding to depth direction thickness of silicon sensor number of circuits in one circuit column number of circuits in one circuit row number of cell columns per circuit number of cell rows per circuit number of diode columns connected to one circuit number of diode rows connected to one circuit.

Definition at line 60 of file PixelModuleDesign.cxx.

71  :
73  true,true,true, //if symmetry not explicitly set, assume fully symmetric
74  circuitsPerColumn,circuitsPerRow,cellColumnsPerCircuit,cellRowsPerCircuit,
75  diodeColumnsPerCircuit,diodeRowsPerCircuit,matrix,carrierType,readoutSide,
76  is3D,detectorType)
77 {
78 }

◆ PixelModuleDesign() [2/4]

InDetDD::PixelModuleDesign::PixelModuleDesign ( const double  thickness,
const bool  phiSymmetric,
const bool  etaSymmetric,
const bool  depthSymmetric,
const int  circuitsPerColumn,
const int  circuitsPerRow,
const int  cellColumnsPerCircuit,
const int  cellRowsPerCircuit,
const int  diodeColumnsPerCircuit,
const int  diodeRowsPerCircuit,
std::shared_ptr< const PixelDiodeMatrix matrix,
InDetDD::CarrierType  carrierType,
int  readoutSide = -1,
bool  is3D = false,
InDetDD::DetectorType  detectorType = InDetDD::Undefined 
)

Definition at line 30 of file PixelModuleDesign.cxx.

44  :
45 
49  readoutSide),
50  m_diodeMap(std::move(matrix)),
51  m_readoutScheme(circuitsPerColumn,circuitsPerRow,
52  cellColumnsPerCircuit,cellRowsPerCircuit,
53  diodeColumnsPerCircuit,diodeRowsPerCircuit),
54  m_bounds(),
55  m_is3D(is3D),
56  m_detectorType(detectorType)
57 {
58 }

◆ ~PixelModuleDesign()

virtual InDetDD::PixelModuleDesign::~PixelModuleDesign ( )
virtualdefault

◆ PixelModuleDesign() [3/4]

InDetDD::PixelModuleDesign::PixelModuleDesign ( )
private

◆ PixelModuleDesign() [4/4]

InDetDD::PixelModuleDesign::PixelModuleDesign ( const PixelModuleDesign design)
private

Member Function Documentation

◆ addMultipleRowConnection()

void InDetDD::PixelModuleDesign::addMultipleRowConnection ( const int  lowerRow,
const std::vector< int > &  connections 
)
inline

Add a new multiple connection for rows: lower diode row for which the connection scheme is given vector containing, for each diode, the readout cell row number to which the corresponding diode is connected.

Definition at line 284 of file PixelModuleDesign.h.

286  {
287  m_readoutScheme.addMultipleRowConnection(lowerRow,connections);
288  }

◆ bounds()

const Trk::SurfaceBounds & InDetDD::PixelModuleDesign::bounds ( ) const
virtual

Element boundary.

Implements InDetDD::DetectorDesign.

Definition at line 249 of file PixelModuleDesign.cxx.

250 {
251  // We create on demand as width and length are 0 when PixeModuleDesign first gets
252  // created.
253  if (not m_bounds) m_bounds.set(std::make_unique<Trk::RectangleBounds>(0.5*width(), 0.5*length()));
254  return *m_bounds;
255 }

◆ carrierType()

InDetDD::CarrierType InDetDD::DetectorDesign::carrierType ( ) const
inlineinherited

Return carrier type (ie electrons or holes)

Definition at line 275 of file DetectorDesign.h.

275  {
276  return m_carrierType;
277 }

◆ cellIdInRange()

SiCellId InDetDD::PixelModuleDesign::cellIdInRange ( const SiCellId cellId) const
virtual

Check if cell is in range.

Returns the original cellId if it is in range, otherwise it returns an invalid id.

Implements InDetDD::DetectorDesign.

Definition at line 265 of file PixelModuleDesign.cxx.

266 {
267  return m_diodeMap.cellIdInRange(cellId);
268 }

◆ cellIdOfPosition()

SiCellId InDetDD::PixelModuleDesign::cellIdOfPosition ( const SiLocalPosition localPos) const
virtual

position -> id

Implements InDetDD::DetectorDesign.

Definition at line 202 of file PixelModuleDesign.cxx.

203 {
204  return m_diodeMap.cellIdOfPosition(localPosition);
205 }

◆ columns()

int InDetDD::PixelModuleDesign::columns ( ) const
inline

Number of cell columns per module:

Definition at line 340 of file PixelModuleDesign.h.

341  {
342  return m_readoutScheme.columns();
343  }

◆ columnsPerCircuit()

int InDetDD::PixelModuleDesign::columnsPerCircuit ( ) const
inline

Number of cell columns per circuit:

Definition at line 330 of file PixelModuleDesign.h.

331  {
333  }

◆ connectedCell()

SiCellId InDetDD::PixelModuleDesign::connectedCell ( const SiReadoutCellId readoutId,
int  number 
) const
virtual

readout id -> id of connected diodes.

parameter number = 0 will refer to the primary diode and in general the cell number will be the same. NB. SiCellId cellId = connectedCell(readoutId, 0) will in general be equivalent to SiCellId cellId = readoutId

Implements InDetDD::DetectorDesign.

Definition at line 214 of file PixelModuleDesign.cxx.

215 {
216  return m_readoutScheme.connectedCell(readoutId, number);
217 }

◆ debugStringRepr()

std::string InDetDD::PixelModuleDesign::debugStringRepr ( ) const
inline

Debug string representation.

Definition at line 401 of file PixelModuleDesign.h.

402  {
403  return m_diodeMap.debugStringRepr();
404  }

◆ depthAxis()

DetectorDesign::Axis InDetDD::DetectorDesign::depthAxis ( ) const
inlineinherited

local axis corresponding to depth direction:

Definition at line 267 of file DetectorDesign.h.

267  {
268  return m_depthAxis;
269 }

◆ depthSymmetric()

bool InDetDD::DetectorDesign::depthSymmetric ( ) const
inlineinherited

Definition at line 287 of file DetectorDesign.h.

287  {
288  return m_depthSymmetric;
289 }

◆ distanceToDetectorEdge()

void InDetDD::PixelModuleDesign::distanceToDetectorEdge ( const SiLocalPosition localPosition,
double &  etaDist,
double &  phiDist 
) const
virtual

Returns distance to nearest detector active edge +ve = inside -ve = outside.

Implements InDetDD::DetectorDesign.

Definition at line 84 of file PixelModuleDesign.cxx.

86 {
87  // This assume element is centered at 0,0
88  // As the calculation is symmetric around 0,0 we only have to test it for one side.
89  double xEta = abs(localPosition.xEta());
90  double xPhi = abs(localPosition.xPhi());
91 
92  double xEtaEdge = 0.5*length();
93  double xPhiEdge = 0.5*width();
94 
95  // Distance to top/bottom
96  etaDist = xEtaEdge - xEta;
97 
98  // Distance to right/left edge
99  phiDist = xPhiEdge - xPhi;
100 
101 }

◆ endsOfStrip()

std::pair< SiLocalPosition, SiLocalPosition > InDetDD::PixelModuleDesign::endsOfStrip ( const SiLocalPosition position) const
virtual

Special method for SCT (irrelevant here):

Implements InDetDD::SiDetectorDesign.

Definition at line 123 of file PixelModuleDesign.cxx.

124 {
125  return std::pair<SiLocalPosition,SiLocalPosition>(position,position);
126 }

◆ etaAxis()

DetectorDesign::Axis InDetDD::DetectorDesign::etaAxis ( ) const
inlineinherited

local axis corresponding to eta direction:

Definition at line 259 of file DetectorDesign.h.

259  {
260  return m_etaAxis;
261 }

◆ etaPitch()

double InDetDD::PixelModuleDesign::etaPitch ( ) const
virtual

Pitch in eta direction.

Implements InDetDD::DetectorDesign.

Definition at line 196 of file PixelModuleDesign.cxx.

197 {
198  // Average pitch
199  return length() / columns();
200 }

◆ etaSymmetric()

bool InDetDD::DetectorDesign::etaSymmetric ( ) const
inlineinherited

Definition at line 283 of file DetectorDesign.h.

283  {
284  return m_etaSymmetric;
285 }

◆ gangedCell()

SiCellId InDetDD::PixelModuleDesign::gangedCell ( const SiCellId cellId) const
virtual

If cell is ganged return the other cell, otherwise return an invalid id.

Implements InDetDD::SiDetectorDesign.

Definition at line 220 of file PixelModuleDesign.cxx.

221 {
222  return m_readoutScheme.gangedCell(cellId);
223 }

◆ getReadoutTechnology()

PixelReadoutTechnology InDetDD::PixelModuleDesign::getReadoutTechnology ( ) const
inline

Definition at line 386 of file PixelModuleDesign.h.

386  {
391  {
393  }
394 
395  const int maxRow = m_readoutScheme.rowsPerCircuit();
396  const int maxCol = m_readoutScheme.columnsPerCircuit();
397  if (maxRow*maxCol>26000) { return PixelReadoutTechnology::FEI4; }
398  else { return PixelReadoutTechnology::FEI3; }
399  }

◆ inDetector()

SiIntersect InDetDD::DetectorDesign::inDetector ( const SiLocalPosition localPosition,
double  phiTol,
double  etaTol 
) const
virtualinherited

Test if point is in the active part of the detector with specified tolerances.

Reimplemented in InDetDD::SCT_ModuleSideDesign.

Definition at line 106 of file DetectorDesign.cxx.

107  {
108  double etaDist = 0;
109  double phiDist = 0;
110 
111  distanceToDetectorEdge(localPosition, etaDist, phiDist);
112 
113  SiIntersect state;
114 
115  if (phiDist < -phiTol || etaDist < -etaTol) {
116  state.setOut();
117  return state;
118  }
119 
120  if (phiDist > phiTol && etaDist > etaTol) {
121  state.setIn();
122  return state;
123  }
124 
125  // Near boundary.
126  state.setNearBoundary();
127  return state;
128 }

◆ intersectionLength()

double InDetDD::PixelModuleDesign::intersectionLength ( const SiCellId diode1,
const SiCellId diode2 
) const
inline

Compute the intersection length of two diodes: return: the intersection length when the two diodes are projected on one of the two axis, or 0 in case of no intersection or problem input: the two diodes for which the intersection length is computed.

Definition at line 373 of file PixelModuleDesign.h.

375  {
376  return m_diodeMap.intersectionLength(diode1, diode2);
377  }

◆ is3D()

bool InDetDD::PixelModuleDesign::is3D ( ) const
inlinevirtual

Definition at line 381 of file PixelModuleDesign.h.

382  {
383  return m_is3D;
384  }

◆ length()

double InDetDD::PixelModuleDesign::length ( ) const
virtual

Method to calculate length of a module.

Implements InDetDD::DetectorDesign.

Definition at line 130 of file PixelModuleDesign.cxx.

131 {
132  return m_diodeMap.length();
133 }

◆ localPositionOfCell()

SiLocalPosition InDetDD::PixelModuleDesign::localPositionOfCell ( const SiCellId cellId) const
virtual

readout or diode id -> position.

Implements InDetDD::DetectorDesign.

Definition at line 108 of file PixelModuleDesign.cxx.

109 {
110  return m_diodeMap.parameters(cellId).centre();
111 }

◆ maxWidth()

double InDetDD::PixelModuleDesign::maxWidth ( ) const
virtual

Method to calculate maximum width of a module.

Implements InDetDD::DetectorDesign.

Definition at line 148 of file PixelModuleDesign.cxx.

149 {
150  return width();
151 }

◆ minWidth()

double InDetDD::PixelModuleDesign::minWidth ( ) const
virtual

Method to calculate minimum width of a module.

Implements InDetDD::DetectorDesign.

Definition at line 142 of file PixelModuleDesign.cxx.

143 {
144  return width();
145 }

◆ moduleShift()

const Amg::Transform3D InDetDD::DetectorDesign::moduleShift ( ) const
virtualinherited

Reimplemented in InDetDD::StripBoxDesign.

Definition at line 130 of file DetectorDesign.cxx.

130  {
131  return Amg::Transform3D::Identity();
132  }

◆ nearBondGap()

bool InDetDD::PixelModuleDesign::nearBondGap ( const SiLocalPosition localPosition,
double  etaTol 
) const
inlinevirtual

Test if near bond gap within tolerances Only relevant for SCT.

Always returns false for pixels.

Implements InDetDD::SiDetectorDesign.

Definition at line 350 of file PixelModuleDesign.h.

351  {
352  // No bond gap in pixel module
353  return false;
354  }

◆ neighboursOfCell()

void InDetDD::PixelModuleDesign::neighboursOfCell ( const SiCellId cellId,
std::vector< SiCellId > &  neighbours 
) const
inlinevirtual

Get the neighbouring diodes of a given diode: Cell for which the neighbours must be found List of cells which are neighbours of the given one.

Implements InDetDD::DetectorDesign.

Definition at line 367 of file PixelModuleDesign.h.

369  {
370  return m_diodeMap.neighboursOfCell(cellId, neighbours);
371  }

◆ numberOfCircuits()

int InDetDD::PixelModuleDesign::numberOfCircuits ( ) const
inline

Total number of circuits:

Definition at line 315 of file PixelModuleDesign.h.

316  {
318  }

◆ numberOfCircuitsPerColumn()

int InDetDD::PixelModuleDesign::numberOfCircuitsPerColumn ( ) const
inline

Number of circuits per column:

Definition at line 320 of file PixelModuleDesign.h.

321  {
323  }

◆ numberOfCircuitsPerRow()

int InDetDD::PixelModuleDesign::numberOfCircuitsPerRow ( ) const
inline

Number of circuits per row:

Definition at line 325 of file PixelModuleDesign.h.

326  {
328  }

◆ numberOfConnectedCells()

int InDetDD::PixelModuleDesign::numberOfConnectedCells ( const SiReadoutCellId readoutId) const
virtual

readout id -> id of connected diodes

Implements InDetDD::DetectorDesign.

Definition at line 208 of file PixelModuleDesign.cxx.

209 {
210  return m_readoutScheme.numberOfConnectedCells(readoutId);
211 }

◆ numberOfDiodes()

int InDetDD::PixelModuleDesign::numberOfDiodes ( ) const
inline

Total number of diodes:

Definition at line 310 of file PixelModuleDesign.h.

311  {
312  return m_diodeMap.diodes();
313  }

◆ operator=()

PixelModuleDesign& InDetDD::PixelModuleDesign::operator= ( const PixelModuleDesign design)
private

◆ parameters()

SiDiodesParameters InDetDD::PixelModuleDesign::parameters ( const SiCellId cellId) const
virtual

readout or diode id -> position, size

Implements InDetDD::DetectorDesign.

Definition at line 103 of file PixelModuleDesign.cxx.

104 {
105  return m_diodeMap.parameters(cellId);
106 }

◆ phiAxis()

DetectorDesign::Axis InDetDD::DetectorDesign::phiAxis ( ) const
inlineinherited

local axis corresponding to phi direction:

Definition at line 263 of file DetectorDesign.h.

263  {
264  return m_phiAxis;
265 }

◆ phiMeasureSegment()

HepGeom::Vector3D< double > InDetDD::PixelModuleDesign::phiMeasureSegment ( const SiLocalPosition ) const
virtual

Helper method for stereo angle computation.

Implements InDetDD::SiDetectorDesign.

Definition at line 115 of file PixelModuleDesign.cxx.

116 {
117  HepGeom::Vector3D<double> segment;
118  segment[etaAxis()]=1;
119  return segment;
120 }

◆ phiPitch() [1/2]

double InDetDD::PixelModuleDesign::phiPitch ( ) const
virtual

Pitch in phi direction.

Implements InDetDD::DetectorDesign.

Definition at line 180 of file PixelModuleDesign.cxx.

181 {
182  // Average pitch.
183  return width() / rows();
184 }

◆ phiPitch() [2/2]

double InDetDD::PixelModuleDesign::phiPitch ( const SiLocalPosition localPosition) const
virtual

Pitch in phi direction.

Implements InDetDD::DetectorDesign.

Definition at line 188 of file PixelModuleDesign.cxx.

189 {
190  // Cheat since we know its constant.
191  return phiPitch();
192 }

◆ phiSymmetric()

bool InDetDD::DetectorDesign::phiSymmetric ( ) const
inlineinherited

Definition at line 279 of file DetectorDesign.h.

279  {
280  return m_phiSymmetric;
281 }

◆ positionFromColumnRow()

SiLocalPosition InDetDD::PixelModuleDesign::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 use localPositionOfCell(const SiCellId & cellId) or rawLocalPositionOfCell method in SiDetectorElement.

DEPRECATED

Definition at line 242 of file PixelModuleDesign.cxx.

243 {
244  return localPositionOfCell(SiCellId(row,column));
245 }

◆ readoutIdOfCell()

SiReadoutCellId InDetDD::PixelModuleDesign::readoutIdOfCell ( const SiCellId cellId) const
virtual

diode id -> readout id

Implements InDetDD::DetectorDesign.

Definition at line 226 of file PixelModuleDesign.cxx.

227 {
228  return m_readoutScheme.readoutIdOfCell(cellId);
229 }

◆ readoutIdOfPosition()

SiReadoutCellId InDetDD::PixelModuleDesign::readoutIdOfPosition ( const SiLocalPosition localPos) const
virtual

position -> id

Implements InDetDD::DetectorDesign.

Definition at line 233 of file PixelModuleDesign.cxx.

234 {
236 }

◆ readoutSide()

int InDetDD::DetectorDesign::readoutSide ( ) const
inlineinherited

ReadoutSide.

+1 = postive depth side, -1 = negative depth side.

Definition at line 291 of file DetectorDesign.h.

291  {
292  return (m_readoutSidePosDepth) ? +1 : -1;
293 }

◆ rows()

int InDetDD::PixelModuleDesign::rows ( ) const
inline

Number of cell rows per module:

Definition at line 345 of file PixelModuleDesign.h.

346  {
347  return m_readoutScheme.rows();
348  }

◆ rowsPerCircuit()

int InDetDD::PixelModuleDesign::rowsPerCircuit ( ) const
inline

Number of cell rows per circuit:

Definition at line 335 of file PixelModuleDesign.h.

336  {
338  }

◆ sensorCenter()

Amg::Vector3D InDetDD::DetectorDesign::sensorCenter ( ) const
virtualinherited

Return the centre of a sensor in the local reference frame.

For most designs, this is the origin of the local reference frame. For StripStereoAnnulusDesign, this is not the case (coordinate origin is "on the beamline")

Reimplemented in InDetDD::StripStereoAnnulusDesign, and InDetDD::StripAnnulusDesign.

Definition at line 60 of file DetectorDesign.cxx.

60  {
61  return Amg::Vector3D(0., 0., 0.);
62 }

◆ sensorLeftColumn()

double InDetDD::PixelModuleDesign::sensorLeftColumn ( ) const
inline

Global sensor size:

Definition at line 290 of file PixelModuleDesign.h.

291  {
292  return m_diodeMap.leftColumn();
293  }

◆ sensorLeftRow()

double InDetDD::PixelModuleDesign::sensorLeftRow ( ) const
inline

Definition at line 300 of file PixelModuleDesign.h.

301  {
302  return m_diodeMap.leftRow();
303  }

◆ sensorRightColumn()

double InDetDD::PixelModuleDesign::sensorRightColumn ( ) const
inline

Definition at line 295 of file PixelModuleDesign.h.

296  {
297  return m_diodeMap.rightColumn();
298  }

◆ sensorRightRow()

double InDetDD::PixelModuleDesign::sensorRightRow ( ) const
inline

Definition at line 305 of file PixelModuleDesign.h.

306  {
307  return m_diodeMap.rightRow();
308  }

◆ setGeneralLayout()

void InDetDD::PixelModuleDesign::setGeneralLayout ( )

Indicate that it is a more complex layout where cells are not lined up with each other.

Eg bricking. Probably never will be needed.

Definition at line 259 of file PixelModuleDesign.cxx.

260 {
262 }

◆ setSymmetry()

void InDetDD::DetectorDesign::setSymmetry ( bool  phiSymmetric,
bool  etaSymmetric,
bool  depthSymmetric 
)
inherited

Override default symmetries to prevent swapping of axes.

NB. Flags can be changed from true to false but not false to true.

Definition at line 65 of file DetectorDesign.cxx.

66  {
67  // Flags can be changed from true to false but not false to true.
68  if (m_phiSymmetric) {
70  }
71  else if (phiSymmetric) {
72  std::cout <<
73  "SiDetectorDesign: WARNING! Attempt to allow swapping of xPhi axis direction ignored."
74  << std::endl;
75  }
76 
77  if (m_etaSymmetric) {
79  }
80  else if (etaSymmetric) {
81  std::cout <<
82  "SiDetectorDesign: WARNING! Attempt to allow swapping of xEta axis direction ignored."
83  << std::endl;
84  }
85 
86  if (m_depthSymmetric) {
88  }
89  else if (depthSymmetric) {
90  std::cout <<
91  "SiDetectorDesign: WARNING! Attempt to allow swapping of xDepth axis direction ignored."
92  << std::endl;
93  }
94 }

◆ shape()

DetectorShape InDetDD::DetectorDesign::shape ( ) const
virtualinherited

Shape of element.

Reimplemented in InDetDD::StripStereoAnnulusDesign, and InDetDD::SCT_ForwardModuleSideDesign.

Definition at line 96 of file DetectorDesign.cxx.

96  {
97  // Default is Box.
98  return InDetDD::Box;
99 }

◆ sinStripAngleReco()

double InDetDD::SiDetectorDesign::sinStripAngleReco ( double  phiCoord,
double  etaCoord 
) const
inlinevirtualinherited

Give strip angle in the reco frame.

Reimplemented in InDetDD::StripStereoAnnulusDesign, and InDetDD::SCT_ForwardModuleSideDesign.

Definition at line 132 of file SiDetectorDesign.h.

132  {
133  return 0.0; // pixel and barrel strip sensors always zero
134  }

◆ strip1Dim()

int InDetDD::SiDetectorDesign::strip1Dim ( int  strip,
int  row 
) const
inlinevirtualinherited

only relevant for SCT.

Return strip1Dim(int strip, int row) if SCT; otherwise -1

Reimplemented in InDetDD::SCT_ModuleSideDesign, InDetDD::StripStereoAnnulusDesign, and InDetDD::StripBoxDesign.

Definition at line 136 of file SiDetectorDesign.h.

136  {
137  return -1.0;
138  }

◆ swapHitEtaReadoutDirection()

bool InDetDD::PixelModuleDesign::swapHitEtaReadoutDirection ( ) const
inlinevirtual

Implements InDetDD::DetectorDesign.

Definition at line 361 of file PixelModuleDesign.h.

362  {
363  return true;
364  }

◆ swapHitPhiReadoutDirection()

bool InDetDD::PixelModuleDesign::swapHitPhiReadoutDirection ( ) const
inlinevirtual

Return true if hit local direction is the same as readout direction.

Implements InDetDD::DetectorDesign.

Definition at line 356 of file PixelModuleDesign.h.

357  {
358  return true;
359  }

◆ thickness()

double InDetDD::DetectorDesign::thickness ( ) const
inlineinherited

Method which returns thickness of the silicon wafer.

Definition at line 271 of file DetectorDesign.h.

271  {
272  return m_thickness;
273 }

◆ type()

DetectorType InDetDD::PixelModuleDesign::type ( ) const
finalvirtual

Type of element.

Reimplemented from InDetDD::DetectorDesign.

Definition at line 270 of file PixelModuleDesign.cxx.

271 {
272  return m_detectorType;
273 }

◆ width()

double InDetDD::PixelModuleDesign::width ( ) const
virtual

Method to calculate average width of a module.

Implements InDetDD::DetectorDesign.

Definition at line 136 of file PixelModuleDesign.cxx.

137 {
138  return m_diodeMap.width();
139 }

◆ widthFromColumnRange()

double InDetDD::PixelModuleDesign::widthFromColumnRange ( const int  colMin,
const int  colMax 
) const

Method to calculate eta width from a column range.

Definition at line 155 of file PixelModuleDesign.cxx.

156 {
157  SiCellId idMin(0, colMin);
158  SiCellId idMax(0, colMax);
159 
160  double minEta = parameters(idMin).xEtaMin();
161  double maxEta = parameters(idMax).xEtaMax();
162 
163  return fabs(maxEta-minEta);
164 }

◆ widthFromRowRange()

double InDetDD::PixelModuleDesign::widthFromRowRange ( const int  rowMin,
const int  rowMax 
) const

Method to calculate phi width from a row range.

Definition at line 167 of file PixelModuleDesign.cxx.

168 {
169 
170  SiCellId idMin(rowMin, 0);
171  SiCellId idMax(rowMax, 0);
172  double minPhi = parameters(idMin).xPhiMin();
173  double maxPhi = parameters(idMax).xPhiMax();
174 
175  return fabs(maxPhi-minPhi);
176 }

Member Data Documentation

◆ m_bounds

CxxUtils::CachedUniquePtr<Trk::RectangleBounds> InDetDD::PixelModuleDesign::m_bounds
private

Definition at line 274 of file PixelModuleDesign.h.

◆ m_carrierType

InDetDD::CarrierType InDetDD::DetectorDesign::m_carrierType
privateinherited

Definition at line 240 of file DetectorDesign.h.

◆ m_depthAxis

Axis InDetDD::DetectorDesign::m_depthAxis
privateinherited

Definition at line 238 of file DetectorDesign.h.

◆ m_depthSymmetric

bool InDetDD::DetectorDesign::m_depthSymmetric
privateinherited

Definition at line 244 of file DetectorDesign.h.

◆ m_detectorType

InDetDD::DetectorType InDetDD::PixelModuleDesign::m_detectorType
private

Definition at line 276 of file PixelModuleDesign.h.

◆ m_diodeMap

PixelDiodeMap InDetDD::PixelModuleDesign::m_diodeMap
private

Definition at line 272 of file PixelModuleDesign.h.

◆ m_etaAxis

Axis InDetDD::DetectorDesign::m_etaAxis
privateinherited

Definition at line 236 of file DetectorDesign.h.

◆ m_etaSymmetric

bool InDetDD::DetectorDesign::m_etaSymmetric
privateinherited

Definition at line 243 of file DetectorDesign.h.

◆ m_is3D

bool InDetDD::PixelModuleDesign::m_is3D
private

Definition at line 275 of file PixelModuleDesign.h.

◆ m_phiAxis

Axis InDetDD::DetectorDesign::m_phiAxis
privateinherited

Definition at line 237 of file DetectorDesign.h.

◆ m_phiSymmetric

bool InDetDD::DetectorDesign::m_phiSymmetric
privateinherited

Definition at line 242 of file DetectorDesign.h.

◆ m_readoutScheme

PixelReadoutScheme InDetDD::PixelModuleDesign::m_readoutScheme
private

Definition at line 273 of file PixelModuleDesign.h.

◆ m_readoutSidePosDepth

bool InDetDD::DetectorDesign::m_readoutSidePosDepth
privateinherited

Definition at line 246 of file DetectorDesign.h.

◆ m_thickness

double InDetDD::DetectorDesign::m_thickness
privateinherited

Definition at line 239 of file DetectorDesign.h.


The documentation for this class was generated from the following files:
InDetDD::PixelModuleDesign::m_diodeMap
PixelDiodeMap m_diodeMap
Definition: PixelModuleDesign.h:272
InDetDD::DetectorDesign::xAxis
@ xAxis
Definition: DetectorDesign.h:60
query_example.row
row
Definition: query_example.py:24
InDetDD::PixelReadoutScheme::rowsPerCircuit
int rowsPerCircuit() const
number of cell rows per circuit:
Definition: PixelReadoutScheme.h:159
InDetDD::DetectorDesign::m_etaSymmetric
bool m_etaSymmetric
Definition: DetectorDesign.h:243
InDetDD::PixelReadoutScheme::columns
int columns() const
number of cell columns per module:
Definition: PixelReadoutScheme.h:164
InDetDD::DetectorDesign::m_phiSymmetric
bool m_phiSymmetric
Definition: DetectorDesign.h:242
InDetDD::DetectorDesign::depthSymmetric
bool depthSymmetric() const
Definition: DetectorDesign.h:287
InDetDD::DetectorDesign::m_thickness
double m_thickness
Definition: DetectorDesign.h:239
InDetDD::DetectorDesign::thickness
double thickness() const
Method which returns thickness of the silicon wafer.
Definition: DetectorDesign.h:271
InDetDD::PLR
@ PLR
Definition: DetectorDesign.h:46
InDetDD::DetectorDesign::etaSymmetric
bool etaSymmetric() const
Definition: DetectorDesign.h:283
InDetDD::DetectorDesign::m_carrierType
InDetDD::CarrierType m_carrierType
Definition: DetectorDesign.h:240
InDetDD::PixelDiodeMap::diodes
int diodes() const
Definition: PixelDiodeMap.h:174
InDetDD::PixelDiodeMap::intersectionLength
double intersectionLength(const SiCellId &diode1, const SiCellId &diode2) const
Compute the intersection length of two diodes: return: the intersection length when the two diodes ar...
Definition: PixelDiodeMap.cxx:218
InDetDD::PixelModuleDesign::width
virtual double width() const
Method to calculate average width of a module.
Definition: PixelModuleDesign.cxx:136
InDetDD::DetectorDesign::m_depthAxis
Axis m_depthAxis
Definition: DetectorDesign.h:238
InDetDD::PixelDiodeMap::debugStringRepr
std::string debugStringRepr() const
Debug representation.
Definition: PixelDiodeMap.h:197
InDetDD::PixelModuleDesign::columns
int columns() const
Number of cell columns per module:
Definition: PixelModuleDesign.h:340
InDetDD::SiDiodesParameters::xPhiMax
double xPhiMax() const
Definition: SiDiodesParameters.h:121
InDetDD::PixelDiodeMap::parameters
SiDiodesParameters parameters(const SiCellId &diodeId) const
Get diodes parameters (position and size):
Definition: PixelDiodeMap.cxx:73
InDetDD::PixelReadoutScheme::numberOfConnectedCells
int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
number of cells connected to this readout.
Definition: PixelReadoutScheme.cxx:45
InDetDD::DetectorDesign::yAxis
@ yAxis
Definition: DetectorDesign.h:60
InDetDD::PixelDiodeMap::width
double width() const
Definition: PixelDiodeMap.h:149
InDetDD::PixelModuleDesign::rows
int rows() const
Number of cell rows per module:
Definition: PixelModuleDesign.h:345
InDetDD::DetectorDesign::m_phiAxis
Axis m_phiAxis
Definition: DetectorDesign.h:237
DeMoUpdate.column
dictionary column
Definition: DeMoUpdate.py:1110
InDetDD::DetectorDesign::readoutSide
int readoutSide() const
ReadoutSide.
Definition: DetectorDesign.h:291
InDetDD::PixelReadoutTechnology::FEI3
@ FEI3
InDetDD::SiDiodesParameters::centre
const SiLocalPosition & centre() const
position of the diodes centre:
Definition: SiDiodesParameters.h:91
InDetDD::DetectorDesign::carrierType
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
Definition: DetectorDesign.h:275
InDetDD::SiDetectorDesign::SiDetectorDesign
SiDetectorDesign()
InDetDD::PixelReadoutScheme::numberOfCircuitsPerColumn
int numberOfCircuitsPerColumn() const
number of circuits per column:
Definition: PixelReadoutScheme.h:144
InDetDD::DetectorDesign::m_etaAxis
Axis m_etaAxis
Definition: DetectorDesign.h:236
InDetDD::SiDiodesParameters::xEtaMax
double xEtaMax() const
Definition: SiDiodesParameters.h:111
InDetDD::PixelInclined
@ PixelInclined
Definition: DetectorDesign.h:46
InDetDD::PixelReadoutScheme::columnsPerCircuit
int columnsPerCircuit() const
number of cell columns per circuit:
Definition: PixelReadoutScheme.h:154
InDetDD::PixelEndcap
@ PixelEndcap
Definition: DetectorDesign.h:46
PUfitVar::maxEta
constexpr float maxEta
Definition: GepMETPufitAlg.cxx:13
InDetDD::PixelModuleDesign::length
virtual double length() const
Method to calculate length of a module.
Definition: PixelModuleDesign.cxx:130
InDetDD::PixelReadoutScheme::numberOfCircuitsPerRow
int numberOfCircuitsPerRow() const
number of circuits per row:
Definition: PixelReadoutScheme.h:149
InDetDD::PixelReadoutTechnology::RD53
@ RD53
InDetDD::PixelModuleDesign::phiPitch
virtual double phiPitch() const
Pitch in phi direction.
Definition: PixelModuleDesign.cxx:180
InDetDD::PixelReadoutScheme::readoutIdOfCell
SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
Readout id of this diode.
Definition: PixelReadoutScheme.cxx:76
InDetDD::PixelModuleDesign::m_is3D
bool m_is3D
Definition: PixelModuleDesign.h:275
InDetDD::PixelDiodeMap::rightColumn
double rightColumn() const
Definition: PixelDiodeMap.h:159
InDetDD::PixelReadoutScheme::connectedCell
SiCellId connectedCell(const SiReadoutCellId &readoutId, unsigned int number) const
Cell ids of cell connected to this readout.
Definition: PixelReadoutScheme.cxx:59
InDetDD::PixelModuleDesign::m_detectorType
InDetDD::DetectorType m_detectorType
Definition: PixelModuleDesign.h:276
InDetDD::SiDiodesParameters::xPhiMin
double xPhiMin() const
Definition: SiDiodesParameters.h:116
InDetDD::PixelModuleDesign::localPositionOfCell
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
Definition: PixelModuleDesign.cxx:108
InDetDD::PixelModuleDesign::m_bounds
CxxUtils::CachedUniquePtr< Trk::RectangleBounds > m_bounds
Definition: PixelModuleDesign.h:274
InDetDD::DetectorDesign::distanceToDetectorEdge
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const =0
Returns distance to nearest detector active edge +ve = inside -ve = outside.
InDetDD::PixelDiodeMap::rightRow
double rightRow() const
Definition: PixelDiodeMap.h:169
python.selection.number
number
Definition: selection.py:20
InDetDD::PixelReadoutScheme::addMultipleRowConnection
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...
Definition: PixelReadoutScheme.cxx:102
InDetDD::PixelBarrel
@ PixelBarrel
Definition: DetectorDesign.h:46
InDetDD::PixelReadoutTechnology::FEI4
@ FEI4
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDetDD::PixelDiodeMap::leftColumn
double leftColumn() const
Definition: PixelDiodeMap.h:154
InDetDD::PixelDiodeMap::length
double length() const
Definition: PixelDiodeMap.h:144
python.testIfMatch.matrix
matrix
Definition: testIfMatch.py:66
InDetDD::PixelModuleDesign::is3D
virtual bool is3D() const
Definition: PixelModuleDesign.h:381
InDetDD::PixelModuleDesign::m_readoutScheme
PixelReadoutScheme m_readoutScheme
Definition: PixelModuleDesign.h:273
InDetDD::PixelModuleDesign::parameters
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
Definition: PixelModuleDesign.cxx:103
InDetDD::SiDiodesParameters::xEtaMin
double xEtaMin() const
boundaries of the diodes:
Definition: SiDiodesParameters.h:106
InDetDD::DetectorDesign::phiSymmetric
bool phiSymmetric() const
Definition: DetectorDesign.h:279
InDetDD::DetectorDesign::m_depthSymmetric
bool m_depthSymmetric
Definition: DetectorDesign.h:244
InDetDD::PixelReadoutScheme::rows
int rows() const
number of cell rows per module:
Definition: PixelReadoutScheme.h:169
InDetDD::PixelDiodeMap::neighboursOfCell
void neighboursOfCell(const SiCellId &cellId, std::vector< SiCellId > &neighbours) const
Get the neighbouring PixelDiodes of a given PixelDiode: Cell for which the neighbours must be found L...
Definition: PixelDiodeMap.cxx:107
InDetDD::DetectorDesign::m_readoutSidePosDepth
bool m_readoutSidePosDepth
Definition: DetectorDesign.h:246
InDetDD::PixelModuleDesign::PixelModuleDesign
PixelModuleDesign()
InDetDD::Box
@ Box
Definition: DetectorDesign.h:42
InDetDD::PixelDiodeMap::setGeneralLayout
void setGeneralLayout()
Set general layout flag.
Definition: PixelDiodeMap.h:106
InDetDD::DetectorDesign::etaAxis
Axis etaAxis() const
local axis corresponding to eta direction:
Definition: DetectorDesign.h:259
InDetDD::PixelReadoutScheme::gangedCell
SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the other cell, otherwise return an invalid id.
Definition: PixelReadoutScheme.cxx:91
InDetDD::PixelReadoutScheme::numberOfCircuits
int numberOfCircuits() const
total number of circuits:
Definition: PixelReadoutScheme.h:139
InDetDD::PixelDiodeMap::cellIdOfPosition
SiCellId cellIdOfPosition(const Amg::Vector2D &localPosition) const
cell id for a given local position
Definition: PixelDiodeMap.cxx:38
InDetDD::PixelDiodeMap::cellIdInRange
SiCellId cellIdInRange(const SiCellId &cellId) const
Check if cellId is within range.
Definition: PixelDiodeMap.h:189
InDetDD::PixelDiodeMap::leftRow
double leftRow() const
Definition: PixelDiodeMap.h:164
InDetDD::DetectorDesign::zAxis
@ zAxis
Definition: DetectorDesign.h:60
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5