|
ATLAS Offline Software
|
Go to the documentation of this file.
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,
42 crystals,diodes,
cells,shift,swapStripReadout,carrierType,readoutSide),
43 m_geometry(radius1,halfHeight1,radius2,halfHeight2,diodes,
step,crystals),
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
124 const double theta = polarPosition.
theta();
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;
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);
239 double clusterCenter =
strip - 0.5*
cells() + 0.5;
250 double stripLength =
length() /
cos(theta);
265 double theta = polar.
theta();
269 if (dstrip < 0)
return {};
270 int strip =
static_cast<int>(dstrip);
double angularPitch() const
Angular pitch.
virtual double length() const
Method to calculate length of a module.
double theta() const
theta coordinate of point:
virtual bool nearBondGap(const SiLocalPosition &localPosition, double etaTol) const
Test if near bond gap within tolerances.
virtual double minWidth() const
Method to calculate minimum width of a module.
double halfHeight1() const
inner crystal half height:
virtual int strip(int stripId1Dim) const
double deadAreaUpperBoundary() const
give upper boundary of dead area
double minWidth() const
Method to calculate minimum width of a module.
double radius2() const
r from outer crystal (if present) center to beam:
Trk::TrapezoidBounds m_bounds
double deadAreaLowerBoundary() const
give lower boundary of dead area
double radius1() const
r from inner crystal center to beam:
double radius() const
Nominal center radius of double wafer.
virtual SiDiodesParameters parameters(const SiCellId &cellId) const
readout or diode id -> position, size
virtual DetectorShape shape() const
Shape of element.
double deadAreaLength() const
give length of dead area
int crystals() const
number of crystals within module side:
int shift() const
number of edge strips before first readout strip.
int strip() const
Get strip number. Equivalent to phiIndex().
int cells() const
number of readout stips within module side:
virtual double maxWidth() const
Method to calculate maximum width of a module.
virtual double deadAreaLength() const
give length of dead area
virtual double deadAreaUpperBoundary() const
give upper boundary of dead area
double xPhi() const
position along phi direction:
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const
this method returns the ends of the strip
double angularPitch() const
virtual SiLocalPosition localPositionOfCluster(const SiCellId &cellId, int clusterSize) const
SCT_ForwardModuleSideDesign()
Forbidden default constructor.
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 ...
double xEta() const
position along eta direction:
void distanceToDetectorEdge(const SiLocalPosition &localPosition, const SCT_ForwardPolarPosition &polarPos, double &etaDist, double &phiDist) const
bool inActiveArea(const SiLocalPosition &chargePosition, bool checkBondGap=true) const
check if position is in active area
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const
Returns distance to nearest detector active edge +ve = inside -ve = outside.
virtual bool inActiveArea(const SiLocalPosition &chargePos, bool checkBondGap=true) const
check if the position is in active area
double stripPitch(const SCT_ForwardPolarPosition &polarPos) const
give the strip pitch (dependence on position needed for forward)
virtual double stripPitch() const
give the strip pitch (For Forward returns pitch at center)
double length() const
Method to calculate length of a module.
int diodes() const
number of strips within crystal:
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const
position -> id
double halfHeight2() const
outer crystal (if present) half height:
Axis phiAxis() const
local axis corresponding to phi direction:
virtual HepGeom::Vector3D< double > phiMeasureSegment(const SiLocalPosition &position) const
method for stereo angle computation - returns a vector parallel to the strip being hit
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const
id -> position
SCT_ForwardFrameTransformation m_frame
polar / cartesian frame transformation
virtual const Trk::SurfaceBounds & bounds() const
Element boundary.
double width() const
Method to calculate average width of a module.
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 ...
double sinStripAngleReco(double phiCoord, double etaCoord) const
Give strip angle in the reco frame.
SCT_ForwardModuleSideGeometry m_geometry
geometry of module side
bool nearBondGap(const SiLocalPosition &localPosition, double etaTol) const
Test if near bond gap within tolerances.
virtual double deadAreaLowerBoundary() const
give lower boundary of dead area
Axis etaAxis() const
local axis corresponding to eta direction:
double maxWidth() const
Method to calculate maximum width of a module.
virtual double width() const
Method to calculate average width of a module.