Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /// @file PlacedCoaxialCones.h
0002 /// @author Raman Sehgal (raman.sehgal@cern.ch)
0003 
0004 #ifndef VECGEOM_VOLUMES_PLACEDCOAXIALCONES_H_
0005 #define VECGEOM_VOLUMES_PLACEDCOAXIALCONES_H_
0006 
0007 #include "VecGeom/base/Global.h"
0008 
0009 #include "VecGeom/volumes/PlacedVolume.h"
0010 #include "VecGeom/volumes/UnplacedVolume.h"
0011 #include "VecGeom/volumes/kernel/CoaxialConesImplementation.h"
0012 #include "VecGeom/volumes/PlacedVolImplHelper.h"
0013 #include "VecGeom/volumes/UnplacedCoaxialCones.h"
0014 
0015 namespace vecgeom {
0016 
0017 VECGEOM_DEVICE_FORWARD_DECLARE(class PlacedCoaxialCones;);
0018 VECGEOM_DEVICE_DECLARE_CONV(class, PlacedCoaxialCones);
0019 
0020 inline namespace VECGEOM_IMPL_NAMESPACE {
0021 
0022 class PlacedCoaxialCones : public PlacedVolumeImplHelper<UnplacedCoaxialCones, VPlacedVolume> {
0023   using Base = PlacedVolumeImplHelper<UnplacedCoaxialCones, VPlacedVolume>;
0024 
0025 public:
0026 #ifndef VECCORE_CUDA
0027   // constructor inheritance;
0028   using Base::Base;
0029   PlacedCoaxialCones(char const *const label, LogicalVolume const *const logicalVolume,
0030                      Transformation3D const *const transformation)
0031       : Base(label, logicalVolume, transformation)
0032   {
0033   }
0034 
0035   PlacedCoaxialCones(LogicalVolume const *const logicalVolume, Transformation3D const *const transformation)
0036       : PlacedCoaxialCones("", logicalVolume, transformation)
0037   {
0038   }
0039 #else
0040   VECCORE_ATT_DEVICE PlacedCoaxialCones(LogicalVolume const *const logicalVolume,
0041                                         Transformation3D const *const transformation, const int id, const int copy_no,
0042                                         const int child_id)
0043       : Base(logicalVolume, transformation, id, copy_no, child_id)
0044   {
0045   }
0046 #endif
0047   VECCORE_ATT_HOST_DEVICE
0048   virtual ~PlacedCoaxialCones() {}
0049 
0050   /*
0051    * Put the Required Getters and Setters here
0052    */
0053 
0054   VECCORE_ATT_HOST_DEVICE
0055   virtual void PrintType() const override;
0056   virtual void PrintType(std::ostream &os) const override;
0057 
0058 // Comparison specific
0059 #ifndef VECCORE_CUDA
0060   virtual VPlacedVolume const *ConvertToUnspecialized() const override;
0061 #ifdef VECGEOM_ROOT
0062   virtual TGeoShape const *ConvertToRoot() const override
0063   {
0064     return nullptr; // There is no corresponding TGeo shape
0065   }
0066 #endif
0067 #ifdef VECGEOM_GEANT4
0068   virtual G4VSolid const *ConvertToGeant4() const override
0069   {
0070     return nullptr; // There is no corresponding G4 shape
0071   }
0072 #endif
0073 #endif // VECCORE_CUDA
0074 };
0075 
0076 } // namespace VECGEOM_IMPL_NAMESPACE
0077 } // namespace vecgeom
0078 
0079 #endif