ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::DoubleTrapezoidVolumeBounds Class Referencefinal

Bounds for a double trapezoidal shaped Volume, the decomposeToSurfaces method creates a vector of 8 surfaces: More...

#include <DoubleTrapezoidVolumeBounds.h>

Inheritance diagram for Trk::DoubleTrapezoidVolumeBounds:
Collaboration diagram for Trk::DoubleTrapezoidVolumeBounds:

Public Member Functions

 DoubleTrapezoidVolumeBounds ()
 Default Constructor.
 DoubleTrapezoidVolumeBounds (double minhlenghtx, double medhlengthx, double maxhlengthx, double hlenghty1, double hlenghty2, double hlengthz)
 Constructor - the double trapezoid boundaries (symmetric trapezoid/diamond)
 DoubleTrapezoidVolumeBounds (const DoubleTrapezoidVolumeBounds &bobo)
 Copy Constructor.
virtual ~DoubleTrapezoidVolumeBounds ()
 Destructor.
DoubleTrapezoidVolumeBoundsoperator= (const DoubleTrapezoidVolumeBounds &bobo)
 Assignment operator.
DoubleTrapezoidVolumeBoundsclone () const override final
 Virtual constructor.
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.
virtual std::vector< std::unique_ptr< Trk::Surface > > decomposeToSurfaces (const Amg::Transform3D &transform) override final
 Method to decompose the Bounds into Surfaces.
ObjectAccessor boundarySurfaceAccessor (const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
 Provide accessor for BoundarySurfaces.
double minHalflengthX () const
 This method returns the X halflength at minimal Y.
double medHalflengthX () const
 This method returns the (maximal) halflength in local x.
double maxHalflengthX () const
 This method returns the X halflength at maximal Y (local coordinates)
double halflengthY1 () const
 This method returns the halflength1 in local y.
double halflengthY2 () const
 This method returns the halflength2 in local y.
double halflengthZ () const
 This method returns the halflength in local z.
double alpha1 () const
 This method returns the opening angle in point A (negative local x)
double alpha2 () const
 This method returns the opening angle in point A' (negative local x)
MsgStream & dump (MsgStream &sl) const override final
 Output Method for MsgStream.
std::ostream & dump (std::ostream &sl) const override final
 Output Method for std::ostream.

Private Member Functions

std::shared_ptr< DiamondBoundsfaceXYDiamondBounds () const
 This method returns the associated DoubleTrapezoidBounds of the face PlaneSurface parallel to local xy plane.
std::shared_ptr< RectangleBoundsfaceAlpha1RectangleBounds () const
 This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negative local x)
std::shared_ptr< RectangleBoundsfaceAlpha2RectangleBounds () const
std::shared_ptr< RectangleBoundsfaceBeta1RectangleBounds () const
 This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive local x)
std::shared_ptr< RectangleBoundsfaceBeta2RectangleBounds () const
std::shared_ptr< RectangleBoundsfaceZXRectangleBoundsBottom () const
 This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane, negative local y.
std::shared_ptr< RectangleBoundsfaceZXRectangleBoundsTop () const
 This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane, positive local y.

Private Attributes

double m_minHalfX
 minimal Y halflength in x
double m_medHalfX
 maximal halflength in x
double m_maxHalfX
 maximal Y halflength in x
double m_halfY1
 halflength in y
double m_halfY2
 halflength in y
double m_halfZ
 halflength in z
double m_alpha1
 opening angle alpha (in point A)
