ATLAS Offline Software
SCT_OverlapDescriptor.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // SCT_OverlapDescriptor.h, (c) ATLAS Detector software
8 
9 #ifndef INDETTRACKINGGEOMETRY_SCT_OVERLAPDESCRIPTOR_H
10 #define INDETTRACKINGGEOMETRY_SCT_OVERLAPDESCRIPTOR_H
11 
12 // Amg
14 // Trk
17 // STL include
18 #include <atomic>
19 
20 #ifndef TRKDETDESCR_SIDETADDNEXTPHIETA
21 #define TRKDETDESCR_SIDETADDNEXTPHIETA
22 
23 #define addSurface(cur, surfaces) \
24  if (cur) \
25  surfaces.emplace_back( \
26  Trk::Intersection(Amg::Vector3D(0., 0., 0.), 0., true), \
27  &(cur->surface(cur->identify())))
28 
29 #define addOtherSide(cur, surfaces) \
30  if (cur && cur->otherSide()) \
31  surfaces.emplace_back( \
32  Trk::Intersection(Amg::Vector3D(0., 0., 0.), 0., true), \
33  &(cur->otherSide()->surface(cur->otherSide()->identify())))
34 
35 #define addNextInPhiOS(cur, surfaces) \
36  addSurface(cur->nextInPhi(), surfaces); \
37  addOtherSide(cur->nextInPhi(), surfaces)
38 
39 #define addPrevInPhiOS(cur, surfaces) \
40  addSurface(cur->prevInPhi(), surfaces); \
41  addOtherSide(cur->prevInPhi(), surfaces)
42 
43 #define addNextInEtaOS(cur, surfaces) \
44  addSurface(cur->nextInEta(), surfaces); \
45  addOtherSide(cur->nextInEta(), surfaces)
46 
47 #define addPrevInEtaOS(cur, surfaces) \
48  addSurface(cur->prevInEta(), surfaces); \
49  addOtherSide(cur->prevInEta(), surfaces)
50 #endif
51 
52 namespace Trk {
53  class Surface;
54 }
55 
56 
57 namespace InDetDD {
58  class SiDetectorElement;
59 }
60 
61 class SCT_ID;
62 
63 namespace InDet {
64 
74  public:
75 
77  SCT_OverlapDescriptor(bool addMoreSurfaces = false, int eta_slices = 4);
78 
80  virtual ~SCT_OverlapDescriptor() = default;
81 
84 
86  bool reachableSurfaces(std::vector<Trk::SurfaceIntersection>& cSurfaces,
87  const Trk::Surface& sf,
88  const Amg::Vector3D& pos,
89  const Amg::Vector3D& dir) const;
90 
91  private:
92  bool dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const;
96  mutable std::atomic<const SCT_ID*> m_sctIdHelper{nullptr};
97  };
98 
100 
101 }
102 
103 #endif
InDet::SCT_OverlapDescriptor::dumpSurfaces
bool dumpSurfaces(std::vector< Trk::SurfaceIntersection > &surfaces) const
Definition: SCT_OverlapDescriptor.cxx:141
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::SCT_OverlapDescriptor
Definition: SCT_OverlapDescriptor.h:73
InDet::SCT_OverlapDescriptor::m_addMoreSurfaces
bool m_addMoreSurfaces
Definition: SCT_OverlapDescriptor.h:94
OverlapDescriptor.h
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
InDet::SCT_OverlapDescriptor::SCT_OverlapDescriptor
SCT_OverlapDescriptor(bool addMoreSurfaces=false, int eta_slices=4)
Constructor.
Definition: SCT_OverlapDescriptor.cxx:20
InDet::SCT_OverlapDescriptor::m_robustMode
bool m_robustMode
Definition: SCT_OverlapDescriptor.h:93
InDet::SCT_OverlapDescriptor::~SCT_OverlapDescriptor
virtual ~SCT_OverlapDescriptor()=default
Destructor.
GeoPrimitives.h
InDet::SCT_OverlapDescriptor::m_sctIdHelper
std::atomic< const SCT_ID * > m_sctIdHelper
Definition: SCT_OverlapDescriptor.h:96
InDet::SCT_OverlapDescriptor::reachableSurfaces
bool reachableSurfaces(std::vector< Trk::SurfaceIntersection > &cSurfaces, const Trk::Surface &sf, const Amg::Vector3D &pos, const Amg::Vector3D &dir) const
get the compatible surfaces
Definition: SCT_OverlapDescriptor.cxx:28
InDet::SCT_OverlapDescriptor::clone
SCT_OverlapDescriptor * clone() const
Pseudo-Constructor.
Definition: SCT_OverlapDescriptor.h:99
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::OverlapDescriptor
Definition: OverlapDescriptor.h:41
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
SCT_ID
Definition: SCT_ID.h:68
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Intersection.h
InDet::SCT_OverlapDescriptor::m_etaSlices
int m_etaSlices
Definition: SCT_OverlapDescriptor.h:95