CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/Geometry/ForwardGeometry/interface/IdealCastorTrapezoid.h

Go to the documentation of this file.
00001 #ifndef Geometry_ForwardGeometry_IdealCastorTrapezoid_H
00002 #define Geometry_ForwardGeometry_IdealCastorTrapezoid_H 1
00003 
00004 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
00005 
00006 namespace calogeom {
00034    class IdealCastorTrapezoid: public CaloCellGeometry 
00035    {
00036       public:
00037 
00038          IdealCastorTrapezoid( const GlobalPoint& faceCenter,
00039                                const CornersMgr*  mgr       ,
00040                                const double*      parm        ) :  
00041             CaloCellGeometry ( faceCenter, mgr, parm )  {}
00042          
00043          virtual ~IdealCastorTrapezoid() {}
00044          
00045          virtual const CornersVec& getCorners() const;
00046 
00047          const double dxl() const { return param()[0] ; }
00048          const double dxh() const { return param()[1] ; }
00049          const double dx()  const { return ( dxl()+dxh() )/2. ; }
00050          const double dh()  const { return param()[2] ; }
00051          const double dy()  const { return dh()*sin(an()) ; }
00052          const double dz()  const { return param()[3] ; }
00053          const double dhz() const { return dh()*cos(an()) ; }
00054          const double dzb() const { return dz() + dhz() ; }
00055          const double dzs() const { return dz() - dhz() ; }
00056          const double an()  const { return param()[4] ; }
00057          const double dR()  const { return param()[5] ; }
00058 
00059          virtual std::vector<HepGeom::Point3D<double> > vocalCorners( const double* pv,
00060                                                        HepGeom::Point3D<double> &   ref ) const 
00061          { return localCorners( pv, ref ) ; }
00062 
00063          static std::vector<HepGeom::Point3D<double> > localCorners( const double* pv, 
00064                                                       HepGeom::Point3D<double> &   ref ) ;
00065      private:
00066   };
00067 
00068    std::ostream& operator<<( std::ostream& s , const IdealCastorTrapezoid& cell ) ;
00069 }
00070 
00071 #endif