CMS 3D CMS Logo

Namespaces | Functions | Variables
HcalSimpleRecAlgo.cc File Reference
#include "RecoLocalCalo/HcalRecAlgos/interface/HcalSimpleRecAlgo.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "CalibCalorimetry/HcalAlgos/interface/HcalTimeSlew.h"
#include "RecoLocalCalo/HcalRecAlgos/src/HcalTDCReco.h"
#include "RecoLocalCalo/HcalRecAlgos/interface/rawEnergy.h"
#include "RecoLocalCalo/HcalRecAlgos/interface/HcalCorrectionFunctions.h"
#include "DataFormats/METReco/interface/HcalCaloFlagLabels.h"
#include "CondFormats/DataRecord/interface/HcalTimeSlewRecord.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include <algorithm>
#include <cmath>

Go to the source code of this file.

Namespaces

 HcalSimpleRecAlgoImpl
 

Functions

float hbminus_special_ecorr (int ieta, int iphi, double energy, int runnum)
 Ugly hack to apply energy corrections to some HB- cells. More...
 
static float leakCorr (double energy)
 Leak correction. More...
 
template<class Digi , class RecHit >
RecHit HcalSimpleRecAlgoImpl::reco (const Digi &digi, const HcalCoder &coder, const HcalCalibrations &calibs, const int ifirst, const int n, const bool slewCorrect, const bool pulseCorrect, const HcalPulseContainmentCorrection *corr, const HcalTimeSlew::BiasSetting slewFlavor, const int runnum, const bool useLeak, const AbsOOTPileupCorrection *pileupCorrection, const BunchXParameter *bxInfo, const unsigned lenInfo, const int puCorrMethod, const HcalTimeSlew *hcalTimeSlew_delay_)
 
template<class Digi >
float HcalSimpleRecAlgoImpl::recoHFTime (const Digi &digi, const int maxI, const double amp_fC, const bool slewCorrect, double maxA, float t0, float t2)
 
template<class Digi >
void HcalSimpleRecAlgoImpl::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)
 
float timeshift_ns_hbheho (float wpksamp)
 
static float timeshift_ns_hf (float wpksamp)
 Timeshift correction for the HF PMTs. More...
 

Variables

static const float actual_ns_hbheho [num_bins_hbheho]
 
static const float actual_ns_hf [num_bins_hf]
 
double MaximumFractionalError = 0.002
 
static const int num_bins_hbheho = 61
 
static const int num_bins_hf = 101
 
static const float wpksamp0_hbheho = 0.5
 
static const float wpksamp0_hf = 0.5
 

Function Documentation

float hbminus_special_ecorr ( int  ieta,
int  iphi,
double  energy,
int  runnum 
)

Ugly hack to apply energy corrections to some HB- cells.

Special energy correction for some HB- cells.

Definition at line 461 of file HcalSimpleRecAlgo.cc.

References corr, HCALHighEnergyHPDFilter_cfi::energy, JetChargeProducer_cfi::exp, METSignificanceParams_cfi::jeta, and slope.

Referenced by SimpleHBHEPhase1Algo::hbminusCorrectionFactor().

461  {
462  // return energy correction factor for HBM channels
463  // iphi=6 ieta=(-1,-15) and iphi=32 ieta=(-1,-7)
464  // I.Vodopianov 28 Feb. 2011
465  static const float low32[7] = {0.741, 0.721, 0.730, 0.698, 0.708, 0.751, 0.861};
466  static const float high32[7] = {0.973, 0.925, 0.900, 0.897, 0.950, 0.935, 1};
467  static const float low6[15] = {
468  0.635, 0.623, 0.670, 0.633, 0.644, 0.648, 0.600, 0.570, 0.595, 0.554, 0.505, 0.513, 0.515, 0.561, 0.579};
469  static const float high6[15] = {
470  0.875, 0.937, 0.942, 0.900, 0.922, 0.925, 0.901, 0.850, 0.852, 0.818, 0.731, 0.717, 0.782, 0.853, 0.778};
471 
472  double slope, mid, en;
473  double corr = 1.0;
474 
475  if (!(iphi == 6 && ieta < 0 && ieta > -16) && !(iphi == 32 && ieta < 0 && ieta > -8))
476  return corr;
477 
478  int jeta = -ieta - 1;
479  double xeta = (double)ieta;
480  if (energy > 0.)
481  en = energy;
482  else
483  en = 0.;
484 
485  if (iphi == 32) {
486  slope = 0.2272;
487  mid = 17.14 + 0.7147 * xeta;
488  if (en > 100.)
489  corr = high32[jeta];
490  else
491  corr = low32[jeta] + (high32[jeta] - low32[jeta]) / (1.0 + exp(-(en - mid) * slope));
492  } else if (iphi == 6 && runnum < 216091) {
493  slope = 0.1956;
494  mid = 15.96 + 0.3075 * xeta;
495  if (en > 100.0)
496  corr = high6[jeta];
497  else
498  corr = low6[jeta] + (high6[jeta] - low6[jeta]) / (1.0 + exp(-(en - mid) * slope));
499  }
500 
501  // std::cout << "HBHE cell: ieta, iphi = " << ieta << " " << iphi
502  // << " -> energy = " << en << " corr = " << corr << std::endl;
503 
504  return corr;
505 }
static const double slope[3]
JetCorrectorParameters corr
Definition: classes.h:5
float leakCorr ( double  energy)
static

