ATLAS Offline Software
DiscOverlapDescriptor.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 // DiscOverlapDescriptor.h, (c) ATLAS Detector software
8 
9 #ifndef INDETTRACKINGGEOMETRY_DISCOVERLAPDESCRIPTOR_H
10 #define INDETTRACKINGGEOMETRY_DISCOVERLAPDESCRIPTOR_H
11 
12 // Trk
14 
15 // Trk inlcude
19 
20 // STL include
21 #include <atomic>
22 
23 #ifndef INDETTRACKINGGEOMETRY_DISCDETADDNEXTPHIETA
24 #define INDETTRACKINGGEOMETRY_DISCDETADDNEXTPHIETA
25 
26 #define addSurfaceDO(cur, surfaces) \
27  surfaces.emplace_back( \
28  Trk::Intersection(Amg::Vector3D(0., 0., 0.), 0., true), \
29  &(cur->surface(cur->identify())))
30 
31 #define addOtherSideDO(cur, surfaces) \
32  if (cur->otherSide()) \
33  surfaces.emplace_back( \
34  Trk::Intersection(Amg::Vector3D(0., 0., 0.), 0., true), \
35  &(cur->otherSide()->surface(cur->otherSide()->identify())))
36 
37 #define addNextInPhiDO(cur, surfaces) \
38  addSurfaceDO(cur->nextInPhi(), surfaces); \
39  addOtherSideDO(cur->nextInPhi(), surfaces)
40 
41 #define addPrevInPhiDO(cur, surfaces) \
42  addSurfaceDO(cur->prevInPhi(), surfaces); \
43  addOtherSideDO(cur->prevInPhi(), surfaces)
44 
45 #define addNextInEtaDO(cur, surfaces) \
46  addSurfaceDO(cur->nextInEta(), surfaces); \
47  addOtherSideDO(cur->nextInEta(), surfaces)
48 
49 #define addPrevInEtaDO(cur, surfaces) \
50  addSurfaceDO(cur->prevInEta(), surfaces); \
51  addOtherSideDO(cur->prevInEta(), surfaces)
52 
53 #endif // INDETTRACKINGGEOMETRY_DISCDETADDNEXTPHIETA
54 
55 class SCT_ID;
56 class PixelID;
57 
58 namespace Trk {
59  class Surface;
60 }
61 
62 namespace InDetDD {
63  class SiDetectorElement;
64 }
65 
66 namespace InDet {
67 
80  public:
81 
84  std::vector<Trk::BinUtility*>* singleBinUtils = 0,
85  bool isPixel = false);
86 
89  if (m_singleBinUtils) {
91  for ( ; binIter != m_singleBinUtils->end(); ++binIter) delete *binIter;
92  }
93  delete m_singleBinUtils;
94  }
95 
98 
101 
103  virtual DiscOverlapDescriptor* clone() const override;
104 
110  bool reachableSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces,
111  const Trk::Surface& sf,
112  const Amg::Vector3D& pos,
113  const Amg::Vector3D& dir) const override;
114 
115  private:
116  bool dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const;
117 
119  std::vector<Trk::BinUtility*>* m_singleBinUtils;
121  };
122 
123 
125 
126 }
127 
128 #endif // INDETTRACKINGGEOMETRY_DISCOVERLAPDESCRIPTOR_H
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
InDet::DiscOverlapDescriptor
Definition: DiscOverlapDescriptor.h:79
InDet::DiscOverlapDescriptor::m_singleBinUtils
std::vector< Trk::BinUtility * > * m_singleBinUtils
Definition: DiscOverlapDescriptor.h:119
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
OverlapDescriptor.h
BinUtility.h
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
BinnedArray1D1D.h
InDet::DiscOverlapDescriptor::~DiscOverlapDescriptor
virtual ~DiscOverlapDescriptor()
Destructor.
Definition: DiscOverlapDescriptor.h:88
InDet::DiscOverlapDescriptor::DiscOverlapDescriptor
DiscOverlapDescriptor(const DiscOverlapDescriptor &)=delete
Delete copy.
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
InDet::DiscOverlapDescriptor::m_bin_array
const Trk::BinnedArray< Trk::Surface > * m_bin_array
Definition: DiscOverlapDescriptor.h:118
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
InDet::DiscOverlapDescriptor::reachableSurfaces
bool reachableSurfaces(std::vector< Trk::SurfaceIntersection > &surfaces, const Trk::Surface &sf, const Amg::Vector3D &pos, const Amg::Vector3D &dir) const override
get the compatible surfaces
Definition: DiscOverlapDescriptor.cxx:71
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
InDet::DiscOverlapDescriptor::m_pixelCase
bool m_pixelCase
Definition: DiscOverlapDescriptor.h:120
Trk::BinnedArray< Trk::Surface >
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
PixelID
Definition: PixelID.h:67
Intersection.h
InDet::DiscOverlapDescriptor::DiscOverlapDescriptor
DiscOverlapDescriptor(const Trk::BinnedArray< Trk::Surface > *bin_array=0, std::vector< Trk::BinUtility * > *singleBinUtils=0, bool isPixel=false)
Constructor.
Definition: DiscOverlapDescriptor.cxx:63
InDet::DiscOverlapDescriptor::clone
virtual DiscOverlapDescriptor * clone() const override
Pseudo-Constructor.
Definition: DiscOverlapDescriptor.h:124
InDet::DiscOverlapDescriptor::dumpSurfaces
bool dumpSurfaces(std::vector< Trk::SurfaceIntersection > &surfaces) const
Definition: DiscOverlapDescriptor.cxx:239
InDet::DiscOverlapDescriptor::operator=
DiscOverlapDescriptor & operator=(const DiscOverlapDescriptor &)=delete
Delete assignment.