CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/Geometry/HcalTowerAlgo/interface/HcalFlexiHardcodeGeometryLoader.h

Go to the documentation of this file.
00001 #ifndef GEOMETRY_HCALTOWERALGO_HCALFLEXIHARDCODEGEOMETRYLOADER_H
00002 #define GEOMETRY_HCALTOWERALGO_HCALFLEXIHARDCODEGEOMETRYLOADER_H 1
00003 
00011 #include "Geometry/CaloGeometry/interface/CaloVGeometryLoader.h"
00012 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014 #include <vector>
00015 
00016 class HcalTopology;
00017 
00018 class HcalFlexiHardcodeGeometryLoader {
00019 
00020 public:
00021   HcalFlexiHardcodeGeometryLoader(const edm::ParameterSet&);
00022   
00023   CaloSubdetectorGeometry* load(const HcalTopology& fTopology);
00024 
00025 private:
00026 
00027   struct HBHOCellParameters {
00028     HBHOCellParameters (int f_eta, int f_depth, int f_phiFirst, int f_phiStep, int f_dPhi, float f_rMin, float f_rMax, float f_etaMin, float f_etaMax)
00029       : eta(f_eta), depth(f_depth), phiFirst(f_phiFirst), phiStep(f_phiStep), dphi(f_dPhi), rMin(f_rMin), rMax(f_rMax), etaMin(f_etaMin), etaMax(f_etaMax)
00030     {}
00031  
00032     int eta;
00033     int depth;
00034     int phiFirst;
00035     int phiStep;
00036     int dphi;
00037     float rMin;
00038     float rMax;
00039     float etaMin;
00040     float etaMax;
00041   };
00042 
00043   struct HECellParameters {
00044     HECellParameters (int f_eta, int f_depth, int f_phiFirst, int f_phiStep, int f_dPhi, float f_zMin, float f_zMax, float f_etaMin, float f_etaMax)
00045       : eta(f_eta), depth(f_depth), phiFirst(f_phiFirst), phiStep(f_phiStep), dphi(f_dPhi), zMin(f_zMin), zMax(f_zMax), etaMin(f_etaMin), etaMax(f_etaMax)
00046     {}
00047  
00048     int eta;
00049     int depth;
00050     int phiFirst;
00051     int phiStep;
00052     int dphi;
00053     float zMin;
00054     float zMax;
00055     float etaMin;
00056     float etaMax;
00057   };
00058 
00059   struct HFCellParameters {
00060     HFCellParameters (int f_eta, int f_depth, int f_phiFirst, int f_phiStep, int f_dPhi, float f_zMin, float f_zMax, float f_rMin, float f_rMax)
00061       : eta(f_eta), depth(f_depth), phiFirst(f_phiFirst), phiStep(f_phiStep), dphi(f_dPhi), zMin(f_zMin), zMax(f_zMax), rMin(f_rMin), rMax(f_rMax)
00062     {}
00063  
00064     int eta;
00065     int depth;
00066     int phiFirst;
00067     int phiStep;
00068     int dphi;
00069     float zMin;
00070     float zMax;
00071     float rMin;
00072     float rMax;
00073   };
00074 
00075   std::vector <HBHOCellParameters> makeHBCells (const HcalTopology & topology);
00076   std::vector <HBHOCellParameters> makeHOCells ();
00077   std::vector <HECellParameters> makeHECells (const HcalTopology & topology);
00078   std::vector <HECellParameters> makeHECells_H2 ();
00079   std::vector <HFCellParameters> makeHFCells ();
00080 
00081   void fillHBHO (CaloSubdetectorGeometry* fGeometry, const std::vector <HBHOCellParameters>& fCells, bool fHB);
00082   void fillHE (CaloSubdetectorGeometry* fGeometry, const std::vector <HECellParameters>& fCells);
00083   void fillHF (CaloSubdetectorGeometry* fGeometry, const std::vector <HFCellParameters>& fCells);
00084 
00085   int    MAX_HCAL_PHI;
00086   double DEGREE2RAD;
00087 
00088   std::vector<std::vector<int> > m_segmentation;
00089   
00090 };
00091 
00092 #endif