CMS 3D CMS Logo

Cylinder.cc

Go to the documentation of this file.
00001 
00002 
00003 #include "DataFormats/GeometrySurface/interface/Cylinder.h"
00004 #include "DataFormats/GeometrySurface/interface/TangentPlane.h"
00005 #include "DataFormats/GeometrySurface/interface/GeomExceptions.h"
00006 
00007 #include <cfloat>
00008 
00009 Surface::Side Cylinder::side( const LocalPoint& p, Scalar toler) const
00010 {
00011   Scalar lz = p.perp() - radius();
00012   return (fabs(lz)<toler ? SurfaceOrientation::onSurface : 
00013           (lz>0 ? SurfaceOrientation::positiveSide : SurfaceOrientation::negativeSide));
00014 }
00015 
00016 ReferenceCountingPointer<TangentPlane> 
00017 Cylinder::tangentPlane (const LocalPoint& aPoint) const
00018 {
00019   return tangentPlane(toGlobal(aPoint));
00020 }
00021 
00022 ReferenceCountingPointer<TangentPlane> 
00023 Cylinder::tangentPlane (const GlobalPoint& aPoint) const
00024 {
00025   //
00026   // Tangent plane at specified point. In order to avoid
00027   // possible numerical problems currently no attempt is made 
00028   // to verify, if the point is actually on the cylinder.
00029   //
00030   // local y parallel to axis
00031   GlobalVector yPlane(toGlobal(LocalVector(0.,0.,1.)));
00032   // local x normal to y and a vector linking the specified
00033   // point with the axis
00034   GlobalVector xPlane(yPlane.cross(aPoint-position()));
00035   Scalar size = xPlane.mag();
00036   if ( size<FLT_MIN ) 
00037     throw GeometryError("Attempt to construct TangentPlane on cylinder axis");
00038   xPlane /= size;
00039 //   // local z defined by x and y (should point outwards from axis)
00040 //   GlobalVector zPlane(xPlane.cross(yPlane));
00041 
00042   return ReferenceCountingPointer<TangentPlane>(new TangentPlane(aPoint,
00043                                                                  RotationType(xPlane,
00044                                                                               yPlane),
00045                                                                  this));
00046 }

Generated on Tue Jun 9 17:30:52 2009 for CMSSW by  doxygen 1.5.4