CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/DetectorDescription/Core/src/Boolean.h

Go to the documentation of this file.
00001 #ifndef DDI_Boolean_h
00002 #define DDI_Boolean_h
00003 #include "Solid.h"
00004 
00005 #include "DetectorDescription/Core/interface/DDSolid.h"
00006 #include "DetectorDescription/Core/interface/DDTransform.h"
00007 
00008 namespace DDI {
00009   
00010   class BooleanSolid : public Solid
00011   {
00012   public:
00013     BooleanSolid(const DDSolid & A, const DDSolid & B, 
00014             const DDTranslation & t,
00015             const DDRotation & r,
00016             DDSolidShape s);
00017     
00018     const DDSolid & a() const { return a_; }
00019     const DDSolid & b() const { return b_; }
00020     const DDTranslation & t() const { return t_; }
00021     const DDRotation & r() const { return r_; }
00022     
00023     //double volume() const=0;
00024   protected:
00025     DDSolid a_, b_;
00026     DDTranslation t_;
00027     DDRotation r_;
00028   };
00029   
00030   class Union : public BooleanSolid
00031   {
00032   public:
00033     Union(const DDSolid & A, const DDSolid & B,
00034           const DDTranslation & t,
00035           const DDRotation & r);
00036     
00037     //double volume() const;
00038   };
00039   
00040   class Intersection : public BooleanSolid
00041   {
00042   public:
00043     Intersection(const DDSolid & A, const DDSolid & B,
00044                  const DDTranslation & t,
00045                  const DDRotation & r);
00046     
00047     //double volume() const;
00048   };
00049   
00050   
00051   class Subtraction : public BooleanSolid
00052   {
00053   public:
00054     Subtraction(const DDSolid & A, const DDSolid & B,
00055                 const DDTranslation & t, 
00056                 const DDRotation & r);
00057   };                
00058 }
00059 
00060 #endif // DDI_Boolean_h