12#ifndef INDETREADOUTGEOMETRY_SCT_MODULESIDEDESIGN_H
13#define INDETREADOUTGEOMETRY_SCT_MODULESIDEDESIGN_H
59 const bool swapStripReadout,
80 const bool swapStripReadout,
110 int cluserSize)
const = 0;
120 std::vector<SiCellId> &neighbours)
const override;
139 virtual std::pair<SiLocalPosition, SiLocalPosition>
174 virtual int row(
int stripId1Dim)
const;
175 virtual int strip(
int stripId1Dim)
const;
180 const std::map<int, const SCT_ModuleSideDesign *>&
getChildren()
const;
238 return m_scheme.numberOfConnectedCells(readoutId);
253 return m_scheme.readoutIdOfCell(cellId);
bool depthSymmetric() const
double thickness() const
Method which returns thickness of the silicon wafer.
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const =0
position -> id
bool etaSymmetric() const
bool phiSymmetric() const
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
int readoutSide() const
ReadoutSide.
virtual bool swapHitPhiReadoutDirection() const override
Return true if hit local direction is the same as readout direction.
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const override
diode id -> readout id
std::map< int, const SCT_ModuleSideDesign * > m_childDesigns
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.
SCT_ModuleSideDesign & operator=(const SCT_ModuleSideDesign &design)
int diodes() const
number of strips within crystal:
void addChildDesign(int index, const SCT_ModuleSideDesign *element)
virtual double deadAreaUpperBoundary() const =0
give upper boundary of dead area
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const override=0
id -> position
int cells() const
number of readout stips within module side:
virtual bool swapHitEtaReadoutDirection() const override
int crystals() const
number of crystals within module side:
virtual double scaledDistanceToNearestDiode(const SiLocalPosition &chargePos) const =0
give distance to the nearest diode in units of pitch, from 0.0 to 0.5, this method should be fast as ...
virtual double stripPitch() const =0
give the strip pitch (For Forward returns pitch at center)
virtual int strip(int stripId1Dim) const
const SCT_ModuleSideDesign * m_motherDesign
int shift() const
number of edge strips before first readout strip.
virtual double deadAreaLength() const =0
give length of dead area
virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition &localPos) const override
position -> id
const std::map< int, const SCT_ModuleSideDesign * > & getChildren() const
const SCT_ModuleSideDesign * getMother() const
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 bool inActiveArea(const SiLocalPosition &chargePos, bool checkBondGap=true) const =0
check if the position is in active area
virtual int row(int stripId1Dim) const
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 un...
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 double stripPitch(const SiLocalPosition &chargePos) const =0
give the strip pitch (dependence on position needed for forward)
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...
virtual int strip1Dim(int strip, int row) const override
only relevant for SCT.
virtual SiLocalPosition localPositionOfCluster(const SiCellId &cellId, int cluserSize) const =0
virtual double deadAreaLowerBoundary() const =0
give lower boundary of dead area
void setMother(SCT_ModuleSideDesign *mother)
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const override
readout id -> id of connected diodes.
virtual int diodesInRow(const int row) const
virtual SiCellId gangedCell(const SiCellId &cellId) const override
If cell is ganged return the other cell, otherwise return an invalid id.
SCT_ReadoutScheme m_scheme
SCT_ModuleSideDesign(const SCT_ModuleSideDesign &design)
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const override=0
give the ends of strips
InDetDD::DetectorType m_detectorType
virtual ~SCT_ModuleSideDesign()=default
Destructor:
Definition of the readout scheme in the SCT detector describing, number of sides, cells,...
Identifier for the strip or pixel cell.
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: ...
Identifier for the strip or pixel readout cell.
std::string number(const double &d, const std::string &s)