Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:33:39

0001 #ifndef VECGEOM_VOLUMES_TSPECIALIZEDBOOLEANMINUS_H
0002 #define VECGEOM_VOLUMES_TSPECIALIZEDBOOLEANMINUS_H
0003 
0004 #include "VecGeom/base/Global.h"
0005 
0006 #include "VecGeom/volumes/kernel/TBooleanMinusImplementation.h"
0007 #include "VecGeom/volumes/TUnplacedBooleanMinusVolume.h"
0008 #include "VecGeom/volumes/TPlacedBooleanMinusVolume.h"
0009 #include "VecGeom/volumes/ShapeImplementationHelper.h"
0010 
0011 namespace VECGEOM_NAMESPACE {
0012 
0013 template <typename LeftUnplacedVolume_t, typename RightPlacedVolume_t, TranslationCode transCodeT,
0014           RotationCode rotCodeT>
0015 class TSpecializedBooleanMinusVolume
0016     : public ShapeImplementationHelper<
0017           TPlacedBooleanMinusVolume,
0018           TBooleanMinusImplementation<LeftUnplacedVolume_t, RightPlacedVolume_t, transCodeT, rotCodeT>> {
0019 
0020   typedef ShapeImplementationHelper<
0021       TPlacedBooleanMinusVolume,
0022       TBooleanMinusImplementation<LeftUnplacedVolume_t, RightPlacedVolume_t, transCodeT, rotCodeT>>
0023       Helper;
0024 
0025   // typedef TUnplacedBooleanMinusVolume<LeftUnplacedVolume_t, RightPlacedVolume_t> UnplacedVol_t;
0026   typedef TUnplacedBooleanMinusVolume UnplacedVol_t;
0027 
0028 public:
0029 #ifndef VECCORE_CUDA
0030 
0031   TSpecializedBooleanMinusVolume(char const *const label, LogicalVolume const *const logical_volume,
0032                                  Transformation3D const *const transformation)
0033       : Helper(label, logical_volume, transformation, NULL)
0034   {
0035   }
0036 
0037   TSpecializedBooleanMinusVolume(LogicalVolume const *const logical_volume,
0038                                  Transformation3D const *const transformation)
0039       : TSpecializedBooleanMinusVolume("", logical_volume, transformation)
0040   {
0041   }
0042 
0043   virtual ~TSpecializedBooleanMinusVolume() {}
0044 
0045 #else
0046 
0047   VECCORE_ATT_DEVICE TSpecializedBooleanMinusVolume(LogicalVolume const *const logical_volume,
0048                                                     Transformation3D const *const transformation,
0049                                                     PlacedBox const *const boundingBox, const int id)
0050       : Helper(logical_volume, transformation, boundingBox, id)
0051   {
0052   }
0053 
0054 #endif
0055 
0056   virtual int MemorySize() const { return sizeof(*this); }
0057 
0058   VECCORE_ATT_HOST_DEVICE
0059   virtual void PrintType() const { printf("NOT IMPLEMENTED"); };
0060 
0061 }; // endofclassdefinition
0062 
0063 } // End global namespace
0064 
0065 #endif // VECGEOM_VOLUMES_TSPECIALIZEDBOOLEANMINUS_H