ATLAS Offline Software
HGTD_ModuleDesign.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // HGTD_ModuleDesign.h, (c) ATLAS Detector software
8 
9 #ifndef HGTD_READOUTGEOMETRY_HGTD_MODULEDESIGN_H
10 #define HGTD_READOUTGEOMETRY_HGTD_MODULEDESIGN_H
11 
12 // base class
15 
16 // Data member classes
19 
20 // Other includes
22 
23 namespace Trk{
24  class SurfaceBounds;
25 }
26 
27 namespace InDetDD {
28  class SiLocalPosition;
29  class PixelDiodeMatrix;
30 
44 
46  // Public methods:
48 public:
49 
51  // Constructors/destructor:
53 
67  const int circuitsPerColumn,
68  const int circuitsPerRow,
69  const int cellColumnsPerCircuit,
70  const int cellRowsPerCircuit,
71  const int diodeColumnsPerCircuit,
72  const int diodeRowsPerCircuit,
73  std::shared_ptr<const PixelDiodeMatrix> matrix,
75  int readoutSide,
78 
79  // Destructor:
80  virtual ~HGTD_ModuleDesign();
81 
83  // Const methods:
85 
89  virtual void distanceToDetectorEdge(const SiLocalPosition & localPosition,
90  double & etaDist, double & phiDist) const;
91 
93  double sensorLeftColumn() const;
94  double sensorRightColumn() const;
95  double sensorLeftRow() const;
96  double sensorRightRow() const;
97 
99  int numberOfDiodes() const;
100 
102  int numberOfCircuits() const;
103 
105  int columnsPerCircuit() const;
106 
108  int rowsPerCircuit() const;
109 
111  int columns() const;
112 
114  int rows() const;
115 
117  virtual double length() const;
118 
120  virtual double width() const;
121 
123  virtual double minWidth() const;
124 
126  virtual double maxWidth() const;
127 
129  virtual double phiPitch() const;
130 
132  virtual double phiPitch(const SiLocalPosition & localPosition) const;
133 
135  virtual double etaPitch() const;
136 
138  double widthFromColumnRange(const int colMin, const int colMax) const;
139 
141  double widthFromRowRange(const int rowMin, const int rowMax) const;
142 
144  virtual bool swapHitPhiReadoutDirection() const;
145  virtual bool swapHitEtaReadoutDirection() const;
146 
148  virtual const Trk::SurfaceBounds & bounds() const;
149 
151  virtual SiDiodesParameters parameters(const SiCellId & cellId) const;
152  virtual SiLocalPosition localPositionOfCell(const SiCellId & cellId) const;
153 
155  virtual int numberOfConnectedCells(const SiReadoutCellId & readoutId) const;
156  virtual SiCellId connectedCell(const SiReadoutCellId & readoutId, int number) const;
157 
159  virtual SiReadoutCellId readoutIdOfCell(const SiCellId & cellId) const;
160 
162  virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition & localPos) const;
163  virtual SiCellId cellIdOfPosition(const SiLocalPosition & localPos) const;
164 
168  virtual void neighboursOfCell(const SiCellId & cellId, std::vector<SiCellId> &neighbours) const;
169 
174  double intersectionLength(const SiCellId &diode1, const SiCellId &diode2) const;
175 
177  virtual SiCellId cellIdInRange(const SiCellId & cellId) const;
178 
180  // Non-const methods:
182 
187  void addMultipleRowConnection(const int lowerRow,
188  const std::vector<int> &connections);
189 
191  // Private methods:
193 private:
195 
197  // Private data:
199 private:
203 
204  // Disallow Copy and assignment;
207 
208 };
209 
211 // Inline methods:
213 
214 inline void HGTD_ModuleDesign::addMultipleRowConnection(const int lowerRow,
215  const std::vector<int> &connections)
216 {
217  m_readoutScheme.addMultipleRowConnection(lowerRow,connections);
218 }
219 
221 {
222  return m_diodeMap.leftColumn();
223 }
224 
226 {
227  return m_diodeMap.rightColumn();
228 }
229 
230 inline double HGTD_ModuleDesign::sensorLeftRow() const
231 {
232  return m_diodeMap.leftRow();
233 }
234 
236 {
237  return m_diodeMap.rightRow();
238 }
239 
241 {
242  return m_diodeMap.diodes();
243 }
244 
246 {
248 }
249 
251 {
253 }
254 
256 {
258 }
259 
260 inline int HGTD_ModuleDesign::columns() const
261 {
262  return m_readoutScheme.columns();
263 }
264 
265 inline int HGTD_ModuleDesign::rows() const
266 {
267  return m_readoutScheme.rows();
268 }
269 
271 {
272  return true;
273 }
274 
276 {
277  return true;
278 }
279 
281  std::vector<SiCellId> &neighbours) const
282 {
283  return m_diodeMap.neighboursOfCell(cellId, neighbours);
284 }
285 
287  const SiCellId &diode2) const
288 {
289  return m_diodeMap.intersectionLength(diode1, diode2);
290 }
291 
292 } // namespace InDetDD
293 
294 #endif // HGTD_READOUTGEOMETRY_HGTD_MODULEDESIGN_H
InDetDD::DetectorDesign::xAxis
@ xAxis
Definition: DetectorDesign.h:60
InDetDD::HGTD_ModuleDesign::parameters
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
Definition: HGTD_ModuleDesign.cxx:140
InDetDD::HGTD_ModuleDesign::numberOfCircuits
int numberOfCircuits() const
Total number of circuits:
Definition: HGTD_ModuleDesign.h:245
InDetDD::PixelReadoutScheme::rowsPerCircuit
int rowsPerCircuit() const
number of cell rows per circuit:
Definition: PixelReadoutScheme.h:159
Trk::RectangleBounds
Definition: RectangleBounds.h:38
InDetDD::PixelReadoutScheme::columns
int columns() const
number of cell columns per module:
Definition: PixelReadoutScheme.h:164
InDetDD::HGTD_ModuleDesign::minWidth
virtual double minWidth() const
Method to calculate minimum width of a module.
Definition: HGTD_ModuleDesign.cxx:77
InDetDD::DetectorDesign::thickness
double thickness() const
Method which returns thickness of the silicon wafer.
Definition: DetectorDesign.h:271
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
RectangleBounds.h
InDetDD::HGTD_ModuleDesign::swapHitEtaReadoutDirection
virtual bool swapHitEtaReadoutDirection() const
Definition: HGTD_ModuleDesign.h:275
Trk::SurfaceBounds
Definition: SurfaceBounds.h:47
InDetDD::HGTD_ModuleDesign::rowsPerCircuit
int rowsPerCircuit() const
Number of cell rows per circuit:
Definition: HGTD_ModuleDesign.h:255
InDetDD::HGTD_ModuleDesign::m_bounds
Trk::RectangleBounds m_bounds
Definition: HGTD_ModuleDesign.h:202
InDetDD::HGTD_ModuleDesign::localPositionOfCell
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
readout or diode id -> position.
Definition: HGTD_ModuleDesign.cxx:145
InDetDD::DetectorDesign::readoutSide
int readoutSide() const
ReadoutSide.
Definition: DetectorDesign.h:291
InDetDD::DetectorDesign::carrierType
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
Definition: DetectorDesign.h:275
InDetDD::DetectorDesign::Axis
Axis
Definition: DetectorDesign.h:59
InDetDD::HGTD_ModuleDesign::maxWidth
virtual double maxWidth() const
Method to calculate maximum width of a module.
Definition: HGTD_ModuleDesign.cxx:83
InDetDD::PixelDiodeMap
Definition: PixelDiodeMap.h:43
InDetDD::HGTD_ModuleDesign::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: HGTD_ModuleDesign.h:214
InDetDD::HGTD_ModuleDesign::length
virtual double length() const
Method to calculate length of a module.
Definition: HGTD_ModuleDesign.cxx:65
InDetDD::PixelReadoutScheme
Definition: PixelReadoutScheme.h:35
InDetDD::HGTD_ModuleDesign::readoutIdOfCell
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
diode id -> readout id
Definition: HGTD_ModuleDesign.cxx:162
InDetDD::HGTD_ModuleDesign::cellIdInRange
virtual SiCellId cellIdInRange(const SiCellId &cellId) const
Check if cell is in range.
Definition: HGTD_ModuleDesign.cxx:179
PixelReadoutScheme.h
InDetDD::HGTD_ModuleDesign::rows
int rows() const
Number of cell rows per module:
Definition: HGTD_ModuleDesign.h:265
InDetDD::PixelReadoutScheme::columnsPerCircuit
int columnsPerCircuit() const
number of cell columns per circuit:
Definition: PixelReadoutScheme.h:154
InDetDD::SiLocalPosition
Definition: SiLocalPosition.h:31
InDetDD::HGTD_ModuleDesign::cellIdOfPosition
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
Definition: HGTD_ModuleDesign.cxx:173
InDetDD_Defs.h
InDetDD::HGTD_ModuleDesign::columnsPerCircuit
int columnsPerCircuit() const
Number of cell columns per circuit:
Definition: HGTD_ModuleDesign.h:250
InDetDD::PixelDiodeMap::rightColumn
double rightColumn() const
Definition: PixelDiodeMap.h:159
InDetDD::DetectorDesign
Definition: DetectorDesign.h:57
InDetDD::HGTD_ModuleDesign::columns
int columns() const
Number of cell columns per module:
Definition: HGTD_ModuleDesign.h:260
InDetDD::HGTD_ModuleDesign::numberOfDiodes
int numberOfDiodes() const
Total number of diodes:
Definition: HGTD_ModuleDesign.h:240
InDetDD::HGTD_ModuleDesign::widthFromRowRange
double widthFromRowRange(const int rowMin, const int rowMax) const
Method to calculate phi width from a row range.
Definition: HGTD_ModuleDesign.cxx:100
InDetDD::HGTD_ModuleDesign::etaPitch
virtual double etaPitch() const
Pitch in eta direction.
Definition: HGTD_ModuleDesign.cxx:128
InDetDD::HGTD_ModuleDesign::HGTD_ModuleDesign
HGTD_ModuleDesign()
InDetDD::PixelDiodeMap::rightRow
double rightRow() const
Definition: PixelDiodeMap.h:169
PixelDiodeMap.h
InDetDD::HGTD_ModuleDesign::sensorLeftColumn
double sensorLeftColumn() const
Global sensor size:
Definition: HGTD_ModuleDesign.h:220
DetectorDesign.h
InDetDD::HGTD_ModuleDesign::m_diodeMap
PixelDiodeMap m_diodeMap
Definition: HGTD_ModuleDesign.h:200
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
InDetDD::HGTD_ModuleDesign::HGTD_ModuleDesign
HGTD_ModuleDesign(const HGTD_ModuleDesign &design)
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::HGTD_ModuleDesign::m_readoutScheme
PixelReadoutScheme m_readoutScheme
Definition: HGTD_ModuleDesign.h:201
InDetDD::HGTD_ModuleDesign::bounds
virtual const Trk::SurfaceBounds & bounds() const
Element boundary.
Definition: HGTD_ModuleDesign.cxx:135
InDetDD::HGTD_ModuleDesign::neighboursOfCell
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 cel...
Definition: HGTD_ModuleDesign.h:280
InDetDD::SiCellId
Definition: SiCellId.h:29
InDetDD::PixelDiodeMap::leftColumn
double leftColumn() const
Definition: PixelDiodeMap.h:154
InDetDD::HGTD_ModuleDesign::widthFromColumnRange
double widthFromColumnRange(const int colMin, const int colMax) const
Method to calculate eta width from a column range.
Definition: HGTD_ModuleDesign.cxx:89
python.testIfMatch.matrix
matrix
Definition: testIfMatch.py:66
InDetDD::HGTD_ModuleDesign::distanceToDetectorEdge
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
Returns distance to nearest detector active edge +ve = inside -ve = outside.
Definition: HGTD_ModuleDesign.cxx:46
InDetDD::HGTD_ModuleDesign::phiPitch
virtual double phiPitch() const
Pitch in phi direction.
Definition: HGTD_ModuleDesign.cxx:112
InDetDD::HGTD_ModuleDesign::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: HGTD_ModuleDesign.h:286
InDetDD::CarrierType
CarrierType
Definition: InDetDD_Defs.h:17
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
InDetDD::HGTD_ModuleDesign::swapHitPhiReadoutDirection
virtual bool swapHitPhiReadoutDirection() const
Return true if hit local direction is the same as readout direction.
Definition: HGTD_ModuleDesign.h:270
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::HGTD_ModuleDesign
Definition: HGTD_ModuleDesign.h:43
InDetDD::HGTD_ModuleDesign::sensorRightColumn
double sensorRightColumn() const
Definition: HGTD_ModuleDesign.h:225
InDetDD::HGTD_ModuleDesign::~HGTD_ModuleDesign
virtual ~HGTD_ModuleDesign()
Definition: HGTD_ModuleDesign.cxx:40
InDetDD::HGTD_ModuleDesign::connectedCell
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const
readout id -> id of connected diodes.
Definition: HGTD_ModuleDesign.cxx:156
InDetDD::SiReadoutCellId
Definition: SiReadoutCellId.h:42
InDetDD::HGTD_ModuleDesign::width
virtual double width() const
Method to calculate average width of a module.
Definition: HGTD_ModuleDesign.cxx:71
InDetDD::PixelReadoutScheme::numberOfCircuits
int numberOfCircuits() const
total number of circuits:
Definition: PixelReadoutScheme.h:139
InDetDD::HGTD_ModuleDesign::readoutIdOfPosition
virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition &localPos) const
position -> id
Definition: HGTD_ModuleDesign.cxx:168
InDetDD::HGTD_ModuleDesign::operator=
HGTD_ModuleDesign & operator=(const HGTD_ModuleDesign &design)
InDetDD::HGTD_ModuleDesign::sensorLeftRow
double sensorLeftRow() const
Definition: HGTD_ModuleDesign.h:230
InDetDD::PixelDiodeMap::leftRow
double leftRow() const
Definition: PixelDiodeMap.h:164
InDetDD::HGTD_ModuleDesign::numberOfConnectedCells
virtual int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
readout id -> id of connected diodes
Definition: HGTD_ModuleDesign.cxx:150
InDetDD::DetectorDesign::zAxis
@ zAxis
Definition: DetectorDesign.h:60
InDetDD::HGTD_ModuleDesign::sensorRightRow
double sensorRightRow() const
Definition: HGTD_ModuleDesign.h:235
InDetDD::SiDiodesParameters
Definition: SiDiodesParameters.h:25