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

#include <SCT_ForwardModuleSideDesign.h>

Inheritance diagram for InDetDD::SCT_ForwardModuleSideDesign:
Collaboration diagram for InDetDD::SCT_ForwardModuleSideDesign:

Public Types

enum  Axis { xAxis =0, yAxis, zAxis }
 

Public Member Functions

 SCT_ForwardModuleSideDesign (const double thickness, const int crystals, const int diodes, const int cells, const int shift, const bool swapStripReadout, InDetDD::CarrierType carrierType, const double radius1, const double halfHeight1, const double radius2, const double halfHeight2, const double step, const double etaCenter, const double phiCenter, int readoutSide=-1)
 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 crystals within module side number of diodes within crystal number of cells within module side index of diode connected to cell with index 0 r from inner crystal center to beam inner crystal half height r from outer crystal (if present) center to beam outer crystal (if present) half height strip step in angle (same for both crystals) eta coordinate of crystal center phi coordinate of crystal center. More...
 
virtual ~SCT_ForwardModuleSideDesign ()=default
 Destructor: More...
 
double sinStripAngleReco (double phiCoord, double etaCoord) const
 Give strip angle in the reco frame. More...
 
virtual void distanceToDetectorEdge (const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
 Returns distance to nearest detector active edge +ve = inside -ve = outside. More...
 
virtual bool nearBondGap (const SiLocalPosition &localPosition, double etaTol) const
 Test if near bond gap within tolerances. More...
 
virtual bool inActiveArea (const SiLocalPosition &chargePos, bool checkBondGap=true) const
 check if the position is in active area More...
 
virtual double scaledDistanceToNearestDiode (const SiLocalPosition &chargePos) const
 give distance to the nearest diode in units of pitch, from 0.0 to 0.5, this method should be fast as it is called for every surface charge in the SCT_SurfaceChargesGenerator More...
 
virtual double stripPitch (const SiLocalPosition &chargePos) const
 give the strip pitch (dependence on position needed for forward) More...
 
virtual double stripPitch () const
 give the strip pitch (For Forward returns pitch at center) More...
 
virtual SiDiodesParameters parameters (const SiCellId &cellId) const
 readout or diode id -> position, size More...
 
virtual SiLocalPosition localPositionOfCell (const SiCellId &cellId) const
 id -> position More...
 
virtual SiLocalPosition localPositionOfCluster (const SiCellId &cellId, int clusterSize) const
 
virtual SiCellId cellIdOfPosition (const SiLocalPosition &localPos) const
 position -> id More...
 
virtual std::pair< SiLocalPosition, SiLocalPositionendsOfStrip (const SiLocalPosition &position) const
 this method returns the ends of the strip More...
 
virtual HepGeom::Vector3D< double > phiMeasureSegment (const SiLocalPosition &position) const
 method for stereo angle computation - returns a vector parallel to the strip being hit More...
 
double radius () const
 Nominal center radius of double wafer. 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 deadAreaLength () const
 give length of dead area More...
 
virtual double deadAreaUpperBoundary () const
 give upper boundary of dead area More...
 
virtual double deadAreaLowerBoundary () const
 give lower boundary of dead area 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 angularPitch () const
 Angular pitch. More...
 
virtual DetectorShape shape () const
 Shape of element. More...
 
virtual const Trk::SurfaceBoundsbounds () const
 Element boundary. More...
 
virtual int numberOfConnectedCells (const SiReadoutCellId &readoutId) const override
 readout id -> id of connected diodes Not particularly useful for the SCT but implemented to keep a uniform interface. More...
 
virtual SiCellId connectedCell (const SiReadoutCellId &readoutId, int number) const override
 readout id -> id of connected diodes. More...
 
virtual SiCellId gangedCell (const SiCellId &cellId) const override
 If cell is ganged return the other cell, otherwise return an invalid id. More...
 
virtual SiReadoutCellId readoutIdOfCell (const SiCellId &cellId) const override
 diode id -> readout id More...
 
virtual SiReadoutCellId readoutIdOfPosition (const SiLocalPosition &localPos) const override
 position -> id More...
 
virtual SiCellId cellIdInRange (const SiCellId &cellId) const override
 Check if cell is in range. More...
 
virtual void neighboursOfCell (const SiCellId &cellId, std::vector< SiCellId > &neighbours) const override
 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...
 
virtual SiLocalPosition positionFromStrip (const int stripNumber) const
 gives position of strip center ALTERNATIVE/PREFERED way is to use localPositionOfCell(const SiCellId & cellId) or rawLocalPositionOfCell method in SiDetectorElement. More...
 
int crystals () const
 number of crystals within module side: More...
 
int diodes () const
 number of strips within crystal: More...
 
virtual int diodesInRow (const int row) const
 
int cells () const
 number of readout stips within module side: More...
 
int shift () const
 number of edge strips before first readout strip. More...
 
virtual bool swapHitPhiReadoutDirection () const override
 Return true if hit local direction is the same as readout direction. More...
 
virtual bool swapHitEtaReadoutDirection () const override
 
virtual int row (int stripId1Dim) const
 
virtual int strip (int stripId1Dim) const
 
virtual int strip1Dim (int strip, int row) const override
 only relevant for SCT. More...
 
void setMother (SCT_ModuleSideDesign *mother)
 
const SCT_ModuleSideDesigngetMother () const
 
std::map< int, const SCT_ModuleSideDesign * > getChildren () const
 
void addChildDesign (int index, const SCT_ModuleSideDesign *element)
 
virtual std::pair< int, int > getStripRow (SiCellId id) const
 Get the strip and row number of the cell. More...
 
virtual SiIntersect inDetector (const SiLocalPosition &localPosition, double phiTol, double etaTol) const override
 Test if point is in the active part of the detector with specified tolerances. More...
 
virtual Amg::Vector3D sensorCenter () const
 Return the centre of a sensor in the local reference frame. 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 DetectorType type () const
 Type of element. More...
 
virtual const Amg::Transform3D moduleShift () const
 

Protected Attributes

SCT_ReadoutScheme m_scheme
 
InDetDD::DetectorType m_detectorType {Undefined}
 

Private Member Functions

 SCT_ForwardModuleSideDesign ()
 Forbidden default constructor. More...
 
 SCT_ForwardModuleSideDesign (const SCT_ForwardModuleSideDesign &design)
 Copy constructor: More...
 
SCT_ForwardModuleSideDesignoperator= (const SCT_ForwardModuleSideDesign &design)
 Assignment operator: More...
 

Private Attributes

SCT_ForwardModuleSideGeometry m_geometry
 geometry of module side More...
 
SCT_ForwardFrameTransformation m_frame
 polar / cartesian frame transformation More...
 
Trk::TrapezoidBounds m_bounds
 
bool m_swapStripReadout
 
const SCT_ModuleSideDesignm_motherDesign {nullptr}
 
std::map< int, const SCT_ModuleSideDesign * > m_childDesigns
 
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

Design descriptor for forward modules in the SCT, carries the bounds, and readout information.

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

Definition at line 39 of file SCT_ForwardModuleSideDesign.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

◆ SCT_ForwardModuleSideDesign() [1/3]

InDetDD::SCT_ForwardModuleSideDesign::SCT_ForwardModuleSideDesign ( const double  thickness,
const int  crystals,
const int  diodes,
const int  cells,
const int  shift,
const bool  swapStripReadout,
InDetDD::CarrierType  carrierType,
const double  radius1,
const double  halfHeight1,
const double  radius2,
const double  halfHeight2,
const double  step,
const double  etaCenter,
const double  phiCenter,
int  readoutSide = -1 
)

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 crystals within module side number of diodes within crystal number of cells within module side index of diode connected to cell with index 0 r from inner crystal center to beam inner crystal half height r from outer crystal (if present) center to beam outer crystal (if present) half height strip step in angle (same for both crystals) eta coordinate of crystal center phi coordinate of crystal center.

Definition at line 23 of file SCT_ForwardModuleSideDesign.cxx.

37  :
39  true, // phi
40  false, // eta: For trapezoid we cant swap z (xEta) axis.
41  true, // depth
43  m_geometry(radius1,halfHeight1,radius2,halfHeight2,diodes,step,crystals),
44  m_frame(etaCenter,phiCenter,radius1)
45 {
46  if (crystals > 1) {
47  double radius = 0.5 * (radius1 + radius2 + halfHeight2 - halfHeight1);
48  m_frame=SCT_ForwardFrameTransformation(etaCenter,phiCenter,radius);
49  }
51 }

◆ ~SCT_ForwardModuleSideDesign()

virtual InDetDD::SCT_ForwardModuleSideDesign::~SCT_ForwardModuleSideDesign ( )
virtualdefault

Destructor:

◆ SCT_ForwardModuleSideDesign() [2/3]

InDetDD::SCT_ForwardModuleSideDesign::SCT_ForwardModuleSideDesign ( )
private

Forbidden default constructor.

◆ SCT_ForwardModuleSideDesign() [3/3]

InDetDD::SCT_ForwardModuleSideDesign::SCT_ForwardModuleSideDesign ( const SCT_ForwardModuleSideDesign design)
private

Copy constructor:

Member Function Documentation

◆ addChildDesign()

void InDetDD::SCT_ModuleSideDesign::addChildDesign ( int  index,
const SCT_ModuleSideDesign element 
)
inlineinherited

Definition at line 292 of file SCT_ModuleSideDesign.h.

292  {
293  m_childDesigns.emplace(index,child);
294  }

◆ angularPitch()

double InDetDD::SCT_ForwardModuleSideDesign::angularPitch ( ) const
inline

Angular pitch.

Definition at line 208 of file SCT_ForwardModuleSideDesign.h.

209  {
210  return m_geometry.angularPitch();
211  }

◆ bounds()

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

Element boundary.

Implements InDetDD::DetectorDesign.

Definition at line 285 of file SCT_ForwardModuleSideDesign.cxx.

286 {
287  return m_bounds;
288 }

◆ 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::SCT_ModuleSideDesign::cellIdInRange ( const SiCellId cellId) const
overridevirtualinherited

Check if cell is in range.

Check if cell is in range. Returns the original cellId if it is in range, otherwise it.

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

Implements InDetDD::DetectorDesign.

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

Definition at line 101 of file SCT_ModuleSideDesign.cxx.

101  {
102  if (!cellId.isValid() ||
103  cellId.strip() < 0 || cellId.strip() >= cells()) {
104  return {}; // Invalid
105  }
106  return cellId;
107 }

◆ cellIdOfPosition()

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

position -> id

Implements InDetDD::DetectorDesign.

Definition at line 258 of file SCT_ForwardModuleSideDesign.cxx.

259 {
260  // NB We do not distinguish between the two crystals anymore.
261  // Check if we are in the active region. No bondgap check.
262  if (!inActiveArea(localPosition, false)) return {}; // return an invalid id
263 
264  const SCT_ForwardPolarPosition polar = m_frame.polarFromCartesian(localPosition);
265  double theta = polar.theta();
266 
267  double dstrip = theta/angularPitch() + 0.5*diodes();
268 
269  if (dstrip < 0) return {}; // return an invalid id
270  int strip = static_cast<int>(dstrip);
271  if (strip > diodes()) return {};// return an invalid id if strip # greater
272  // than number of diodes.
273  return {strip-shift()}; // strip numbering starts from first readout strip.
274  // Those to the left will have negative numbers.
275 }

◆ cells()

int InDetDD::SCT_ModuleSideDesign::cells ( ) const
inlineinherited

number of readout stips within module side:

Definition at line 228 of file SCT_ModuleSideDesign.h.

228  {
229  return m_scheme.cells();
230 }

◆ connectedCell()

SiCellId InDetDD::SCT_ModuleSideDesign::connectedCell ( const SiReadoutCellId readoutId,
int  number 
) const
inlineoverridevirtualinherited

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 241 of file SCT_ModuleSideDesign.h.

242  {
243  return m_scheme.connectedCell(readoutId, number);
244 }

◆ crystals()

int InDetDD::SCT_ModuleSideDesign::crystals ( ) const
inlineinherited

number of crystals within module side:

Definition at line 216 of file SCT_ModuleSideDesign.h.

216  {
217  return m_scheme.crystals();
218 }

◆ deadAreaLength()

double InDetDD::SCT_ForwardModuleSideDesign::deadAreaLength ( ) const
virtual

give length of dead area

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 175 of file SCT_ForwardModuleSideDesign.cxx.

176 {
177  return m_geometry.deadAreaLength();
178 }

◆ deadAreaLowerBoundary()

double InDetDD::SCT_ForwardModuleSideDesign::deadAreaLowerBoundary ( ) const
virtual

give lower boundary of dead area

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 185 of file SCT_ForwardModuleSideDesign.cxx.

186 {
188 }

◆ deadAreaUpperBoundary()

double InDetDD::SCT_ForwardModuleSideDesign::deadAreaUpperBoundary ( ) const
virtual

give upper boundary of dead area

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 180 of file SCT_ForwardModuleSideDesign.cxx.

181 {
183 }

◆ 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 }

