CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
HcalSimpleRecAlgo Class Reference

#include <HcalSimpleRecAlgo.h>

Public Member Functions

void beginRun (edm::EventSetup const &es)
 
void endRun ()
 
 HcalSimpleRecAlgo (bool correctForTimeslew, bool correctForContainment, float fixedPhaseNs, edm::ConsumesCollector iC)
 
void initPulseCorr (int toadd)
 
HcalCalibRecHit reconstruct (const HcalCalibDataFrame &digi, int first, int toadd, const HcalCoder &coder, const HcalCalibrations &calibs) const
 
HFRecHit reconstruct (const HFDataFrame &digi, int first, int toadd, const HcalCoder &coder, const HcalCalibrations &calibs) const
 
HORecHit reconstruct (const HODataFrame &digi, int first, int toadd, const HcalCoder &coder, const HcalCalibrations &calibs) const
 
HFRecHit reconstructQIE10 (const QIE10DataFrame &digi, int first, int toadd, const HcalCoder &coder, const HcalCalibrations &calibs) const
 
void setBXInfo (const BunchXParameter *info, unsigned lenInfo)
 
void setHFPileupCorrection (std::shared_ptr< AbsOOTPileupCorrection > corr)
 
void setHOPileupCorrection (std::shared_ptr< AbsOOTPileupCorrection > corr)
 
void setLeakCorrection ()
 
void setRecoParams (bool correctForTimeslew, bool correctForPulse, bool setLeakCorrection, int pileupCleaningID, float phaseNS)
 

Private Attributes

const BunchXParameter * bunchCrossingInfo_
 
bool correctForPulse_
 
bool correctForTimeslew_
 
const edm::ESGetToken< HcalTimeSlew, HcalTimeSlewRecorddelayToken_
 
std::shared_ptr< AbsOOTPileupCorrectionhbhePileupCorr_
 
const HcalTimeSlewhcalTimeSlew_delay_
 
std::shared_ptr< AbsOOTPileupCorrectionhfPileupCorr_
 
std::shared_ptr< AbsOOTPileupCorrectionhoPileupCorr_
 
unsigned lenBunchCrossingInfo_
 
float phaseNS_
 
int pileupCleaningID_
 
int puCorrMethod_
 
std::unique_ptr< HcalPulseContainmentManagerpulseCorr_
 
int runnum_
 
bool setLeakCorrection_
 
HcalPulseShapes theHcalPulseShapes_
 

Detailed Description

This class reconstructs RecHits from Digis for HBHE, HF, and HO by addition of selected time samples, pedestal subtraction, and gain application. The time of the hit is reconstructed using a weighted peak bin calculation supplemented by precise time lookup table. A consumer of this class also has the option of correcting the reconstructed time for energy-dependent time slew associated with the QIE.

Author
J. Mans - Minnesota

Definition at line 34 of file HcalSimpleRecAlgo.h.

Constructor & Destructor Documentation

◆ HcalSimpleRecAlgo()

HcalSimpleRecAlgo::HcalSimpleRecAlgo ( bool  correctForTimeslew,
bool  correctForContainment,
float  fixedPhaseNs,
edm::ConsumesCollector  iC 
)

Full featured constructor for HB/HE and HO (HPD-based detectors)

Definition at line 20 of file HcalSimpleRecAlgo.cc.

25  correctForPulse_(correctForPulse),
26  phaseNS_(phaseNS),
28  runnum_(0),
29  setLeakCorrection_(false),
30  puCorrMethod_(0) {
31  hcalTimeSlew_delay_ = nullptr;
32  pulseCorr_ = std::make_unique<HcalPulseContainmentManager>(MaximumFractionalError, iC);
33 }

References hcalTimeSlew_delay_, MaximumFractionalError, and pulseCorr_.

Member Function Documentation

◆ beginRun()

void HcalSimpleRecAlgo::beginRun ( edm::EventSetup const &  es)

Definition at line 35 of file HcalSimpleRecAlgo.cc.

35  {
36  hcalTimeSlew_delay_ = &es.getData(delayToken_);
37 
38  pulseCorr_->beginRun(es);
39 }

References delayToken_, edm::EventSetup::getData(), hcalTimeSlew_delay_, and pulseCorr_.

