File indexing completed on 2025-01-30 10:26:22
0001 #ifndef VECGEOM_VOLUMES_SPECIALIZEDTUBE_H_
0002 #define VECGEOM_VOLUMES_SPECIALIZEDTUBE_H_
0003
0004 #include "VecGeom/base/Global.h"
0005
0006 #include "VecGeom/volumes/kernel/TubeImplementation.h"
0007 #include "VecGeom/volumes/PlacedTube.h"
0008 #include "VecGeom/volumes/SpecializedPlacedVolImplHelper.h"
0009
0010 namespace vecgeom {
0011 inline namespace VECGEOM_IMPL_NAMESPACE {
0012
0013 template <TranslationCode transCodeT, RotationCode rotCodeT, typename tubeTypeT>
0014 using SpecializedTube = SIMDSpecializedVolImplHelper<TubeImplementation<tubeTypeT>, transCodeT, rotCodeT>;
0015
0016 using SimpleTube = SpecializedTube<translation::kGeneric, rotation::kGeneric, TubeTypes::UniversalTube>;
0017
0018 template <typename Type>
0019 template <TranslationCode transCodeT, RotationCode rotCodeT>
0020 VECCORE_ATT_DEVICE
0021 VPlacedVolume *SUnplacedTube<Type>::Create(LogicalVolume const *const logical_volume,
0022 Transformation3D const *const transformation,
0023 #ifdef VECCORE_CUDA
0024 const int id, const int copy_no, const int child_id,
0025 #endif
0026 VPlacedVolume *const placement)
0027 {
0028 (void)placement;
0029 return new SpecializedTube<transCodeT, rotCodeT, Type>(logical_volume, transformation
0030 #ifdef VECCORE_CUDA
0031 ,
0032 id, copy_no, child_id
0033 #endif
0034 );
0035 }
0036
0037 }
0038 }
0039
0040 #endif