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