|
ATLAS Offline Software
|
#include <HGTD_DetectorElement.h>
Class to hold geometrical description of an HGTD detector element. A detector element in this case is a single module in the HGTD.
Definition at line 40 of file HGTD_DetectorElement.h.
◆ HGTD_DetectorElement()
◆ ~HGTD_DetectorElement()
InDetDD::HGTD_DetectorElement::~HGTD_DetectorElement |
( |
| ) |
|
|
virtual |
◆ bounds() [1/2]
|
finaloverridevirtualinherited |
◆ bounds() [2/2]
|
finaloverridevirtualinherited |
◆ carrierType()
◆ cellIdFromIdentifier()
◆ cellIdOfPosition()
◆ center() [1/2]
|
finaloverridevirtualinherited |
◆ center() [2/2]
|
finaloverridevirtualinherited |
◆ commonConstructor()
void InDetDD::SolidStateDetectorElementBase::commonConstructor |
( |
| ) |
|
|
privateinherited |
◆ connectedCell()
SiCellId InDetDD::SolidStateDetectorElementBase::connectedCell |
( |
const SiCellId |
cellId, |
|
|
int |
number |
|
) |
| const |
|
inherited |
◆ defTransform()
◆ defTransformCLHEP()
const HepGeom::Transform3D InDetDD::SolidStateDetectorElementBase::defTransformCLHEP |
( |
| ) |
const |
|
inherited |
◆ depthAngle()
double InDetDD::SolidStateDetectorElementBase::depthAngle |
( |
| ) |
const |
|
inherited |
◆ depthDirection()
bool InDetDD::SolidStateDetectorElementBase::depthDirection |
( |
| ) |
const |
|
inherited |
Return information on orientation.
◆ design()
|
inlinefinaloverridevirtual |
◆ detectorType()
◆ detectorTypeString()
std::string Trk::TrkDetElementBase::detectorTypeString |
( |
| ) |
const |
|
inherited |
◆ etaAngle()
double InDetDD::SolidStateDetectorElementBase::etaAngle |
( |
| ) |
const |
|
inherited |
◆ etaAxis()
◆ etaAxisCLHEP()
const HepGeom::Vector3D< double > & InDetDD::SolidStateDetectorElementBase::etaAxisCLHEP |
( |
| ) |
const |
|
inherited |
Get reconstruction local eta axes in global frame.
In direction of increasing z in the barrel and increasing r in the endcap.
Definition at line 81 of file SolidStateDetectorElementBase.cxx.
84 return m_cache.ptr()->m_etaAxisCLHEP;
◆ etaDirection()
bool InDetDD::SolidStateDetectorElementBase::etaDirection |
( |
| ) |
const |
|
inherited |
◆ etaPitch()
double InDetDD::SolidStateDetectorElementBase::etaPitch |
( |
| ) |
const |
|
inherited |
Pitch (inline methods)
NOTE: phiPitch is ambiguous for the Forward SCT where it varies along the strip.
etaPitch is ambiguous for the pixel which has long pixels between FE chips.
For these cases:
phiPitch: For SCT Forward returns pitch at center.
etaPitch: For pixel returns average pitch. (Active_length/number_of_cells)
All return pitch in distance units.
◆ get_rz()
double InDetDD::HGTD_DetectorElement::get_rz |
( |
| ) |
const |
|
finaloverridevirtual |
◆ getCommonItems()
◆ getCorners()
void InDetDD::SolidStateDetectorElementBase::getCorners |
( |
HepGeom::Point3D< double > * |
corners | ) |
const |
|
privateinherited |
Return the four corners of an element in local coordinates.
Pass it an array of length 4. This function is used by getEtaPhiRegion()
Definition at line 551 of file SolidStateDetectorElementBase.cxx.
561 double tmpLength =
length();
564 corners[0][
distPhi] = -0.5 * tmpMinWidth;
565 corners[0][
distEta] = -0.5 * tmpLength;
569 corners[1][
distPhi] = 0.5 * tmpMinWidth;
570 corners[1][
distEta] = -0.5 * tmpLength;
574 corners[2][
distPhi] = 0.5 * tmpMaxWidth;
575 corners[2][
distEta] = 0.5 * tmpLength;
579 corners[3][
distPhi] = -0.5 * tmpMaxWidth;
580 corners[3][
distEta] = 0.5 * tmpLength;
◆ getEtaPhiPoint()
void InDetDD::SolidStateDetectorElementBase::getEtaPhiPoint |
( |
const HepGeom::Point3D< double > & |
point, |
|
|
double |
deltaZ, |
|
|
double & |
etaMin, |
|
|
double & |
etaMax, |
|
|
double & |
phi |
|
) |
| const |
|
privateinherited |
Get eta and phi coresponding to a point in local coordinates.
Requires as input the vertex spread. Returns etaMin, etaMax, and phi. This function is used by getEtaPhiRegion()
Definition at line 589 of file SolidStateDetectorElementBase.cxx.
595 double r = globalPoint.perp();
596 double z = globalPoint.z();
598 double thetaMin = std::atan2(
r,(
z +
deltaZ));
600 double thetaMax = std::atan2(
r,(
z -
deltaZ));
603 phi = globalPoint.phi();
◆ getEtaPhiRegion()
void InDetDD::SolidStateDetectorElementBase::getEtaPhiRegion |
( |
double |
deltaZ, |
|
|
double & |
etaMin, |
|
|
double & |
etaMax, |
|
|
double & |
phiMin, |
|
|
double & |
phiMax, |
|
|
double & |
rz |
|
) |
| const |
|
inherited |
Method for building up region of interest table.
Get eta/phi extent for the element. Returns min/max eta and phi and r (for barrel) or z (for endcap) Takes as input the vertex spread in z (-deltaZ to +deltaZ)
Definition at line 140 of file SolidStateDetectorElementBase.cxx.
143 HepGeom::Point3D<double> corners[4];
148 double phiOffset = 0.;
150 for (
auto & corner : corners) {
151 double etaMinPoint = 0.;
152 double etaMaxPoint = 0.;
153 double phiPoint = 0.;
163 if (phiPoint < -0.5 *
M_PI) {
164 phiOffset = -0.5 *
M_PI;
165 }
else if (phiPoint > 0.5 *
M_PI) {
166 phiOffset = 0.5 *
M_PI;
172 phiPoint -= phiOffset;
174 if (phiPoint < -
M_PI) phiPoint += 2. *
M_PI;
175 if (phiPoint >
M_PI) phiPoint -= 2. *
M_PI;
◆ getExtent()
void InDetDD::SolidStateDetectorElementBase::getExtent |
( |
CachedVals & |
cache | ) |
const |
|
privateinherited |
Calculate extent in r,z and phi.
The values are cached and there are rMin(), rMax etc methods. It is only used from updateCache
Definition at line 483 of file SolidStateDetectorElementBase.cxx.
486 double radialShift = sensorCenter[0];
488 HepGeom::Point3D<double> corners[4];
493 double phiOffset = 0.;
498 for (
auto & corner : corners) {
500 corner.transform(rShift);
504 HepGeom::Point3D<double> globalPoint = cache.m_transformCLHEP * corner;
506 double rPoint = globalPoint.perp();
507 double zPoint = globalPoint.z();
508 double phiPoint = globalPoint.phi();
516 if (phiPoint < -0.5 *
M_PI) {
517 phiOffset = -0.5 *
M_PI;
518 }
else if (phiPoint > 0.5 *
M_PI) {
519 phiOffset = 0.5 *
M_PI;
521 cache.m_minPhi = cache.m_maxPhi = phiPoint - phiOffset;
522 cache.m_minR = cache.m_maxR = rPoint;
523 cache.m_minZ = cache.m_maxZ = zPoint;
526 phiPoint -= phiOffset;
528 if (phiPoint < -
M_PI) phiPoint += 2. *
M_PI;
529 if (phiPoint >
M_PI) phiPoint -= 2. *
M_PI;
530 cache.m_minPhi =
std::min(cache.m_minPhi, phiPoint);
531 cache.m_maxPhi =
std::max(cache.m_maxPhi, phiPoint);
532 cache.m_minR =
std::min(cache.m_minR, rPoint);
533 cache.m_maxR =
std::max(cache.m_maxR, rPoint);
534 cache.m_minZ =
std::min(cache.m_minZ, zPoint);
535 cache.m_maxZ =
std::max(cache.m_maxZ, zPoint);
541 cache.m_minPhi += phiOffset;
542 cache.m_maxPhi += phiOffset;
543 if (cache.m_minPhi < -
M_PI) cache.m_minPhi += 2. *
M_PI;
544 if (cache.m_minPhi >
M_PI) cache.m_minPhi -= 2. *
M_PI;
545 if (cache.m_maxPhi < -
M_PI) cache.m_maxPhi += 2. *
M_PI;
546 if (cache.m_maxPhi >
M_PI) cache.m_maxPhi -= 2. *
M_PI;
◆ getIdHelper()
Returns the id helper (inline)
◆ globalPosition() [1/3]
as in previous method but for 2D local position (inline)
◆ globalPosition() [2/3]
◆ globalPosition() [3/3]
HepGeom::Point3D<double> InDetDD::SolidStateDetectorElementBase::globalPosition |
( |
const HepGeom::Point3D< double > & |
localPos | ) |
const |
|
inherited |
transform a reconstruction local position into a global position (inline):
◆ globalPositionHit() [1/2]
◆ globalPositionHit() [2/2]
HepGeom::Point3D<double> InDetDD::SolidStateDetectorElementBase::globalPositionHit |
( |
const HepGeom::Point3D< double > & |
simulationLocalPos | ) |
const |
|
inherited |
transform a hit local position into a global position (inline):
◆ hitDepthDirection()
double InDetDD::SolidStateDetectorElementBase::hitDepthDirection |
( |
| ) |
const |
|
inherited |
Directions of hit depth,phi,eta axes relative to reconstruction local position axes (LocalPosition).
Returns +/-1. inline
◆ hitEtaDirection()
double InDetDD::SolidStateDetectorElementBase::hitEtaDirection |
( |
| ) |
const |
|
inherited |
See previous method.
inline
◆ hitLocalToLocal()
Amg::Vector2D InDetDD::SolidStateDetectorElementBase::hitLocalToLocal |
( |
double |
xEta, |
|
|
double |
xPhi |
|
) |
| const |
|
inherited |
Simulation/Hit local frame to reconstruction local frame.
2D. TODO: Will change order of parameters at some point.
Definition at line 95 of file SolidStateDetectorElementBase.cxx.
100 if (!
dir.m_etaDirection) xEta = -xEta;
101 if (!
dir.m_phiDirection) xPhi = -xPhi;
108 double r = std::hypot(
x,
y);
109 double phi = std::atan2(
y,
x);
◆ hitLocalToLocal3D()
HepGeom::Point3D< double > InDetDD::SolidStateDetectorElementBase::hitLocalToLocal3D |
( |
const HepGeom::Point3D< double > & |
hitPosition | ) |
const |
|
inherited |
Same as previuos method but 3D.
Definition at line 117 of file SolidStateDetectorElementBase.cxx.
124 double xPhi = hitPosition[
m_hitPhi];
125 double xEta = hitPosition[
m_hitEta];
126 if (!
dir.m_depthDirection) xDepth = -xDepth;
127 if (!
dir.m_phiDirection) xPhi = -xPhi;
128 if (!
dir.m_etaDirection) xEta = -xEta;
129 return {xPhi, xEta, xDepth};
◆ hitPhiDirection()
double InDetDD::SolidStateDetectorElementBase::hitPhiDirection |
( |
| ) |
const |
|
inherited |
See previous method.
inline
◆ identifierFromCellId()
◆ identifierOfPosition()
◆ identify()
virtual Identifier InDetDD::SolidStateDetectorElementBase::identify |
( |
| ) |
const |
|
finaloverridevirtualinherited |
◆ identifyHash()
virtual IdentifierHash InDetDD::SolidStateDetectorElementBase::identifyHash |
( |
| ) |
const |
|
finaloverridevirtualinherited |
◆ inDetector() [1/2]
◆ inDetector() [2/2]
◆ invalidate()
void InDetDD::SolidStateDetectorElementBase::invalidate |
( |
| ) |
|
|
inherited |
Signal that cached values are no longer valid.
Invalidate general cache (inline)
◆ length()
double InDetDD::SolidStateDetectorElementBase::length |
( |
| ) |
const |
|
inherited |
Length in eta direction (z - barrel, r - endcap)
◆ localPosition() [1/2]
◆ localPosition() [2/2]
Amg::Vector2D InDetDD::SolidStateDetectorElementBase::localPosition |
( |
const HepGeom::Point3D< double > & |
globalPosition | ) |
const |
|
inherited |
transform a global position into a 2D local position (reconstruction frame) (inline)
◆ maxWidth()
double InDetDD::SolidStateDetectorElementBase::maxWidth |
( |
| ) |
const |
|
inherited |
Max width.
Needed for the SCT endcap.
◆ minWidth()
double InDetDD::SolidStateDetectorElementBase::minWidth |
( |
| ) |
const |
|
inherited |
Min width.
Needed for the SCT endcap.
◆ msg()
MsgStream& InDetDD::SolidStateDetectorElementBase::msg |
( |
MSG::Level |
lvl | ) |
const |
|
privateinherited |
Declaring the Message method for further use (inline)
◆ msgLvl()
bool InDetDD::SolidStateDetectorElementBase::msgLvl |
( |
MSG::Level |
lvl | ) |
const |
|
privateinherited |
Declaring the Method providing Verbosity Level (inline)
◆ normal() [1/2]
|
finaloverridevirtualinherited |
Get reconstruction local normal axes in global frame.
Choosen to give right-handed coordinate frame.
Implements Trk::TrkDetElementBase.
◆ normal() [2/2]
|
finaloverridevirtualinherited |
◆ numberOfConnectedCells()
int InDetDD::SolidStateDetectorElementBase::numberOfConnectedCells |
( |
const SiCellId |
cellId | ) |
const |
|
inherited |
Test if readout cell has more than one diode associated with it.
Number of cells sharing the same readout as this cell. ie generally 1 except for ganged pixels which will be 2.
Definition at line 243 of file SolidStateDetectorElementBase.cxx.
◆ phiAngle()
double InDetDD::SolidStateDetectorElementBase::phiAngle |
( |
| ) |
const |
|
inherited |
◆ phiAxis()
◆ phiAxisCLHEP()
const HepGeom::Vector3D< double > & InDetDD::SolidStateDetectorElementBase::phiAxisCLHEP |
( |
| ) |
const |
|
inherited |
To determine if readout direction between online and offline needs swapping, see methods swapPhiReadoutDirection() and swapEtaReadoutDirection() below in "Readout Cell id" section.
Orientation. Directions.
- phiAxis in same direction as increasing phi and identifier phi_index/strip. NB. This requires some flipping of axes with repsect to the hits.
- etaAxis in direction of increasing z in the barrel and increasing r in the endcap.
- normal choosen to give right-handed coordinate frame (x=normal,y=phiAxis,z=etaAxis) NB. This requires some flipping of axes with repsect to the hits.
Get reconstruction local phi axes in global frame. In same direction as increasing phi and identifier phi_index/strip.
Definition at line 67 of file SolidStateDetectorElementBase.cxx.
70 return m_cache.ptr()->m_phiAxisCLHEP;
◆ phiDirection()
bool InDetDD::SolidStateDetectorElementBase::phiDirection |
( |
| ) |
const |
|
inherited |
◆ phiMax()
double InDetDD::SolidStateDetectorElementBase::phiMax |
( |
| ) |
const |
|
inherited |
◆ phiMin()
double InDetDD::SolidStateDetectorElementBase::phiMin |
( |
| ) |
const |
|
inherited |
◆ phiPitch()
double InDetDD::SolidStateDetectorElementBase::phiPitch |
( |
| ) |
const |
|
inherited |
◆ rawLocalPositionOfCell() [1/2]
◆ rawLocalPositionOfCell() [2/2]
◆ recoToHitTransform()
const HepGeom::Transform3D InDetDD::SolidStateDetectorElementBase::recoToHitTransform |
( |
| ) |
const |
|
inherited |
Transform to go from local reconstruction frame to local hit frame.
Definition at line 607 of file SolidStateDetectorElementBase.cxx.
623 static const HepGeom::Vector3D<double> localAxes[3] = {
624 HepGeom::Vector3D<double>(1., 0., 0.),
625 HepGeom::Vector3D<double>(0., 1., 0.),
626 HepGeom::Vector3D<double>(0., 0., 1.)
630 int signPhi =
dir.m_phiDirection? +1:-1;
631 int signEta =
dir.m_etaDirection? +1:-1;
636 HepGeom::Point3D<double>(0., 0., 0.),
◆ rMax()
double InDetDD::SolidStateDetectorElementBase::rMax |
( |
| ) |
const |
|
inherited |
◆ rMin()
double InDetDD::SolidStateDetectorElementBase::rMin |
( |
| ) |
const |
|
inherited |
◆ setCache()
void InDetDD::SolidStateDetectorElementBase::setCache |
( |
| ) |
|
|
inherited |
Set/calculate cache values (inline)
◆ surface() [1/3]
Trk::Surface& InDetDD::SolidStateDetectorElementBase::surface |
( |
| ) |
|
|
inherited |
◆ surface() [2/3]
virtual const Trk::Surface& InDetDD::SolidStateDetectorElementBase::surface |
( |
| ) |
const |
|
finaloverridevirtualinherited |
◆ surface() [3/3]
|
finaloverridevirtualinherited |
◆ surfaces()
Returns the full list of surfaces associated to this detector element.
Definition at line 65 of file HGTD_DetectorElement.cxx.
70 std::vector<const Trk::Surface*>
s;
◆ swapEtaReadoutDirection()
bool InDetDD::SolidStateDetectorElementBase::swapEtaReadoutDirection |
( |
| ) |
const |
|
inherited |
For eta_index (only relevant for pixel) (inline)
◆ swapPhiReadoutDirection()
bool InDetDD::SolidStateDetectorElementBase::swapPhiReadoutDirection |
( |
| ) |
const |
|
inherited |
Determine if readout direction between online and offline needs swapping.
Returns true if online and offline numbers run in opposite directions. For strip/phi_index (inline)
◆ thickness()
double InDetDD::SolidStateDetectorElementBase::thickness |
( |
| ) |
const |
|
inherited |
◆ transform() [1/2]
|
finaloverridevirtualinherited |
◆ transform() [2/2]
|
finaloverridevirtualinherited |
◆ transformCLHEP()
const HepGeom::Transform3D & InDetDD::SolidStateDetectorElementBase::transformCLHEP |
( |
| ) |
const |
|
inherited |
◆ transformHit()
const GeoTrf::Transform3D& InDetDD::SolidStateDetectorElementBase::transformHit |
( |
| ) |
const |
|
inherited |
Local (simulation/hit frame) to global transform.
◆ updateCache()
void InDetDD::SolidStateDetectorElementBase::updateCache |
( |
| ) |
const |
|
virtualinherited |
Recalculate cached values.
Reimplemented in InDetDD::SiDetectorElement.
Definition at line 272 of file SolidStateDetectorElementBase.cxx.
284 cache.m_transformHit = (*ptrXf);
291 geotrf.setIdentity();
295 cache.m_transformHit = getMaterialGeom()->getAbsoluteTransform();
307 cache.m_centerCLHEP = HepGeom::Point3D<double>(cache.m_center[0],cache.m_center[1],cache.m_center[2]);
310 cache.m_origin = geoTransform * centerGeoModel;
334 bool setAxisDir =
false;
344 Amg::Vector3D globalDepthAxis(geoTransform.linear() * geoModelDepthAxis);
345 Amg::Vector3D globalPhiAxis(geoTransform.linear() * geoModelPhiAxis);
346 Amg::Vector3D globalEtaAxis(geoTransform.linear() * geoModelEtaAxis);
349 Amg::Vector3D unitR(cache.m_center.x(), cache.m_center.y(), 0.);
363 dir.m_barrelLike =
true;
365 if (std::abs(globalEtaAxis.dot(
nominalEta)) < 0.5) {
366 dir.m_barrelLike =
false;
369 if (
dir.m_barrelLike) {
371 nominalNormal = unitR;
373 nominalNormal(2) = -1.0;
382 dir.m_depthAngle = globalDepthAxis.dot(nominalNormal);
383 dir.m_depthDirection =
true;
384 if (
dir.m_depthAngle < 0) {
386 dir.m_depthDirection =
false;
392 ATH_MSG_ERROR(
"Orientation of local depth axis does not follow correct convention.");
393 dir.m_depthDirection =
true;
406 dir.m_phiAngle = globalPhiAxis.dot(nominalPhi);
407 dir.m_phiDirection =
true;
408 if (
dir.m_phiAngle < 0) {
410 dir.m_phiDirection =
false;
415 if (not isHGTD and std::abs(
dir.m_phiAngle) < 0.5) {
416 ATH_MSG_ERROR(
"Orientation of local xPhi axis does not follow correct convention.");
417 dir.m_phiDirection =
true;
424 dir.m_etaDirection =
true;
425 if (
dir.m_etaAngle < 0) {
427 dir.m_etaDirection =
false;
432 if (not isHGTD and std::abs(
dir.m_etaAngle) < 0.5) {
433 ATH_MSG_ERROR(
"Orientation of local xEta axis does not follow correct convention.");
434 dir.m_etaDirection =
true;
452 double det =
t(0,0) * (
t(1,1)*
t(2,2) -
t(1,2)*
t(2,1)) -
453 t(0,1) * (
t(1,0)*
t(2,2) -
t(1,2)*
t(2,0)) +
454 t(0,2) * (
t(1,0)*
t(2,1) -
t(1,1)*
t(2,0));
456 ATH_MSG_DEBUG(
"Local frame is left-handed. (hitEtaDirection, hitPhiDirection, hitDepthDirection) = ("
457 <<
dir.m_etaDirection <<
", "
458 <<
dir.m_phiDirection <<
", "
459 <<
dir.m_depthDirection <<
")");
466 cache.m_normal = cache.m_transform.linear() * localRecoDepthAxis;
468 cache.m_phiAxis = cache.m_transform.linear() * localRecoPhiAxis;
469 cache.m_etaAxis = cache.m_transform.linear() * localRecoEtaAxis;
472 cache.m_phiAxisCLHEP = HepGeom::Vector3D<double>(cache.m_phiAxis[0],cache.m_phiAxis[1],cache.m_phiAxis[2]);
473 cache.m_etaAxisCLHEP = HepGeom::Vector3D<double>(cache.m_etaAxis[0],cache.m_etaAxis[1],cache.m_etaAxis[2]);
476 m_cache.set (std::move (cache));
◆ width()
double InDetDD::SolidStateDetectorElementBase::width |
( |
| ) |
const |
|
inherited |
Methods from design (inline)
Width in phi direction. For the SCT endcap it returns the average width.
◆ zMax()
double InDetDD::SolidStateDetectorElementBase::zMax |
( |
| ) |
const |
|
inherited |
◆ zMin()
double InDetDD::SolidStateDetectorElementBase::zMin |
( |
| ) |
const |
|
inherited |
◆ m_axisDir
◆ m_cache
◆ m_commonItems
◆ m_design
◆ m_geoAlignStore
◆ m_hitDepth
◆ m_hitEta
◆ m_hitPhi
◆ m_id
Identifier InDetDD::SolidStateDetectorElementBase::m_id {} |
|
protectedinherited |
◆ m_idHash
◆ m_surface
std::unique_ptr<Trk::Surface> InDetDD::SolidStateDetectorElementBase::m_surface |
|
protectedinherited |
◆ m_surfaces
The documentation for this class was generated from the following files:
bool depthSymmetric() const
const T * ptr() const
Return a pointer to the cached value.
CxxUtils::CachedValue< std::vector< const Trk::Surface * > > m_surfaces
bool etaSymmetric() const
void getExtent(CachedVals &cache) const
Calculate extent in r,z and phi.
Scalar phi() const
phi method
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
void getCorners(HepGeom::Point3D< double > *corners) const
Return the four corners of an element in local coordinates.
virtual const Amg::Transform3D moduleShift() const
virtual Amg::Vector3D sensorCenter() const
Return the centre of a sensor in the local reference frame.
IdentifierHash m_idHash
hash id of this detector element
Eigen::Matrix< double, 2, 1 > Vector2D
bool isValid() const
Test to see if the value is valid.
virtual DetectorShape shape() const
Shape of element.
virtual const Amg::Vector3D & center() const override final
Center in global coordinates.
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const =0
readout or diode id -> position.
SolidStateDetectorElementBase()=delete
Don't allow no-argument constructor.
Trk::Surface & surface()
Element Surface.
const GeoAlignmentStore * m_geoAlignStore
int eta_index(const Identifier &id) const
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const =0
readout id -> id of connected diodes.
virtual const GeoTrf::Transform3D * getDefAbsPosition(const GeoNodePositioning *fullPhysVol) const override final
: Returns the nominal position of the full phyiscal volume.
bool is_valid() const
Check if id is in a valid state.
virtual int numberOfConnectedCells(const SiReadoutCellId &readoutId) const =0
number of connected cells.
const AtlasDetectorID * getIdHelper() const
Returns the id helper (inline)
const HGTD_ModuleDesign & design() const override final
access to the local description:
virtual DetectorElemType detectorType() const =0
Return the Detector element type.
CxxUtils::CachedValue< CachedVals > m_cache
std::unique_ptr< Trk::Surface > m_surface
int phi_index(const Identifier &id) const
virtual SiReadoutCellId readoutIdOfCell(const SiCellId &cellId) const =0
diode id -> readout id NB assignment of a SiReadoutCellId to a SiCellId is allowed so you are can pas...
virtual Identifier identifierFromCellId(const SiCellId &cellId) const =0
Identifier <-> SiCellId (ie strip number or pixel eta_index,phi_index) Identifier from SiCellId (ie s...
void getEtaPhiPoint(const HepGeom::Point3D< double > &point, double deltaZ, double &etaMin, double &etaMax, double &phi) const
Get eta and phi coresponding to a point in local coordinates.
const DetectorDesign * m_design
local description of this detector element
const HepGeom::Transform3D recoToHitTransform() const
Transform to go from local reconstruction frame to local hit frame.
virtual SiIntersect inDetector(const SiLocalPosition &localPosition, double phiTol, double etaTol) const
Test if point is in the active part of the detector with specified tolerances.
@ distEta
readout for silicon
virtual double get_rz() const =0
virtual const DetectorDesign & design() const
access to the local description (inline):
virtual void updateCache() const
Recalculate cached values.
Eigen::Affine3d Transform3D
virtual DetectorType type() const
Type of element.
bool is_valid() const
Check if id is in a valid state.
virtual const Trk::SurfaceBounds & bounds() const =0
Element boundary.
DetectorDesign::Axis m_hitDepth
DetectorDesign::Axis m_hitEta
Axes.
DetectorDesign::Axis m_hitPhi
void set(const T &val) const
Set the value, assuming it is currently invalid.
Identifier pixel_id(int endcap, int layer, int phi_module, int eta_module, int phi_index, int eta_index) const
For an individual pixel.
Eigen::Matrix< double, 3, 1 > Vector3D
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const =0
position -> id
Identifier m_id
identifier of this detector element
double minWidth() const
Min width.
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
const HepGeom::Transform3D defTransformCLHEP() const
Default Local (reconstruction frame) to global transform ie with no misalignment.
bool phiSymmetric() const
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
Amg::Vector2D localPosition(const HepGeom::Point3D< double > &globalPosition) const
transform a global position into a 2D local position (reconstruction frame) (inline)
double length() const
Length in eta direction (z - barrel, r - endcap)
virtual const GeoTrf::Transform3D * getAbsPosition(const GeoNodePositioning *fullPhysVol) const override final
: Returns the aligned transform associated with the full physical volume.
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const =0
SiCellId from Identifier.
bool is_hgtd(Identifier id) const
CxxUtils::CachedValue< AxisDir > m_axisDir
double maxWidth() const
Max width.