Back to home page

EIC code displayed by LXR

 
 

    


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   // constructor inheritance;
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 // Comparison specific
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 // VECCORE_CUDA
0058 };
0059 
0060 } // namespace VECGEOM_IMPL_NAMESPACE
0061 } // namespace vecgeom
0062 
0063 #endif