◆ diodes()

int InDetDD::SCT_ModuleSideDesign::diodes ( ) const
inlineinherited

number of strips within crystal:

Definition at line 220 of file SCT_ModuleSideDesign.h.

220  {
221  return m_scheme.diodes();
222 }

◆ diodesInRow()

int InDetDD::SCT_ModuleSideDesign::diodesInRow ( const int  row) const
inlinevirtualinherited

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

Definition at line 224 of file SCT_ModuleSideDesign.h.

224  {
225  return m_scheme.diodes();
226 }

◆ distanceToDetectorEdge()

void InDetDD::SCT_ForwardModuleSideDesign::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 66 of file SCT_ForwardModuleSideDesign.cxx.

68 {
69  m_geometry.distanceToDetectorEdge(localPosition,
70  m_frame.polarFromCartesian(localPosition),
71  etaDist, phiDist);
72 }

◆ endsOfStrip()

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

this method returns the ends of the strip

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 120 of file SCT_ForwardModuleSideDesign.cxx.

121 {
122  const SCT_ForwardPolarPosition polarPosition =
123  m_frame.polarFromCartesian(position);
124  const double theta = polarPosition.theta();
125  const double innerRadius = (m_geometry.radius1()-m_geometry.halfHeight1())/cos(theta);
126  double outerRadius;
127  if (crystals()==1) {
128  outerRadius = (m_geometry.radius1()+m_geometry.halfHeight1())/cos(theta);
129  } else {
130  outerRadius = (m_geometry.radius2()+m_geometry.halfHeight2())/cos(theta);
131  }
132  const SCT_ForwardPolarPosition innerPointPolar = SCT_ForwardPolarPosition(innerRadius,theta);
133  const SCT_ForwardPolarPosition outerPointPolar = SCT_ForwardPolarPosition(outerRadius,theta);
134  const SiLocalPosition innerPoint = m_frame.cartesianFromPolar(innerPointPolar);
135  const SiLocalPosition outerPoint = m_frame.cartesianFromPolar(outerPointPolar);
136 
137  return std::pair<SiLocalPosition,SiLocalPosition>(innerPoint,outerPoint);
138 }

