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
00018 class HcalPulseShapes {
00019 public:
00020 typedef HcalPulseShape Shape;
00021 HcalPulseShapes();
00022 ~HcalPulseShapes();
00023
00024 void beginRun(edm::EventSetup const & es);
00025 void endRun();
00026
00027 const Shape& hbShape() const { return hpdShape_; }
00028 const Shape& heShape() const { return hpdShape_; }
00029 const Shape& hfShape() const { return hfShape_; }
00030 const Shape& hoShape(bool sipm=false) const { return sipm ? siPMShape_ : hpdShape_; }
00031
00032 const Shape& getShape(int shapeType) const;
00034 const Shape& shape(const HcalDetId & detId) const;
00035 const Shape& shapeForReco(const HcalDetId & detId) const;
00037 const Shape& defaultShape(const HcalDetId & detId) const;
00038 private:
00039 void computeHPDShape(float, float, float, float, float ,
00040 float, float, float, Shape&);
00041
00042 void computeHFShape();
00043 void computeSiPMShape();
00044 Shape hpdShape_, hfShape_, siPMShape_;
00045 Shape hpdShape_v2, hpdShapeMC_v2;
00046 Shape hpdShape_v3, hpdShapeMC_v3;
00047 Shape hpdBV30Shape_v2, hpdBV30ShapeMC_v2;
00048 const HcalMCParams * theMCParams;
00049 const HcalRecoParams * theRecoParams;
00050 typedef std::map<int, const Shape *> ShapeMap;
00051 ShapeMap theShapes;
00052
00053 };
00054 #endif