Leak correction.

Definition at line 508 of file HcalSimpleRecAlgo.cc.

References corr.

Referenced by HcalSimpleRecAlgoImpl::reco(), and HcalSimpleRecAlgo::setBXInfo().

508  {
509  double corr = 1.0;
510  return corr;
511 }
JetCorrectorParameters corr
Definition: classes.h:5
float timeshift_ns_hbheho ( float  wpksamp)

Timeshift correction for HPDs based on the position of the peak ADC measurement. Allows for an accurate determination of the relative phase of the pulse shape from the HPD. Calculated based on a weighted sum of the -1,0,+1 samples relative to the peak as follows: wpksamp = (0*sample[0] + 1*sample[1] + 2*sample[2]) / (sample[0] + sample[1] + sample[2]) where sample[1] is the maximum ADC sample value.

Definition at line 582 of file HcalSimpleRecAlgo.cc.

References actual_ns_hbheho, createfilelist::int, num_bins_hbheho, wpksamp0_hbheho, testProducerWithPsetDescEmpty_cfi::y1, and testProducerWithPsetDescEmpty_cfi::y2.

Referenced by HcalSimpleRecAlgoImpl::reco().

582  {
583  float flx = (num_bins_hbheho - 1) * (wpksamp - wpksamp0_hbheho);
584  int index = (int)flx;
585  float yval;
586 
587  if (index < 0)
588  return actual_ns_hbheho[0];
589  else if (index >= num_bins_hbheho - 1)
590  return actual_ns_hbheho[num_bins_hbheho - 1];
591 
592  // else interpolate:
593  float y1 = actual_ns_hbheho[index];
594  float y2 = actual_ns_hbheho[index + 1];
595 
596  yval = y1 + (y2 - y1) * (flx - (float)index);
597 
598  return yval;
599 }
return((rh^lh)&mask)
static const float wpksamp0_hbheho
static const float actual_ns_hbheho[num_bins_hbheho]
static const int num_bins_hbheho
float timeshift_ns_hf ( float  wpksamp)
static

Timeshift correction for the HF PMTs.

Definition at line 708 of file HcalSimpleRecAlgo.cc.

References actual_ns_hf, createfilelist::int, num_bins_hf, wpksamp0_hf, testProducerWithPsetDescEmpty_cfi::y1, and testProducerWithPsetDescEmpty_cfi::y2.

Referenced by HcalSimpleRecAlgoImpl::recoHFTime(), and HcalSimpleRecAlgo::setBXInfo().

708  {
709  float flx = (num_bins_hf - 1) * (wpksamp - wpksamp0_hf);
710  int index = (int)flx;
711  float yval;
712 
713  if (index < 0)
714  return actual_ns_hf[0];
715  else if (index >= num_bins_hf - 1)
716  return actual_ns_hf[num_bins_hf - 1];
717 
718  // else interpolate:
719  float y1 = actual_ns_hf[index];
720  float y2 = actual_ns_hf[index + 1];
721 
722  // float delta_x = 1/(float)num_bins_hf;
723  // yval = y1 + (y2-y1)*(flx-(float)index)/delta_x;
724 
725  yval = y1 + (y2 - y1) * (flx - (float)index);
726  return yval;
727 }
static const float actual_ns_hf[num_bins_hf]
return((rh^lh)&mask)
static const float wpksamp0_hf
static const int num_bins_hf

Variable Documentation

const float actual_ns_hbheho[num_bins_hbheho]
static

Definition at line 518 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float actual_ns_hf[num_bins_hf]
static

Definition at line 604 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

double MaximumFractionalError = 0.002

Definition at line 18 of file HcalSimpleRecAlgo.cc.

Referenced by HcalSimpleRecAlgo::HcalSimpleRecAlgo().

const int num_bins_hbheho = 61
static

Definition at line 516 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const int num_bins_hf = 101
static

Definition at line 601 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

const float wpksamp0_hbheho = 0.5
static

Definition at line 515 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float wpksamp0_hf = 0.5
static

Definition at line 602 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().