◆ 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::SCT_ForwardModuleSideDesign::etaPitch ( ) const
inlinevirtual

Pitch in eta direction.

Implements InDetDD::DetectorDesign.

Definition at line 202 of file SCT_ForwardModuleSideDesign.h.

203  {
204  return length();
205  }

◆ etaSymmetric()

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

Definition at line 283 of file DetectorDesign.h.

283  {
284  return m_etaSymmetric;
285 }

◆ gangedCell()

SiCellId InDetDD::SCT_ModuleSideDesign::gangedCell ( const SiCellId cellId) const
inlineoverridevirtualinherited

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

Not particularly useful for the SCT but implemented to keep a uniform interface. For SCT always returns an invalid id.

Implements InDetDD::SiDetectorDesign.

Definition at line 246 of file SCT_ModuleSideDesign.h.

246  {
247  // No ganged cells in SCT so always return invalid id.
248  return SiCellId();
249 }

◆ getChildren()

std::map< int, const SCT_ModuleSideDesign * > InDetDD::SCT_ModuleSideDesign::getChildren ( ) const
inlineinherited

Definition at line 287 of file SCT_ModuleSideDesign.h.

287  {
288  return m_childDesigns;
289  }

◆ getMother()

const SCT_ModuleSideDesign * InDetDD::SCT_ModuleSideDesign::getMother ( ) const
inlineinherited

Definition at line 283 of file SCT_ModuleSideDesign.h.

283  {
284  return m_motherDesign;
285  }

◆ getStripRow()

std::pair< int, int > InDetDD::SCT_ModuleSideDesign::getStripRow ( SiCellId  id) const
virtualinherited

Get the strip and row number of the cell.

Can be used as auto [strip, row] = getStripRow(cellId); For SCT sensors, return 0 as there should only be one row; derived versions for ITk strip implement specializations

Parameters
cellIdThe SiCellId
Returns
std::pair<int,int> A pair of ints representing the strip ID and row ID. In this case, [0,0].

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

Definition at line 127 of file SCT_ModuleSideDesign.cxx.

127  {
128  return {0,0};
129  }

◆ inActiveArea()

bool InDetDD::SCT_ForwardModuleSideDesign::inActiveArea ( const SiLocalPosition chargePos,
bool  checkBondGap = true 
) const
virtual

check if the position is in active area

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 81 of file SCT_ForwardModuleSideDesign.cxx.

82 {
83  //const SCT_ForwardPolarPosition polar=m_frame.polarFromCartesian(chargePos);
84  //return m_geometry.inActiveArea(m_frame.polarFromCartesian(chargePos));
85  return m_geometry.inActiveArea(chargePos, checkBondGap);
86 }

