ATLAS Offline Software
TrapezoidVolumeBounds.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 // TrapezoidVolumeBounds.h, (c) ATLAS Detector software
8 
9 #ifndef TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
10 #define TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
11 
12 // Trk
16 
17 class MsgStream;
18 
19 namespace Trk {
20 
21 class Surface;
22 class RectangleBounds;
23 class TrapezoidBounds;
24 
57 class TrapezoidVolumeBounds final: public VolumeBounds {
58  public:
61 
63  TrapezoidVolumeBounds(double minhlenghtx, double maxhlengthx, double hlenghty,
64  double hlengthz);
65 
67  TrapezoidVolumeBounds(double minhlenghtx, double hlenghty, double hlengthz,
68  double alpha, double beta);
69 
72 
75 
78 
80  TrapezoidVolumeBounds* clone() const override final;
81 
84  bool inside(const Amg::Vector3D&, double tol = 0.) const override final;
85 
88  (const Amg::Transform3D& transform) override final;
89 
93  bool forceInside = false) const override;
94 
96  double minHalflengthX() const;
97 
99  double maxHalflengthX() const;
100 
102  double halflengthY() const;
103 
105  double halflengthZ() const;
106 
108  double alpha() const;
109 
111  double beta() const;
112 
114  MsgStream& dump(MsgStream& sl) const override final;
115 
117  std::ostream& dump(std::ostream& sl) const override final;
118 
119  private:
123 
127 
131 
135 
139 
140  double m_minHalfX;
141  double m_maxHalfX;
142  double m_halfY;
143  double m_halfZ;
144 
145  double m_alpha;
146  double m_beta;
147 
151 };
152 
154  return new TrapezoidVolumeBounds(*this);
155 }
156 
158  return m_minHalfX;
159 }
161  return m_maxHalfX;
162 }
163 inline double TrapezoidVolumeBounds::halflengthY() const { return m_halfY; }
164 inline double TrapezoidVolumeBounds::halflengthZ() const { return m_halfZ; }
165 inline double TrapezoidVolumeBounds::alpha() const { return m_alpha; }
166 inline double TrapezoidVolumeBounds::beta() const { return m_beta; }
167 
169  const Amg::Vector3D&, const Amg::Vector3D&, bool) const {
171 }
172 
173 } // namespace Trk
174 
175 #endif // TRKVOLUMES_TRAPEZOIDVOLUMESBOUNDS_H
176 
Trk::TrapezoidVolumeBounds::maxHalflengthX
double maxHalflengthX() const
This method returns the maximal halflength in local x.
Definition: TrapezoidVolumeBounds.h:160
Trk::RectangleBounds
Definition: RectangleBounds.h:38
Trk::TrapezoidVolumeBounds::minHalflengthX
double minHalflengthX() const
This method returns the minimal halflength in local x.
Definition: TrapezoidVolumeBounds.h:157
Trk::TrapezoidVolumeBounds::m_alpha
double m_alpha
opening angle alpha (in point A)
Definition: TrapezoidVolumeBounds.h:145
Trk::TrapezoidVolumeBounds::faceBetaRectangleBounds
RectangleBounds * faceBetaRectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive...
Definition: TrapezoidVolumeBounds.cxx:215
Trk::TrapezoidVolumeBounds::m_objectAccessor
SixObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
Definition: TrapezoidVolumeBounds.h:150
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:7
VolumeBounds.h
Trk::TrapezoidVolumeBounds::faceAlphaRectangleBounds
RectangleBounds * faceAlphaRectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
Definition: TrapezoidVolumeBounds.cxx:209
Trk::TrapezoidVolumeBounds::clone
TrapezoidVolumeBounds * clone() const override final
Virtual constructor.
Definition: TrapezoidVolumeBounds.h:153
ObjectsAccessor.h
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
Trk::TrapezoidVolumeBounds::faceZXRectangleBoundsBottom
RectangleBounds * faceZXRectangleBoundsBottom() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
Definition: TrapezoidVolumeBounds.cxx:221
Trk::TrapezoidVolumeBounds::halflengthY
double halflengthY() const
This method returns the halflength in local y.
Definition: TrapezoidVolumeBounds.h:163
Trk::TrapezoidVolumeBounds::m_beta
double m_beta
opening angle beta (in point B)
Definition: TrapezoidVolumeBounds.h:146
GeoPrimitives.h
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Trk::TrapezoidVolumeBounds::~TrapezoidVolumeBounds
virtual ~TrapezoidVolumeBounds()
Destructor.
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::TrapezoidVolumeBounds::TrapezoidVolumeBounds
TrapezoidVolumeBounds()
Default Constructor.
Definition: TrapezoidVolumeBounds.cxx:26
Trk::TrapezoidVolumeBounds::m_halfY
double m_halfY
halflength in y
Definition: TrapezoidVolumeBounds.h:142
Trk::TrapezoidVolumeBounds::m_minHalfX
double m_minHalfX
minimal halflength in x
Definition: TrapezoidVolumeBounds.h:140
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
Trk::TrapezoidVolumeBounds::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: TrapezoidVolumeBounds.cxx:236
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
Trk::TrapezoidVolumeBounds::faceZXRectangleBoundsTop
RectangleBounds * faceZXRectangleBoundsTop() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
Definition: TrapezoidVolumeBounds.cxx:227
Trk::TrapezoidVolumeBounds::faceXYTrapezoidBounds
TrapezoidBounds * faceXYTrapezoidBounds() const
This method returns the associated TrapezoidBounds of the face PlaneSurface parallel to local xy plan...
Definition: TrapezoidVolumeBounds.cxx:202
Trk::SixObjectsAccessor
std::array< ObjectAccessor::value_type, 6 > SixObjectsAccessor
Definition: ObjectsAccessor.h:17
Trk::TrapezoidVolumeBounds
Definition: TrapezoidVolumeBounds.h:57
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::TrapezoidBounds
Definition: TrapezoidBounds.h:43
Trk::TrapezoidVolumeBounds::alpha
double alpha() const
This method returns the opening angle in point A (negative local x)
Definition: TrapezoidVolumeBounds.h:165
Trk::ObjectAccessor
Definition: ObjectAccessor.h:15
Trk::TrapezoidVolumeBounds::m_maxHalfX
double m_maxHalfX
maximal halflength in x
Definition: TrapezoidVolumeBounds.h:141
Trk::TrapezoidVolumeBounds::operator=
TrapezoidVolumeBounds & operator=(const TrapezoidVolumeBounds &bobo)
Assignment operator.
Definition: TrapezoidVolumeBounds.cxx:89
Trk::TrapezoidVolumeBounds::beta
double beta() const
This method returns the opening angle in point B (negative local x)
Definition: TrapezoidVolumeBounds.h:166
Trk::TrapezoidVolumeBounds::decomposeToSurfaces
const std::vector< const Trk::Surface * > * decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into Surfaces.
Definition: TrapezoidVolumeBounds.cxx:105
Trk::TrapezoidVolumeBounds::dump
MsgStream & dump(MsgStream &sl) const override final
Output Method for MsgStream.
Definition: TrapezoidVolumeBounds.cxx:251
Trk::TrapezoidVolumeBounds::halflengthZ
double halflengthZ() const
This method returns the halflength in local z.
Definition: TrapezoidVolumeBounds.h:164
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::TrapezoidVolumeBounds::m_halfZ
double m_halfZ
halflength in z
Definition: TrapezoidVolumeBounds.h:143
Trk::TrapezoidVolumeBounds::boundarySurfaceAccessor
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override
Provide accessor for BoundarySurfaces.
Definition: TrapezoidVolumeBounds.h:168