ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
Trk::CylinderVolumeBounds Class Referencefinal

#include <CylinderVolumeBounds.h>

Inheritance diagram for Trk::CylinderVolumeBounds:
Collaboration diagram for Trk::CylinderVolumeBounds:

Public Member Functions

 CylinderVolumeBounds ()
 Default Constructor. More...
 
 CylinderVolumeBounds (double radius, double halez)
 Constructor - full cylinder. More...
 
 CylinderVolumeBounds (double rinner, double router, double halez)
 Constructor - extruded cylinder. More...
 
 CylinderVolumeBounds (double rinner, double router, double halfPhiSector, double halez)
 Constructor - extruded cylinder segment. More...
 
 CylinderVolumeBounds (const CylinderVolumeBounds &cylbo)
 Copy Constructor. More...
 
virtual ~CylinderVolumeBounds ()
 Destructor. More...
 
CylinderVolumeBoundsoperator= (const CylinderVolumeBounds &cylbo)
 Assignment operator. More...
 
CylinderVolumeBoundsclone () const override
 Virtual constructor. More...
 
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. More...
 
const std::vector< const Trk::Surface * > * decomposeToSurfaces (const Amg::Transform3D &transform) override final
 Method to decompose the Bounds into boundarySurfaces. More...
 
ObjectAccessor boundarySurfaceAccessor (const Amg::Vector3D &gp, const Amg::Vector3D &dir, bool forceInside=false) const override final
 Provide accessor for BoundarySurfaces. More...
 
double innerRadius () const
 This method returns the inner radius. More...
 
double outerRadius () const
 This method returns the outer radius. More...
 
double mediumRadius () const
 This method returns the medium radius. More...
 
double deltaRadius () const
 This method returns the delta radius. More...
 
double halfPhiSector () const
 This method returns the halfPhiSector angle. More...
 
double halflengthZ () const
 This method returns the halflengthZ. More...
 
MsgStream & dump (MsgStream &sl) const override final
 Output Method for MsgStream. More...
 
std::ostream & dump (std::ostream &sl) const override final
 Output Method for std::ostream. More...
 

Private Member Functions

CylinderBoundsinnerCylinderBounds () const
 This method returns the associated CylinderBounds of the inner CylinderSurfaces. More...
 
CylinderBoundsouterCylinderBounds () const
 This method returns the associated CylinderBounds of the outer CylinderSurfaces. More...
 
DiscBoundsbottomDiscBounds () const
 This method returns the associated DiscBounds for the bottom/top DiscSurface. More...
 
DiscBoundstopDiscBounds () const
 This method returns the associated DiscBounds for the bottom/top DiscSurface. More...
 
RectangleBoundssectorPlaneBounds () const
 This method returns the associated PlaneBounds limiting a sectoral CylinderVolume. More...
 
void createBoundarySurfaceAccessors ()
 Private method to construct the accessors. More...
 

Private Attributes

double m_innerRadius
 
double m_outerRadius
 
double m_halfPhiSector
 
double m_halfZ
 
CylinderVolumeBoundaryAccessors m_boundaryAccessors
 Accessors for Boundary surface access - static is not possible due to mismatched delete() / free () with TrkMagFieldUtils. More...
 

Static Private Attributes

static const double s_numericalStable
 numerical stability More...
 

Detailed Description

Bounds for a cylindrical Volume, the decomposeToSurfaces method creates a vector of up to 6 surfaces:

case A) 3 Surfaces (full cylindrical tube): BoundarySurfaceFace [index]:

case B) 4 Surfaces (tube with inner and outer radius): BoundarySurfaceFace [index]:

case C) 6 Surfaces (sectoral tube with inner and outer radius): BoundarySurfaceFace [index]:

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch
Christos Anastopoulos (Athena MT modifications)

Definition at line 70 of file CylinderVolumeBounds.h.

Constructor & Destructor Documentation

◆ CylinderVolumeBounds() [1/5]

Trk::CylinderVolumeBounds::CylinderVolumeBounds ( )