◆ inDetector()

SiIntersect InDetDD::SCT_ModuleSideDesign::inDetector ( const SiLocalPosition localPosition,
double  phiTol,
double  etaTol 
) const
overridevirtualinherited

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

Reimplemented from InDetDD::DetectorDesign.

Definition at line 131 of file SCT_ModuleSideDesign.cxx.

131  {
132 
133  double etaDist = 0;
134  double phiDist = 0;
135 
136  distanceToDetectorEdge(localPosition, etaDist, phiDist);
137 
138  SiIntersect state;
139 
140  if (phiDist < -phiTol || etaDist < -etaTol) {
141  state.setOut();
142  return state;
143  }
144 
145  if (phiDist > phiTol && etaDist > etaTol) {
146  state.setIn();
147  return state;
148  }
149 
150  // Near boundary.
151  state.setNearBoundary();
152  return state;
153 }

◆ length()

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

Method to calculate length of a module.

Implements InDetDD::DetectorDesign.

Definition at line 155 of file SCT_ForwardModuleSideDesign.cxx.

156 {
157  return m_geometry.length();
158 }

◆ localPositionOfCell()

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

id -> position

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 192 of file SCT_ForwardModuleSideDesign.cxx.

193 {
194  // This method returns the position of the centre of the cell
195 
196  // NB. No check is made that cellId is valid or in the correct range.
197 
198  int strip = cellId.strip();
199 
200  double clusterCenter = strip - 0.5*cells() + 0.5;
201 
202  const double theta = m_geometry.angularPitch()*clusterCenter;
203  const double r = radius() / cos(theta);
204 
205  // positions in polar coordinates and then cartesian
206  const SCT_ForwardPolarPosition polarPosition(r, theta);
207  return m_frame.cartesianFromPolar(polarPosition);
208 }

◆ localPositionOfCluster()

SiLocalPosition InDetDD::SCT_ForwardModuleSideDesign::localPositionOfCluster ( const SiCellId cellId,
int  clusterSize 
) const
virtual

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 212 of file SCT_ForwardModuleSideDesign.cxx.

214 {
215  // This method returns the position of the centre of the cluster starting at cellId.strip()
216 
217  // NB. No check is made that cellId is valid or in the correct range.
218 
219  if (clusterSize < 1) clusterSize = 1;
220 
221  int strip = cellId.strip();
222 
223  double clusterCenter = strip - 0.5*cells() + 0.5;
224  if (clusterSize>1) clusterCenter += 0.5 * (clusterSize-1);
225 
226  const double theta = angularPitch()*clusterCenter;
227  const double r = radius() / cos(theta);
228 
229  // positions in polar coordinates and then cartesian
230  const SCT_ForwardPolarPosition polarPosition(r,theta);
231  return m_frame.cartesianFromPolar(polarPosition);
232 }

◆ maxWidth()

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

Method to calculate maximum width of a module.

Implements InDetDD::DetectorDesign.

Definition at line 170 of file SCT_ForwardModuleSideDesign.cxx.

171 {
172  return m_geometry.maxWidth();
173 }

◆ minWidth()

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

Method to calculate minimum width of a module.

Implements InDetDD::DetectorDesign.

Definition at line 165 of file SCT_ForwardModuleSideDesign.cxx.

166 {
167  return m_geometry.minWidth();
168 }

◆ 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::SCT_ForwardModuleSideDesign::nearBondGap ( const SiLocalPosition localPosition,
double  etaTol 
) const
virtual

Test if near bond gap within tolerances.

Implements InDetDD::SiDetectorDesign.

Definition at line 75 of file SCT_ForwardModuleSideDesign.cxx.

76 {
77  return m_geometry.nearBondGap(localPosition, etaTol);
78 }

◆ neighboursOfCell()

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

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.

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

Definition at line 70 of file SCT_ModuleSideDesign.cxx.

71  {
72  neighbours.clear();
73  neighbours.reserve(2);
74 
75  if (!cellId.isValid()) {
76  return;
77  }
78 
79  int strip = cellId.strip();
80  int stripM = strip - 1;
81  int stripP = strip + 1;
82 
83  if (stripM >= m_scheme.shift()) {
84  neighbours.emplace_back(stripM);
85  }
86  if (stripP < m_scheme.diodes() + m_scheme.shift()) {
87  neighbours.emplace_back(stripP);
88  }
89 }

◆ numberOfConnectedCells()

int InDetDD::SCT_ModuleSideDesign::numberOfConnectedCells ( const SiReadoutCellId readoutId) const
inlineoverridevirtualinherited

readout id -> id of connected diodes Not particularly useful for the SCT but implemented to keep a uniform interface.

Implements InDetDD::DetectorDesign.

Definition at line 236 of file SCT_ModuleSideDesign.h.

237  {
238  return m_scheme.numberOfConnectedCells(readoutId);
239 }

◆ operator=()

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

Assignment operator:

◆ parameters()

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

readout or diode id -> position, size

Implements InDetDD::DetectorDesign.

Definition at line 235 of file SCT_ForwardModuleSideDesign.cxx.

236 {
237  int strip = cellId.strip();
238 
239  double clusterCenter = strip - 0.5*cells() + 0.5;
240 
241  const double theta = m_geometry.angularPitch()*clusterCenter;
242  const double r = radius() / cos(theta);
243 
244  // positions in polar coordinates and then cartesian
245  const SCT_ForwardPolarPosition polarPosition(r, theta);
246  SiLocalPosition center = m_frame.cartesianFromPolar(polarPosition);
247 
248  // The strip is not rectangular put we return pitch at radius.
249  double stripWidth = angularPitch()*r;
250  double stripLength = length() / cos(theta);
251 
252  SiLocalPosition width(stripLength, stripWidth);
253  return SiDiodesParameters(center, width);
254 }

◆ 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::SCT_ForwardModuleSideDesign::phiMeasureSegment ( const SiLocalPosition position) const
virtual

