CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 <algorithm>
#include <cmath>

Go to the source code of this file.

Namespaces

 HcalSimpleRecAlgoImpl
 

Functions

static float eCorr (int ieta, int iphi, double ampl, 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)
 
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)
 
static float timeshift_ns_hbheho (float wpksamp)
 
static float timeshift_ns_hf (float wpksamp)
 Same as above, but for the HF PMTs. More...
 

Variables

static const float actual_ns_hbheho [num_bins_hbheho]
 
static const float actual_ns_hf [num_bins_hf]
 
constexpr 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 eCorr ( int  ieta,
int  iphi,
double  ampl,
int  runnum 
)
static

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

Definition at line 455 of file HcalSimpleRecAlgo.cc.

References corr, relval_parameters_module::energy, create_public_lumi_plots::exp, and slope.

Referenced by PFClusterEMEnergyCorrector::correctEnergyActual(), PFClusterProducer::PFClusterProducer(), and HcalSimpleRecAlgoImpl::reco().

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

Leak correction.

Definition at line 499 of file HcalSimpleRecAlgo.cc.

References corr.

Referenced by HcalSimpleRecAlgoImpl::reco().

499  {
500  double corr = 1.0;
501  return corr;
502 }
JetCorrectorParameters corr
Definition: classes.h:5
float timeshift_ns_hbheho ( float  wpksamp)
static

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 574 of file HcalSimpleRecAlgo.cc.

References actual_ns_hbheho, cmsHarvester::index, num_bins_hbheho, and wpksamp0_hbheho.

Referenced by HcalSimpleRecAlgoImpl::reco().

574  {
575  float flx = (num_bins_hbheho-1)*(wpksamp - wpksamp0_hbheho);
576  int index = (int)flx;
577  float yval;
578 
579  if (index < 0) return actual_ns_hbheho[0];
580  else if (index >= num_bins_hbheho-1) return actual_ns_hbheho[num_bins_hbheho-1];
581 
582  // else interpolate:
583  float y1 = actual_ns_hbheho[index];
584  float y2 = actual_ns_hbheho[index+1];
585 
586  yval = y1 + (y2-y1)*(flx-(float)index);
587 
588  return yval;
589 }
static const float wpksamp0_hbheho
static const float actual_ns_hbheho[num_bins_hbheho]
static const int num_bins_hbheho
return(e1-e2)*(e1-e2)+dp *dp
float timeshift_ns_hf ( float  wpksamp)
static

Same as above, but for the HF PMTs.

Definition at line 698 of file HcalSimpleRecAlgo.cc.

References actual_ns_hf, cmsHarvester::index, num_bins_hf, and wpksamp0_hf.

Referenced by HcalSimpleRecAlgoImpl::recoHFTime().

698  {
699  float flx = (num_bins_hf-1)*(wpksamp-wpksamp0_hf);
700  int index = (int)flx;
701  float yval;
702 
703  if (index < 0) return actual_ns_hf[0];
704  else if (index >= num_bins_hf-1) return actual_ns_hf[num_bins_hf-1];
705 
706  // else interpolate:
707  float y1 = actual_ns_hf[index];
708  float y2 = actual_ns_hf[index+1];
709 
710  // float delta_x = 1/(float)num_bins_hf;
711  // yval = y1 + (y2-y1)*(flx-(float)index)/delta_x;
712 
713  yval = y1 + (y2-y1)*(flx-(float)index);
714  return yval;
715 }
static const float actual_ns_hf[num_bins_hf]
static const float wpksamp0_hf
static const int num_bins_hf
return(e1-e2)*(e1-e2)+dp *dp

Variable Documentation

const float actual_ns_hbheho[num_bins_hbheho]
static

Definition at line 510 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float actual_ns_hf[num_bins_hf]
static

Definition at line 594 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

constexpr double MaximumFractionalError = 0.002

Definition at line 13 of file HcalSimpleRecAlgo.cc.

const int num_bins_hbheho = 61
static

Definition at line 508 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const int num_bins_hf = 101
static

Definition at line 591 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

const float wpksamp0_hbheho = 0.5
static

Definition at line 507 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float wpksamp0_hf = 0.5
static

Definition at line 592 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().