CMS 3D CMS Logo

HcalSimpleRecAlgo.h
Go to the documentation of this file.
1 #ifndef HCALSIMPLERECALGO_H
2 #define HCALSIMPLERECALGO_H 1
3 
4 #include <memory>
5 #include "boost/shared_ptr.hpp"
6 
22 
25 
27 
41 public:
44  bool correctForContainment, float fixedPhaseNs);
45 
46  void beginRun(edm::EventSetup const & es);
47  void endRun();
48 
49  void initPulseCorr(int toadd);
50 
51  // set RecoParams channel-by-channel.
52  void setRecoParams(bool correctForTimeslew, bool correctForPulse, bool setLeakCorrection, int pileupCleaningID, float phaseNS);
53 
54  // ugly hack related to HB- e-dependent corrections
55  void setForData (int runnum);
56 
57  // usage of leak correction
58  void setLeakCorrection();
59 
60  // set OOT pileup corrections
61  void setHBHEPileupCorrection(boost::shared_ptr<AbsOOTPileupCorrection> corr);
62  void setHFPileupCorrection(boost::shared_ptr<AbsOOTPileupCorrection> corr);
63  void setHOPileupCorrection(boost::shared_ptr<AbsOOTPileupCorrection> corr);
64 
65  // Set bunch crossing information.
66  // This object will not manage the pointer.
67  void setBXInfo(const BunchXParameter* info, unsigned lenInfo);
68 
69 
70  HBHERecHit reconstruct(const HBHEDataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
71 
72  HFRecHit reconstruct(const HFDataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
73  HFRecHit reconstructQIE10(const QIE10DataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
74 
75  HORecHit reconstruct(const HODataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
76  HcalCalibRecHit reconstruct(const HcalCalibDataFrame& digi, int first, int toadd, const HcalCoder& coder, const HcalCalibrations& calibs) const;
77 
78  void setpuCorrMethod(int method){
80  if( puCorrMethod_ == 2 )
81  psFitOOTpuCorr_ = std::make_unique<PulseShapeFitOOTPileupCorrection>();
82  }
83 
84  void setpuCorrParams(bool iPedestalConstraint, bool iTimeConstraint,bool iAddPulseJitter,bool iApplyTimeSlew,
85  double iTS4Min, const std::vector<double> & iTS4Max, double iPulseJitter,
86  double iTimeMean,double iTimeSig,double iTimeSigSiPM,
87  double iPedMean,double iPedSig, double iPedSigSiPM,
88  double iNoise,double iNoiseSiPM,
89  double iTMin, double iTMax,
90  const std::vector<double> & its4Chi2, int iFitTimes);
91  void setMeth3Params(bool iApplyTimeSlew, float iPedSubThreshold, int iTimeSlewParsType, std::vector<double> iTimeSlewPars, double irespCorrM3);
92 
93 private:
96  float phaseNS_;
97  std::unique_ptr<HcalPulseContainmentManager> pulseCorr_;
98  int runnum_; // data run numer
101  const BunchXParameter* bunchCrossingInfo_;
103  boost::shared_ptr<AbsOOTPileupCorrection> hbhePileupCorr_;
104  boost::shared_ptr<AbsOOTPileupCorrection> hfPileupCorr_;
105  boost::shared_ptr<AbsOOTPileupCorrection> hoPileupCorr_;
106 
108 
110 
111  std::unique_ptr<PulseShapeFitOOTPileupCorrection> psFitOOTpuCorr_;
112 
113  std::unique_ptr<PedestalSub> pedSubFxn_;
114 
115  // S.Brandt Feb19 : Add a pointer to the HLT algo
116  std::unique_ptr<HcalDeterministicFit> hltOOTpuCorr_;
117 };
118 
119 #endif
static const TGPicture * info(bool iBackgroundIsBlack)
HBHERecHit reconstruct(const HBHEDataFrame &digi, int first, int toadd, const HcalCoder &coder, const HcalCalibrations &calibs) const
void setMeth3Params(bool iApplyTimeSlew, float iPedSubThreshold, int iTimeSlewParsType, std::vector< double > iTimeSlewPars, double irespCorrM3)
std::unique_ptr< HcalDeterministicFit > hltOOTpuCorr_
void setpuCorrParams(bool iPedestalConstraint, bool iTimeConstraint, bool iAddPulseJitter, bool iApplyTimeSlew, double iTS4Min, const std::vector< double > &iTS4Max, double iPulseJitter, double iTimeMean, double iTimeSig, double iTimeSigSiPM, double iPedMean, double iPedSig, double iPedSigSiPM, double iNoise, double iNoiseSiPM, double iTMin, double iTMax, const std::vector< double > &its4Chi2, int iFitTimes)
void beginRun(edm::EventSetup const &es)
void setHOPileupCorrection(boost::shared_ptr< AbsOOTPileupCorrection > corr)
HcalPulseShapes theHcalPulseShapes_
const BunchXParameter * bunchCrossingInfo_
boost::shared_ptr< AbsOOTPileupCorrection > hoPileupCorr_
std::unique_ptr< HcalPulseContainmentManager > pulseCorr_
void setBXInfo(const BunchXParameter *info, unsigned lenInfo)
boost::shared_ptr< AbsOOTPileupCorrection > hbhePileupCorr_
unsigned lenBunchCrossingInfo_
std::unique_ptr< PedestalSub > pedSubFxn_
void initPulseCorr(int toadd)
HcalSimpleRecAlgo(bool correctForTimeslew, bool correctForContainment, float fixedPhaseNs)
JetCorrectorParameters corr
Definition: classes.h:5
void setRecoParams(bool correctForTimeslew, bool correctForPulse, bool setLeakCorrection, int pileupCleaningID, float phaseNS)
void setHBHEPileupCorrection(boost::shared_ptr< AbsOOTPileupCorrection > corr)
HFRecHit reconstructQIE10(const QIE10DataFrame &digi, int first, int toadd, const HcalCoder &coder, const HcalCalibrations &calibs) const
void setForData(int runnum)
boost::shared_ptr< AbsOOTPileupCorrection > hfPileupCorr_
void setpuCorrMethod(int method)
std::unique_ptr< PulseShapeFitOOTPileupCorrection > psFitOOTpuCorr_
void setHFPileupCorrection(boost::shared_ptr< AbsOOTPileupCorrection > corr)