File indexing completed on 2024-04-06 12:05:23
0001 #ifndef DETECTOR_DESCRIPTION_CORE_DDI_BOOLEAN_H
0002 #define DETECTOR_DESCRIPTION_CORE_DDI_BOOLEAN_H
0003
0004 #include "DetectorDescription/Core/interface/DDTranslation.h"
0005 #include "DetectorDescription/Core/interface/DDSolid.h"
0006 #include "DetectorDescription/Core/interface/DDSolidShapes.h"
0007 #include "DetectorDescription/Core/interface/DDTransform.h"
0008 #include "Solid.h"
0009
0010 namespace DDI {
0011
0012 class BooleanSolid : public Solid {
0013 public:
0014 BooleanSolid(const DDSolid& A, const DDSolid& B, const DDTranslation& t, const DDRotation& r, DDSolidShape s);
0015
0016 const DDSolid& a() const { return a_; }
0017 const DDSolid& b() const { return b_; }
0018 const DDTranslation& t() const { return t_; }
0019 const DDRotation& r() const { return r_; }
0020
0021 protected:
0022 DDSolid a_, b_;
0023 DDTranslation t_;
0024 DDRotation r_;
0025 };
0026
0027 class Union : public BooleanSolid {
0028 public:
0029 Union(const DDSolid& A, const DDSolid& B, const DDTranslation& t, const DDRotation& r);
0030 };
0031
0032 class Intersection : public BooleanSolid {
0033 public:
0034 Intersection(const DDSolid& A, const DDSolid& B, const DDTranslation& t, const DDRotation& r);
0035 };
0036
0037 class Subtraction : public BooleanSolid {
0038 public:
0039 Subtraction(const DDSolid& A, const DDSolid& B, const DDTranslation& t, const DDRotation& r);
0040 };
0041 }
0042 #endif