00001 #ifndef Geom_BoundPlane_H
00002 #define Geom_BoundPlane_H
00003
00014 #include "DataFormats/GeometrySurface/interface/Plane.h"
00015 #include "DataFormats/GeometrySurface/interface/BoundSurface.h"
00016 #include "boost/intrusive_ptr.hpp"
00017
00018
00019 class BoundPlane : public Plane, public BoundSurface {
00020 public:
00021 typedef ReferenceCountingPointer<BoundPlane> BoundPlanePointer;
00022 typedef ConstReferenceCountingPointer<BoundPlane> ConstBoundPlanePointer;
00023
00026 static BoundPlanePointer build(const PositionType& pos,
00027 const RotationType& rot,
00028 const Bounds* bounds,
00029 MediumProperties* mp=0) {
00030 return BoundPlanePointer(new BoundPlane(pos, rot, bounds, mp));
00031 }
00032
00033
00036 static BoundPlanePointer build(const PositionType& pos,
00037 const RotationType& rot,
00038 const Bounds& bounds,
00039 MediumProperties* mp=0) {
00040 return BoundPlanePointer(new BoundPlane(pos, rot, bounds, mp));
00041 }
00042
00043 virtual ~BoundPlane() {}
00044
00045
00046
00050 BoundPlane( const PositionType& pos,
00051 const RotationType& rot,
00052 const Bounds* bounds) :
00053 Surface( pos,rot), Plane( pos, rot), BoundSurface(pos, rot, bounds) {}
00054
00058 BoundPlane( const PositionType& pos,
00059 const RotationType& rot,
00060 const Bounds& bounds) :
00061 Surface( pos,rot), Plane( pos, rot), BoundSurface(pos, rot, bounds) {}
00062
00066 BoundPlane( const PositionType& pos,
00067 const RotationType& rot,
00068 const Bounds* bounds,
00069 MediumProperties* mp) :
00070 Surface( pos,rot,mp), Plane( pos, rot, mp), BoundSurface(pos, rot, bounds, mp) {}
00071
00075 BoundPlane( const PositionType& pos,
00076 const RotationType& rot,
00077 const Bounds& bounds,
00078 MediumProperties* mp) :
00079 Surface( pos,rot,mp), Plane( pos, rot, mp), BoundSurface(pos, rot, bounds, mp) {}
00080
00085 BoundPlane( const PositionType& pos,
00086 const RotationType& rot);
00087
00088
00089 };
00090
00091 #endif // Geom_BoundPlane_H