Referenced by HcalSimpleReconstructor::beginRun(), and HcalHitReconstructor::beginRun().

◆ endRun()

void HcalSimpleRecAlgo::endRun ( )

Definition at line 41 of file HcalSimpleRecAlgo.cc.

41 {}

Referenced by HcalSimpleReconstructor::endRun(), and HcalHitReconstructor::endRun().

◆ initPulseCorr()

void HcalSimpleRecAlgo::initPulseCorr ( int  toadd)

Definition at line 43 of file HcalSimpleRecAlgo.cc.

43 {}

◆ reconstruct() [1/3]

HcalCalibRecHit HcalSimpleRecAlgo::reconstruct ( const HcalCalibDataFrame digi,
int  first,
int  toadd,
const HcalCoder coder,
const HcalCalibrations calibs 
) const

Definition at line 357 of file HcalSimpleRecAlgo.cc.

361  {
362  return HcalSimpleRecAlgoImpl::reco<HcalCalibDataFrame, HcalCalibRecHit>(digi,
363  coder,
364  calibs,
365  first,
366  toadd,
369  pulseCorr_->get(digi.id(), toadd, phaseNS_),
371  runnum_,
372  false,
373  nullptr,
378 }

References bunchCrossingInfo_, correctForPulse_, correctForTimeslew_, HcalTimeSlew::Fast, first, hcalTimeSlew_delay_, HcalCalibDataFrame::id(), lenBunchCrossingInfo_, phaseNS_, puCorrMethod_, pulseCorr_, and runnum_.

◆ reconstruct() [2/3]

HFRecHit HcalSimpleRecAlgo::reconstruct ( const HFDataFrame digi,
int  first,
int  toadd,
const HcalCoder coder,
const HcalCalibrations calibs 
) const

Definition at line 380 of file HcalSimpleRecAlgo.cc.

384  {
385  const HcalPulseContainmentCorrection* corr = pulseCorr_->get(digi.id(), toadd, phaseNS_);
386 
387  double amp_fC, ampl, uncorr_ampl, maxA;
388  int nRead, maxI;
389  bool leakCorrApplied;
390  float t0, t2;
391 
393  coder,
394  calibs,
395  first,
396  toadd,
398  corr,
399  hfPileupCorr_.get(),
402  &maxA,
403  &ampl,
404  &uncorr_ampl,
405  &amp_fC,
406  &nRead,
407  &maxI,
408  &leakCorrApplied,
409  &t0,
410  &t2);
411 
412  float time = -9999.f;
413  if (maxI > 0 && maxI < (nRead - 1))
414  time = HcalSimpleRecAlgoImpl::recoHFTime(digi, maxI, amp_fC, correctForTimeslew_, maxA, t0, t2) - calibs.timecorr();
415 
416  HFRecHit rh(digi.id(), ampl, time);
417  setRawEnergy(rh, static_cast<float>(uncorr_ampl));
418  return rh;
419 }

References bunchCrossingInfo_, alignCSCRings::corr, correctForPulse_, correctForTimeslew_, first, hfPileupCorr_, HFDataFrame::id(), lenBunchCrossingInfo_, findQualityFiles::maxI, phaseNS_, pulseCorr_, HcalSimpleRecAlgoImpl::recoHFTime(), HcalSimpleRecAlgoImpl::removePileup(), setRawEnergy(), FrontierCondition_GT_autoExpress_cfi::t0, RandomServiceHelper::t2, protons_cff::time, and HcalCalibrations::timecorr().

Referenced by HcalSimpleReconstructor::process(), and HcalHitReconstructor::produce().

◆ reconstruct() [3/3]

HORecHit HcalSimpleRecAlgo::reconstruct ( const HODataFrame digi,
int  first,
int  toadd,
const HcalCoder coder,
const HcalCalibrations calibs 
) const

Definition at line 337 of file HcalSimpleRecAlgo.cc.

