Go to the documentation of this file.00001 #ifndef GEOMETRY_CALOGEOMETRY_IDEALOBLIQUEPRISM_H
00002 #define GEOMETRY_CALOGEOMETRY_IDEALOBLIQUEPRISM_H 1
00003
00004 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
00005
00030 class IdealObliquePrism : public CaloCellGeometry
00031 {
00032 public:
00033
00034 typedef CaloCellGeometry::CCGFloat CCGFloat ;
00035 typedef CaloCellGeometry::Pt3D Pt3D ;
00036 typedef CaloCellGeometry::Pt3DVec Pt3DVec ;
00037
00038 IdealObliquePrism() ;
00039
00040 IdealObliquePrism( const IdealObliquePrism& idop ) ;
00041
00042 IdealObliquePrism& operator=( const IdealObliquePrism& idop ) ;
00043
00044 IdealObliquePrism( const GlobalPoint& faceCenter,
00045 const CornersMgr* mgr ,
00046 const CCGFloat* parm ) ;
00047
00048 virtual ~IdealObliquePrism() ;
00049
00050 virtual const CornersVec& getCorners() const ;
00051
00052 CCGFloat dEta() const ;
00053 CCGFloat dPhi() const ;
00054 CCGFloat dz() const ;
00055 CCGFloat eta() const ;
00056 CCGFloat z() const ;
00057
00058 static void localCorners( Pt3DVec& vec ,
00059 const CCGFloat* pv ,
00060 Pt3D& ref ) ;
00061
00062 virtual void vocalCorners( Pt3DVec& vec ,
00063 const CCGFloat* pv ,
00064 Pt3D& ref ) const ;
00065
00066 private:
00067
00068 static GlobalPoint etaPhiPerp( float eta, float phi, float perp ) ;
00069
00070 static GlobalPoint etaPhiZ(float eta, float phi, float z) ;
00071 };
00072
00073 std::ostream& operator<<( std::ostream& s , const IdealObliquePrism& cell ) ;
00074
00075 #endif