Go to the documentation of this file.00001 #ifndef CALIBCALORIMETRY_HCALALGOS_HCALPULSESHAPES_H
00002 #define CALIBCALORIMETRY_HCALALGOS_HCALPULSESHAPES_H 1
00003
00004 #include <vector>
00005 #include "CalibCalorimetry/HcalAlgos/interface/HcalPulseShape.h"
00006 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
00007 #include "FWCore/Framework/interface/Frameworkfwd.h"
00008
00015 class HcalMCParams;
00016 class HcalRecoParams;
00017 class HcalTopology;
00018
00019 class HcalPulseShapes {
00020 public:
00021 typedef HcalPulseShape Shape;
00022 HcalPulseShapes();
00023 ~HcalPulseShapes();
00024
00025 void beginRun(edm::EventSetup const & es);
00026 void endRun();
00027
00028 const Shape& hbShape() const { return hpdShape_; }
00029 const Shape& heShape() const { return hpdShape_; }
00030 const Shape& hfShape() const { return hfShape_; }
00031 const Shape& hoShape(bool sipm=false) const { return sipm ? siPMShape_ : hpdShape_; }
00032
00033 const Shape& getShape(int shapeType) const;
00035 const Shape& shape(const HcalDetId & detId) const;
00036 const Shape& shapeForReco(const HcalDetId & detId) const;
00038 const Shape& defaultShape(const HcalDetId & detId) const;
00039 private:
00040 void computeHPDShape(float, float, float, float, float ,
00041 float, float, float, Shape&);
00042
00043 void computeHFShape();
00044 void computeSiPMShape();
00045 Shape hpdShape_, hfShape_, siPMShape_;
00046 Shape hpdShape_v2, hpdShapeMC_v2;
00047 Shape hpdShape_v3, hpdShapeMC_v3;
00048 Shape hpdBV30Shape_v2, hpdBV30ShapeMC_v2;
00049 const HcalMCParams * theMCParams;
00050 const HcalTopology * theTopology;
00051 const HcalRecoParams * theRecoParams;
00052 typedef std::map<int, const Shape *> ShapeMap;
00053 ShapeMap theShapes;
00054
00055 };
00056 #endif