File indexing completed on 2025-01-30 10:26:18
0001 #ifndef VECGEOM_VOLUMES_PLACEDSEXTRU_H_
0002 #define VECGEOM_VOLUMES_PLACEDSEXTRU_H_
0003
0004 #include "VecGeom/base/Global.h"
0005 #include "VecGeom/volumes/PlacedVolume.h"
0006 #include "VecGeom/volumes/PlacedVolImplHelper.h"
0007 #include "VecGeom/volumes/UnplacedSExtruVolume.h"
0008
0009 namespace vecgeom {
0010
0011 VECGEOM_DEVICE_FORWARD_DECLARE(class PlacedSExtru;);
0012 VECGEOM_DEVICE_DECLARE_CONV(class, PlacedSExtru);
0013
0014 inline namespace VECGEOM_IMPL_NAMESPACE {
0015
0016 class PlacedSExtru : public PlacedVolumeImplHelper<UnplacedSExtruVolume, VPlacedVolume> {
0017 using Base = PlacedVolumeImplHelper<UnplacedSExtruVolume, VPlacedVolume>;
0018
0019 public:
0020 #ifndef VECCORE_CUDA
0021
0022 using Base::Base;
0023 PlacedSExtru(char const *const label, LogicalVolume const *const logicalVolume,
0024 Transformation3D const *const transformation)
0025 : Base(label, logicalVolume, transformation)
0026 {
0027 }
0028
0029 PlacedSExtru(LogicalVolume const *const logicalVolume, Transformation3D const *const transformation)
0030 : PlacedSExtru("", logicalVolume, transformation)
0031 {
0032 }
0033 #else
0034 VECCORE_ATT_DEVICE PlacedSExtru(LogicalVolume const *const logicalVolume,
0035 Transformation3D const *const transformation, const int id, const int copy_no,
0036 const int child_id)
0037 : Base(logicalVolume, transformation, id, copy_no, child_id)
0038 {
0039 }
0040 #endif
0041 VECCORE_ATT_HOST_DEVICE
0042 virtual ~PlacedSExtru() {}
0043
0044 VECCORE_ATT_HOST_DEVICE
0045 virtual void PrintType() const override;
0046 virtual void PrintType(std::ostream &os) const override;
0047
0048
0049 #ifndef VECCORE_CUDA
0050 virtual VPlacedVolume const *ConvertToUnspecialized() const override;
0051 #ifdef VECGEOM_ROOT
0052 virtual TGeoShape const *ConvertToRoot() const override;
0053 #endif
0054 #ifdef VECGEOM_GEANT4
0055 virtual G4VSolid const *ConvertToGeant4() const override;
0056 #endif
0057 #endif
0058 };
0059
0060 }
0061 }
0062
0063 #endif