File indexing completed on 2025-01-30 10:26:16
0001 #ifndef VECGEOM_VOLUMES_BOOLEANSTRUCT_H_
0002 #define VECGEOM_VOLUMES_BOOLEANSTRUCT_H_
0003 #include "VecGeom/base/Global.h"
0004
0005 namespace vecgeom {
0006
0007
0008 enum BooleanOperation { kUnion, kIntersection, kSubtraction };
0009
0010 inline namespace VECGEOM_IMPL_NAMESPACE {
0011
0012
0013
0014
0015
0016
0017
0018
0019 struct BooleanStruct {
0020 VPlacedVolume const *fLeftVolume;
0021 VPlacedVolume const *fRightVolume;
0022 BooleanOperation const fOp;
0023 mutable Precision fCapacity = -1;
0024 mutable Precision fSurfaceArea = -1;
0025
0026 VECCORE_ATT_HOST_DEVICE
0027 BooleanStruct(BooleanOperation op, VPlacedVolume const *left, VPlacedVolume const *right)
0028 : fLeftVolume(left), fRightVolume(right), fOp(op)
0029 {
0030 }
0031 };
0032
0033 }
0034
0035 }
0036
0037 #endif