method for stereo angle computation - returns a vector parallel to the strip being hit

Implements InDetDD::SiDetectorDesign.

Definition at line 143 of file SCT_ForwardModuleSideDesign.cxx.

144 {
145  const SCT_ForwardPolarPosition secondPolarPosition(0,0);
146  const SiLocalPosition secondPosition = m_frame.cartesianFromPolar(secondPolarPosition);
147 
148  HepGeom::Vector3D<double> notUnitVector;
149  notUnitVector[phiAxis()]=position.xPhi()-secondPosition.xPhi();
150  notUnitVector[etaAxis()]=position.xEta()-secondPosition.xEta();
151 
152  return notUnitVector.unit();
153 }

◆ phiPitch() [1/2]

double InDetDD::SCT_ForwardModuleSideDesign::phiPitch ( ) const
inlinevirtual

Pitch in phi direction.

Implements InDetDD::DetectorDesign.

Definition at line 196 of file SCT_ForwardModuleSideDesign.h.

197  {
198  return stripPitch();
199  }

◆ phiPitch() [2/2]

double InDetDD::SCT_ForwardModuleSideDesign::phiPitch ( const SiLocalPosition localPosition) const
inlinevirtual

Pitch in phi direction.

Implements InDetDD::DetectorDesign.

Definition at line 190 of file SCT_ForwardModuleSideDesign.h.

191  {
192  return stripPitch(localPosition);
193  }

◆ phiSymmetric()

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

Definition at line 279 of file DetectorDesign.h.

279  {
280  return m_phiSymmetric;
281 }

◆ positionFromStrip()

SiLocalPosition InDetDD::SCT_ModuleSideDesign::positionFromStrip ( const int  stripNumber) const
virtualinherited

gives position of strip center ALTERNATIVE/PREFERED way is to use localPositionOfCell(const SiCellId & cellId) or rawLocalPositionOfCell method in SiDetectorElement.

DEPRECATED

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

Definition at line 95 of file SCT_ModuleSideDesign.cxx.

95  {
96  return localPositionOfCell(SiCellId(stripNumber));
97 }

◆ radius()

double InDetDD::SCT_ForwardModuleSideDesign::radius ( ) const
inline

Nominal center radius of double wafer.

Definition at line 184 of file SCT_ForwardModuleSideDesign.h.

185  {
186  return m_geometry.radius();
187  }

◆ readoutIdOfCell()

SiReadoutCellId InDetDD::SCT_ModuleSideDesign::readoutIdOfCell ( const SiCellId cellId) const
inlineoverridevirtualinherited

diode id -> readout id

Implements InDetDD::DetectorDesign.

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

Definition at line 251 of file SCT_ModuleSideDesign.h.

252 {
253  return m_scheme.readoutIdOfCell(cellId);
254 }

◆ readoutIdOfPosition()

SiReadoutCellId InDetDD::SCT_ModuleSideDesign::readoutIdOfPosition ( const SiLocalPosition localPos) const
inlineoverridevirtualinherited

position -> id

Implements InDetDD::DetectorDesign.

Definition at line 256 of file SCT_ModuleSideDesign.h.

257  {
258  // Get the cellId then convert it to a readoutId.
259  // NEED to think about active area and bond gap check
260  return readoutIdOfCell(cellIdOfPosition(localPos));
261 }

◆ 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 }

◆ row()

int InDetDD::SCT_ModuleSideDesign::row ( int  stripId1Dim) const
inlinevirtualinherited

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

Definition at line 271 of file SCT_ModuleSideDesign.h.

271  {
272  return -1; // Use -1 to realise this is an SCT module without rows
273 }

◆ scaledDistanceToNearestDiode()

double InDetDD::SCT_ForwardModuleSideDesign::scaledDistanceToNearestDiode ( const SiLocalPosition chargePos) const
virtual

give distance to the nearest diode in units of pitch, from 0.0 to 0.5, this method should be fast as it is called for every surface charge in the SCT_SurfaceChargesGenerator

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 91 of file SCT_ForwardModuleSideDesign.cxx.

92 {
93  const SCT_ForwardPolarPosition polar=m_frame.polarFromCartesian(chargePos);
95 }

◆ 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 }

◆ setMother()

void InDetDD::SCT_ModuleSideDesign::setMother ( SCT_ModuleSideDesign mother)
inherited

Definition at line 109 of file SCT_ModuleSideDesign.cxx.

109  {
110  if(m_motherDesign){
111  const std::string errMsg=std::string("SCT_ModuleSideDesign already has a mother set!");
112  throw std::runtime_error(errMsg);
113  }
114  m_motherDesign = mother;
115 
116  }

◆ 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::SCT_ForwardModuleSideDesign::shape ( ) const
virtual

Shape of element.

Reimplemented from InDetDD::DetectorDesign.

Definition at line 279 of file SCT_ForwardModuleSideDesign.cxx.

280 {
281  return InDetDD::Trapezoid;
282 }

◆ shift()

int InDetDD::SCT_ModuleSideDesign::shift ( ) const
inlineinherited

number of edge strips before first readout strip.

Definition at line 232 of file SCT_ModuleSideDesign.h.

232  {
233  return m_scheme.shift();
234 }

◆ sinStripAngleReco()

double InDetDD::SCT_ForwardModuleSideDesign::sinStripAngleReco ( double  phiCoord,
double  etaCoord 
) const
virtual

Give strip angle in the reco frame.

Reimplemented from InDetDD::SiDetectorDesign.

Definition at line 53 of file SCT_ForwardModuleSideDesign.cxx.

53  {
54  // If theta is angle between the edges of a sensor, then tan(theta/2) = (maxW - minW) / 2 / length
55  // and tan(theta/2) = width/2 / radius
56  // So 1/r = (maxW - minW) / (width * length)
57  double oneOverRadius = (maxWidth() - minWidth()) / (width() * length());
58  // We measure the angle from the y (eta) axis towards the x (phi) axis, hence the -ve sign.
59  double sinAngle = -x * oneOverRadius / sqrt(
60  (1 + y * oneOverRadius) * (1 + y * oneOverRadius) + x * oneOverRadius * x * oneOverRadius);
61 
62  return sinAngle;
63 }

