Skip to content
Snippets Groups Projects

Common ReadoutGeometry Base Class for InDet and HGTD (SolidStateReadoutGeometry)

Merged Nicholas Styles requested to merge nstyles/athena:master-ReadoutGeometryBase into master
3 files
+ 2
223
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -50,9 +50,8 @@ namespace InDetDD {
*
* @class SolidStateDetectorElementBase
*
* Class to hold geometrical description of a silicon detector element.
* A detector element is a module in the pixels and one side of a module in the SCT.
* This class is shared between the Pixel and SCT detector since there is a lot of commonality.
* Class to hold geometrical description of a solid state detector element.
* This base class is shared between the InnerDetetector/ITk/HGTD since there is a lot of commonality.
*
* @par Coordinate Frames.
*
@@ -208,12 +207,6 @@ namespace InDetDD {
void setPrevInEta(const SolidStateDetectorElementBase* element);
void setNextInPhi(const SolidStateDetectorElementBase* element);
void setPrevInPhi(const SolidStateDetectorElementBase* element);
/**
* For SCT only
*/
void setOtherSide(const SolidStateDetectorElementBase* element);
//@}
/**
* @name Navigation
* Inline methods to access neighbours.
@@ -223,12 +216,6 @@ namespace InDetDD {
const SolidStateDetectorElementBase* prevInEta() const;
const SolidStateDetectorElementBase* nextInPhi() const;
const SolidStateDetectorElementBase* prevInPhi() const;
/**
* Useful for SCT only
*/
const SolidStateDetectorElementBase* otherSide() const;
//@}
/**
* @name Common items
* Inline method
@@ -283,13 +270,6 @@ namespace InDetDD {
* TrkDetElementBase interface (inline)
*/
virtual const Trk::Surface& surface(const Identifier&) const;
/**
* Returns the full list of surfaces associated to this detector element
*/
virtual const std::vector<const Trk::Surface*>& surfaces() const;
//@}
/**
* @name Transformation
*/
@@ -322,59 +302,6 @@ namespace InDetDD {
const HepGeom::Transform3D recoToHitTransform() const;
//@}
/**
* @name Module Frame
*
* Methods to help work with the module frame.
* This is mainly of of use in the SCT where the module frame can
* in general be different from the element frame. It is actully
* defined as the frame of one of the sides (currently the axial
* side), but using these methods one does not need to make any
* assumptions about what the actual frame is. In the following
* methods the local element frame is the local reconstruction
* frame of this element.
*/
//@{
/**
* Module to global frame transform.
* Includes misalignment. The module frame is defined to be the
* local reconstruction frame of the axial layer in the SCT. For
* the pixel it is the same as the element.
*/
//Not for base
//const Amg::Transform3D& moduleTransform() const;
/**
* Default module to global frame transform, ie with no misalignment.
* The module frame is defined to be the
* local reconstruction frame of the axial layer in the SCT. For
* the pixel it is the same as the element.
*/
//Not for base
//Amg::Transform3D defModuleTransform() const;
/**
* Take a transform of the local element frame and return its equivalent in the module frame.
*/
//No for base
//Amg::Transform3D localToModuleFrame(const Amg::Transform3D& localTransform) const;
/**
* Transformation from local element to module frame. This can be
* used to take a local position in the element frame and transform
* it to a position in the module frame. If one is already in the
* module frame it will return the Identity transform.
*/
//Not for base
//Amg::Transform3D localToModuleTransform() const;
/**
* Check if the element and module frame are the same.
*/
//Not for base
//bool isModuleFrame() const;
//@}
/**
* @name Orientation
*/
@@ -479,57 +406,6 @@ namespace InDetDD {
//@}
/**
* @name Angle
*/
//@{
/**
* Compute sin(tilt angle) at a given position:
* at center
*/
//Not for base?
//double sinTilt() const;
/**
* at given local position
*/
//Not for base?
//double sinTilt(const Amg::Vector2D& localPos) const;
/**
* at given global position
*/
//Not for base?
//double sinTilt(const HepGeom::Point3D<double>& globalPosition) const;
/**
* Compute sin(stereo angle) at a given position: at center
*/
//not for base class?
//double sinStereo() const;
/**
* at given local position
*/
//double sinStereo(const Amg::Vector2D& localPos) const;
/**
* at given global position
*/
//double sinStereo(const HepGeom::Point3D<double>& globalPosition) const;
/**
* Angle of strip in local frame with respect to the etaAxis.
* Zero for all elements except trapezoidal detectors (ie SCT forward modules).
*/
//double sinStereoLocal(const Amg::Vector2D& localPos) const;
/**
* See previous method
*/
//double sinStereoLocal(const HepGeom::Point3D<double>& globalPos) const;
/**
* Check if it is the stereo side (useful for SCT)
*/
//bool isStereo() const;
//@}
/**
* @name Element Extent
@@ -607,10 +483,6 @@ namespace InDetDD {
*/
double etaPitch() const;
double phiPitch() const;
/**
* Useful for SCT Forward.
*/
double phiPitch(const Amg::Vector2D& localPosition) const;
/**
* carrier type for readout. ie holes for SCT and electrons for pixels. inline
@@ -634,12 +506,6 @@ namespace InDetDD {
* @name Intersection Tests
*/
//@{
/**
* Test if near bond gap within tolerances
*/
//Not for base class
//bool nearBondGap(const Amg::Vector2D& localPosition, double etaTol) const;
//bool nearBondGap(const HepGeom::Point3D<double>& globalPosition, double etaTol) const;
/**
* Test that it is in the active region
@@ -701,30 +567,6 @@ namespace InDetDD {
*/
SiCellId connectedCell(const SiCellId cellId, int number) const;
/**
* If cell is ganged return the id of the other cell which shares the readout
* for this cell, otherwise return an invalid id.
* This is a more convenient (and slightly faster) alternative than
* using the above two methods.
* Only relevant for pixel. For SCT always returns an invalid ID. (inline)
*/
//Not for base
//SiCellId gangedCell(const SiCellId& cellId) const;
//@}
/**
* @name Miscellaneous
*/
//@{
/**
* Special method for SCT to retrieve the two ends of a "strip"
* Returned coordinates are in global frame.
*/
//Not wanted in base class?
//std::pair<Amg::Vector3D,Amg::Vector3D> endsOfStrip(const Amg::Vector2D& position) const;
//@}
private:
/**
* @name Private Methods
@@ -741,12 +583,6 @@ namespace InDetDD {
* Recalculate cached values.
*/
void updateCache() const;
/**
* Determine m_isStereo variable and m_stereoCacheValid variable.
*/
//Not for base?
//void determineStereo() const;
/**
* Calculate extent in r,z and phi. The values are cached and there
@@ -777,16 +613,6 @@ namespace InDetDD {
*/
const HepGeom::Transform3D recoToHitTransformImpl() const;
/**
* Private implementation method with no lock at center
*/
//Not for base class
//double sinStereoImpl() const;
/**
* Private implementation method with no lock at given global position
*/
//double sinStereoImpl(const HepGeom::Point3D<double>& globalPosition) const;
/**
* Declaring the Message method for further use (inline)
*/
@@ -820,17 +646,6 @@ namespace InDetDD {
mutable std::atomic_bool m_firstTimeBase{true};
mutable std::atomic_bool m_firstTime{true};
/**
* Since m_isStereo depends on m_otherSide->sinStereo(), a dedicated validity variable is needed.
*/
//Not for base class?
// mutable std::atomic_bool m_stereoCacheValid{false};
/**
* Since m_surfaces depends on m_otherSide->surface(), a dedicated validity variable is needed.
*/
mutable std::atomic_bool m_surfacesValid{false};
//@}
/**
* @name Mutex guard to update mutable variables in const methods
*/
@@ -887,7 +702,6 @@ namespace InDetDD {
const SolidStateDetectorElementBase* m_prevInEta{nullptr}; // set by setPrevInEta
const SolidStateDetectorElementBase* m_nextInPhi{nullptr}; // set by setNextInPhi
const SolidStateDetectorElementBase* m_prevInPhi{nullptr}; // set by setPrevInPhi
const SolidStateDetectorElementBase* m_otherSide{nullptr}; // set by setOtherSide
//@}
/**
Loading