16#include "Identifier/Identifier.h"
41 const bool swapStripReadout,
57 const bool swapStripReadout,
64 stripDirection, thicknessDirection),
71 std::vector<SiCellId> &neighbours)
const {
73 neighbours.reserve(2);
80 int stripM =
strip - 1;
81 int stripP =
strip + 1;
84 neighbours.emplace_back(stripM);
87 neighbours.emplace_back(stripP);
111 const std::string errMsg=std::string(
"SCT_ModuleSideDesign already has a mother set!");
112 throw std::runtime_error(errMsg);
140 if (phiDist < -phiTol || etaDist < -etaTol) {
145 if (phiDist > phiTol && etaDist > etaTol) {
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const =0
Returns distance to nearest detector active edge +ve = inside -ve = outside.
bool depthSymmetric() const
double thickness() const
Method which returns thickness of the silicon wafer.
bool etaSymmetric() const
bool phiSymmetric() const
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
int readoutSide() const
ReadoutSide.
virtual std::pair< int, int > getStripRow(SiCellId id) const
Get the strip and row number of the cell.
virtual SiCellId cellIdInRange(const SiCellId &cellId) const override
Check if cell is in range.
int diodes() const
number of strips within crystal:
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const override=0
id -> position
int cells() const
number of readout stips within module side:
int crystals() const
number of crystals within module side:
virtual int strip(int stripId1Dim) const
const SCT_ModuleSideDesign * m_motherDesign
int shift() const
number of edge strips before first readout strip.
SCT_ModuleSideDesign(const double thickness, const bool phiSymmetric, const bool etaSymmetric, const bool depthSymmetric, const int crystals, const int diodes, const int cells, const int shift, const bool swapStripReadout, InDetDD::CarrierType carrierType, int readoutSide)
Constructor with parameters: local axis corresponding to eta direction local axis corresponding to ph...
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.
virtual SiLocalPosition positionFromStrip(const int stripNumber) const
gives position of strip center ALTERNATIVE/PREFERED way is to use localPositionOfCell(const SiCellId ...
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 cel...
void setMother(SCT_ModuleSideDesign *mother)
SCT_ReadoutScheme m_scheme
Identifier for the strip or pixel cell.
int strip() const
Get strip number. Equivalent to phiIndex().
bool isValid() const
Test if its in a valid state.
SiDetectorDesign(double thickness, bool phiSymmetric, bool etaSymmetric, bool depthSymmetric, InDetDD::CarrierType carrierType, int readoutSide)
Constructor.
class to run intersection tests
Class to represent a position in the natural frame of a silicon sensor, for Pixel and SCT For Pixel: ...