![]() |
![]() |
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