Default Constructor.

Definition at line 30 of file CylinderVolumeBounds.cxx.

31  : VolumeBounds()
32  , m_innerRadius(0.)
33  , m_outerRadius(0.)
34  , m_halfPhiSector(0.)
35  , m_halfZ(0.)
37 {}

◆ CylinderVolumeBounds() [2/5]

Trk::CylinderVolumeBounds::CylinderVolumeBounds ( double  radius,
double  halez 
)

Constructor - full cylinder.

Definition at line 39 of file CylinderVolumeBounds.cxx.

40  : VolumeBounds()
41  , m_innerRadius(0.)
42  , m_outerRadius(std::abs(radius))
44  , m_halfZ(std::abs(halez))
46 {}

◆ CylinderVolumeBounds() [3/5]

Trk::CylinderVolumeBounds::CylinderVolumeBounds ( double  rinner,
double  router,
double  halez 
)

Constructor - extruded cylinder.

Definition at line 48 of file CylinderVolumeBounds.cxx.

52  : VolumeBounds()
53  , m_innerRadius(std::abs(rinner))
54  , m_outerRadius(std::abs(router))
56  , m_halfZ(std::abs(halez))
58 {}

◆ CylinderVolumeBounds() [4/5]

Trk::CylinderVolumeBounds::CylinderVolumeBounds ( double  rinner,
double  router,
double  halfPhiSector,
double  halez 
)

Constructor - extruded cylinder segment.

Definition at line 60 of file CylinderVolumeBounds.cxx.

65  : VolumeBounds()
66  , m_innerRadius(std::abs(rinner))
67  , m_outerRadius(std::abs(router))
68  , m_halfPhiSector(haphi)
69  , m_halfZ(std::abs(halez))
71 {}

◆ CylinderVolumeBounds() [5/5]

Trk::CylinderVolumeBounds::CylinderVolumeBounds ( const CylinderVolumeBounds cylbo)

Copy Constructor.

Definition at line 73 of file CylinderVolumeBounds.cxx.

75  : VolumeBounds()
76  , m_innerRadius(cylbo.m_innerRadius)
77  , m_outerRadius(cylbo.m_outerRadius)
78  , m_halfPhiSector(cylbo.m_halfPhiSector)
79  , m_halfZ(cylbo.m_halfZ)
81 {}

◆ ~CylinderVolumeBounds()

Trk::CylinderVolumeBounds::~CylinderVolumeBounds ( )
virtualdefault

Destructor.

Member Function Documentation

◆ bottomDiscBounds()

Trk::DiscBounds * Trk::CylinderVolumeBounds::bottomDiscBounds ( ) const
private

This method returns the associated DiscBounds for the bottom/top DiscSurface.

Definition at line 366 of file CylinderVolumeBounds.cxx.

367 {
369 }

◆ boundarySurfaceAccessor()

Trk::ObjectAccessor Trk::CylinderVolumeBounds::boundarySurfaceAccessor ( const Amg::Vector3D gp,
const Amg::Vector3D dir,
bool  forceInside = false 
) const
finaloverridevirtual

Provide accessor for BoundarySurfaces.

Implements Trk::VolumeBounds.

Definition at line 165 of file CylinderVolumeBounds.cxx.

