16#include "CLHEP/Units/SystemOfUnits.h"
17#include "CLHEP/Geometry/Vector3D.h"
28 const bool swapStripReadout,
31 const double halfHeight1,
33 const double halfHeight2,
35 const double etaCenter,
36 const double phiCenter,
44 m_frame(etaCenter,phiCenter,radius1)
47 double radius = 0.5 * (radius1 + radius2 + halfHeight2 - halfHeight1);
59 double sinAngle = -
x * oneOverRadius / sqrt(
60 (1 +
y * oneOverRadius) * (1 +
y * oneOverRadius) +
x * oneOverRadius *
x * oneOverRadius);
67 double & etaDist,
double & phiDist)
const
69 m_geometry.distanceToDetectorEdge(localPosition,
70 m_frame.polarFromCartesian(localPosition),
77 return m_geometry.nearBondGap(localPosition, etaTol);
85 return m_geometry.inActiveArea(chargePos, checkBondGap);
94 return m_geometry.scaledDistanceToNearestDiode(polar);
123 m_frame.polarFromCartesian(position);
137 return std::pair<SiLocalPosition,SiLocalPosition>(innerPoint,outerPoint);
148 HepGeom::Vector3D<double> notUnitVector;
152 return notUnitVector.unit();
200 double clusterCenter =
strip - 0.5*
cells() + 0.5;
207 return m_frame.cartesianFromPolar(polarPosition);
213 int clusterSize)
const
219 if (clusterSize < 1) clusterSize = 1;
223 double clusterCenter =
strip - 0.5*
cells() + 0.5;
224 if (clusterSize>1) clusterCenter += 0.5 * (clusterSize-1);
231 return m_frame.cartesianFromPolar(polarPosition);
239 double clusterCenter =
strip - 0.5*
cells() + 0.5;
269 if (dstrip < 0)
return {};
270 int strip =
static_cast<int>(dstrip);
Scalar theta() const
theta method
Axis etaAxis() const
local axis corresponding to eta direction:
double thickness() const
Method which returns thickness of the silicon wafer.
Axis phiAxis() const
local axis corresponding to phi direction:
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
int readoutSide() const
ReadoutSide.
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
Trk::TrapezoidBounds m_bounds
virtual double stripPitch() const
give the strip pitch (For Forward returns pitch at center)
virtual double length() const
Method to calculate length of a module.
virtual double deadAreaLength() const
give length of dead area
virtual const Trk::SurfaceBounds & bounds() const
Element boundary.
virtual double deadAreaLowerBoundary() const
give lower boundary of dead area
SCT_ForwardModuleSideGeometry m_geometry
geometry of module side
virtual HepGeom::Vector3D< double > phiMeasureSegment(const SiLocalPosition &position) const
method for stereo angle computation - returns a vector parallel to the strip being hit
virtual DetectorShape shape() const
Shape of element.
SCT_ForwardModuleSideDesign()
Forbidden default constructor.
virtual double deadAreaUpperBoundary() const
give upper boundary of dead area
virtual SiLocalPosition localPositionOfCluster(const SiCellId &cellId, int clusterSize) const
SCT_ForwardFrameTransformation m_frame
polar / cartesian frame transformation
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
Returns distance to nearest detector active edge +ve = inside -ve = outside.
virtual bool nearBondGap(const SiLocalPosition &localPosition, double etaTol) const
Test if near bond gap within tolerances.
double radius() const
Nominal center radius of double wafer.
virtual bool inActiveArea(const SiLocalPosition &chargePos, bool checkBondGap=true) const
check if the position is in active area
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const
this method returns the ends of the strip
virtual double maxWidth() const
Method to calculate maximum width of a module.
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
id -> position
double angularPitch() const
Angular pitch.
double sinStripAngleReco(double phiCoord, double etaCoord) const
Give strip angle in the reco frame.
virtual double minWidth() const
Method to calculate minimum width of a module.
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 ...
virtual double width() const
Method to calculate average width of a module.
2D position in polar coordinates for the polar frame in the SCT endcaps.
double theta() const
theta coordinate of point:
int diodes() const
number of strips within crystal:
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
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...
Identifier for the strip or pixel cell.
int strip() const
Get strip number. Equivalent to phiIndex().
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:
double xEta() const
position along eta direction:
Abstract base class for surface bounds to be specified.
Bounds for a trapezoidal, planar Surface.