CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/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/CaloSubdetectorGeometry.h"
00005 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
00006 //#include "CondFormats/AlignmentRecord/interface/CaloTowerAlignmentRcd.h"
00007 #include "Geometry/Records/interface/CaloTowerGeometryRecord.h"
00008 
00017 class CaloTowerGeometry : public CaloSubdetectorGeometry 
00018 {
00019    public:
00020 
00021       typedef CaloTowerAlignmentRcd    AlignmentRecord ;
00022       typedef CaloTowerGeometryRecord  AlignedRecord   ;
00023       typedef PCaloTowerRcd            PGeometryRecord ;
00024       typedef CaloTowerDetId           DetIdType       ;
00025 
00026       enum { k_NumberOfCellsForCorners = CaloTowerDetId::kSizeForDenseIndexing } ;
00027 
00028       enum { k_NumberOfShapes = 41 } ;
00029 
00030       enum { k_NumberOfParametersPerShape = 5 } ;
00031 
00032       static std::string dbString() { return "PCaloTowerRcd" ; }
00033 
00034       virtual unsigned int numberOfShapes() const { return k_NumberOfShapes ; }
00035       virtual unsigned int numberOfParametersPerShape() const { return k_NumberOfParametersPerShape ; }
00036 
00037 
00038       CaloTowerGeometry();
00039       virtual ~CaloTowerGeometry();  
00040 
00041       static std::string producerTag() { return "TOWER" ; }
00042 
00043       static unsigned int numberOfAlignments() { return 0 ; }
00044 
00045       static unsigned int alignmentTransformIndexLocal( const DetId& id ) ;
00046 
00047       static unsigned int alignmentTransformIndexGlobal( const DetId& id ) ;
00048 
00049       static std::vector<HepGeom::Point3D<double> > localCorners( const double* pv, 
00050                                                    unsigned int  i,
00051                                                    HepGeom::Point3D<double> &   ref ) ;
00052 
00053       static CaloCellGeometry* newCell( const GlobalPoint& f1 ,
00054                                         const GlobalPoint& f2 ,
00055                                         const GlobalPoint& f3 ,
00056                                         CaloCellGeometry::CornersMgr* mgr,
00057                                         const double*      parm,
00058                                         const DetId&       detId     ) ;
00059                                         
00060 };
00061 
00062 #endif