10#include "Identifier/Identifier.h"
22 const double &stripStartRadius,
23 const double &stripEndRadius) :
24 SCT_ModuleSideDesign(
thickness, true, true, true, 1, 0, 0, 0, false, carrier,
readoutSide, stripDirection, thicknessDirection) {
53 int stripM =
strip - 1;
54 int stripP =
strip + 1;
57 neighbours.emplace_back(stripM);
60 neighbours.emplace_back(stripP);
71 double phi = pos.phi();
84 double xEta =
r * std::cos(
phi);
85 double xPhi =
r * std::sin(
phi);
93 if (clusterSize <= 1) {
97 double clusterWidth = clusterSize *
m_pitch;
98 double phi = pos.phi() + clusterWidth *0.5;
101 pos.xPhi(
r * std::sin(
phi));
102 pos.xEta(
r * std::cos(
phi));
121 return std::pair<SiLocalPosition, SiLocalPosition>(end1, end2);
138 return std::abs(pos.xPhi() - posStrip.
xPhi()) /
m_pitch;
143 throw std::runtime_error(
"Call to StripAnnulusDesign::parameters; not yet implemented");
Scalar phi() const
phi method
double thickness() const
Method which returns thickness of the silicon wafer.
int readoutSide() const
ReadoutSide.
virtual int strip(int stripId1Dim) 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...
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.
Class to handle the position of the centre and the width of a diode or a cluster of diodes Version 1....
Class to represent a position in the natural frame of a silicon sensor, for Pixel and SCT For Pixel: ...
double xPhi() const
position along phi direction:
SiLocalPosition localPositionOfCluster(const SiCellId &cellId, int clusterSize) const
std::unique_ptr< Trk::RectangleBounds > m_bounds
double m_stripStartRadius
double minWidth() const
Method to calculate minimum width of a module.
double pitch(const SiCellId &cellId) const
SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
id -> position
bool inActiveArea(const SiLocalPosition &chargePos, bool checkBondGap=false) const
check if the position is in active area
double maxWidth() const
Method to calculate maximum width of a module.
const Trk::SurfaceBounds & bounds() const
Element boundary.
SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
SiCellId cellIdInRange(const SiCellId &) const
Check if cell is in range.
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 ...
double width() const
Method to calculate average width of a module.
Amg::Vector3D sensorCenter() const
Return the centre of a sensor in the local reference frame.
StripAnnulusDesign(const SiDetectorDesign::Axis &stripDirection, const SiDetectorDesign::Axis &thicknessDirection, const double &thickness, const int &readoutSide, const InDetDD::CarrierType &carrier, const int &nStrips, const double &pitch, const double &stripStart, const double &stripEnd)
SiLocalPosition positionFromStrip(const SiCellId &cellId) const
std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const
Give end points of the strip that covers the given position.
double length() const
Method to calculate length of a module.
SiDiodesParameters parameters(const SiCellId &cellId) const
Return strip width, centre, length etc. Hard to find if this is used or not.
static const Amg::Transform3D SiHitToGeoModel()
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...
Abstract base class for surface bounds to be specified.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis