CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/DataFormats/GeometrySurface/interface/BoundCylinder.h

Go to the documentation of this file.
00001 #ifndef Geom_BoundCylinder_H
00002 #define Geom_BoundCylinder_H
00003 
00017 #include "DataFormats/GeometrySurface/interface/Cylinder.h"
00018 #include "DataFormats/GeometrySurface/interface/BoundSurface.h"
00019 #include "boost/intrusive_ptr.hpp" 
00020 
00021 class BoundCylinder : public Cylinder, public BoundSurface {
00022 public:
00023 
00024   typedef ReferenceCountingPointer<BoundCylinder>       BoundCylinderPointer;
00025   typedef ConstReferenceCountingPointer<BoundCylinder>  ConstBoundCylinderPointer;
00026 
00029   static BoundCylinderPointer build(const PositionType& pos,
00030                                     const RotationType& rot,
00031                                     Scalar radius,
00032                                     const Bounds* bounds,
00033                                     MediumProperties* mp=0) {
00034     return BoundCylinderPointer(new BoundCylinder(pos, rot, radius, bounds, mp));
00035   }
00036   
00037 
00040   static BoundCylinderPointer build(const PositionType& pos,
00041                                     const RotationType& rot,
00042                                     Scalar radius,
00043                                     const Bounds& bounds,
00044                                     MediumProperties* mp=0) {
00045     return BoundCylinderPointer(new BoundCylinder(pos, rot, radius, &bounds, mp));
00046   }
00047 
00048   virtual ~BoundCylinder() {}
00049 
00050   // -- DEPRECATED CONSTRUCTORS
00051 
00055   BoundCylinder(const PositionType& pos,
00056                 const RotationType& rot,
00057                 Scalar radius, 
00058                 const Bounds& bounds) :
00059     Surface( pos,rot ),
00060     Cylinder( pos, rot, radius), 
00061     BoundSurface(pos, rot, bounds) 
00062   { }
00063 
00067   BoundCylinder(const PositionType& pos,
00068                 const RotationType& rot,
00069                 Scalar radius,
00070                 MediumProperties* mp,
00071                 const Bounds& bounds) : 
00072     Surface( pos,rot ),
00073     Cylinder( pos, rot, radius, mp ), 
00074     BoundSurface( pos, rot, bounds ) 
00075   { }
00076 
00078   BoundCylinder(const PositionType& pos, 
00079                 const RotationType& rot, 
00080                 const Bounds* bounds);
00081 
00083   BoundCylinder(const PositionType& pos, 
00084                 const RotationType& rot, 
00085                 const Bounds& bounds);
00086 
00087 protected:
00088   // Private constructor - use build() instead
00089   BoundCylinder(const PositionType& pos,
00090                 const RotationType& rot,
00091                 Scalar radius,
00092                 const Bounds* bounds,
00093                 MediumProperties* mp=0) : 
00094     Surface( pos,rot ),
00095     Cylinder(pos, rot, radius, mp), 
00096     BoundSurface(pos, rot, bounds, mp)
00097   { }
00098 
00099 };
00100 
00101 #endif // Geom_BoundCylinder_H