ATLAS Offline Software
Loading...
Searching...
No Matches
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
52namespace Trk {
53 class Surface;
54}
55
56
57namespace InDetDD {
59}
60
61class SCT_ID;
62
63namespace InDet {
64
72
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
Class to hold geometrical description of a silicon detector element.
bool reachableSurfaces(std::vector< Trk::SurfaceIntersection > &cSurfaces, const Trk::Surface &sf, const Amg::Vector3D &pos, const Amg::Vector3D &dir) const
get the compatible surfaces
SCT_OverlapDescriptor * clone() const
Pseudo-Constructor.
bool dumpSurfaces(std::vector< Trk::SurfaceIntersection > &surfaces) const
SCT_OverlapDescriptor(bool addMoreSurfaces=false, int eta_slices=4)
Constructor.
virtual ~SCT_OverlapDescriptor()=default
Destructor.
std::atomic< const SCT_ID * > m_sctIdHelper
This is an Identifier helper class for the SCT subdetector.
Definition SCT_ID.h:68
BaseClass to be overloaded for describing overlaps and next-by elements for the sub-detector implemen...
Abstract Base Class for tracking surfaces.
Eigen::Matrix< double, 3, 1 > Vector3D
Message Stream Member.
Primary Vertex Finder.
Ensure that the ATLAS eigen extensions are properly loaded.