![]() |
![]() |
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