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