26 std::unique_ptr<PulseShapeFitOOTPileupCorrection> m2,
27 std::unique_ptr<HcalDeterministicFit> detFit,
28 std::unique_ptr<MahiFit> mahi)
30 firstSampleShift_(firstSampleShift),
31 samplesToAdd_(samplesToAdd),
33 timeShift_(timeShift),
35 corrFPC_(correctForPhaseContainment),
37 hltOOTpuCorr_(
std::
move(detFit)),
70 float m0t = 0.f, m0E = 0.f;
76 const double fc_ampl = info.
chargeInWindow(ibeg, ibeg + nSamplesToAdd);
79 m0E =
m0Energy(info, fc_ampl, applyContainment, phasens, nSamplesToAdd);
81 m0t =
m0Time(info, fc_ampl, calibs, nSamplesToAdd);
85 float m2t = 0.f, m2E = 0.f,
chi2 = -1.f;
86 bool useTriple =
false;
99 float m3t = 0.f, m3E = 0.f;
109 float m4E = 0.f, m4chi2 = -1.f;
111 bool m4UseTriple=
false;
145 rh =
HBHERecHit(channelId, rhE, rht, tdcTime);
154 if (useTriple || m4UseTriple)
162 const bool isRealData)
const 168 const int ieta = cell.
ieta();
169 const int iphi = cell.
iphi();
176 const double fc_ampl,
177 const bool applyContainmentCorrection,
178 const double phaseNs,
179 const int nSamplesToAdd)
188 double corrFactor = 1.0;
189 if (applyContainmentCorrection)
190 corrFactor =
pulseCorr_.
get(info.
id(), nSamplesToAdd, phaseNs)->getCorrection(fc_ampl);
198 const double fc_ampl,
200 const int nSamplesToExamine)
const 202 float time = -9999.f;
207 const int soi = info.
soi();
211 const int iend = ibeg + nSamplesToExamine;
217 else if (maxI >= nSamples - 1
U)
218 maxI = nSamples - 2
U;
228 if (maxA < minA) minA = maxA;
229 if (t2 < minA) minA=
t2;
230 if (minA < 0.
f) { maxA-=minA; t0-=minA; t2-=minA; }
231 float wpksamp = (t0 + maxA +
t2);
232 if (wpksamp) wpksamp = (maxA + 2.f*
t2) / wpksamp;
const Shape & getShape(int shapeType) const
HBHERecHit reconstruct(const HBHEChannelInfo &info, const HcalRecoParam *params, const HcalCalibrations &calibs, bool isRealData) override
const HcalTimeSlew * hcalTimeSlew_delay_
float timeshift_ns_hbheho(float wpksamp)
HcalSubdetector subdet() const
get the subdetector
const HcalPulseContainmentCorrection * get(const HcalDetId &detId, int toAdd, float fixedphase_ns)
std::unique_ptr< HcalDeterministicFit > hltOOTpuCorr_
void phase1Apply(const HBHEChannelInfo &channelData, float &reconstructedEnergy, float &reconstructedTime, bool &useTriple, float &chi2, const HcalTimeSlew *hcalTimeSlew_delay) const
void beginRun(const edm::Run &, const edm::EventSetup &) override
float PulseContainmentFractionalError
bool correctForPhaseContainment() const
void phase1Apply(const HBHEChannelInfo &channelData, float &reconstructedEnergy, float &reconstructedTime, bool &useTriple, float &chi2, const HcalTimeSlew *hcalTimeSlew_delay) const
void setFlagField(uint32_t value, int base, int width=1)
double delay(double fC, BiasSetting bias=Medium) const
Returns the amount (ns) by which a pulse of the given number of fC will be delayed by the timeslew ef...
HcalPulseContainmentManager pulseCorr_
float hbminus_special_ecorr(int ieta, int iphi, double energy, int runnum)
Special energy correction for some HB- cells.
static const unsigned MAXSAMPLES
bool isSpecial(const float t)
auto const T2 &decltype(t1.eta()) t2
float m0Time(const HBHEChannelInfo &info, double reconstructedCharge, const HcalCalibrations &calibs, int nSamplesToExamine) const
float soiRiseTime() const
int ieta() const
get the cell ieta
double energyInWindow(const unsigned begin, const unsigned end) const
double chargeInWindow(const unsigned begin, const unsigned end) const
SimpleHBHEPhase1Algo(int firstSampleShift, int samplesToAdd, float phaseNS, float timeShift, bool correctForPhaseContainment, std::unique_ptr< PulseShapeFitOOTPileupCorrection > m2, std::unique_ptr< HcalDeterministicFit > detFit, std::unique_ptr< MahiFit > mahi)
unsigned int samplesToAdd() const
float hbminusCorrectionFactor(const HcalDetId &cell, float energy, bool isRealData) const
constexpr size_t nSamples
std::unique_ptr< MahiFit > mahiOOTpuCorr_
float correctionPhaseNS() const
int iphi() const
get the cell iphi
HcalPulseShapes theHcalPulseShapes_
double tsEnergy(const unsigned ts) const
double timecorr() const
get time correction factor
correctForPhaseContainment
void beginRun(edm::EventSetup const &es)
float m0Energy(const HBHEChannelInfo &info, double reconstructedCharge, bool applyContainmentCorrection, double phaseNS, int nSamplesToAdd)
static void setAux(const HBHEChannelInfo &info, HBHERecHit *rechit)
void setAuxEnergy(const float en)
void setChiSquared(const float chi2)
unsigned nSamples() const
std::unique_ptr< PulseShapeFitOOTPileupCorrection > psFitOOTpuCorr_
void setRawEnergy(const float en)
unsigned peakEnergyTS(const unsigned begin, const unsigned end) const
void phase1Apply(const HBHEChannelInfo &channelData, float &reconstructedEnergy, float &reconstructedTime, const HcalTimeSlew *hcalTimeSlew_delay) const