ATLAS Offline Software
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
14 #include "TrkVolumes/Volume.h"
16 // Eigen
18 
19 class MsgStream;
20 
21 namespace Trk {
22 
23 class SurfaceBounds;
24 class Volume;
25 class Surface;
26 
41  public:
44 
46  SubtractedVolumeBounds(std::unique_ptr<Volume> outerVol, std::unique_ptr<Volume> innerVol);
47 
50 
53 
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 
71  bool forceInside = false) const override final;
72 
75  Volume* outer();
76 
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:
92  Trk::Volume* subtrVol) ;
93 
94  std::unique_ptr<Volume> m_outer{};
95  std::unique_ptr<Volume> m_inner{};
99  std::vector<bool> m_boundsOrientation{};
100 };
101 
103  return new SubtractedVolumeBounds(*this);
104 }
105 
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 
118  const Amg::Vector3D&, const Amg::Vector3D&, bool) const {
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 
Trk::SubtractedVolumeBounds::boundsOrientation
const std::vector< bool > & boundsOrientation() const
This method returns bounds orientation.
Definition: SubtractedVolumeBounds.h:122
Trk::EightObjectsAccessor
std::array< ObjectAccessor::value_type, 8 > EightObjectsAccessor
Definition: ObjectsAccessor.h:18
Trk::SubtractedVolumeBounds::dump
MsgStream & dump(MsgStream &sl) const override
Output Method for MsgStream.
Definition: SubtractedVolumeBounds.cxx:281
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
VolumeBounds.h
ObjectsAccessor.h
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
GeoPrimitives.h
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Volume.h
Trk::SubtractedVolumeBounds::createSubtractedVolume
static Trk::Volume * createSubtractedVolume(const Amg::Transform3D &transf, Trk::Volume *subtrVol)
Definition: SubtractedVolumeBounds.cxx:307
vector
Definition: MultiHisto.h:13
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::SubtractedVolumeBounds::operator=
SubtractedVolumeBounds & operator=(const SubtractedVolumeBounds &bobo)
Assignment operator.
Definition: SubtractedVolumeBounds.cxx:55
columnar::final
CM final
Definition: ColumnAccessor.h:106
Trk::SubtractedVolumeBounds::outer
const Volume * outer() const
This method returns the outer Volume.
Definition: SubtractedVolumeBounds.h:111
beamspotman.dir
string dir
Definition: beamspotman.py:621
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::SubtractedVolumeBounds::m_inner
std::unique_ptr< Volume > m_inner
Definition: SubtractedVolumeBounds.h:95
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
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
Trk::SubtractedVolumeBounds::m_outer
std::unique_ptr< Volume > m_outer
Definition: SubtractedVolumeBounds.h:94
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::SubtractedVolumeBounds::clone
SubtractedVolumeBounds * clone() const override final
Virtual constructor.
Definition: SubtractedVolumeBounds.h:102
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
Trk::ObjectAccessor
Definition: ObjectAccessor.h:15
Trk::SubtractedVolumeBounds
Definition: SubtractedVolumeBounds.h:40
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::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::SubtractedVolumeBounds
SubtractedVolumeBounds()
Default Constructor.
private
#define private
Definition: xAODTruthCnvAlg.h:20
Trk::SubtractedVolumeBounds::~SubtractedVolumeBounds
virtual ~SubtractedVolumeBounds()
Destructor.
Trk::SubtractedVolumeBounds::m_boundsOrientation
std::vector< bool > m_boundsOrientation
Definition: SubtractedVolumeBounds.h:99
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:79
Trk::Volume
Definition: Volume.h:36
Trk::SubtractedVolumeBounds::inner
const Volume * inner() const
This method returns the inner Volume.
Definition: SubtractedVolumeBounds.h:114
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