11#ifndef READOUTGEOMETRYBASE_DETECTORDESIGN_H
12#define READOUTGEOMETRYBASE_DETECTORDESIGN_H
17#include "GeoModelKernel/RCBase.h"
21#include "CLHEP/Geometry/Point3D.h"
22#include "CLHEP/Geometry/Vector3D.h"
23#include "CLHEP/Geometry/Transform3D.h"
107 double etaTol)
const;
143 double &etaDist,
double &phiDist)
const = 0;
220 std::vector<SiCellId> &neighbours)
const = 0;
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
virtual DetectorShape shape() const
Shape of element.
virtual DetectorType type() const
Type of element.
virtual void distanceToDetectorEdge(const SiLocalPosition &localPosition, double &etaDist, double &phiDist) const =0
Returns distance to nearest detector active edge +ve = inside -ve = outside.
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...
DetectorDesign(double thickness, bool phiSymmetric, bool etaSymmetric, bool depthSymmetric, InDetDD::CarrierType carrierType, int readoutSide)
Constructor.
bool m_readoutSidePosDepth
virtual SiCellId connectedCell(const SiReadoutCellId &readoutId, int number) const =0
readout id -> id of connected diodes.
void setSymmetry(bool phiSymmetric, bool etaSymmetric, bool depthSymmetric)
Override default symmetries to prevent swapping of axes.
Axis etaAxis() const
local axis corresponding to eta direction:
Axis depthAxis() const
local axis corresponding to depth direction:
virtual void neighboursOfCell(const SiCellId &cellId, std::vector< SiCellId > &neighbours) const =0
Get the neighbouring diodes of a given diode: Cell for which the neighbours must be found List of cel...
virtual SiLocalPosition localPositionOfCell(const SiCellId &cellId) const =0
readout or diode id -> position.
virtual double etaPitch() const =0
virtual bool swapHitEtaReadoutDirection() const =0
virtual const Amg::Transform3D moduleShift() const
virtual bool swapHitPhiReadoutDirection() const =0
Return true if hit local direction is the same as readout direction.
bool depthSymmetric() const
virtual SiDiodesParameters parameters(const SiCellId &cellId) const =0
readout or diode id -> position, size
virtual const Trk::SurfaceBounds & bounds() const =0
Element boundary.
double thickness() const
Method which returns thickness of the silicon wafer.
virtual double maxWidth() const =0
Method to calculate maximum width of a module.
virtual double phiPitch() const =0
Pitch in phi direction.
virtual int numberOfConnectedCells(const SiReadoutCellId &readoutId) const =0
number of connected cells.
virtual SiReadoutCellId readoutIdOfPosition(const SiLocalPosition &localPos) const =0
position -> id
virtual SiCellId cellIdOfPosition(const SiLocalPosition &localPos) const =0
position -> id
virtual Amg::Vector3D sensorCenter() const
Return the centre of a sensor in the local reference frame.
virtual double minWidth() const =0
Method to calculate minimum width of a module.
DetectorDesign & operator=(const DetectorDesign &design)
virtual double length() const =0
Method to calculate length of a module.
bool etaSymmetric() const
virtual double phiPitch(const SiLocalPosition &localPosition) const =0
Pitch in phi direction.
Axis phiAxis() const
local axis corresponding to phi direction:
virtual SiCellId cellIdInRange(const SiCellId &cellId) const =0
Check if cell is in range.
bool phiSymmetric() const
virtual double width() const =0
Method to calculate average width of a module.
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
int readoutSide() const
ReadoutSide.
InDetDD::CarrierType m_carrierType
DetectorDesign(const DetectorDesign &design)
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.
Identifier for the strip or pixel cell.
Class to handle the position of the centre and the width of a diode or a cluster of diodes Version 1....
class to run intersection tests
Class to represent a position in the natural frame of a silicon sensor, for Pixel and SCT For Pixel: ...
Identifier for the strip or pixel readout cell.
Abstract base class for surface bounds to be specified.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration.
Ensure that the ATLAS eigen extensions are properly loaded.
std::string number(const double &d, const std::string &s)