Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:26:16

0001 // This file is part of VecGeom and is distributed under the
0002 // conditions in the file LICENSE.txt in the top directory.
0003 // For the full list of authors see CONTRIBUTORS.txt and `git log`.
0004 
0005 /// Declaration of a struct with data members of the UnplacedEllipticalCone class.
0006 /// @file volumes/EllipticalConeStruct.h
0007 /// @author Raman Sehgal, Evgueni Tcherniaev
0008 
0009 #ifndef VECGEOM_VOLUMES_ELLIPTICALCONESTRUCT_H_
0010 #define VECGEOM_VOLUMES_ELLIPTICALCONESTRUCT_H_
0011 #include "VecGeom/base/Global.h"
0012 #include "VecGeom/base/Vector3D.h"
0013 
0014 namespace vecgeom {
0015 
0016 inline namespace VECGEOM_IMPL_NAMESPACE {
0017 
0018 /// Struct with data members of the UnplacedEllipticalCone class
0019 //
0020 template <typename T = double>
0021 struct EllipticalConeStruct {
0022 
0023   // Elliptical Cone parameters: (x/dx)^2 + (y/dy)^2 = (z-dz)^2
0024   //
0025   T fDx;   ///< X semi-axis at Z = (height - 1), 1/dx - inclination tangent in X
0026   T fDy;   ///< Y semi-axis at Z = (height - 1), 1/dy - inclination tangent in Y
0027   T fDz;   ///< height, Z coordinate of apex
0028   T fZCut; ///< Z cut
0029 
0030   T fSurfaceArea; ///< area of the surface
0031   T fCubicVolume; ///< volume
0032 
0033   // Precalculated cached values
0034   //
0035   T fRsph;      ///< radius of bounding sphere
0036   T invDx;      ///< 1/dx
0037   T invDy;      ///< 1/dy
0038   T cosAxisMin; ///< min cosine of inclination angle
0039   T dApex;      ///< apex offset needed for "flying away" check
0040 };
0041 
0042 } // namespace VECGEOM_IMPL_NAMESPACE
0043 } // namespace vecgeom
0044 
0045 #endif