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 IdealObliquePrism( const IdealObliquePrism& idop ) ;
00040
00041 IdealObliquePrism& operator=( const IdealObliquePrism& idop ) ;
00042
00043 IdealObliquePrism( const GlobalPoint& faceCenter,
00044 const CornersMgr* mgr ,
00045 const CCGFloat* parm ) ;
00046
00047 virtual ~IdealObliquePrism() ;
00048
00049 virtual const CornersVec& getCorners() const ;
00050
00051 CCGFloat dEta() const ;
00052 CCGFloat dPhi() const ;
00053 CCGFloat dz() const ;
00054 CCGFloat eta() const ;
00055 CCGFloat z() const ;
00056
00057 static void localCorners( Pt3DVec& vec ,
00058 const CCGFloat* pv ,
00059 Pt3D& ref ) ;
00060
00061 virtual void vocalCorners( Pt3DVec& vec ,
00062 const CCGFloat* pv ,
00063 Pt3D& ref ) const ;
00064
00065 private:
00066
00067 static GlobalPoint etaPhiPerp( float eta, float phi, float perp ) ;
00068 static GlobalPoint etaPhiZ(float eta, float phi, float z) ;
00069 };
00070
00071 std::ostream& operator<<( std::ostream& s , const IdealObliquePrism& cell ) ;
00072
00073 #endif