ATLAS Offline Software
Loading...
Searching...
No Matches
SiDetectorDesign.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
4
6// SiDetectorDesign.h
8
9#ifndef INDETREADOUTGEOMETRY_SIDETECTORDESIGN_H
10#define INDETREADOUTGEOMETRY_SIDETECTORDESIGN_H
11
12//Base class
14// Input/output classes
17#include "CLHEP/Geometry/Point3D.h"
18#include "CLHEP/Geometry/Vector3D.h"
21
22#include <list>
23#include <vector>
24
25
26class Identifier;
27
28namespace Trk {
29class SurfaceBounds;
30}
31
32namespace InDetDD {
33class SiReadoutCellId;
34class SiCellId;
35class SiDiode;
36class SiReadoutCell;
37class SiLocalPosition;
38class SiIntersect;
39
49
51
53 // Public methods:
55public:
67 bool phiSymmetric,
68 bool etaSymmetric,
69 bool depthSymmetric,
71 int readoutSide);
72
74 bool phiSymmetric,
75 bool etaSymmetric,
76 bool depthSymmetric,
78 int readoutSide,
79 SiDetectorDesign::Axis stripDirection,
80 SiDetectorDesign::Axis depthDirection);
81
82
85
87 // Const methods:
89
90 virtual double sinStripAngleReco(double phiCoord, double etaCoord) const;
91
93 virtual bool nearBondGap(const SiLocalPosition &localPosition,
94 double etaTol) const = 0;
95
97 virtual int strip1Dim(int strip, int row) const;
98
99
101 // Pure virtual methods:
103
104 virtual HepGeom::Vector3D<double> phiMeasureSegment(const SiLocalPosition &position)
105 const = 0;
106
108 virtual std::pair<SiLocalPosition, SiLocalPosition> endsOfStrip(
109 const SiLocalPosition &position) const = 0;
110
113 virtual SiCellId gangedCell(const SiCellId &cellId) const = 0;
114
115
117 // Private methods:
119private:
121
122 // Disallow Copy and assignment;
125
126};
127
129// Inline methods:
131
132 inline double SiDetectorDesign::sinStripAngleReco(double /* x */, double /* y */) const {
133 return 0.0; // pixel and barrel strip sensors always zero
134 }
135
136 inline int SiDetectorDesign::strip1Dim(int, int) const{
137 return -1.0;
138 }
139
140} // namespace InDetDD
141#endif // INDETREADOUTGEOMETRY_SIDETECTORDESIGN_H
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
DetectorDesign(double thickness, bool phiSymmetric, bool etaSymmetric, bool depthSymmetric, InDetDD::CarrierType carrierType, int readoutSide)
Constructor.
double thickness() const
Method which returns thickness of the silicon wafer.
InDetDD::CarrierType carrierType() const
Return carrier type (ie electrons or holes)
int readoutSide() const
ReadoutSide.
Identifier for the strip or pixel cell.
Definition SiCellId.h:29
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const =0
Special method for SCT to retrieve the two ends of a "strip".
virtual bool nearBondGap(const SiLocalPosition &localPosition, double etaTol) const =0
Test if near bond gap within tolerances, only relevant for SCT.
virtual ~SiDetectorDesign()
Destructor:
virtual double sinStripAngleReco(double phiCoord, double etaCoord) const
Give strip angle in the reco frame.
SiDetectorDesign & operator=(const SiDetectorDesign &design)
SiDetectorDesign(double thickness, bool phiSymmetric, bool etaSymmetric, bool depthSymmetric, InDetDD::CarrierType carrierType, int readoutSide)
Constructor.
virtual int strip1Dim(int strip, int row) const
only relevant for SCT.
virtual SiCellId gangedCell(const SiCellId &cellId) const =0
If cell is ganged return the id of the other cell which shares the readout for this cell,...
virtual HepGeom::Vector3D< double > phiMeasureSegment(const SiLocalPosition &position) const =0
Helper method for stereo angle computation, DEPRECATED.
SiDetectorDesign(const SiDetectorDesign &design)
class to run intersection tests
Definition SiIntersect.h:23
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.
Message Stream Member.
Ensure that the ATLAS eigen extensions are properly loaded.