double m_alpha2
 opening angle alpha (in point A')
Trk::EightObjectsAccessor m_objectAccessor
 There's only one single object Acessor for the moment has to be implemented if Cuboids are used more widely.

Detailed Description

Bounds for a double trapezoidal shaped Volume, the decomposeToSurfaces method creates a vector of 8 surfaces:

BoundarySurfaceFace [index]:

- negativeFaceXY     [0] : Diamond Trk::PlaneSurface,
                           parallel to \f$ xy \f$ plane at negative \f$ z

\( - positiveFaceXY [1] : Diamond Trk::PlaneSurface, parallel to \) xy \( plane at positive \) z \( - trapezoidFaceAlpha1 [2] : Rectangular Trk::PlaneSurface, attached to [0] and [1] at negative \) x \((associated to alpha1) - trapezoidFaceBeta1 [3] : Rectangular Trk::PlaneSurface, attached to [0] and [1] at positive \) x \((associated to beta1) - trapezoidFaceAlpha2 [5] : Rectangular Trk::PlaneSurface, attached to [0] and [1] at negative \) x \((associated to alpha2) - trapezoidFaceBeta2 [6] : Rectangular Trk::PlaneSurface, attached to [0] and [1] at positive \) x \((associated to beta2) - negativeFaceZX [4] : Rectangular Trk::PlaneSurface, parallel to \) zx \( plane at negative \) y \( - positiveFaceZX [5] : Rectangular Trk::PlaneSurface, parallel to \) zx \( plane at positive \) y

Definition at line 66 of file DoubleTrapezoidVolumeBounds.h.

Constructor & Destructor Documentation

◆ DoubleTrapezoidVolumeBounds() [1/3]

Trk::DoubleTrapezoidVolumeBounds::DoubleTrapezoidVolumeBounds ( )

Default Constructor.

Definition at line 23 of file DoubleTrapezoidVolumeBounds.cxx.

24 : VolumeBounds()
25 , m_minHalfX(0.)
26 , m_medHalfX(0.)
27 , m_maxHalfX(0.)
28 , m_halfY1(0.)
29 , m_halfY2(0.)
30 , m_halfZ(0.)
31 , m_alpha1(0.)
32 , m_alpha2(0.)
34{}
double m_alpha1
opening angle alpha (in point A)
Trk::EightObjectsAccessor m_objectAccessor
There's only one single object Acessor for the moment has to be implemented if Cuboids are used more ...
double m_alpha2
opening angle alpha (in point A')
double m_minHalfX
minimal Y halflength in x
double m_maxHalfX
maximal Y halflength in x
VolumeBounds()
Default Constructor.

◆ DoubleTrapezoidVolumeBounds() [2/3]

Trk::DoubleTrapezoidVolumeBounds::DoubleTrapezoidVolumeBounds ( double minhlenghtx,
double medhlengthx,
double maxhlengthx,
double hlenghty1,
double hlenghty2,
double hlengthz )

Constructor - the double trapezoid boundaries (symmetric trapezoid/diamond)

Definition at line 36 of file DoubleTrapezoidVolumeBounds.cxx.

43 : VolumeBounds()
44 , m_minHalfX(minhalex)
45 , m_medHalfX(medhalex)
46 , m_maxHalfX(maxhalex)
47 , m_halfY1(haley1)
48 , m_halfY2(haley2)
49 , m_halfZ(halez)
50 , m_alpha1(0.)
51 , m_alpha2(0.)
53{
54 m_alpha1 = atan2(m_medHalfX - m_minHalfX, 2. * m_halfY1);
55 m_alpha2 = atan2(m_medHalfX - m_maxHalfX, 2. * m_halfY2);
56}

◆ DoubleTrapezoidVolumeBounds() [3/3]

Trk::DoubleTrapezoidVolumeBounds::DoubleTrapezoidVolumeBounds ( const DoubleTrapezoidVolumeBounds & bobo)

Copy Constructor.

Definition at line 58 of file DoubleTrapezoidVolumeBounds.cxx.

60 : VolumeBounds()
61 , m_minHalfX(trabo.m_minHalfX)
62 , m_medHalfX(trabo.m_medHalfX)
63 , m_maxHalfX(trabo.m_maxHalfX)
64 , m_halfY1(trabo.m_halfY1)
65 , m_halfY2(trabo.m_halfY2)
66 , m_halfZ(trabo.m_halfZ)
67 , m_alpha1(trabo.m_alpha1)
68 , m_alpha2(trabo.m_alpha2)
69 , m_objectAccessor(trabo.m_objectAccessor)
70{}

◆ ~DoubleTrapezoidVolumeBounds()

Trk::DoubleTrapezoidVolumeBounds::~DoubleTrapezoidVolumeBounds ( )
virtualdefault

Destructor.

Member Function Documentation

◆ alpha1()

double Trk::DoubleTrapezoidVolumeBounds::alpha1 ( ) const
inline

This method returns the opening angle in point A (negative local x)

Definition at line 204 of file DoubleTrapezoidVolumeBounds.h.

204{ return m_alpha1; }

◆ alpha2()

double Trk::DoubleTrapezoidVolumeBounds::alpha2 ( ) const
inline

This method returns the opening angle in point A' (negative local x)

Definition at line 206 of file DoubleTrapezoidVolumeBounds.h.

206{ return m_alpha2; }

◆ boundarySurfaceAccessor()

ObjectAccessor Trk::DoubleTrapezoidVolumeBounds::boundarySurfaceAccessor ( const Amg::Vector3D & gp,
const Amg::Vector3D & dir,
bool forceInside = false ) const
inlinefinaloverridevirtual

Provide accessor for BoundarySurfaces.

Implements Trk::VolumeBounds.

Definition at line 208 of file DoubleTrapezoidVolumeBounds.h.

209 {
210 return Trk::ObjectAccessor(m_objectAccessor);
211}

◆ clone()

DoubleTrapezoidVolumeBounds * Trk::DoubleTrapezoidVolumeBounds::clone ( ) const
inlinefinaloverridevirtual

Virtual constructor.

Implements Trk::VolumeBounds.

Definition at line 176 of file DoubleTrapezoidVolumeBounds.h.

176 {
177 return new DoubleTrapezoidVolumeBounds(*this);
178}

◆ decomposeToSurfaces()

std::vector< std::unique_ptr< Trk::Surface > > Trk::DoubleTrapezoidVolumeBounds::decomposeToSurfaces ( const Amg::Transform3D & transform)
finaloverridevirtual

Method to decompose the Bounds into Surfaces.

Implements Trk::VolumeBounds.

Definition at line 93 of file DoubleTrapezoidVolumeBounds.cxx.

95{
96 auto retsf = std::vector<std::unique_ptr<Trk::Surface>>();
97
98 // face surfaces xy
99 Amg::RotationMatrix3D diamondRotation(transform.rotation());
100 Amg::Vector3D diamondX(diamondRotation.col(0));
101 Amg::Vector3D diamondY(diamondRotation.col(1));
102 Amg::Vector3D diamondZ(diamondRotation.col(2));
103 Amg::Vector3D diamondCenter(transform.translation());
104
105 // (1) - at negative local z
106 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
108 transform *
109 Amg::Translation3D(Amg::Vector3D(0., 0., -this->halflengthZ())) *
110 Amg::AngleAxis3D(180 * Gaudi::Units::deg, Amg::Vector3D(0., 1., 0.))
111 ),
112 this->faceXYDiamondBounds()));
113 // (2) - at positive local z
114 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
116 transform *
118 this->faceXYDiamondBounds()));
119 // face surfaces yz
120 // transmute cyclical
121 // (3) - at point A, attached to alpha opening angle
122 // in the local diamond coordinate system the center of the bottom left yz face plane is:
123 Amg::Vector3D A(- this->minHalflengthX(), -this->halflengthY1(), 0.);
124 Amg::AngleAxis3D alpha1ZRotation(this->alpha1(), Amg::Vector3D(0., 0., 1.));
125 // the face plane has to be rotated first by 90 degrees around the z-axis
126 // because the x-axis should point into ~y direction
127 // then it has to be rotated around the y-axis by 90 degrees to become a yz plane
128 // finally it is rotated by alpha1 around the z-axis
129 Amg::RotationMatrix3D alpha1Rotation(
130 alpha1ZRotation *
131 Amg::AngleAxis3D(-90 * Gaudi::Units::deg, Amg::Vector3D(0., 1., 0.)) *
132 Amg::AngleAxis3D(90 * Gaudi::Units::deg, Amg::Vector3D(0., 0., 1.)));
133 std::shared_ptr<RectangleBounds> faceAlpha1Bounds = this->faceAlpha1RectangleBounds();
134 const Amg::Vector3D& faceAlpha1Position(A);
135 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
137 transform * Amg::Translation3D(faceAlpha1Position) * Amg::Transform3D(alpha1Rotation) ),
138 faceAlpha1Bounds));
139 // (4) - at point B, attached to beta opening angle
140 // in the local diamond coordinate system the center of the bottom right yz face plane is:
141 Amg::Vector3D B(this->minHalflengthX(), -this->halflengthY1(), 0.);
142 Amg::AngleAxis3D beta1ZRotation(-this->alpha1(), Amg::Vector3D(0., 0., 1.));
143 Amg::RotationMatrix3D beta1Rotation(
144 beta1ZRotation *
145 Amg::AngleAxis3D(90 * Gaudi::Units::deg, Amg::Vector3D(0., 1., 0.)) *
146 Amg::AngleAxis3D(90 * Gaudi::Units::deg, Amg::Vector3D(0., 0., 1.)));
147 std::shared_ptr<RectangleBounds> faceBeta1Bounds = this->faceBeta1RectangleBounds();
148 const Amg::Vector3D& faceBeta1Position(B);
149 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
150 transform * Amg::Translation3D(faceBeta1Position) * Amg::Transform3D(beta1Rotation) ,
151 faceBeta1Bounds));
152 // face surfaces yz
153 // transmute cyclical
154 // (5) - at point A', attached to alpha opening angle
155 // center of the left top yz face plate;
156 Amg::Vector3D AA(- this->maxHalflengthX(), this->halflengthY2(), 0.);
157 Amg::AngleAxis3D alpha2ZRotation(-this->alpha2(), Amg::Vector3D(0., 0., 1.));
158 Amg::RotationMatrix3D alpha2Rotation(
159 alpha2ZRotation *
160 Amg::AngleAxis3D(-90 * Gaudi::Units::deg, Amg::Vector3D(0., 1., 0.)) *
161 Amg::AngleAxis3D(-90 * Gaudi::Units::deg, Amg::Vector3D(0., 0., 1.)));
162 std::shared_ptr<RectangleBounds> faceAlpha2Bounds = this->faceAlpha2RectangleBounds();
163 const Amg::Vector3D& faceAlpha2Position(
164 AA);
165 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
167 transform * Amg::Translation3D(faceAlpha2Position) * Amg::Transform3D(alpha2Rotation)),
168 faceAlpha2Bounds));
169 // (6) - at point B', attached to beta opening angle
170 // center of the right top yz face plate;
171 Amg::Vector3D BB( this->maxHalflengthX(),this->halflengthY2(), 0.);
172 Amg::AngleAxis3D beta2ZRotation(this->alpha2(), Amg::Vector3D(0., 0., 1.));
173 Amg::RotationMatrix3D beta2Rotation(
174 beta2ZRotation *
175 Amg::AngleAxis3D(90 * Gaudi::Units::deg, Amg::Vector3D(0., 1., 0.)) *
176 Amg::AngleAxis3D(-90 * Gaudi::Units::deg, Amg::Vector3D(0., 0., 1.)));
177 std::shared_ptr<RectangleBounds> faceBeta2Bounds = this->faceBeta2RectangleBounds();
178 const Amg::Vector3D& faceBeta2Position(BB);
179 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
180 transform * Amg::Translation3D(faceBeta2Position) * Amg::Transform3D(beta2Rotation),
181 faceBeta2Bounds));
182 // face surfaces zx
183 // (7) - at negative local y
184 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
186 transform *
187 Amg::Translation3D(Amg::Vector3D(0., -2 * this->halflengthY1(), 0.)) *
188 Amg::AngleAxis3D(180. * Gaudi::Units::deg, Amg::Vector3D(1., 0., 0.)) *
189 Amg::AngleAxis3D(-90 * Gaudi::Units::deg, Amg::Vector3D(0., 1., 0.)) *
190 Amg::AngleAxis3D(-90. * Gaudi::Units::deg, Amg::Vector3D(1., 0., 0.))),
192 // (8) - at positive local y
193 retsf.push_back(std::make_unique<Trk::PlaneSurface>(
195 transform *
196 Amg::Translation3D(Amg::Vector3D(0., 2*this->halflengthY2(), 0.)) *
197 Amg::AngleAxis3D(-90 * Gaudi::Units::deg, Amg::Vector3D(0., 1., 0.)) *
198 Amg::AngleAxis3D(-90. * Gaudi::Units::deg, Amg::Vector3D(1., 0., 0.))),
199 this->faceZXRectangleBoundsTop()));
200
201 return retsf;
202}
double minHalflengthX() const
This method returns the X halflength at minimal Y.
std::shared_ptr< DiamondBounds > faceXYDiamondBounds() const
This method returns the associated DoubleTrapezoidBounds of the face PlaneSurface parallel to local x...
double alpha2() const
This method returns the opening angle in point A' (negative local x)
std::shared_ptr< RectangleBounds > faceBeta1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive...
double halflengthZ() const
This method returns the halflength in local z.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsBottom() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double halflengthY1() const
This method returns the halflength1 in local y.
std::shared_ptr< RectangleBounds > faceZXRectangleBoundsTop() const
This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane...
double alpha1() const
This method returns the opening angle in point A (negative local x)
double halflengthY2() const
This method returns the halflength2 in local y.
std::shared_ptr< RectangleBounds > faceAlpha2RectangleBounds() const
double maxHalflengthX() const
This method returns the X halflength at maximal Y (local coordinates)
std::shared_ptr< RectangleBounds > faceBeta2RectangleBounds() const
std::shared_ptr< RectangleBounds > faceAlpha1RectangleBounds() const
This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negativ...
Eigen::AngleAxisd AngleAxis3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D

