ATLAS Offline Software
VolumeBounds.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // VolumeBounds.h, (c) ATLAS Detector software
8 
9 #ifndef TRKVOLUMES_VOLUMEBOUNDS_H
10 #define TRKVOLUMES_VOLUMEBOUNDS_H
11 
12 // STD
13 #include <iomanip>
14 #include <iostream>
15 // GaudiKernel
16 #include "GaudiKernel/MsgStream.h"
17 // Trk
21 
22 namespace Trk {
23 
24 class Surface;
25 class Volume;
26 
45 class VolumeBounds {
46  public:
49 
51  virtual ~VolumeBounds() {}
52 
55  virtual VolumeBounds* clone() const = 0;
56 
58  virtual bool inside(const Amg::Vector3D& pos, double tol = 0.) const = 0;
59 
62  virtual const std::vector<const Trk::Surface*>* decomposeToSurfaces(
63  const Amg::Transform3D& transform) = 0;
64 
67  const Amg::Vector3D& gp, const Amg::Vector3D& dir,
68  bool forceInside = false) const = 0;
69 
71  virtual MsgStream& dump(MsgStream& sl) const = 0;
72 
74  virtual std::ostream& dump(std::ostream& sl) const = 0;
75 };
76 
79 MsgStream& operator<<(MsgStream& sl, const VolumeBounds& vb);
80 std::ostream& operator<<(std::ostream& sl, const VolumeBounds& vb);
81 
82 } // namespace Trk
83 
84 #endif // TRKVOLUMES_VOLUMEBOUNDS_H
Trk::VolumeBounds::dump
virtual MsgStream & dump(MsgStream &sl) const =0
Output Method for MsgStream, to be overloaded by child classes.
Trk::VolumeBounds::inside
virtual bool inside(const Amg::Vector3D &pos, double tol=0.) const =0
Checking if position given in volume frame is inside.
ObjectAccessor.h
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
Trk::VolumeBounds::~VolumeBounds
virtual ~VolumeBounds()
Destructor.
Definition: VolumeBounds.h:51
GeoPrimitives.h
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
Trk::VolumeBounds::clone
virtual VolumeBounds * clone() const =0
clone() method to make deep copy in Volume copy constructor and for assigment operator of the Surface...
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::VolumeBounds::dump
virtual std::ostream & dump(std::ostream &sl) const =0
Output Method for std::ostream, to be overloaded by child classes.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Trk::VolumeBounds::decomposeToSurfaces
virtual const std::vector< const Trk::Surface * > * decomposeToSurfaces(const Amg::Transform3D &transform)=0
Method to decompose the Bounds into Surfaces, the Volume can turn them into BoundarySurfaces.
Trk::ObjectAccessor
Definition: ObjectAccessor.h:15
Trk::VolumeBounds::boundarySurfaceAccessor
virtual ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const =0
Provide accessor for BoundarySurfaces.
Trk::operator<<
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
Definition: AlignModule.cxx:204
checker_macros.h
Define macros for attributes used to control the static checker.
Trk::VolumeBounds::VolumeBounds
VolumeBounds()
Default Constructor.
Definition: VolumeBounds.h:48