ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkDetDescr
TrkVolumes
TrkVolumes
SubtractedVolumeBounds.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
6
// SubtractedVolumeBounds.h, (c) ATLAS Detector software
8
9
#ifndef TRKVOLUMES_SUBTRACTEDVOLUMEBOUNDS_H
10
#define TRKVOLUMES_SUBTRACTEDVOLUMEBOUNDS_H
11
12
// Trk
13
#include "
TrkDetDescrUtils/ObjectsAccessor.h
"
14
#include "
TrkVolumes/Volume.h
"
15
#include "
TrkVolumes/VolumeBounds.h
"
16
// Eigen
17
#include "
GeoPrimitives/GeoPrimitives.h
"
18
19
class
MsgStream;
20
21
namespace
Trk
{
22
23
class
SurfaceBounds
;
24
class
Volume
;
25
class
Surface
;
26
39
40
class
SubtractedVolumeBounds
final:
public
VolumeBounds
{
41
public
:
43
SubtractedVolumeBounds
();
44
46
SubtractedVolumeBounds
(std::unique_ptr<Volume> outerVol, std::unique_ptr<Volume> innerVol);
47
49
SubtractedVolumeBounds
(
const
SubtractedVolumeBounds
& bobo);
50
52
virtual
~SubtractedVolumeBounds
();
53
55
SubtractedVolumeBounds
&
operator=
(
const
SubtractedVolumeBounds
& bobo);
56
58
SubtractedVolumeBounds
*
clone
()
const
override final;
59
62
bool
inside
(
const
Amg
::
Vector3D
&,
double
tol = 0.)
const
override final;
63
65
virtual
std
::
vector
<
std
::
unique_ptr
<
Trk
::
Surface
>>
decomposeToSurfaces
66
(
const
Amg
::
Transform3D
& transform) override final;
67
69
ObjectAccessor
boundarySurfaceAccessor
(
70
const
Amg
::
Vector3D
& gp,
const
Amg
::
Vector3D
& dir,
71
bool
forceInside = false)
const
override final;
72
74
const
Volume
*
outer
()
const
;
75
Volume
*
outer
();
76
78
const
Volume
*
inner
()
const
;
79
Volume
*
inner
();
80
82
const
std
::
vector
<
bool
>&
boundsOrientation
()
const
;
83
85
MsgStream&
dump
(MsgStream& sl)
const
override;
86
88
std
::
ostream
&
dump
(
std
::
ostream
& sl)
const
override final;
89
90
private
:
91
static
Trk
::
Volume
*
createSubtractedVolume
(
const
Amg
::
Transform3D
& transf,
92
Trk
::
Volume
* subtrVol) ;
93
94
std
::
unique_ptr
<
Volume
>
m_outer
{};
95
std::unique_ptr<Volume>
m_inner
{};
98
EightObjectsAccessor
m_objectAccessor
{};
99
std::vector<bool>
m_boundsOrientation
{};
100
};
101
102
inline
SubtractedVolumeBounds
*
SubtractedVolumeBounds::clone
()
const
{
103
return
new
SubtractedVolumeBounds
(*
this
);
104
}
105
106
inline
bool
SubtractedVolumeBounds::inside
(
const
Amg::Vector3D
& pos,
107
double
tol)
const
{
108
return
(
m_outer
->inside(pos, tol) && !
m_inner
->inside(pos, -tol));
109
}
110
111
inline
const
Volume
*
SubtractedVolumeBounds::outer
()
const
{
return
m_outer
.get(); }
112
inline
Volume
*
SubtractedVolumeBounds::outer
() {
return
m_outer
.get(); }
113
114
inline
const
Volume
*
SubtractedVolumeBounds::inner
()
const
{
return
m_inner
.get(); }
115
inline
Volume
*
SubtractedVolumeBounds::inner
() {
return
m_inner
.get(); }
116
117
inline
ObjectAccessor
SubtractedVolumeBounds::boundarySurfaceAccessor
(
118
const
Amg::Vector3D
&,
const
Amg::Vector3D
&,
bool
)
const
{
119
return
Trk::ObjectAccessor
(
m_objectAccessor
);
120
}
121
122
inline
const
std::vector<bool>&
SubtractedVolumeBounds::boundsOrientation
()
const
{
123
return
(
m_boundsOrientation
);
124
}
125
126
}
// namespace Trk
127
128
#endif
// TRKVOLUMES_SUBTRACTEDVOLUMEBOUNDS_H
129
Transform3D
Eigen::Affine3d Transform3D
Definition
GeoPrimitives.h:46
GeoPrimitives.h
ObjectsAccessor.h
Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
VolumeBounds.h
Volume.h
Trk::ObjectAccessor
Definition
ObjectAccessor.h:15
Trk::SubtractedVolumeBounds::SubtractedVolumeBounds
SubtractedVolumeBounds()
Default Constructor.
Trk::SubtractedVolumeBounds::m_objectAccessor
EightObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Subtracteds are used m...
Definition
SubtractedVolumeBounds.h:98
Trk::SubtractedVolumeBounds::inner
const Volume * inner() const
This method returns the inner Volume.
Definition
SubtractedVolumeBounds.h:114
Trk::SubtractedVolumeBounds::outer
const Volume * outer() const
This method returns the outer Volume.
Definition
SubtractedVolumeBounds.h:111
Trk::SubtractedVolumeBounds::boundsOrientation
const std::vector< bool > & boundsOrientation() const
This method returns bounds orientation.
Definition
SubtractedVolumeBounds.h:122
Trk::SubtractedVolumeBounds::m_inner
std::unique_ptr< Volume > m_inner
Definition
SubtractedVolumeBounds.h:95
Trk::SubtractedVolumeBounds::m_outer
std::unique_ptr< Volume > m_outer
Definition
SubtractedVolumeBounds.h:94
Trk::SubtractedVolumeBounds::clone
SubtractedVolumeBounds * clone() const override final
Virtual constructor.
Definition
SubtractedVolumeBounds.h:102
Trk::SubtractedVolumeBounds::~SubtractedVolumeBounds
virtual ~SubtractedVolumeBounds()
Destructor.
Trk::SubtractedVolumeBounds::createSubtractedVolume
static Trk::Volume * createSubtractedVolume(const Amg::Transform3D &transf, Trk::Volume *subtrVol)
Definition
SubtractedVolumeBounds.cxx:307
Trk::SubtractedVolumeBounds::boundarySurfaceAccessor
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
Provide accessor for BoundarySurfaces.
Definition
SubtractedVolumeBounds.h:117
Trk::SubtractedVolumeBounds::decomposeToSurfaces
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into boundarySurfaces.
Definition
SubtractedVolumeBounds.cxx:67
Trk::SubtractedVolumeBounds::inside
bool inside(const Amg::Vector3D &, double tol=0.) const override final
This method checks if position in the 3D volume frame is inside the cylinder.
Definition
SubtractedVolumeBounds.h:106
Trk::SubtractedVolumeBounds::operator=
SubtractedVolumeBounds & operator=(const SubtractedVolumeBounds &bobo)
Assignment operator.
Definition
SubtractedVolumeBounds.cxx:55
Trk::SubtractedVolumeBounds::m_boundsOrientation
std::vector< bool > m_boundsOrientation
Definition
SubtractedVolumeBounds.h:99
Trk::SurfaceBounds
Abstract base class for surface bounds to be specified.
Definition
SurfaceBounds.h:47
Trk::Surface
Abstract Base Class for tracking surfaces.
Definition
Surface.h:79
Trk::VolumeBounds::VolumeBounds
VolumeBounds()
Default Constructor.
Definition
VolumeBounds.h:49
Trk::Volume
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Definition
Volume.h:36
ostream
STL class.
unique_ptr
STL class.
vector
Definition
MultiHisto.h:13
const
Amg
Definition of ATLAS Math & Geometry primitives (Amg).
Definition
AmgStringHelpers.h:19
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition
GeoPrimitives.h:47
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::EightObjectsAccessor
std::array< ObjectAccessor::value_type, 8 > EightObjectsAccessor
Definition
ObjectsAccessor.h:18
dump
-event-from-file
std
STL namespace.
private
#define private
Definition
testRead.cxx:27
Generated on
for ATLAS Offline Software by
1.17.0