ATLAS Offline Software
Loading...
Searching...
No Matches
VolumeBounds.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// 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#include <memory>
16// GaudiKernel
17#include "GaudiKernel/MsgStream.h"
18// Trk
22
23namespace Trk {
24
25class Surface;
26class Volume;
27
45
47 public:
50
52 virtual ~VolumeBounds() {}
53
56 virtual VolumeBounds* clone() const = 0;
57
59 virtual bool inside(const Amg::Vector3D& pos, double tol = 0.) const = 0;
60
63 virtual std::vector<std::unique_ptr<Trk::Surface>> decomposeToSurfaces(
64 const Amg::Transform3D& transform) = 0;
65
68 const Amg::Vector3D& gp, const Amg::Vector3D& dir,
69 bool forceInside = false) const = 0;
70
72 virtual MsgStream& dump(MsgStream& sl) const = 0;
73
75 virtual std::ostream& dump(std::ostream& sl) const = 0;
76};
77
80MsgStream& operator<<(MsgStream& sl, const VolumeBounds& vb);
81std::ostream& operator<<(std::ostream& sl, const VolumeBounds& vb);
82
83} // namespace Trk
84
85#endif // TRKVOLUMES_VOLUMEBOUNDS_H
Define macros for attributes used to control the static checker.
Abstract Base Class for tracking surfaces.
Pure Absract Base Class for Volume bounds.
virtual ~VolumeBounds()
Destructor.
virtual VolumeBounds * clone() const =0
clone() method to make deep copy in Volume copy constructor and for assigment operator of the Surface...
virtual MsgStream & dump(MsgStream &sl) const =0
Output Method for MsgStream, to be overloaded by child classes.
virtual ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const =0
Provide accessor for BoundarySurfaces.
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform)=0
Method to decompose the Bounds into Surfaces, the Volume can turn them into BoundarySurfaces.
virtual bool inside(const Amg::Vector3D &pos, double tol=0.) const =0
Checking if position given in volume frame is inside.
VolumeBounds()
Default Constructor.
virtual std::ostream & dump(std::ostream &sl) const =0
Output Method for std::ostream, to be overloaded by child classes.
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Definition Volume.h:36
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output