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