338  {
339  return HcalSimpleRecAlgoImpl::reco<HODataFrame, HORecHit>(digi,
340  coder,
341  calibs,
342  first,
343  toadd,
346  pulseCorr_->get(digi.id(), toadd, phaseNS_),
348  runnum_,
349  false,
350  hoPileupCorr_.get(),
355 }

References bunchCrossingInfo_, correctForPulse_, correctForTimeslew_, first, hcalTimeSlew_delay_, hoPileupCorr_, HODataFrame::id(), lenBunchCrossingInfo_, phaseNS_, puCorrMethod_, pulseCorr_, runnum_, and HcalTimeSlew::Slow.

◆ reconstructQIE10()

HFRecHit HcalSimpleRecAlgo::reconstructQIE10 ( const QIE10DataFrame digi,
int  first,
int  toadd,
const HcalCoder coder,
const HcalCalibrations calibs 
) const

Definition at line 421 of file HcalSimpleRecAlgo.cc.

425  {
426  const HcalPulseContainmentCorrection* corr = pulseCorr_->get(digi.id(), toadd, phaseNS_);
427 
428  double amp_fC, ampl, uncorr_ampl, maxA;
429  int nRead, maxI;
430  bool leakCorrApplied;
431  float t0, t2;
432 
434  coder,
435  calibs,
436  first,
437  toadd,
439  corr,
440  hfPileupCorr_.get(),
443  &maxA,
444  &ampl,
445  &uncorr_ampl,
446  &amp_fC,
447  &nRead,
448  &maxI,
449  &leakCorrApplied,
450  &t0,
451  &t2);
452 
453  float time = -9999.f;
454  if (maxI > 0 && maxI < (nRead - 1))
455  time = HcalSimpleRecAlgoImpl::recoHFTime(digi, maxI, amp_fC, correctForTimeslew_, maxA, t0, t2) - calibs.timecorr();
456 
457  HFRecHit rh(digi.id(), ampl, time);
458  setRawEnergy(rh, static_cast<float>(uncorr_ampl));
459  return rh;
460 }

References bunchCrossingInfo_, alignCSCRings::corr, correctForPulse_, correctForTimeslew_, first, hfPileupCorr_, QIE10DataFrame::id(), lenBunchCrossingInfo_, findQualityFiles::maxI, phaseNS_, pulseCorr_, HcalSimpleRecAlgoImpl::recoHFTime(), HcalSimpleRecAlgoImpl::removePileup(), setRawEnergy(), FrontierCondition_GT_autoExpress_cfi::t0, RandomServiceHelper::t2, protons_cff::time, and HcalCalibrations::timecorr().

◆ setBXInfo()

void HcalSimpleRecAlgo::setBXInfo ( const BunchXParameter *  info,
unsigned  lenInfo 
)

Definition at line 60 of file HcalSimpleRecAlgo.cc.

60  {
62  lenBunchCrossingInfo_ = lenInfo;
63 }

References bunchCrossingInfo_, info(), and lenBunchCrossingInfo_.

◆ setHFPileupCorrection()

void HcalSimpleRecAlgo::setHFPileupCorrection ( std::shared_ptr< AbsOOTPileupCorrection corr)

Definition at line 56 of file HcalSimpleRecAlgo.cc.

56 { hfPileupCorr_ = corr; }

References alignCSCRings::corr, and hfPileupCorr_.

◆ setHOPileupCorrection()

void HcalSimpleRecAlgo::setHOPileupCorrection ( std::shared_ptr< AbsOOTPileupCorrection corr)

Definition at line 58 of file HcalSimpleRecAlgo.cc.

58 { hoPileupCorr_ = corr; }

References alignCSCRings::corr, and hoPileupCorr_.

◆ setLeakCorrection()

void HcalSimpleRecAlgo::setLeakCorrection ( )

Definition at line 54 of file HcalSimpleRecAlgo.cc.

54 { setLeakCorrection_ = true; }

References setLeakCorrection_.

Referenced by HcalHitReconstructor::produce(), and setRecoParams().

◆ setRecoParams()

void HcalSimpleRecAlgo::setRecoParams ( bool  correctForTimeslew,
bool  correctForPulse,
bool  setLeakCorrection,
int  pileupCleaningID,
float  phaseNS 
)

Member Data Documentation

◆ bunchCrossingInfo_

const BunchXParameter* HcalSimpleRecAlgo::bunchCrossingInfo_
private

Definition at line 81 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct(), reconstructQIE10(), and setBXInfo().

◆ correctForPulse_

bool HcalSimpleRecAlgo::correctForPulse_
private