169 {
170  // the tube case - most likely
171  if (
173  std::abs(m_halfPhiSector - M_PI) < s_numericalStable) {
174  // prepare the data
175  double posZ = gp.z();
176  double posR = gp.perp();
177  // difference Vector
178  Amg::Vector3D diff(gp + dir);
179  // differences
180  double deltaZ = diff.z() - posZ;
181  double deltaR = diff.perp() - posR;
182 
183  // the isOnSurface cases + switchers (that change with the cases)
184  bool isOnFace = false;
185  bool intersectionIndicator = (deltaR > 0.);
186  bool choiceIndicator = false;
187 
188  // on surface or look-a-likes
189  // on zMin or slightly outside
190  if (
191  std::abs(posZ + m_halfZ) < s_numericalStable ||
192  (posZ < (-m_halfZ) && deltaZ > 0.)) {
193  isOnFace = true;
194  } else if (
195  std::abs(posZ - m_halfZ) < s_numericalStable ||
196  (posZ > m_halfZ && deltaZ < 0.)) {
197  // on zMax or slighly outside
198  isOnFace = true;
199  } else if (
200  std::abs(posR - m_innerRadius) < s_numericalStable ||
201  (posR < m_innerRadius && deltaR > 0.)) {
202  // on innerRadius or slightly outside
203  isOnFace = true;
204  choiceIndicator =
205  (deltaZ > 0.); // the side choice indicator <========== WRONG ==========
206  } else if (
207  std::abs(posR - m_outerRadius) < s_numericalStable ||
208  (posR > m_outerRadius && deltaR < 0.)) {
209  // on outRadius or slightly outside
210  isOnFace = true;
211  choiceIndicator =
212  (deltaZ > 0.); // the side choice indicator <========== WRONG ==========
213  }
214 
215  // the onSurface case
216  // =================================================================================
217  if (isOnFace) {
218  if (intersectionIndicator) {
219  // intersect the Rmax / with floatint point exception check
220  Trk::CylinderIntersector intersectRmax(
221  posR, posZ, deltaR != 0 ? deltaZ / deltaR : 0, m_outerRadius);
222  double zOfIntersect = intersectRmax.yOfX;
223  // now check if the intersect is inside m_halfZ
224  if (std::abs(zOfIntersect) <= m_halfZ)
225  return {(choiceIndicator || zOfIntersect > 0.)
230  // if the intersect is outside
231  return {
232  (choiceIndicator || zOfIntersect > 0.)
236  }
237  // intersect the Rmin
238  Trk::CylinderIntersector intersectRmin(
239  posR, posZ, deltaR != 0 ? deltaZ / deltaR : 0, m_innerRadius);
240  double zOfIntersect = intersectRmin.yOfX;
241  // now check if the intersect is inside m_halfZ
242  if (std::abs(zOfIntersect) <= m_halfZ)
243  return {
244  (choiceIndicator || zOfIntersect > 0.)
248  // if the intersect is outside
249  return {
250  (choiceIndicator || zOfIntersect > 0.)
253  }
254  // =================================================================================================
255 
256  // ======================= the inside/outside part remains
257  // =========================================
258  // (a) outside cases
259  if (posR < m_innerRadius && deltaR < 0.)
261  if (posR > m_outerRadius && deltaR > 0.)
263  if (posZ < -m_halfZ && deltaZ < 0.)
265  if (posZ > m_halfZ && deltaZ > 0.)
267  // (b) inside cases
268  // the increase R case
269  if (deltaR > 0.) {
270  // solve the linear equation for the outer Radius - with floating point
271  // exception check
272  Trk::CylinderIntersector intersectRmax(
273  posR, posZ, deltaR != 0 ? deltaZ / deltaR : 0, m_outerRadius);
274  double zOfIntersect = intersectRmax.yOfX;
275 
276  if (std::abs(zOfIntersect) <= m_halfZ && zOfIntersect > 0.)
278  if (std::abs(zOfIntersect) <= m_halfZ && zOfIntersect < 0.)
280  if (std::abs(zOfIntersect) > m_halfZ && zOfIntersect < 0.)
282  if (std::abs(zOfIntersect) > m_halfZ && zOfIntersect > 0.)
284 
285  } else {
286  // solve the linear equation for the inner Radius with floating point
287  // exceptin check
288  Trk::CylinderIntersector intersectRmin(
289  posR, posZ, deltaR != 0 ? deltaZ / deltaR : 0, m_innerRadius);
290  double zOfIntersect = intersectRmin.yOfX;
291 
292  if (std::abs(zOfIntersect) <= m_halfZ && zOfIntersect > 0.)
294  if (std::abs(zOfIntersect) <= m_halfZ && zOfIntersect < 0.)
296  if (std::abs(zOfIntersect) > m_halfZ && zOfIntersect > 0.)
299  }
300  }
301  // the cylinder case
302  if (
304  std::abs(m_halfPhiSector - M_PI) < s_numericalStable) {
305 
306  // ----------------------------- z / r information
307  double posZ = gp.z();
308  double posR = gp.perp();
309 
310  // is on R case
311  bool isOnCylinder = (std::abs(posR - m_outerRadius) < s_numericalStable);
312 
313  // difference Vector
314  Amg::Vector3D diff(gp + dir);
315  // differences
316  double deltaZ = diff.z() - posZ;
317  double deltaR = diff.perp() - posR;
318  // take the sign of the intersect
319  int radiusSign = deltaR > 0. ? 1 : -1;
320 
321  // solve the linear equation for the cylinder Radius / with floating point
322  // exceptin check
323  Trk::CylinderIntersector intersectR(
324  posR,
325  posZ,
326  deltaR != 0 ? deltaZ / deltaR : 0,
327  radiusSign * m_outerRadius);
328 
329  // the intersection point - a little trick for the OnFace cases
330  double zOfIntersect = intersectR.yOfX;
331  // check if intersection exists
332  bool intersectsCylinder =
333  !isOnCylinder ? (zOfIntersect * zOfIntersect <= m_halfZ * m_halfZ)
334  : false;
335 
336  // return the cases for going through the cylinder
337  if (intersectsCylinder && zOfIntersect > 0.)
339  if (intersectsCylinder && zOfIntersect <= 0.)
341  if (deltaZ > 0.)
344  }
345  // the sectoral cylinder case
346  if (m_innerRadius != 0. && std::abs(m_halfPhiSector - M_PI) > 10e-3)
349  // it remains the sectoral tube case
351 }

◆ clone()

CylinderVolumeBounds * Trk::CylinderVolumeBounds::clone ( ) const
inlineoverridevirtual

Virtual constructor.

Implements Trk::VolumeBounds.

Definition at line 171 of file CylinderVolumeBounds.h.

171  {
172  return new CylinderVolumeBounds(*this);
173 }

◆ createBoundarySurfaceAccessors()

void Trk::CylinderVolumeBounds::createBoundarySurfaceAccessors ( )
private

Private method to construct the accessors.

◆ decomposeToSurfaces()

const std::vector< const Trk::Surface * > * Trk::CylinderVolumeBounds::decomposeToSurfaces ( const Amg::Transform3D transform)
finaloverridevirtual

Method to decompose the Bounds into boundarySurfaces.

Implements Trk::VolumeBounds.

Definition at line 98 of file CylinderVolumeBounds.cxx.

100 {
101  std::vector<const Trk::Surface*>* retsf =
102  new std::vector<const Trk::Surface*>;
103  // memory optimisation --- reserve the maximum
104  retsf->reserve(6);
105 
106  // check if the transform is approximatively the identity
107  bool isConcentric = transform.isApprox(Amg::Transform3D::Identity());
108 
109  Amg::RotationMatrix3D discRot(transform.rotation());
110  Amg::Vector3D cylCenter(transform.translation());
111 
112  // bottom Disc (negative z)
113  Amg::RotationMatrix3D bottomDiscRot;
114  bottomDiscRot.col(0) = discRot.col(1);
115  bottomDiscRot.col(1) = discRot.col(0);
116  bottomDiscRot.col(2) = -discRot.col(2);
117  retsf->push_back(new Trk::DiscSurface(
119  transform * Amg::AngleAxis3D(M_PI, Amg::Vector3D(1., 0., 0.)) *
121  bottomDiscBounds()));
122  // top Disc (positive z)
123  retsf->push_back(new Trk::DiscSurface(
125  discRot * Amg::Translation3D(cylCenter + halflengthZ() * discRot.col(2))),
126  topDiscBounds()));
127  // outer Cylinder
128  if (!isConcentric)
129  retsf->push_back(new Trk::CylinderSurface(
131  else
132  retsf->push_back(new Trk::CylinderSurface(outerCylinderBounds()));
133 
134  // innermost Cylinder
135  if (innerRadius() > s_numericalStable) {
136  if (!isConcentric)
137  retsf->push_back(new Trk::CylinderSurface(
139  else
140  retsf->push_back(new Trk::CylinderSurface(innerCylinderBounds()));
141  }
142 
143  if (std::abs(halfPhiSector() - M_PI) > s_numericalStable) {
144  // sectorPlane 1 (negative phi)
145  retsf->push_back(new Trk::PlaneSurface(
147  transform *
148  Amg::AngleAxis3D(-halfPhiSector(), Amg::Vector3D(0., 0., 1.)) *
150  Amg::AngleAxis3D(M_PI / 2, Amg::Vector3D(1., 0., 0.))),
151  sectorPlaneBounds()));
152  // sectorPlane 2 (positive phi)
153  retsf->push_back(new Trk::PlaneSurface(
155  transform *
158  Amg::AngleAxis3D(-M_PI / 2, Amg::Vector3D(1., 0., 0.))),
159  sectorPlaneBounds()));
160  }
161  return retsf;
162 }

◆ deltaRadius()

double Trk::CylinderVolumeBounds::deltaRadius ( ) const
inline

This method returns the delta radius.

Definition at line 199 of file CylinderVolumeBounds.h.

199  {
200  return (m_outerRadius - m_innerRadius);
201 }

◆ dump() [1/2]

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

Output Method for MsgStream.

Implements Trk::VolumeBounds.

Definition at line 381 of file CylinderVolumeBounds.cxx.

382 {
383  std::stringstream temp_sl;
384  temp_sl << std::setiosflags(std::ios::fixed);
385  temp_sl << std::setprecision(2);
386  temp_sl << "Trk::CylinderVolumeBounds: (rMin, rMax, halfPhi, halfZ) = ";
387  temp_sl << m_innerRadius << ", " << m_outerRadius << ", " << m_halfPhiSector
388  << ", " << m_halfZ;
389  sl << temp_sl.str();
390  return sl;
391 }

◆ dump() [2/2]

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

Output Method for std::ostream.

Implements Trk::VolumeBounds.

Definition at line 394 of file CylinderVolumeBounds.cxx.

395 {
396  std::stringstream temp_sl;
397  temp_sl << std::setiosflags(std::ios::fixed);
398  temp_sl << std::setprecision(2);
399  temp_sl << "Trk::CylinderVolumeBounds: (rMin, rMax, halfPhi, halfZ) = ";
400  temp_sl << m_innerRadius << ", " << m_outerRadius << ", " << m_halfPhiSector
401  << ", " << m_halfZ;
402  sl << temp_sl.str();
403  return sl;
404 }

◆ halflengthZ()

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

This method returns the halflengthZ.

Definition at line 207 of file CylinderVolumeBounds.h.

207 { return m_halfZ; }

◆ halfPhiSector()

double Trk::CylinderVolumeBounds::halfPhiSector ( ) const
inline

This method returns the halfPhiSector angle.

Definition at line 203 of file CylinderVolumeBounds.h.

203  {
204  return m_halfPhiSector;
205 }

◆ innerCylinderBounds()

Trk::CylinderBounds * Trk::CylinderVolumeBounds::innerCylinderBounds ( ) const
private

This method returns the associated CylinderBounds of the inner CylinderSurfaces.

Definition at line 354 of file CylinderVolumeBounds.cxx.

355 {
357 }

◆ innerRadius()

double Trk::CylinderVolumeBounds::innerRadius ( ) const
inline

This method returns the inner radius.

Definition at line 187 of file CylinderVolumeBounds.h.

187  {
188  return m_innerRadius;
189 }

◆ inside()

bool Trk::CylinderVolumeBounds::inside ( const Amg::Vector3D pos,
double  tol = 0. 
) const
inlinefinaloverridevirtual

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

Implements Trk::VolumeBounds.

Definition at line 175 of file CylinderVolumeBounds.h.

176  {
177  double ros = pos.perp();
178  // bool insidePhi = fabs(pos.phi()) <= m_halfPhiSector + tol;
179  bool insidePhi = cos(pos.phi()) >= cos(m_halfPhiSector) - tol;
180  bool insideR =
181  insidePhi ? ((ros >= m_innerRadius - tol) && (ros <= m_outerRadius + tol))
182  : false;
183  bool insideZ = insideR ? (fabs(pos.z()) <= m_halfZ + tol) : false;
184  return (insideZ && insideR && insidePhi);
185 }

◆ mediumRadius()

double Trk::CylinderVolumeBounds::mediumRadius ( ) const
inline

This method returns the medium radius.

Definition at line 195 of file CylinderVolumeBounds.h.

195  {
196  return 0.5 * (m_innerRadius + m_outerRadius);
197 }

◆ operator=()

Trk::CylinderVolumeBounds & Trk::CylinderVolumeBounds::operator= ( const CylinderVolumeBounds cylbo)

Assignment operator.

Definition at line 86 of file CylinderVolumeBounds.cxx.

87 {
88  if (this != &cylbo) {
89  m_innerRadius = cylbo.m_innerRadius;
90  m_outerRadius = cylbo.m_outerRadius;
91  m_halfPhiSector = cylbo.m_halfPhiSector;
92  m_halfZ = cylbo.m_halfZ;
93  }
94  return *this;
95 }

◆ outerCylinderBounds()

Trk::CylinderBounds * Trk::CylinderVolumeBounds::outerCylinderBounds ( ) const
private

This method returns the associated CylinderBounds of the outer CylinderSurfaces.

Definition at line 360 of file CylinderVolumeBounds.cxx.

361 {
363 }

◆ outerRadius()

double Trk::CylinderVolumeBounds::outerRadius ( ) const
inline

This method returns the outer radius.

Definition at line 191 of file CylinderVolumeBounds.h.

191  {
192  return m_outerRadius;
193 }

◆ sectorPlaneBounds()

Trk::RectangleBounds * Trk::CylinderVolumeBounds::sectorPlaneBounds ( ) const
private

This method returns the associated PlaneBounds limiting a sectoral CylinderVolume.

Definition at line 372 of file CylinderVolumeBounds.cxx.

373 {
374  return new Trk::RectangleBounds(
375  0.5 * (m_outerRadius - m_innerRadius), m_halfZ);
376 }

◆ topDiscBounds()

DiscBounds * Trk::CylinderVolumeBounds::topDiscBounds ( ) const
inlineprivate

This method returns the associated DiscBounds for the bottom/top DiscSurface.

Definition at line 209 of file CylinderVolumeBounds.h.

209  {
210  return this->bottomDiscBounds();
211 }

Member Data Documentation

◆ m_boundaryAccessors

CylinderVolumeBoundaryAccessors Trk::CylinderVolumeBounds::m_boundaryAccessors
private

Accessors for Boundary surface access - static is not possible due to mismatched delete() / free () with TrkMagFieldUtils.

Definition at line 165 of file CylinderVolumeBounds.h.

◆ m_halfPhiSector

double Trk::CylinderVolumeBounds::m_halfPhiSector
private

Definition at line 159 of file CylinderVolumeBounds.h.

◆ m_halfZ

double Trk::CylinderVolumeBounds::m_halfZ
private

Definition at line 160 of file CylinderVolumeBounds.h.

◆ m_innerRadius

double Trk::CylinderVolumeBounds::m_innerRadius
private

Definition at line 157 of file CylinderVolumeBounds.h.

◆ m_outerRadius

double Trk::CylinderVolumeBounds::m_outerRadius
private

Definition at line 158 of file CylinderVolumeBounds.h.

◆ s_numericalStable

const double Trk::CylinderVolumeBounds::s_numericalStable
staticprivate
Initial value:

numerical stability

Definition at line 168 of file CylinderVolumeBounds.h.


The documentation for this class was generated from the following files:
Trk::TubeRdecreaseZdecrease
@ TubeRdecreaseZdecrease
Accessor type [ 3,0,1,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:33
Trk::RectangleBounds
Definition: RectangleBounds.h:38
Trk::TubeOutsideRmaxRincrease
@ TubeOutsideRmaxRincrease
Accessor type [ 2,1,0,3 ] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:37
Trk::CylinderVolumeBoundaryAccessors::tubeAccessor
const FourObjectsAccessor & tubeAccessor(TubeAccessorType tat) const
Return the accessor for the tube case.
Definition: CylinderVolumeBoundaryAccessors.h:97
Trk::TubeZdecreaseRdecrease
@ TubeZdecreaseRdecrease
Accessor type [ 0,3,1,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:35
M_PI
#define M_PI
Definition: ActiveFraction.h:11
Trk::CylinderVolumeBounds::m_halfZ
double m_halfZ
Definition: CylinderVolumeBounds.h:160
mc.diff
diff
Definition: mc.SFGenPy8_MuMu_DD.py:14
Trk::DiscSurface
Definition: DiscSurface.h:54
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
Trk::CylinderVolumeBounds::topDiscBounds
DiscBounds * topDiscBounds() const
This method returns the associated DiscBounds for the bottom/top DiscSurface.
Definition: CylinderVolumeBounds.h:209
Trk::TubeOutsideZmaxZincrease
@ TubeOutsideZmaxZincrease
Accessor type [ 1,3,2,0 ] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:39
Trk::CylinderVolumeBounds::m_halfPhiSector
double m_halfPhiSector
Definition: CylinderVolumeBounds.h:159
Trk::TubeRincreaseZdecrease
@ TubeRincreaseZdecrease
Accessor type [ 2,0,1,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:29
Trk::CylinderVolumeBounds::CylinderVolumeBounds
CylinderVolumeBounds()
Default Constructor.
Definition: CylinderVolumeBounds.cxx:30
Trk::StandardSectoralCylinder
@ StandardSectoralCylinder
Definition: CylinderVolumeBoundaryAccessors.h:46
Trk::CylinderVolumeBounds::m_outerRadius
double m_outerRadius
Definition: CylinderVolumeBounds.h:158
Trk::CylinderIntersector
Definition: CylinderIntersector.h:20
beamspotman.posZ
posZ
Definition: beamspotman.py:1624
Trk::CylinderVolumeBoundaryAccessors::cylinderAccessor
const ThreeObjectsAccessor & cylinderAccessor(CylinderAccessorType cat) const
Return the accessor for the cylindrical case.
Definition: CylinderVolumeBoundaryAccessors.h:92
Trk::CylinderSurface
Definition: CylinderSurface.h:55
Trk::CylinderBounds
Definition: CylinderBounds.h:46
Trk::CylinderVolumeBounds::m_boundaryAccessors
CylinderVolumeBoundaryAccessors m_boundaryAccessors
Accessors for Boundary surface access - static is not possible due to mismatched delete() / free () w...
Definition: CylinderVolumeBounds.h:165
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::CylinderVolumeBounds::halflengthZ
double halflengthZ() const
This method returns the halflengthZ.
Definition: CylinderVolumeBounds.h:207
Trk::TubeZdecreaseRincrease
@ TubeZdecreaseRincrease
Accessor type [ 0,2,1,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:31
Trk::CylinderVolumeBounds::bottomDiscBounds
DiscBounds * bottomDiscBounds() const
This method returns the associated DiscBounds for the bottom/top DiscSurface.
Definition: CylinderVolumeBounds.cxx:366
Trk::CylinderZdecrease
@ CylinderZdecrease
Cylinder hit, the neg.
Definition: CylinderVolumeBoundaryAccessors.h:19
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
Trk::TubeRdecreaseZincrease
@ TubeRdecreaseZincrease
Accessor type [ 3,1,0,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:32
Trk::CylinderVolumeBounds::m_innerRadius
double m_innerRadius
Definition: CylinderVolumeBounds.h:157
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::CylinderNegativeFace
@ CylinderNegativeFace
Neg.
Definition: CylinderVolumeBoundaryAccessors.h:21
Trk::StandardSectoralTube
@ StandardSectoralTube
Definition: CylinderVolumeBoundaryAccessors.h:51
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::TubeRincreaseZincrease
@ TubeRincreaseZincrease
Accessor type [ 2,1,0,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:28
Trk::CylinderVolumeBounds::outerCylinderBounds
CylinderBounds * outerCylinderBounds() const
This method returns the associated CylinderBounds of the outer CylinderSurfaces.
Definition: CylinderVolumeBounds.cxx:360
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
Trk::CylinderVolumeBounds::halfPhiSector
double halfPhiSector() const
This method returns the halfPhiSector angle.
Definition: CylinderVolumeBounds.h:203
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
Trk::PlaneSurface
Definition: PlaneSurface.h:64
Trk::CylinderVolumeBounds::innerRadius
double innerRadius() const
This method returns the inner radius.
Definition: CylinderVolumeBounds.h:187
Amg::RotationMatrix3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Definition: GeoPrimitives.h:49
Trk::CylinderVolumeBoundaryAccessors::sectoralTubeAccessor
const SixObjectsAccessor & sectoralTubeAccessor(SectoralTubeAccessorType stat) const
Return the accessor for the sectoral tube case.
Definition: CylinderVolumeBoundaryAccessors.h:109
Trk::TubeZincreaseRdecrease
@ TubeZincreaseRdecrease
Accessor type [ 1,3,0,2 ].
Definition: CylinderVolumeBoundaryAccessors.h:34
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
Trk::CylinderVolumeBoundaryAccessors::sectoralCylinderAccessor
const FiveObjectsAccessor & sectoralCylinderAccessor(SectoralCylinderAccessorType scat) const
Return the accessor for the sectoral cylinciracl case.
Definition: CylinderVolumeBoundaryAccessors.h:103
Trk::CylinderVolumeBounds::innerCylinderBounds
CylinderBounds * innerCylinderBounds() const
This method returns the associated CylinderBounds of the inner CylinderSurfaces.
Definition: CylinderVolumeBounds.cxx:354
Trk::CylinderPositiveFace
@ CylinderPositiveFace
Pos.
Definition: CylinderVolumeBoundaryAccessors.h:20
Amg::AngleAxis3D
Eigen::AngleAxisd AngleAxis3D
Definition: GeoPrimitives.h:45
Trk::CylinderZincrease
@ CylinderZincrease
Cylinder hit, then pos.
Definition: CylinderVolumeBoundaryAccessors.h:18
Trk::CylinderVolumeBounds::s_numericalStable
static const double s_numericalStable
numerical stability
Definition: CylinderVolumeBounds.h:168
Trk::CylinderVolumeBounds::sectorPlaneBounds
RectangleBounds * sectorPlaneBounds() const
This method returns the associated PlaneBounds limiting a sectoral CylinderVolume.
Definition: CylinderVolumeBounds.cxx:372
Trk::TubeOutsideRminRdecrease
@ TubeOutsideRminRdecrease
Accessor type [ 3,1,0,2] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:36
makeComparison.deltaZ
int deltaZ
Definition: makeComparison.py:46
Trk::TubeOutsideZminZdecrease
@ TubeOutsideZminZdecrease
Accessor type [ 0,3,2,1 ] - inverse case.
Definition: CylinderVolumeBoundaryAccessors.h:38
makeComparison.deltaR
float deltaR
Definition: makeComparison.py:36
Trk::VolumeBounds::VolumeBounds
VolumeBounds()
Default Constructor.
Definition: VolumeBounds.h:48
Trk::CylinderVolumeBounds::mediumRadius
double mediumRadius() const
This method returns the medium radius.
Definition: CylinderVolumeBounds.h:195
Trk::DiscBounds
Definition: DiscBounds.h:44
Trk::TubeZincreaseRincrease
@ TubeZincreaseRincrease
Accessor type [ 1,2,0,3 ].
Definition: CylinderVolumeBoundaryAccessors.h:30