ATLAS Offline Software
Loading...
Searching...
No Matches
VolumeExcluder.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// VolumeExcluder.h, (c) ATLAS Detector software
8
9#ifndef TRKVOLUMES_VOLUMEEXCLUDER_H
10#define TRKVOLUMES_VOLUMEEXCLUDER_H
11
12// Trk
15#include "TrkVolumes/Volume.h"
16
17class MsgStream;
18
19namespace Trk {
20
21class AreaExcluder;
22
29
30class VolumeExcluder final : public AreaExcluder {
31
32 public:
37 virtual ~VolumeExcluder() = default;
38
40 VolumeExcluder(std::unique_ptr<Volume> vol);
46 VolumeExcluder* clone() const;
47
49 bool inside(const Amg::Vector3D& gp, double tol = 0.) const;
50
52 const Volume* volume() const;
53 Volume* volume();
55 MsgStream& dump(MsgStream& sl) const;
56
58 std::ostream& dump(std::ostream& sl) const;
59
60 private:
61 std::unique_ptr<Volume> m_vol;
62};
63
64inline bool VolumeExcluder::inside(const Amg::Vector3D& gp, double tol) const {
65 return (m_vol->inside(gp, tol));
66}
67
68inline const Volume* VolumeExcluder::volume() const {
69 return (m_vol.get());
70}
71
73 return (m_vol.get());
74}
75
76} // end of namespace Trk
77
78#endif // TRKVOLUMES_VOLUMEEXCLUDER
79
Pure abstract base class.
AreaExcluder()=default
VolumeExcluder * clone() const
Polymorphic constructor.
std::unique_ptr< Volume > m_vol
std::ostream & dump(std::ostream &sl) const
Output Method for std::ostream, to be overloaded by child classes.
bool inside(const Amg::Vector3D &gp, double tol=0.) const
First bin from global position.
VolumeExcluder()
Defaults.
virtual ~VolumeExcluder()=default
const Volume * volume() const
Acces the subtracted volume.
VolumeExcluder & operator=(VolumeExcluder &&)=default
MsgStream & dump(MsgStream &sl) const
Output Method for MsgStream, to be overloaded by child classes.
VolumeExcluder(VolumeExcluder &&)=default
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Definition Volume.h:36
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.