Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-03-13 09:29:24

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 UnplacedEllipticalTube class
0006 /// @file volumes/EllipticalTubeStruct.h
0007 /// @author Raman Sehgal, Evgueni Tcherniaev
0008 
0009 #ifndef VECGEOM_VOLUMES_ELLIPTICALTUBESTRUCT_H_
0010 #define VECGEOM_VOLUMES_ELLIPTICALTUBESTRUCT_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 UnplacedEllipticalTube class
0019 template <typename T = double>
0020 struct EllipticalTubeStruct {
0021 
0022   // Elliptical Tube parameters
0023   //
0024   T fDx; ///< Semi-axis in X
0025   T fDy; ///< Semi-axis in Y
0026   T fDz; ///< Half length in Z
0027 
0028   T fSurfaceArea; ///< Area of the surface
0029   T fCubicVolume; ///< Volume
0030 
0031   // Precalculated cached values
0032   //
0033   T fRsph;    ///< Radius of bounding sphere
0034   T fDDx;     ///< Dx squared
0035   T fDDy;     ///< Dy squared
0036   T fSx;      ///< X scale factor
0037   T fSy;      ///< Y scale factor
0038   T fR;       ///< Resulting Radius, after scaling elipse to circle
0039   T fQ1;      ///< Coefficient in the approximation of dist = Q1*(x^2+y^2) - Q2
0040   T fQ2;      ///< Coefficient in the approximation of dist = Q1*(x^2+y^2) - Q2
0041   T fScratch; ///< Half length of scratching segment squared
0042 };
0043 
0044 } // namespace VECGEOM_IMPL_NAMESPACE
0045 } // namespace vecgeom
0046 
0047 #endif