9#ifndef INDETREADOUTGEOMETRY_SIDETECTORELEMENT_H
10#define INDETREADOUTGEOMETRY_SIDETECTORELEMENT_H
118 const GeoVFullPhysVol* geophysvol,
220 const std::vector<const Trk::Surface*>&
surfaces()
const;
493 MsgStream&
msg(MSG::Level lvl)
const;
Cached value with atomic update.
Cached value with atomic update.
Ensure that the extensions for the Vector3D are properly loaded.
Identifier for the strip or pixel cell.
Helper class to concentrate common items, such as the pointer to the IdHelper, the lorentzAngle tool ...
Base class for the detector design classes for Pixel and SCT.
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
InDetDD::CarrierType carrierType() const
carrier type for readout.
void setPrevInEta(const SiDetectorElement *element)
bool isInnermostPixelLayer() const
bool swapEtaReadoutDirection() const
For eta_index (only relevant for pixel) (inline)
double phiPitch() const
Pitch (inline methods)
bool nearBondGap(const Amg::Vector2D &localPosition, double etaTol) const
Test if near bond gap within tolerances.
virtual double get_rz() const override final
SiDetectorElement(const SiDetectorElement &)=delete
Don't allow copy constructor.
virtual Trk::DetectorElemType detectorType() const override final
TrkDetElementBase interface detectorType.
bool isStereo() const
Check if it is the stereo side (useful for SCT)
const SiDetectorElement * m_nextInPhi
void setPrevInPhi(const SiDetectorElement *element)
SiDetectorElement(const Identifier &id, const SiDetectorDesign *design, const GeoVFullPhysVol *geophysvol, const SiCommonItems *commonItems, const GeoAlignmentStore *geoAlignStore=nullptr)
Constructor with parameters.
std::pair< Amg::Vector3D, Amg::Vector3D > endsOfStrip(const Amg::Vector2D &position) const
Special method for SCT to retrieve the two ends of a "strip" Returned coordinates are in global frame...
void setNextInEta(const SiDetectorElement *element)
const SiDetectorElement * m_prevInPhi
Amg::Transform3D localToModuleFrame(const Amg::Transform3D &localTransform) const
Take a transform of the local element frame and return its equivalent in the module frame.
const SiDetectorElement * prevInPhi() const
double sinStereoImpl() const
Private implementation method with no lock at center.
CxxUtils::CachedValue< bool > m_isStereo
SiCellId gangedCell(const SiCellId &cellId) const
If cell is ganged return the id of the other cell which shares the readout for this cell,...
double sinStereo() const
Compute sin(stereo angle) at a given position: at center.
void commonConstructor()
Common code for constructors.
SiDetectorElement & operator=(SiDetectorElement &&)=delete
Don't allow move assignment operator.
Amg::Transform3D defModuleTransform() const
Default module to global frame transform, ie with no misalignment.
SiDetectorElement(SiDetectorElement &&)=delete
Don't allow move constructor.
const SiDetectorElement * nextInPhi() const
bool swapPhiReadoutDirection() const
Determine if readout direction between online and offline needs swapping.
MsgStream & msg(MSG::Level lvl) const
Declaring the Message method for further use (inline)
SiDetectorElement & operator=(const SiDetectorElement &)=delete
Don't allow assignment operator.
const SiDetectorElement * otherSide() const
Useful for SCT only.
const SiDetectorElement * prevInEta() const
double sinStereoLocal(const Amg::Vector2D &localPos) const
Angle of strip in local frame with respect to the etaAxis.
const SiDetectorElement * m_nextInEta
const SiDetectorElement * m_otherSide
const SiDetectorElement * m_prevInEta
void setOtherSide(const SiDetectorElement *element)
For SCT only.
void setNextInPhi(const SiDetectorElement *element)
double sinTilt() const
Compute sin(tilt angle) at a given position: at center.
virtual ~SiDetectorElement()
Destructor.
virtual Identifier identifierFromCellId(const SiCellId &cellId) const override final
Identifier <-> SiCellId (ie strip number or pixel eta_index,phi_index) Identifier from SiCellId (ie s...
const SiDetectorDesign * m_siDesign
Amg::Transform3D localToModuleTransform() const
Transformation from local element to module frame.
const Amg::Transform3D & moduleTransform() const
Module to global frame transform.
bool msgLvl(MSG::Level lvl) const
Declaring the Method providing Verbosity Level (inline)
const std::vector< const Trk::Surface * > & surfaces() const
Returns the full list of surfaces associated to this detector element.
bool isModuleFrame() const
Check if the element and module frame are the same.
bool isNextToInnermostPixelLayer() const
const SiDetectorElement * nextInEta() const
SiDetectorElement()=delete
Don't allow no-argument constructor.
CxxUtils::CachedValue< std::vector< const Trk::Surface * > > m_surfaces
bool determineStereo() const
Find isStereo.
Class to hold geometrical description of a solid state detector element.
Amg::Vector2D localPosition(const HepGeom::Point3D< double > &globalPosition) const
transform a global position into a 2D local position (reconstruction frame) (inline)
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Affine3d Transform3D
Ensure that the ATLAS eigen extensions are properly loaded.