◆ dump() [1/2]

MsgStream & Trk::DoubleTrapezoidVolumeBounds::dump ( MsgStream & sl) const
finaloverridevirtual

Output Method for MsgStream.

Implements Trk::VolumeBounds.

Definition at line 274 of file DoubleTrapezoidVolumeBounds.cxx.

275{
276 std::stringstream temp_sl;
277 temp_sl << std::setiosflags(std::ios::fixed);
278 temp_sl << std::setprecision(7);
279 temp_sl << "Trk::DoubleTrapezoidVolumeBounds: (minhalfX, medhalfX, maxhalfX, "
280 "halfY1, halfY2, halfZ) = ";
281 temp_sl << "(" << m_minHalfX << ", " << m_medHalfX << ", " << m_maxHalfX;
282 temp_sl << ", " << m_halfY1 << ", " << m_halfY2 << ", " << m_halfZ << ")";
283 sl << temp_sl.str();
284 return sl;
285}

◆ dump() [2/2]

std::ostream & Trk::DoubleTrapezoidVolumeBounds::dump ( std::ostream & sl) const
finaloverridevirtual

Output Method for std::ostream.

Implements Trk::VolumeBounds.

Definition at line 288 of file DoubleTrapezoidVolumeBounds.cxx.

289{
290 std::stringstream temp_sl;
291 temp_sl << std::setiosflags(std::ios::fixed);
292 temp_sl << std::setprecision(7);
293 temp_sl << "Trk::DoubleTrapezoidVolumeBounds: ) =(minhalfX, medhalfX, "
294 "maxhalfX, halfY1, halfY2, halfZ) ";
295 temp_sl << "(" << m_minHalfX << ", " << m_medHalfX << ", " << m_maxHalfX;
296 temp_sl << ", " << m_halfY1 << ", " << m_halfY2 << ", " << m_halfZ << ")";
297 sl << temp_sl.str();
298 return sl;
299}

