Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BoundarySurface.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // BoundarySurface.h, (c) ATLAS Detector software
8 
9 #ifndef TRKVOLUMES_BOUNDARYSURFACE_H
10 #define TRKVOLUMES_BOUNDARYSURFACE_H
11 
12 // Trk
14 #include <memory>
17 #include "TrkVolumes/Volume.h"
18 // Gaudi
20 #include "GaudiKernel/MsgStream.h"
22 
23 namespace Trk {
24 
25 // class TrackParameters;
26 class Surface;
27 
42 template <class Tvol>
46  public:
48  BoundarySurface() = default;
49 
51  BoundarySurface(const Tvol* inside, const Tvol* outside)
56 
58  BoundarySurface(std::shared_ptr<const VolumeArray> insideArray,
59  std::shared_ptr<const VolumeArray> outsideArray)
60  : m_insideVolume(),
62  m_insideVolumeArray(std::move(insideArray)),
63  m_outsideVolumeArray(std::move(outsideArray)) {}
64 
67  virtual const Tvol* attachedVolume(const TrackParameters& parms,
68  PropDirection dir) const = 0;
69 
73  virtual const Tvol* attachedVolume(const Amg::Vector3D& pos,
74  const Amg::Vector3D& mom,
75  PropDirection dir) const = 0;
76 
78  template <class T>
79  bool onBoundary(const T& pars) const {
81  }
82 
84  virtual const Surface& surfaceRepresentation() const = 0;
86 
88  virtual ~BoundarySurface() {}
89 
91  void debugInfo(MsgStream& msg) const;
92 
94  Tvol const* insideVolume() const{
95  return m_insideVolume;
96  }
97  void setInsideVolume(const Tvol* vol){
98  m_insideVolume = vol;
99  }
100 
101  Tvol const* outsideVolume() const{
102  return m_outsideVolume;
103  }
104  void setOutsideVolume(const Tvol* vol){
105  m_outsideVolume = vol;
106  }
107 
110  return m_insideVolumeArray.get();
111  }
112  void setInsideVolumeArray(std::shared_ptr<const VolumeArray> volArray){
113  m_insideVolumeArray = std::move(volArray);
114  }
116  return m_outsideVolumeArray.get();
117  }
118  void setOutsideVolumeArray(std::shared_ptr<const VolumeArray> volArray){
119  m_outsideVolumeArray = std::move(volArray);
120  }
121 
122  protected:
123  //Not owning ptr to the volumes
124  const Tvol* m_insideVolume{};
125  const Tvol* m_outsideVolume{};
126  //The volume arrays can be shared when we glue volumes
127  std::shared_ptr<const VolumeArray> m_insideVolumeArray{};
128  std::shared_ptr<const VolumeArray> m_outsideVolumeArray{};
129 };
130 
131 
132 template <class Tvol>
133 inline void BoundarySurface<Tvol>::debugInfo(MsgStream& msg) const {
134  msg << "BoundarySurface debug information: " << std::endl;
135  msg << " -> pointer to insideVolume = " << m_insideVolume
136  << std::endl;
137  msg << " -> pointer to insideVolumeArray = "
138  << m_insideVolumeArray.get() << std::endl;
139  msg << " -> pointer to outsideVolume = " << m_outsideVolume
140  << std::endl;
141  msg << " -> pointer to outsideVolumeArray = "
142  << m_outsideVolumeArray.get() << endmsg;
143 }
144 
145 } // end of namespace Trk
146 
147 #endif // TRKVOLUMES_BOUNDARYSURFACE_H
148 
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
Trk::BoundarySurface::insideVolumeArray
const VolumeArray * insideVolumeArray() const
getters/setters for inside/outside Volume arrays
Definition: BoundarySurface.h:109
Trk::BoundarySurface
Definition: BoundarySurface.h:43
Trk::BoundarySurface::surfaceRepresentation
virtual Surface & surfaceRepresentation()=0
TrackParameters.h
Trk::BoundarySurface::BoundarySurface
BoundarySurface(std::shared_ptr< const VolumeArray > insideArray, std::shared_ptr< const VolumeArray > outsideArray)
Constructor for a Boundary with exact two Volumes attached to it.
Definition: BoundarySurface.h:58
Trk::BoundarySurface::~BoundarySurface
virtual ~BoundarySurface()
Virtual Destructor.
Definition: BoundarySurface.h:88
Trk::BoundarySurface::outsideVolume
Tvol const * outsideVolume() const
Definition: BoundarySurface.h:101
Trk::BoundarySurface::attachedVolume
virtual const Tvol * attachedVolume(const Amg::Vector3D &pos, const Amg::Vector3D &mom, PropDirection dir) const =0
Get the next Volume depending on GlobalPosition, GlobalMomentum, dir on the TrackParameters and the r...
BinnedArray.h
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
PropDirection.h
Trk::BoundarySurface::attachedVolume
virtual const Tvol * attachedVolume(const TrackParameters &parms, PropDirection dir) const =0
Get the next Volume depending on the TrackParameters and the requested direction.
Trk::BoundarySurface::BoundarySurface
BoundarySurface(const Tvol *inside, const Tvol *outside)
Constructor for a Boundary with exact two Volumes attached to it.
Definition: BoundarySurface.h:51
Trk::BoundarySurface::VolumeArray
BinnedArray< Tvol > VolumeArray
typedef the BinnedArray
Definition: BoundarySurface.h:45
GeoPrimitives.h
Trk::BoundarySurface::onBoundary
bool onBoundary(const T &pars) const
templated onBoundary method
Definition: BoundarySurface.h:79
Volume.h
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
Trk::BoundarySurface::surfaceRepresentation
virtual const Surface & surfaceRepresentation() const =0
The Surface Representation of this.
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::BoundarySurface::m_outsideVolumeArray
std::shared_ptr< const VolumeArray > m_outsideVolumeArray
Definition: BoundarySurface.h:128
Trk::BoundarySurface::BoundarySurface
BoundarySurface()=default
Default Constructor - needed for pool and inherited classes.
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::BoundarySurface::setOutsideVolumeArray
void setOutsideVolumeArray(std::shared_ptr< const VolumeArray > volArray)
Definition: BoundarySurface.h:118
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::inside
@ inside
Definition: PropDirection.h:29
Trk::Surface::onSurface
bool onSurface(const T &parameters, const BoundaryCheck &bchk=BoundaryCheck(true)) const
The templated Parameters OnSurface method - checks on surface pointer first.
Trk::BoundarySurface::outsideVolumeArray
const VolumeArray * outsideVolumeArray() const
Definition: BoundarySurface.h:115
Trk::BoundarySurface::insideVolume
Tvol const * insideVolume() const
getters/setters for inside/outside Volume
Definition: BoundarySurface.h:94
Trk::BoundarySurface::setInsideVolume
void setInsideVolume(const Tvol *vol)
Definition: BoundarySurface.h:97
Trk::outside
@ outside
Definition: PropDirection.h:29
Trk::BoundarySurface::setOutsideVolume
void setOutsideVolume(const Tvol *vol)
Definition: BoundarySurface.h:104
Trk::BoundarySurface::debugInfo
void debugInfo(MsgStream &msg) const
output debug information
Definition: BoundarySurface.h:133
Trk::BoundarySurface::setInsideVolumeArray
void setInsideVolumeArray(std::shared_ptr< const VolumeArray > volArray)
Definition: BoundarySurface.h:112
Trk::BinnedArray
Definition: BinnedArray.h:38
Trk::BoundarySurface::m_insideVolumeArray
std::shared_ptr< const VolumeArray > m_insideVolumeArray
Definition: BoundarySurface.h:127
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
checker_macros.h
Define macros for attributes used to control the static checker.
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
Trk::BoundarySurface::m_outsideVolume
const Tvol * m_outsideVolume
Definition: BoundarySurface.h:125
Trk::BoundarySurface::m_insideVolume
const Tvol * m_insideVolume
Definition: BoundarySurface.h:124