Definition at line 74 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct(), reconstructQIE10(), and setRecoParams().

◆ correctForTimeslew_

bool HcalSimpleRecAlgo::correctForTimeslew_
private

Definition at line 73 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct(), reconstructQIE10(), and setRecoParams().

◆ delayToken_

const edm::ESGetToken<HcalTimeSlew, HcalTimeSlewRecord> HcalSimpleRecAlgo::delayToken_
private

Definition at line 76 of file HcalSimpleRecAlgo.h.

Referenced by beginRun().

◆ hbhePileupCorr_

std::shared_ptr<AbsOOTPileupCorrection> HcalSimpleRecAlgo::hbhePileupCorr_
private

Definition at line 83 of file HcalSimpleRecAlgo.h.

◆ hcalTimeSlew_delay_

const HcalTimeSlew* HcalSimpleRecAlgo::hcalTimeSlew_delay_
private

Definition at line 91 of file HcalSimpleRecAlgo.h.

Referenced by beginRun(), HcalSimpleRecAlgo(), and reconstruct().

◆ hfPileupCorr_

std::shared_ptr<AbsOOTPileupCorrection> HcalSimpleRecAlgo::hfPileupCorr_
private

Definition at line 84 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct(), reconstructQIE10(), and setHFPileupCorrection().

◆ hoPileupCorr_

std::shared_ptr<AbsOOTPileupCorrection> HcalSimpleRecAlgo::hoPileupCorr_
private

Definition at line 85 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct(), and setHOPileupCorrection().

◆ lenBunchCrossingInfo_

unsigned HcalSimpleRecAlgo::lenBunchCrossingInfo_
private

Definition at line 82 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct(), reconstructQIE10(), and setBXInfo().

◆ phaseNS_

float HcalSimpleRecAlgo::phaseNS_
private

Definition at line 75 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct(), reconstructQIE10(), and setRecoParams().

◆ pileupCleaningID_

int HcalSimpleRecAlgo::pileupCleaningID_
private

Definition at line 80 of file HcalSimpleRecAlgo.h.

Referenced by setRecoParams().

◆ puCorrMethod_

int HcalSimpleRecAlgo::puCorrMethod_
private

Definition at line 89 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct().

◆ pulseCorr_

std::unique_ptr<HcalPulseContainmentManager> HcalSimpleRecAlgo::pulseCorr_
private

Definition at line 77 of file HcalSimpleRecAlgo.h.

Referenced by beginRun(), HcalSimpleRecAlgo(), reconstruct(), and reconstructQIE10().

◆ runnum_

int HcalSimpleRecAlgo::runnum_
private

Definition at line 78 of file HcalSimpleRecAlgo.h.

Referenced by reconstruct().

◆ setLeakCorrection_

bool HcalSimpleRecAlgo::setLeakCorrection_
private

Definition at line 79 of file HcalSimpleRecAlgo.h.

Referenced by setLeakCorrection(), and setRecoParams().

◆ theHcalPulseShapes_

HcalPulseShapes HcalSimpleRecAlgo::theHcalPulseShapes_
private

Definition at line 87 of file HcalSimpleRecAlgo.h.