◆ faceAlpha1RectangleBounds()

std::shared_ptr< Trk::RectangleBounds > Trk::DoubleTrapezoidVolumeBounds::faceAlpha1RectangleBounds ( ) const
private

This method returns the associated RecantleBounds of the face PlaneSurface attached to alpha (negative local x)

Definition at line 213 of file DoubleTrapezoidVolumeBounds.cxx.

214{
215 return std::make_shared<Trk::RectangleBounds>(m_halfY1 / cos(m_alpha1), m_halfZ);
216}

◆ faceAlpha2RectangleBounds()

std::shared_ptr< Trk::RectangleBounds > Trk::DoubleTrapezoidVolumeBounds::faceAlpha2RectangleBounds ( ) const
private

Definition at line 219 of file DoubleTrapezoidVolumeBounds.cxx.

220{
221 return std::make_shared<Trk::RectangleBounds>(m_halfY2 / cos(m_alpha2), m_halfZ);
222}

◆ faceBeta1RectangleBounds()

std::shared_ptr< Trk::RectangleBounds > Trk::DoubleTrapezoidVolumeBounds::faceBeta1RectangleBounds ( ) const
private

This method returns the associated RecantleBounds of the face PlaneSurface attached to beta (positive local x)

Definition at line 225 of file DoubleTrapezoidVolumeBounds.cxx.

