ATLAS Offline Software
PixelOverlapDescriptor.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 // PixelOverlapDescriptor.h, (c) ATLAS Detector software
8 
9 #ifndef INDETTRACKINGGEOMETRY_PIXELOVERLAPDESCRIPTOR_H
10 #define INDETTRACKINGGEOMETRY_PIXELOVERLAPDESCRIPTOR_H
11 
12 
13 // Amg
15 // Trk
18 // STL include
19 #include <atomic>
20 
21 #ifndef TRKDETDESCR_SIDETADDNEXTPHIETA
22 #define TRKDETDESCR_SIDETADDNEXTPHIETA
23 
24 #define addSurface(cur, surfaces) \
25  if (cur) \
26  surfaces.emplace_back( \
27  Trk::Intersection(Amg::Vector3D(0., 0., 0.), 0., true), \
28  &(cur->surface(cur->identify())))
29 
30 #define addOtherSide(cur, surfaces) \
31  if (cur && cur->otherSide()) \
32  surfaces.emplace_back( \
33  Trk::Intersection(Amg::Vector3D(0., 0., 0.), 0., true), \
34  &(cur->otherSide()->surface(cur->otherSide()->identify())))
35 
36 #define addNextInPhi(cur, surfaces) \
37  addSurface(cur->nextInPhi(), surfaces); \
38  addOtherSide(cur->nextInPhi(), surfaces)
39 
40 #define addPrevInPhi(cur, surfaces) \
41  addSurface(cur->prevInPhi(), surfaces); \
42  addOtherSide(cur->prevInPhi(), surfaces)
43 
44 #define addNextInEta(cur, surfaces) \
45  addSurface(cur->nextInEta(), surfaces); \
46  addOtherSide(cur->nextInEta(), surfaces)
47 
48 #define addPrevInEta(cur, surfaces) \
49  addSurface(cur->prevInEta(), surfaces); \
50  addOtherSide(cur->prevInEta(), surfaces)
51 #endif
52 
53 namespace Trk {
54  class Surface;
55 }
56 
57 namespace InDetDD {
58  class SiDetectorElement;
59 }
60 
61 class PixelID;
62 
63 namespace InDet {
64 
77  public:
78 
80  PixelOverlapDescriptor(bool addMoreSurfaces = false, int eta_slices = 3, int phi_slices = 1);
81 
84 
87 
89  bool reachableSurfaces(std::vector<Trk::SurfaceIntersection>& cSurfaces,
90  const Trk::Surface& sf,
91  const Amg::Vector3D& pos,
92  const Amg::Vector3D& dir) const;
93 
94 
95  private :
96  void addPhiNeighbours(std::vector<Trk::SurfaceIntersection>& cSurfaces,
97  InDetDD::SiDetectorElement& sElement) const;
98 
99  bool dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const;
100 
105  mutable std::atomic<const PixelID*> m_pixIdHelper{nullptr};
106  };
107 
108 
110 
111 
112 
113 }
114 
115 #endif
InDet::PixelOverlapDescriptor
Definition: PixelOverlapDescriptor.h:76
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
OverlapDescriptor.h
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
InDet::PixelOverlapDescriptor::m_robustMode
bool m_robustMode
Definition: PixelOverlapDescriptor.h:101
InDet::PixelOverlapDescriptor::m_etaSlices
int m_etaSlices
Definition: PixelOverlapDescriptor.h:103
InDet::PixelOverlapDescriptor::PixelOverlapDescriptor
PixelOverlapDescriptor(bool addMoreSurfaces=false, int eta_slices=3, int phi_slices=1)
Constructor (area restriction, LC check)
Definition: PixelOverlapDescriptor.cxx:20
GeoPrimitives.h
InDet::PixelOverlapDescriptor::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: PixelOverlapDescriptor.cxx:28
InDet::PixelOverlapDescriptor::~PixelOverlapDescriptor
virtual ~PixelOverlapDescriptor()
Destructor.
Definition: PixelOverlapDescriptor.h:83
InDet::PixelOverlapDescriptor::addPhiNeighbours
void addPhiNeighbours(std::vector< Trk::SurfaceIntersection > &cSurfaces, InDetDD::SiDetectorElement &sElement) const
InDet::PixelOverlapDescriptor::m_phiSlices
int m_phiSlices
Definition: PixelOverlapDescriptor.h:104
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
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
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
InDet::PixelOverlapDescriptor::clone
PixelOverlapDescriptor * clone() const
Pseudo-Constructor.
Definition: PixelOverlapDescriptor.h:109
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
PixelID
Definition: PixelID.h:67
Intersection.h
InDet::PixelOverlapDescriptor::m_addMoreSurfaces
bool m_addMoreSurfaces
Definition: PixelOverlapDescriptor.h:102
InDet::PixelOverlapDescriptor::m_pixIdHelper
std::atomic< const PixelID * > m_pixIdHelper
Definition: PixelOverlapDescriptor.h:105
InDet::PixelOverlapDescriptor::dumpSurfaces
bool dumpSurfaces(std::vector< Trk::SurfaceIntersection > &surfaces) const
Definition: PixelOverlapDescriptor.cxx:173