◆ strip()

int InDetDD::SCT_ModuleSideDesign::strip ( int  stripId1Dim) const
inlinevirtualinherited

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

Definition at line 275 of file SCT_ModuleSideDesign.h.

275  {
276  return stripId1Dim;
277 }

◆ strip1Dim()

int InDetDD::SCT_ModuleSideDesign::strip1Dim ( int  strip,
int  row 
) const
inlineoverridevirtualinherited

only relevant for SCT.

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

Reimplemented from InDetDD::SiDetectorDesign.

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

Definition at line 279 of file SCT_ModuleSideDesign.h.

279  {
280  return strip;
281 }

◆ stripPitch() [1/2]

double InDetDD::SCT_ForwardModuleSideDesign::stripPitch ( ) const
virtual

give the strip pitch (For Forward returns pitch at center)

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 108 of file SCT_ForwardModuleSideDesign.cxx.

109 {
110  // Use center.
111  const SCT_ForwardPolarPosition polarCenter(m_frame.radius(), 0);
112  // No longer make inActive check
113  // if (!m_geometry.inActiveArea(polar)) return 0;
114  return m_geometry.stripPitch(polarCenter);
115 }

◆ stripPitch() [2/2]

double InDetDD::SCT_ForwardModuleSideDesign::stripPitch ( const SiLocalPosition chargePos) const
virtual

give the strip pitch (dependence on position needed for forward)

Implements InDetDD::SCT_ModuleSideDesign.

Definition at line 99 of file SCT_ForwardModuleSideDesign.cxx.

100 {
101  const SCT_ForwardPolarPosition polar=m_frame.polarFromCartesian(chargePos);
102  // No longer make inActive check
103  // if (!m_geometry.inActiveArea(polar)) return 0;
104  return m_geometry.stripPitch(polar);
105 }

◆ swapHitEtaReadoutDirection()

bool InDetDD::SCT_ModuleSideDesign::swapHitEtaReadoutDirection ( ) const
inlineoverridevirtualinherited

Implements InDetDD::DetectorDesign.

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

Definition at line 267 of file SCT_ModuleSideDesign.h.

267  {
268  return false;
269 }

◆ swapHitPhiReadoutDirection()

bool InDetDD::SCT_ModuleSideDesign::swapHitPhiReadoutDirection ( ) const
inlineoverridevirtualinherited

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

Implements InDetDD::DetectorDesign.

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

Definition at line 263 of file SCT_ModuleSideDesign.h.

263  {
264  return m_swapStripReadout;
265 }

◆ 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::DetectorDesign::type ( ) const
virtualinherited

Type of element.

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

Definition at line 101 of file DetectorDesign.cxx.

101  {
102  // Default is Undefined.
103  return InDetDD::Undefined;
104 }

◆ width()

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

Method to calculate average width of a module.

Implements InDetDD::DetectorDesign.

Definition at line 160 of file SCT_ForwardModuleSideDesign.cxx.

161 {
162  return m_geometry.width();
163 }

Member Data Documentation

◆ m_bounds

Trk::TrapezoidBounds InDetDD::SCT_ForwardModuleSideDesign::m_bounds
private

Definition at line 175 of file SCT_ForwardModuleSideDesign.h.

◆ m_carrierType

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

Definition at line 240 of file DetectorDesign.h.

◆ m_childDesigns

std::map<int, const SCT_ModuleSideDesign *> InDetDD::SCT_ModuleSideDesign::m_childDesigns
privateinherited

Definition at line 210 of file SCT_ModuleSideDesign.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::SCT_ModuleSideDesign::m_detectorType {Undefined}
protectedinherited

Definition at line 197 of file SCT_ModuleSideDesign.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_frame

SCT_ForwardFrameTransformation InDetDD::SCT_ForwardModuleSideDesign::m_frame
private

polar / cartesian frame transformation

Definition at line 174 of file SCT_ForwardModuleSideDesign.h.

◆ m_geometry

SCT_ForwardModuleSideGeometry InDetDD::SCT_ForwardModuleSideDesign::m_geometry
private

geometry of module side

Definition at line 173 of file SCT_ForwardModuleSideDesign.h.

◆ m_motherDesign

const SCT_ModuleSideDesign* InDetDD::SCT_ModuleSideDesign::m_motherDesign {nullptr}
privateinherited

Definition at line 208 of file SCT_ModuleSideDesign.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_readoutSidePosDepth

bool InDetDD::DetectorDesign::m_readoutSidePosDepth
privateinherited

Definition at line 246 of file DetectorDesign.h.

◆ m_scheme

SCT_ReadoutScheme InDetDD::SCT_ModuleSideDesign::m_scheme
protectedinherited

Definition at line 196 of file SCT_ModuleSideDesign.h.

◆ m_swapStripReadout

bool InDetDD::SCT_ModuleSideDesign::m_swapStripReadout
privateinherited

