File indexing completed on 2024-04-06 12:29:31
0001 #ifndef HcalSimAlgos_HcalShapes_h
0002 #define HcalSimAlgos_HcalShapes_h
0003
0004
0005
0006
0007
0008 #include "FWCore/Framework/interface/Frameworkfwd.h"
0009 #include "SimCalorimetry/CaloSimAlgos/interface/CaloShapes.h"
0010 #include "SimCalorimetry/HcalSimAlgos/interface/HcalShape.h"
0011 #include "SimCalorimetry/HcalSimAlgos/interface/ZDCShape.h"
0012 #include "CalibFormats/HcalObjects/interface/HcalDbService.h"
0013 #include <vector>
0014 #include <map>
0015 class CaloVShape;
0016 class DetId;
0017
0018 class HcalShapes : public CaloShapes {
0019 public:
0020 enum { HPD = 101, LONG = 102, ZECOTEK = 201, HAMAMATSU = 202, HE2017 = 203, HE2018 = 206, HF = 301, ZDC = 401 };
0021 HcalShapes();
0022 ~HcalShapes() override;
0023
0024 void setDbService(const HcalDbService* service) { theDbService = service; }
0025
0026 const CaloVShape* shape(const DetId& detId, bool precise = false) const override;
0027
0028 private:
0029 typedef std::map<int, const CaloVShape*> ShapeMap;
0030
0031 const CaloVShape* defaultShape(const DetId& detId, bool precise = false) const;
0032 const ShapeMap& getShapeMap(bool precise) const;
0033 const HcalDbService* theDbService;
0034 ShapeMap theShapes;
0035 ShapeMap theShapesPrecise;
0036 ZDCShape theZDCShape;
0037
0038 std::vector<HcalShape> theHcalShapes;
0039 };
0040
0041 #endif