CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/Geometry/HcalTowerAlgo/interface/HcalDDDGeometry.h

Go to the documentation of this file.
00001 #ifndef Geometry_HcalTowerAlgo_HcalDDDGeometry_h
00002 #define Geometry_HcalTowerAlgo_HcalDDDGeometry_h
00003 
00004 #include "DataFormats/DetId/interface/DetId.h"
00005 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00006 #include "Geometry/HcalCommonData/interface/HcalCellType.h"
00007 
00008 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
00009 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00010 #include "Geometry/CaloGeometry/interface/IdealObliquePrism.h"
00011 #include "Geometry/CaloGeometry/interface/IdealZPrism.h"
00012 #include "Geometry/CaloTopology/interface/HcalTopology.h"
00013 #include "CondFormats/AlignmentRecord/interface/HcalAlignmentRcd.h"
00014 #include "Geometry/Records/interface/HcalGeometryRecord.h"
00015 
00016 #include <vector>
00017 
00018 class HcalDDDGeometry : public CaloSubdetectorGeometry {
00019 
00020 public:
00021 
00022       typedef std::vector<IdealObliquePrism> HBCellVec ;
00023       typedef std::vector<IdealObliquePrism> HECellVec ;
00024       typedef std::vector<IdealObliquePrism> HOCellVec ;
00025       typedef std::vector<IdealZPrism>       HFCellVec ;
00026 
00027   explicit HcalDDDGeometry();
00029   virtual ~HcalDDDGeometry();
00030   
00031   virtual const std::vector<DetId>& getValidDetIds( DetId::Detector det    = DetId::Detector ( 0 ) , 
00032                                                     int             subdet = 0   ) const;
00033 
00034   virtual DetId getClosestCell(const GlobalPoint& r) const ;
00035 
00036   int insertCell (std::vector<HcalCellType> const & );
00037 
00038       virtual void newCell( const GlobalPoint& f1 ,
00039                             const GlobalPoint& f2 ,
00040                             const GlobalPoint& f3 ,
00041                             const CCGFloat*    parm,
00042                             const DetId&       detId     ) ;
00043                                         
00044    protected:
00045 
00046       virtual const CaloCellGeometry* cellGeomPtr( uint32_t index ) const ;
00047 
00048 private:
00049 
00050   mutable std::vector<DetId> m_validIds ;
00051 
00052   std::vector<HcalCellType> hcalCells_;
00053   mutable DetId::Detector                 lastReqDet_;
00054   mutable int                             lastReqSubdet_;
00055 
00056   double                                  twopi, deg;
00057   double                                  etaMax_, firstHFQuadRing_;
00058 
00059       HBCellVec m_hbCellVec ;
00060       HECellVec m_heCellVec ;
00061       HOCellVec m_hoCellVec ;
00062       HFCellVec m_hfCellVec ;
00063 };
00064 
00065 
00066 #endif
00067