CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_13_patch3/src/Geometry/HcalTowerAlgo/interface/CaloTowerGeometry.h

Go to the documentation of this file.
00001 #ifndef GEOMETRY_HCALTOWERALGO_CALOTOWERGEOMETRY_H
00002 #define GEOMETRY_HCALTOWERALGO_CALOTOWERGEOMETRY_H 1
00003 
00004 #include "Geometry/CaloGeometry/interface/IdealObliquePrism.h"
00005 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00006 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
00007 //#include "CondFormats/AlignmentRecord/interface/CaloTowerAlignmentRcd.h"
00008 #include "Geometry/Records/interface/CaloTowerGeometryRecord.h"
00009 
00018 class CaloTowerGeometry : public CaloSubdetectorGeometry 
00019 {
00020    public:
00021 
00022       typedef std::vector<IdealObliquePrism> CellVec ;
00023 
00024       typedef CaloCellGeometry::CCGFloat CCGFloat ;
00025       typedef CaloCellGeometry::Pt3D     Pt3D     ;
00026       typedef CaloCellGeometry::Pt3DVec  Pt3DVec  ;
00027 
00028       typedef CaloTowerAlignmentRcd    AlignmentRecord ;
00029       typedef CaloTowerGeometryRecord  AlignedRecord   ;
00030       typedef PCaloTowerRcd            PGeometryRecord ;
00031       typedef CaloTowerDetId           DetIdType       ;
00032 
00033       enum { k_NumberOfCellsForCorners = CaloTowerDetId::kSizeForDenseIndexing } ;
00034 
00035       enum { k_NumberOfShapes = 41 } ;
00036 
00037       enum { k_NumberOfParametersPerShape = 5 } ;
00038 
00039       static std::string dbString() { return "PCaloTowerRcd" ; }
00040 
00041       virtual unsigned int numberOfShapes() const { return k_NumberOfShapes ; }
00042       virtual unsigned int numberOfParametersPerShape() const { return k_NumberOfParametersPerShape ; }
00043 
00044 
00045       CaloTowerGeometry();
00046       virtual ~CaloTowerGeometry();  
00047 
00048       static std::string producerTag() { return "TOWER" ; }
00049 
00050       static unsigned int numberOfAlignments() { return 0 ; }
00051 
00052       static unsigned int alignmentTransformIndexLocal( const DetId& id ) ;
00053 
00054       static unsigned int alignmentTransformIndexGlobal( const DetId& id ) ;
00055 
00056       static void localCorners( Pt3DVec&        lc  ,
00057                                 const CCGFloat* pv  , 
00058                                 unsigned int    i   ,
00059                                 Pt3D&           ref   ) ;
00060 
00061       virtual void newCell( const GlobalPoint& f1 ,
00062                             const GlobalPoint& f2 ,
00063                             const GlobalPoint& f3 ,
00064                             const CCGFloat*    parm,
00065                             const DetId&       detId     ) ;
00066    protected:
00067 
00068       virtual const CaloCellGeometry* cellGeomPtr( uint32_t index ) const ;
00069 
00070    private:
00071 
00072       CellVec m_cellVec ;
00073 };
00074 
00075 #endif