HcalSimpleRecAlgo::delayToken_
const edm::ESGetToken< HcalTimeSlew, HcalTimeSlewRecord > delayToken_
Definition: HcalSimpleRecAlgo.h:76
RandomServiceHelper.t2
t2
Definition: RandomServiceHelper.py:257
HcalSimpleRecAlgo::runnum_
int runnum_
Definition: HcalSimpleRecAlgo.h:78
edm::ESInputTag
Definition: ESInputTag.h:87
HFDataFrame::id
constexpr HcalDetId const & id() const
Definition: HFDataFrame.h:23
HcalSimpleRecAlgoImpl::removePileup
void removePileup(const Digi &digi, const HcalCoder &coder, const HcalCalibrations &calibs, const int ifirst, const int n, const bool pulseCorrect, const HcalPulseContainmentCorrection *corr, const AbsOOTPileupCorrection *pileupCorrection, const BunchXParameter *bxInfo, const unsigned lenInfo, double *p_maxA, double *p_ampl, double *p_uncorr_ampl, double *p_fc_ampl, int *p_nRead, int *p_maxI, bool *leakCorrApplied, float *p_t0, float *p_t2)
Definition: HcalSimpleRecAlgo.cc:107
protons_cff.time
time
Definition: protons_cff.py:35
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:153
findQualityFiles.maxI
int maxI
Definition: findQualityFiles.py:182
HcalSimpleRecAlgoImpl::recoHFTime
float recoHFTime(const Digi &digi, const int maxI, const double amp_fC, const bool slewCorrect, double maxA, float t0, float t2)
Definition: HcalSimpleRecAlgo.cc:73
HcalPulseContainmentCorrection
Definition: HcalPulseContainmentCorrection.h:15
edm::ConsumesCollector::esConsumes
auto esConsumes()
Definition: ConsumesCollector.h:97
MaximumFractionalError
constexpr double MaximumFractionalError
Definition: HcalSimpleRecAlgo.cc:18
HcalSimpleRecAlgo::phaseNS_
float phaseNS_
Definition: HcalSimpleRecAlgo.h:75
HFRecHit
Definition: HFRecHit.h:11
HcalSimpleRecAlgo::pulseCorr_
std::unique_ptr< HcalPulseContainmentManager > pulseCorr_
Definition: HcalSimpleRecAlgo.h:77
HcalSimpleRecAlgo::puCorrMethod_
int puCorrMethod_
Definition: HcalSimpleRecAlgo.h:89
HcalSimpleRecAlgo::setLeakCorrection_
bool setLeakCorrection_
Definition: HcalSimpleRecAlgo.h:79
FrontierCondition_GT_autoExpress_cfi.t0
t0
Definition: FrontierCondition_GT_autoExpress_cfi.py:149
alignCSCRings.corr
dictionary corr
Definition: alignCSCRings.py:124
HcalSimpleRecAlgo::lenBunchCrossingInfo_
unsigned lenBunchCrossingInfo_
Definition: HcalSimpleRecAlgo.h:82
HcalSimpleRecAlgo::bunchCrossingInfo_
const BunchXParameter * bunchCrossingInfo_
Definition: HcalSimpleRecAlgo.h:81
HcalTimeSlew::Slow
Definition: HcalTimeSlew.h:71
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:125
HcalSimpleRecAlgo::correctForTimeslew_
bool correctForTimeslew_
Definition: HcalSimpleRecAlgo.h:73
HcalCalibrations::timecorr
constexpr double timecorr() const
get time correction factor
Definition: HcalCalibrations.h:52
HcalSimpleRecAlgo::setLeakCorrection
void setLeakCorrection()
Definition: HcalSimpleRecAlgo.cc:54
castor_dqm_sourceclient-live_cfg.correctForTimeslew
correctForTimeslew
Definition: castor_dqm_sourceclient-live_cfg.py:66
edm::Transition::BeginRun
setRawEnergy
void setRawEnergy(HcalRecHit &h, float e)
Definition: rawEnergy.h:217
HcalSimpleRecAlgo::hoPileupCorr_
std::shared_ptr< AbsOOTPileupCorrection > hoPileupCorr_
Definition: HcalSimpleRecAlgo.h:85
HcalSimpleRecAlgo::pileupCleaningID_
int pileupCleaningID_
Definition: HcalSimpleRecAlgo.h:80
HcalSimpleRecAlgo::hcalTimeSlew_delay_
const HcalTimeSlew * hcalTimeSlew_delay_
Definition: HcalSimpleRecAlgo.h:91
HcalSimpleRecAlgo::correctForPulse_
bool correctForPulse_
Definition: HcalSimpleRecAlgo.h:74
HcalSimpleRecAlgo::hfPileupCorr_
std::shared_ptr< AbsOOTPileupCorrection > hfPileupCorr_
Definition: HcalSimpleRecAlgo.h:84
HODataFrame::id
constexpr HcalDetId const & id() const
Definition: HODataFrame.h:23
QIE10DataFrame::id
constexpr edm::DataFrame::id_type id() const
Definition: QIE10DataFrame.h:77
HcalCalibDataFrame::id
const HcalCalibDetId & id() const
Definition: HcalCalibDataFrame.h:22
HcalTimeSlew::Fast
Definition: HcalTimeSlew.h:71