Definition at line 204 of file SCT_ModuleSideDesign.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::DetectorDesign::xAxis
@ xAxis
Definition: DetectorDesign.h:60
InDetDD::SCT_ReadoutScheme::cells
int cells() const
Definition: SCT_ReadoutScheme.h:123
InDetDD::SCT_ReadoutScheme::diodes
int diodes() const
Definition: SCT_ReadoutScheme.h:118
beamspotman.r
def r
Definition: beamspotman.py:676
InDetDD::DetectorDesign::m_etaSymmetric
bool m_etaSymmetric
Definition: DetectorDesign.h:243
InDetDD::SCT_ForwardModuleSideDesign::angularPitch
double angularPitch() const
Angular pitch.
Definition: SCT_ForwardModuleSideDesign.h:208
InDetDD::DetectorDesign::m_phiSymmetric
bool m_phiSymmetric
Definition: DetectorDesign.h:242
InDetDD::DetectorDesign::depthSymmetric
bool depthSymmetric() const
Definition: DetectorDesign.h:287
InDetDD::SCT_ForwardModuleSideDesign::length
virtual double length() const
Method to calculate length of a module.
Definition: SCT_ForwardModuleSideDesign.cxx:155
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::DetectorDesign::etaSymmetric
bool etaSymmetric() const
Definition: DetectorDesign.h:283
InDetDD::DetectorDesign::m_carrierType
InDetDD::CarrierType m_carrierType
Definition: DetectorDesign.h:240
InDetDD::DetectorDesign::m_depthAxis
Axis m_depthAxis
Definition: DetectorDesign.h:238
index
Definition: index.py:1
InDetDD::SCT_ForwardModuleSideDesign::minWidth
virtual double minWidth() const
Method to calculate minimum width of a module.
Definition: SCT_ForwardModuleSideDesign.cxx:165
InDetDD::SCT_ModuleSideDesign::m_childDesigns
std::map< int, const SCT_ModuleSideDesign * > m_childDesigns
Definition: SCT_ModuleSideDesign.h:210
InDetDD::SCT_ModuleSideDesign::m_swapStripReadout
bool m_swapStripReadout
Definition: SCT_ModuleSideDesign.h:204
InDetDD::DetectorDesign::yAxis
@ yAxis
Definition: DetectorDesign.h:60
InDetDD::SCT_ForwardModuleSideGeometry::halfHeight1
double halfHeight1() const
inner crystal half height:
Definition: SCT_ForwardModuleSideGeometry.h:171
InDetDD::SCT_ModuleSideDesign::strip
virtual int strip(int stripId1Dim) const
Definition: SCT_ModuleSideDesign.h:275
InDetDD::SCT_ForwardModuleSideGeometry::deadAreaUpperBoundary
double deadAreaUpperBoundary() const
give upper boundary of dead area
Definition: SCT_ForwardModuleSideGeometry.cxx:216
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
InDetDD::SCT_ForwardFrameTransformation::polarFromCartesian
SCT_ForwardPolarPosition polarFromCartesian(const SiLocalPosition &cartesian) const
create a SCT_ForwardPolarPosition from a SiLocalPosition
Definition: SCT_ForwardFrameTransformation.cxx:54
InDetDD::SCT_ForwardModuleSideGeometry::minWidth
double minWidth() const
Method to calculate minimum width of a module.
Definition: SCT_ForwardModuleSideGeometry.cxx:187
InDetDD::SCT_ForwardModuleSideGeometry::radius2
double radius2() const
r from outer crystal (if present) center to beam:
Definition: SCT_ForwardModuleSideGeometry.h:176
InDetDD::SCT_ForwardModuleSideDesign::m_bounds
Trk::TrapezoidBounds m_bounds
Definition: SCT_ForwardModuleSideDesign.h:175
InDetDD::DetectorDesign::m_phiAxis
Axis m_phiAxis
Definition: DetectorDesign.h:237
InDetDD::SCT_ForwardModuleSideGeometry::deadAreaLowerBoundary
double deadAreaLowerBoundary() const
give lower boundary of dead area
Definition: SCT_ForwardModuleSideGeometry.cxx:222
InDetDD::SCT_ReadoutScheme::shift
int shift() const
Definition: SCT_ReadoutScheme.h:128
InDetDD::SCT_ForwardModuleSideGeometry::radius1
double radius1() const
r from inner crystal center to beam:
Definition: SCT_ForwardModuleSideGeometry.h:161
InDetDD::DetectorDesign::readoutSide
int readoutSide() const
ReadoutSide.
Definition: DetectorDesign.h:291
InDetDD::SCT_ForwardModuleSideDesign::radius
double radius() const
Nominal center radius of double wafer.
Definition: SCT_ForwardModuleSideDesign.h:184
InDetDD::DetectorDesign::carrierType
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
Definition: DetectorDesign.h:275
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
InDetDD::SCT_ForwardModuleSideGeometry::deadAreaLength
double deadAreaLength() const
give length of dead area
Definition: SCT_ForwardModuleSideGeometry.cxx:204
InDetDD::SCT_ModuleSideDesign::crystals
int crystals() const
number of crystals within module side:
Definition: SCT_ModuleSideDesign.h:216
InDetDD::SCT_ModuleSideDesign::shift
int shift() const
number of edge strips before first readout strip.
Definition: SCT_ModuleSideDesign.h:232
InDetDD::DetectorDesign::m_etaAxis
Axis m_etaAxis
Definition: DetectorDesign.h:236
x
#define x
InDetDD::SCT_ModuleSideDesign::cells
int cells() const
number of readout stips within module side:
Definition: SCT_ModuleSideDesign.h:228
InDetDD::SCT_ForwardModuleSideDesign::maxWidth
virtual double maxWidth() const
Method to calculate maximum width of a module.
Definition: SCT_ForwardModuleSideDesign.cxx:170
InDetDD::SCT_ForwardFrameTransformation::radius
double radius() const
r from module center to beam:
Definition: SCT_ForwardFrameTransformation.h:101
InDetDD::SiLocalPosition::xPhi
double xPhi() const
position along phi direction:
Definition: SiLocalPosition.h:123
InDetDD::SCT_ForwardModuleSideGeometry::angularPitch
double angularPitch() const
Definition: SCT_ForwardModuleSideGeometry.h:196
InDetDD::SCT_ModuleSideDesign::m_motherDesign
const SCT_ModuleSideDesign * m_motherDesign
Definition: SCT_ModuleSideDesign.h:208
InDetDD::SCT_ReadoutScheme::connectedCell
SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const
Definition: SCT_ReadoutScheme.h:141
InDetDD::SCT_ForwardModuleSideGeometry::distanceToDetectorEdge
void distanceToDetectorEdge(const SiLocalPosition &localPosition, const SCT_ForwardPolarPosition &polarPos, double &etaDist, double &phiDist) const
Definition: SCT_ForwardModuleSideGeometry.cxx:84
InDetDD::SCT_ForwardModuleSideGeometry::inActiveArea
bool inActiveArea(const SiLocalPosition &chargePosition, bool checkBondGap=true) const
check if position is in active area
Definition: SCT_ForwardModuleSideGeometry.cxx:110
InDetDD::SCT_ModuleSideDesign::localPositionOfCell
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const override=0
id -> position
InDetDD::SCT_ReadoutScheme::numberOfConnectedCells
int numberOfConnectedCells(const SiReadoutCellId &readoutId) const
Definition: SCT_ReadoutScheme.h:133
InDetDD::SCT_ForwardModuleSideDesign::inActiveArea
virtual bool inActiveArea(const SiLocalPosition &chargePos, bool checkBondGap=true) const
check if the position is in active area
Definition: SCT_ForwardModuleSideDesign.cxx:81
InDetDD::SCT_ModuleSideDesign::m_scheme
SCT_ReadoutScheme m_scheme
Definition: SCT_ModuleSideDesign.h:196
InDetDD::SCT_ForwardModuleSideGeometry::stripPitch
double stripPitch(const SCT_ForwardPolarPosition &polarPos) const
give the strip pitch (dependence on position needed for forward)
Definition: SCT_ForwardModuleSideGeometry.cxx:154
InDetDD::SCT_ForwardModuleSideDesign::stripPitch
virtual double stripPitch() const
give the strip pitch (For Forward returns pitch at center)
Definition: SCT_ForwardModuleSideDesign.cxx:108
InDetDD::SCT_ForwardModuleSideGeometry::length
double length() const
Method to calculate length of a module.
Definition: SCT_ForwardModuleSideGeometry.cxx:175
InDetDD::SCT_ModuleSideDesign::diodes
int diodes() const
number of strips within crystal:
Definition: SCT_ModuleSideDesign.h:220
InDetDD::SCT_ReadoutScheme::crystals
int crystals() const
Definition: SCT_ReadoutScheme.h:113
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::SCT_ForwardModuleSideGeometry::halfHeight2
double halfHeight2() const
outer crystal (if present) half height:
Definition: SCT_ForwardModuleSideGeometry.h:181
InDetDD::SCT_ForwardFrameTransformation::cartesianFromPolar
SiLocalPosition cartesianFromPolar(const SCT_ForwardPolarPosition &polar) const
create a SiLocalPosition from a SCT_ForwardPolarPosition
Definition: SCT_ForwardFrameTransformation.cxx:65
InDetDD::DetectorDesign::phiAxis
Axis phiAxis() const
local axis corresponding to phi direction:
Definition: DetectorDesign.h:263
python.selection.number
number
Definition: selection.py:20
InDetDD::SCT_ForwardModuleSideDesign::m_frame
SCT_ForwardFrameTransformation m_frame
polar / cartesian frame transformation
Definition: SCT_ForwardModuleSideDesign.h:174
InDetDD::SCT_ModuleSideDesign::readoutIdOfCell
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const override
diode id -> readout id
Definition: SCT_ModuleSideDesign.h:251
InDetDD::SCT_ForwardModuleSideGeometry::width
double width() const
Method to calculate average width of a module.
Definition: SCT_ForwardModuleSideGeometry.cxx:181
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::TrapezoidBounds
Definition: TrapezoidBounds.h:43
InDetDD::SCT_ForwardModuleSideGeometry::scaledDistanceToNearestDiode
double scaledDistanceToNearestDiode(const SCT_ForwardPolarPosition &polarPos) const
give distance to the nearest diode in units of pitch, from 0.0 to 0.5, this method should be fast as ...
Definition: SCT_ForwardModuleSideGeometry.cxx:163
InDetDD::DetectorDesign::cellIdOfPosition
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const =0
position -> id
InDetDD::SCT_ReadoutScheme::readoutIdOfCell
SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const
Definition: SCT_ReadoutScheme.cxx:53
InDetDD::SCT_ForwardModuleSideGeometry::radius
double radius() const
Nominal center radius of double wafer.
Definition: SCT_ForwardModuleSideGeometry.h:166
InDetDD::SCT_ForwardModuleSideDesign::m_geometry
SCT_ForwardModuleSideGeometry m_geometry
geometry of module side
Definition: SCT_ForwardModuleSideDesign.h:173
y
#define y
InDetDD::DetectorDesign::phiSymmetric
bool phiSymmetric() const
Definition: DetectorDesign.h:279
InDetDD::SCT_ForwardModuleSideGeometry::nearBondGap
bool nearBondGap(const SiLocalPosition &localPosition, double etaTol) const
Test if near bond gap within tolerances.
Definition: SCT_ForwardModuleSideGeometry.cxx:99
InDetDD::DetectorDesign::m_depthSymmetric
bool m_depthSymmetric
Definition: DetectorDesign.h:244
LArCellBinning.step
step
Definition: LArCellBinning.py:158
InDetDD::DetectorDesign::m_readoutSidePosDepth
bool m_readoutSidePosDepth
Definition: DetectorDesign.h:246
InDetDD::Undefined
@ Undefined
Definition: DetectorDesign.h:46
InDetDD::DetectorDesign::etaAxis
Axis etaAxis() const
local axis corresponding to eta direction:
Definition: DetectorDesign.h:259
InDetDD::SCT_ForwardModuleSideGeometry::maxWidth
double maxWidth() const
Method to calculate maximum width of a module.
Definition: SCT_ForwardModuleSideGeometry.cxx:193
InDetDD::SCT_ModuleSideDesign::SCT_ModuleSideDesign
SCT_ModuleSideDesign()
InDetDD::DetectorDesign::zAxis
@ zAxis
Definition: DetectorDesign.h:60
InDetDD::SCT_ForwardModuleSideDesign::width
virtual double width() const
Method to calculate average width of a module.
Definition: SCT_ForwardModuleSideDesign.cxx:160
InDetDD::Trapezoid
@ Trapezoid
Definition: DetectorDesign.h:42