1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#ifndef VECGEOM_VOLUMES_TSPECIALIZEDBOOLEANMINUS_H
#define VECGEOM_VOLUMES_TSPECIALIZEDBOOLEANMINUS_H
#include "VecGeom/base/Global.h"
#include "VecGeom/volumes/kernel/TBooleanMinusImplementation.h"
#include "VecGeom/volumes/TUnplacedBooleanMinusVolume.h"
#include "VecGeom/volumes/TPlacedBooleanMinusVolume.h"
#include "VecGeom/volumes/ShapeImplementationHelper.h"
namespace VECGEOM_NAMESPACE {
template <typename LeftUnplacedVolume_t, typename RightPlacedVolume_t, TranslationCode transCodeT,
RotationCode rotCodeT>
class TSpecializedBooleanMinusVolume
: public ShapeImplementationHelper<
TPlacedBooleanMinusVolume,
TBooleanMinusImplementation<LeftUnplacedVolume_t, RightPlacedVolume_t, transCodeT, rotCodeT>> {
typedef ShapeImplementationHelper<
TPlacedBooleanMinusVolume,
TBooleanMinusImplementation<LeftUnplacedVolume_t, RightPlacedVolume_t, transCodeT, rotCodeT>>
Helper;
// typedef TUnplacedBooleanMinusVolume<LeftUnplacedVolume_t, RightPlacedVolume_t> UnplacedVol_t;
typedef TUnplacedBooleanMinusVolume UnplacedVol_t;
public:
#ifndef VECCORE_CUDA
TSpecializedBooleanMinusVolume(char const *const label, LogicalVolume const *const logical_volume,
Transformation3D const *const transformation)
: Helper(label, logical_volume, transformation, NULL)
{
}
TSpecializedBooleanMinusVolume(LogicalVolume const *const logical_volume,
Transformation3D const *const transformation)
: TSpecializedBooleanMinusVolume("", logical_volume, transformation)
{
}
virtual ~TSpecializedBooleanMinusVolume() {}
#else
VECCORE_ATT_DEVICE TSpecializedBooleanMinusVolume(LogicalVolume const *const logical_volume,
Transformation3D const *const transformation,
PlacedBox const *const boundingBox, const int id)
: Helper(logical_volume, transformation, boundingBox, id)
{
}
#endif
virtual int MemorySize() const { return sizeof(*this); }
VECCORE_ATT_HOST_DEVICE
virtual void PrintType() const { printf("NOT IMPLEMENTED"); };
}; // endofclassdefinition
} // End global namespace
#endif // VECGEOM_VOLUMES_TSPECIALIZEDBOOLEANMINUS_H
|