CMS 3D CMS Logo

EcalBarrelGeometry.h

Go to the documentation of this file.
00001 #ifndef EcalBarrelGeometry_h
00002 #define EcalBarrelGeometry_h
00003 
00004 #include "Geometry/CaloGeometry/interface/EZArrayFL.h"
00005 #include "Geometry/EcalCommonData/interface/EcalBarrelNumberingScheme.h"
00006 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00007 #include "Geometry/Records/interface/IdealGeometryRecord.h"
00008 #include "Geometry/Records/interface/EcalBarrelGeometryRecord.h"
00009 #include "CondFormats/AlignmentRecord/interface/EBAlignmentRcd.h"
00010 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00011 #include "DataFormats/EcalDetId/interface/EEDetId.h"
00012 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00013 #include <vector>
00014 
00015 class EcalBarrelGeometry : public CaloSubdetectorGeometry 
00016 {
00017    public:
00018 
00019       typedef IdealGeometryRecord      IdealRecord   ;
00020       typedef EcalBarrelGeometryRecord AlignedRecord ;
00021       typedef EBAlignmentRcd           AlignmentRecord ;
00022 
00023       typedef EZArrayFL<EEDetId> OrderedListOfEEDetId ; // like an stl vector: begin(), end(), [i]
00024 
00025       typedef std::vector<OrderedListOfEEDetId*>  VecOrdListEEDetIdPtr ;
00026 
00027       typedef EcalBarrelNumberingScheme NumberingScheme ;
00028 
00029       enum CornersCount { k_NumberOfCellsForCorners = 61200 } ;
00030 
00031       EcalBarrelGeometry() ;
00032   
00033       virtual ~EcalBarrelGeometry();
00034 
00035       int getNumXtalsPhiDirection()           const { return _nnxtalPhi ; }
00036 
00037       int getNumXtalsEtaDirection()           const { return _nnxtalEta ; }
00038 
00039       const std::vector<int>& getEtaBaskets() const { return _EtaBaskets ; }
00040 
00041       int getBasketSizeInPhi()                const { return _PhiBaskets ; }  
00042 
00043       void setNumXtalsPhiDirection( const int& nnxtalPhi )     { _nnxtalPhi=nnxtalPhi ; }
00044 
00045       void setNumXtalsEtaDirection( const int& nnxtalEta )     { _nnxtalEta=nnxtalEta ; }
00046 
00047       void setEtaBaskets( const std::vector<int>& EtaBaskets ) { _EtaBaskets=EtaBaskets ; }
00048 
00049       void setBasketSizeInPhi( const int& PhiBaskets )         { _PhiBaskets=PhiBaskets ; }
00050 
00051       const OrderedListOfEEDetId* getClosestEndcapCells( EBDetId id ) const ;
00052 
00053       // Get closest cell, etc...
00054       virtual DetId getClosestCell( const GlobalPoint& r ) const ;
00055 
00056       virtual CaloSubdetectorGeometry::DetIdSet getCells( const GlobalPoint& r,
00057                                                           double             dR ) const ;
00058 
00059       static std::string hitString() { return "EcalHitsEB" ; }
00060 
00061       static std::string producerName() { return "EcalBarrel" ; }
00062 
00063       static unsigned int numberOfAlignments() { return 36 ; }
00064 
00065    private:
00067       int _nnxtalEta;
00068   
00070       int _nnxtalPhi;
00071   
00076       std::vector<int> _EtaBaskets;
00077       
00079       int _PhiBaskets;
00080 
00081       mutable EZMgrFL<EEDetId>*     m_borderMgr ;
00082 
00083       mutable VecOrdListEEDetIdPtr* m_borderPtrVec ;
00084 };
00085 
00086 
00087 #endif
00088 

Generated on Tue Jun 9 17:37:22 2009 for CMSSW by  doxygen 1.5.4