226{
227 return std::make_shared<Trk::RectangleBounds>(m_halfY1 / cos(m_alpha1), m_halfZ);
228}

◆ faceBeta2RectangleBounds()

std::shared_ptr< Trk::RectangleBounds > Trk::DoubleTrapezoidVolumeBounds::faceBeta2RectangleBounds ( ) const
private

Definition at line 231 of file DoubleTrapezoidVolumeBounds.cxx.

232{
233 return std::make_shared<Trk::RectangleBounds>(m_halfY2 / cos(m_alpha2), m_halfZ);
234}

◆ faceXYDiamondBounds()

std::shared_ptr< Trk::DiamondBounds > Trk::DoubleTrapezoidVolumeBounds::faceXYDiamondBounds ( ) const
private

This method returns the associated DoubleTrapezoidBounds of the face PlaneSurface parallel to local xy plane.

Definition at line 206 of file DoubleTrapezoidVolumeBounds.cxx.

207{
208 return std::make_shared<Trk::DiamondBounds>(
210}

◆ faceZXRectangleBoundsBottom()

std::shared_ptr< Trk::RectangleBounds > Trk::DoubleTrapezoidVolumeBounds::faceZXRectangleBoundsBottom ( ) const
private

This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane, negative local y.

Definition at line 237 of file DoubleTrapezoidVolumeBounds.cxx.

238{
239 return std::make_shared<Trk::RectangleBounds>(m_halfZ, m_minHalfX);
240}

◆ faceZXRectangleBoundsTop()

std::shared_ptr< Trk::RectangleBounds > Trk::DoubleTrapezoidVolumeBounds::faceZXRectangleBoundsTop ( ) const
private

This method returns the associated RecantleBounds of the face PlaneSurface parallel to local zx plane, positive local y.

Definition at line 243 of file DoubleTrapezoidVolumeBounds.cxx.

244{
245 return std::make_shared<Trk::RectangleBounds>(m_halfZ, m_maxHalfX);
246}

◆ halflengthY1()

double Trk::DoubleTrapezoidVolumeBounds::halflengthY1 ( ) const
inline

This method returns the halflength1 in local y.

Definition at line 192 of file DoubleTrapezoidVolumeBounds.h.

192 {
193 return m_halfY1;
194}

◆ halflengthY2()

double Trk::DoubleTrapezoidVolumeBounds::halflengthY2 ( ) const
inline

This method returns the halflength2 in local y.

Definition at line 196 of file DoubleTrapezoidVolumeBounds.h.

196 {
197 return m_halfY2;
198}

◆ halflengthZ()

double Trk::DoubleTrapezoidVolumeBounds::halflengthZ ( ) const
inline

This method returns the halflength in local z.

Definition at line 200 of file DoubleTrapezoidVolumeBounds.h.

200 {
201 return m_halfZ;
202}

◆ inside()

bool Trk::DoubleTrapezoidVolumeBounds::inside ( const Amg::Vector3D & pos,
double tol = 0. ) const
finaloverridevirtual

This method checks if position in the 3D volume frame is inside the cylinder.

Implements Trk::VolumeBounds.

Definition at line 257 of file DoubleTrapezoidVolumeBounds.cxx.

259{
260 if (std::abs(pos.z()) > m_halfZ + tol)
261 return false;
262 if (pos.y() < -2 * m_halfY1 - tol)
263 return false;
264 if (pos.y() > 2 * m_halfY2 + tol)
265 return false;
266 std::shared_ptr<Trk::DiamondBounds> faceXYBounds = this->faceXYDiamondBounds();
267 Amg::Vector2D locp(pos.x(), pos.y());
268 bool inside(faceXYBounds->inside(locp, tol, tol));
269 return inside;
270}
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.
Eigen::Matrix< double, 2, 1 > Vector2D

◆ maxHalflengthX()

double Trk::DoubleTrapezoidVolumeBounds::maxHalflengthX ( ) const
inline

This method returns the X halflength at maximal Y (local coordinates)

Definition at line 188 of file DoubleTrapezoidVolumeBounds.h.

188 {
189 return m_maxHalfX;
190}

◆ medHalflengthX()

double Trk::DoubleTrapezoidVolumeBounds::medHalflengthX ( ) const
inline

This method returns the (maximal) halflength in local x.

Definition at line 184 of file DoubleTrapezoidVolumeBounds.h.

184 {
185 return m_medHalfX;
186}

◆ minHalflengthX()

double Trk::DoubleTrapezoidVolumeBounds::minHalflengthX ( ) const
inline

This method returns the X halflength at minimal Y.

Definition at line 180 of file DoubleTrapezoidVolumeBounds.h.

180 {
181 return m_minHalfX;
182}

◆ operator=()

Trk::DoubleTrapezoidVolumeBounds & Trk::DoubleTrapezoidVolumeBounds::operator= ( const DoubleTrapezoidVolumeBounds & bobo)

Assignment operator.

Definition at line 75 of file DoubleTrapezoidVolumeBounds.cxx.

77{
78 if (this != &trabo) {
79 m_minHalfX = trabo.m_minHalfX;
80 m_medHalfX = trabo.m_medHalfX;
81 m_maxHalfX = trabo.m_maxHalfX;
82 m_halfY1 = trabo.m_halfY1;
83 m_halfY2 = trabo.m_halfY2;
84 m_halfZ = trabo.m_halfZ;
85 m_alpha1 = trabo.m_alpha1;
86 m_alpha2 = trabo.m_alpha2;
87 m_objectAccessor = trabo.m_objectAccessor;
88 }
89 return *this;
90}

Member Data Documentation

◆ m_alpha1

double Trk::DoubleTrapezoidVolumeBounds::m_alpha1
private

opening angle alpha (in point A)

Definition at line 165 of file DoubleTrapezoidVolumeBounds.h.

◆ m_alpha2

double Trk::DoubleTrapezoidVolumeBounds::m_alpha2
private

opening angle alpha (in point A')

Definition at line 166 of file DoubleTrapezoidVolumeBounds.h.

◆ m_halfY1

double Trk::DoubleTrapezoidVolumeBounds::m_halfY1
private

halflength in y

Definition at line 161 of file DoubleTrapezoidVolumeBounds.h.

◆ m_halfY2

double Trk::DoubleTrapezoidVolumeBounds::m_halfY2
private

halflength in y

Definition at line 162 of file DoubleTrapezoidVolumeBounds.h.

◆ m_halfZ

double Trk::DoubleTrapezoidVolumeBounds::m_halfZ
private

halflength in z

Definition at line 163 of file DoubleTrapezoidVolumeBounds.h.

◆ m_maxHalfX

double Trk::DoubleTrapezoidVolumeBounds::m_maxHalfX
private

maximal Y halflength in x

Definition at line 160 of file DoubleTrapezoidVolumeBounds.h.

◆ m_medHalfX

double Trk::DoubleTrapezoidVolumeBounds::m_medHalfX
private

maximal halflength in x

Definition at line 159 of file DoubleTrapezoidVolumeBounds.h.

◆ m_minHalfX

double Trk::DoubleTrapezoidVolumeBounds::m_minHalfX
private

minimal Y halflength in x

Definition at line 158 of file DoubleTrapezoidVolumeBounds.h.

◆ m_objectAccessor

Trk::EightObjectsAccessor Trk::DoubleTrapezoidVolumeBounds::m_objectAccessor
private

There's only one single object Acessor for the moment has to be implemented if Cuboids are used more widely.

Definition at line 173 of file DoubleTrapezoidVolumeBounds.h.


The documentation for this class was generated from the following files: