CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/Geometry/CaloGeometry/interface/IdealObliquePrism.h

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