ATLAS Offline Software
DoubleTrapezoidVolumeBounds.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 // DoubleTrapezoidVolumeBounds.h, (c) ATLAS Detector software
8 
9 #ifndef TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
10 #define TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
11 
12 // Trk
16 
17 class MsgStream;
18 
19 namespace Trk {
20 
21 class Surface;
22 class RectangleBounds;
23 class TrapezoidBounds;
24 class DiamondBounds;
25 
67  public:
70 
73  DoubleTrapezoidVolumeBounds(double minhlenghtx, double medhlengthx,
74  double maxhlengthx, double hlenghty1,
75  double hlenghty2, double hlengthz);
76 
79 
82 
85  const DoubleTrapezoidVolumeBounds& bobo);
86 
88  DoubleTrapezoidVolumeBounds* clone() const override final;
89 
92  bool inside(const Amg::Vector3D&, double tol = 0.) const override final;
93 
96  (const Amg::Transform3D& transform) override final;
97 
101  bool forceInside = false) const override final;
102 
104  double minHalflengthX() const;
105 
107  double medHalflengthX() const;
108 
110  double maxHalflengthX() const;
111 
113  double halflengthY1() const;
114 
116  double halflengthY2() const;
117 
119  double halflengthZ() const;
120 
122  double alpha1() const;
123 
125  double alpha2() const;
126 
128  MsgStream& dump(MsgStream& sl) const override final;
130  std::ostream& dump(std::ostream& sl) const override final;
131 
132  private:
136 
141 
146 
150 
154 
155 #ifdef TRKDETDESCR_USEFLOATPRECISON
156 #define double float
157 #endif
158  double m_minHalfX;
159  double m_medHalfX;
160  double m_maxHalfX;
161  double m_halfY1;
162  double m_halfY2;
163  double m_halfZ;
164 
165  double m_alpha1;
166  double m_alpha2;
167 #ifdef TRKDETDESCR_USEFLOATPRECISON
168 #undef double
169 #endif
170 
174 };
175 
177  return new DoubleTrapezoidVolumeBounds(*this);
178 }
179 
181  return m_minHalfX;
182 }
183 
185  return m_medHalfX;
186 }
187 
189  return m_maxHalfX;
190 }
191 
193  return m_halfY1;
194 }
195 
197  return m_halfY2;
198 }
199 
201  return m_halfZ;
202 }
203 
204 inline double DoubleTrapezoidVolumeBounds::alpha1() const { return m_alpha1; }
205 
206 inline double DoubleTrapezoidVolumeBounds::alpha2() const { return m_alpha2; }
207 
209  const Amg::Vector3D&, const Amg::Vector3D&, bool) const {
211 }
212 
213 } // namespace Trk
214 
215 #endif // TRKVOLUMES_DOUBLETRAPEZOIDVOLUMESBOUNDS_H
216 
Trk::DoubleTrapezoidVolumeBounds::m_alpha2
double m_alpha2
opening angle alpha (in point A')
Definition: DoubleTrapezoidVolumeBounds.h:166
Trk::RectangleBounds
Definition: RectangleBounds.h:38
Trk::DoubleTrapezoidVolumeBounds::m_halfY1
double m_halfY1
halflength in y
Definition: DoubleTrapezoidVolumeBounds.h:161
Trk::DoubleTrapezoidVolumeBounds::m_objectAccessor
Trk::EightObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
Definition: DoubleTrapezoidVolumeBounds.h:173
Trk::DoubleTrapezoidVolumeBounds::m_halfZ
double m_halfZ
halflength in z
Definition: DoubleTrapezoidVolumeBounds.h:163
Trk::DoubleTrapezoidVolumeBounds::m_minHalfX
double m_minHalfX
minimal Y halflength in x
Definition: DoubleTrapezoidVolumeBounds.h:158
Trk::DoubleTrapezoidVolumeBounds::faceXYDiamondBounds
DiamondBounds * faceXYDiamondBounds() const
This method returns the associated DoubleTrapezoidBounds of the face PlaneSurface parallel to local x...
Definition: DoubleTrapezoidVolumeBounds.cxx:207
Trk::DoubleTrapezoidVolumeBounds::m_alpha1
double m_alpha1
opening angle alpha (in point A)
Definition: DoubleTrapezoidVolumeBounds.h:165
Trk::EightObjectsAccessor
std::array< ObjectAccessor::value_type, 8 > EightObjectsAccessor
Definition: ObjectsAccessor.h:18
Trk::DoubleTrapezoidVolumeBounds::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: DoubleTrapezoidVolumeBounds.cxx:258
Trk::DoubleTrapezoidVolumeBounds::operator=
DoubleTrapezoidVolumeBounds & operator=(const DoubleTrapezoidVolumeBounds &bobo)
Assignment operator.
Definition: DoubleTrapezoidVolumeBounds.cxx:75
Trk::DoubleTrapezoidVolumeBounds::~DoubleTrapezoidVolumeBounds
virtual ~DoubleTrapezoidVolumeBounds()
Destructor.
Surface
Definition: Trigger/TrigAccel/TrigCudaFitter/src/Surface.h:8
Trk::DoubleTrapezoidVolumeBounds::boundarySurfaceAccessor
ObjectAccessor boundarySurfaceAccessor(const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
Provide accessor for BoundarySurfaces.
Definition: DoubleTrapezoidVolumeBounds.h:208
VolumeBounds.h
Trk::DoubleTrapezoidVolumeBounds::DoubleTrapezoidVolumeBounds
DoubleTrapezoidVolumeBounds()
Default Constructor.
Definition: DoubleTrapezoidVolumeBounds.cxx:23
ObjectsAccessor.h
Trk::DoubleTrapezoidVolumeBounds::m_halfY2
double m_halfY2
halflength in y
Definition: DoubleTrapezoidVolumeBounds.h:162
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
Trk::DoubleTrapezoidVolumeBounds::halflengthZ
double halflengthZ() const
This method returns the halflength in local z.
Definition: DoubleTrapezoidVolumeBounds.h:200
Trk::DoubleTrapezoidVolumeBounds::faceAlpha2RectangleBounds
RectangleBounds * faceAlpha2RectangleBounds() const
Definition: DoubleTrapezoidVolumeBounds.cxx:220
Trk::DoubleTrapezoidVolumeBounds::maxHalflengthX
double maxHalflengthX() const
This method returns the X halflength at maximal Y (local coordinates)
Definition: DoubleTrapezoidVolumeBounds.h:188
GeoPrimitives.h
Trk::VolumeBounds
Definition: VolumeBounds.h:45
Trk::DoubleTrapezoidVolumeBounds::dump
MsgStream & dump(MsgStream &sl) const override final
Output Method for MsgStream.
Definition: DoubleTrapezoidVolumeBounds.cxx:276
Trk::DiamondBounds
Definition: DiamondBounds.h:37
Trk::DoubleTrapezoidVolumeBounds::halflengthY1
double halflengthY1() const
This method returns the halflength1 in local y.
Definition: DoubleTrapezoidVolumeBounds.h:192
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::DoubleTrapezoidVolumeBounds::faceBeta2RectangleBounds
RectangleBounds * faceBeta2RectangleBounds() const
Definition: DoubleTrapezoidVolumeBounds.cxx:232
Trk::DoubleTrapezoidVolumeBounds::halflengthY2
double halflengthY2() const
This method returns the halflength2 in local y.
Definition: DoubleTrapezoidVolumeBounds.h:196
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::DoubleTrapezoidVolumeBounds::clone
DoubleTrapezoidVolumeBounds * clone() const override final
Virtual constructor.
Definition: DoubleTrapezoidVolumeBounds.h:176
Amg
Definition of ATLAS Math & Geometry primitives (Amg)
Definition: AmgStringHelpers.h:19
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
Trk::DoubleTrapezoidVolumeBounds::alpha1
double alpha1() const
This method returns the opening angle in point A (negative local x)
Definition: DoubleTrapezoidVolumeBounds.h:204
Trk::DoubleTrapezoidVolumeBounds::alpha2
double alpha2() const
This method returns the opening angle in point A' (negative local x)
Definition: DoubleTrapezoidVolumeBounds.h:206
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::DoubleTrapezoidVolumeBounds::decomposeToSurfaces
const std::vector< const Trk::Surface * > * decomposeToSurfaces(const Amg::Transform3D &transform) override final
Method to decompose the Bounds into Surfaces.
Definition: DoubleTrapezoidVolumeBounds.cxx:94
Trk::ObjectAccessor
Definition: ObjectAccessor.h:15
Trk::DoubleTrapezoidVolumeBounds::faceZXRectangleBoundsTop
RectangleBounds * faceZXRectangleBoundsTop() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
Definition: DoubleTrapezoidVolumeBounds.cxx:244
Trk::DoubleTrapezoidVolumeBounds::faceAlpha1RectangleBounds
RectangleBounds * faceAlpha1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
Definition: DoubleTrapezoidVolumeBounds.cxx:214
Trk::DoubleTrapezoidVolumeBounds::minHalflengthX
double minHalflengthX() const
This method returns the X halflength at minimal Y.
Definition: DoubleTrapezoidVolumeBounds.h:180
Trk::DoubleTrapezoidVolumeBounds::medHalflengthX
double medHalflengthX() const
This method returns the (maximal) halflength in local x.
Definition: DoubleTrapezoidVolumeBounds.h:184
Trk::DoubleTrapezoidVolumeBounds
Definition: DoubleTrapezoidVolumeBounds.h:66
Trk::DoubleTrapezoidVolumeBounds::faceZXRectangleBoundsBottom
RectangleBounds * faceZXRectangleBoundsBottom() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
Definition: DoubleTrapezoidVolumeBounds.cxx:238
Trk::DoubleTrapezoidVolumeBounds::m_maxHalfX
double m_maxHalfX
maximal Y halflength in x
Definition: DoubleTrapezoidVolumeBounds.h:160
Trk::DoubleTrapezoidVolumeBounds::faceBeta1RectangleBounds
RectangleBounds * faceBeta1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive...
Definition: DoubleTrapezoidVolumeBounds.cxx:226
Trk::DoubleTrapezoidVolumeBounds::m_medHalfX
double m_medHalfX
maximal halflength in x
Definition: DoubleTrapezoidVolumeBounds.h:159
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75