CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/Geometry/ForwardGeometry/interface/IdealZDCTrapezoid.h

Go to the documentation of this file.
00001 #ifndef Geometry_ForwardGeometry_IdealZDCTrapezoid_H
00002 #define Geometry_ForwardGeometry_IdealZDCTrapezoid_H 1
00003 
00004 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
00005 
00006 namespace calogeom {
00023    class IdealZDCTrapezoid: public CaloCellGeometry 
00024    {
00025       public:
00026 
00027          IdealZDCTrapezoid( const GlobalPoint& faceCenter,
00028                             const CornersMgr*  mgr       ,
00029                             const double*      parm        ) :  
00030             CaloCellGeometry ( faceCenter, mgr, parm )  {}
00031          
00032         virtual ~IdealZDCTrapezoid() {}
00033 
00034         virtual const CornersVec& getCorners() const;
00035 
00036         const double an() const { return param()[0] ; }
00037         const double dx() const { return param()[1] ; }
00038         const double dy() const { return param()[2] ; }
00039         const double dz() const { return param()[3] ; }
00040         const double ta() const { return tan( an() ) ; }
00041         const double dt() const { return dy()*ta() ; }
00042 
00043          virtual std::vector<HepGeom::Point3D<double> > vocalCorners( const double* pv,
00044                                                        HepGeom::Point3D<double> &   ref ) const 
00045          { return localCorners( pv, ref ) ; }
00046 
00047          static std::vector<HepGeom::Point3D<double> > localCorners( const double* pv, 
00048                                                       HepGeom::Point3D<double> &   ref ) ;
00049     
00050      private:
00051   };
00052 
00053    std::ostream& operator<<( std::ostream& s , const IdealZDCTrapezoid& cell ) ;
00054 }
00055 
00056 #endif