CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/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(const HcalTopology& theTopo);
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 
00054   const HcalTopology& topo_;
00055   mutable DetId::Detector                 lastReqDet_;
00056   mutable int                             lastReqSubdet_;
00057 
00058   double                                  twopi, deg;
00059   double                                  etaMax_, firstHFQuadRing_;
00060 
00061       HBCellVec m_hbCellVec ;
00062       HECellVec m_heCellVec ;
00063       HOCellVec m_hoCellVec ;
00064       HFCellVec m_hfCellVec ;
00065 };
00066 
00067 
00068 #endif
00069