CMS 3D CMS Logo

Functions
HcalCorrectionFunctions.h File Reference

Go to the source code of this file.

Functions

float hbminus_special_ecorr (int ieta, int iphi, double energy, int runnum)
 Special energy correction for some HB- cells. More...
 
float timeshift_ns_hbheho (float wpksamp)
 

Function Documentation

◆ hbminus_special_ecorr()

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

Special energy correction for some HB- cells.

Special energy correction for some HB- cells.

Definition at line 463 of file HcalSimpleRecAlgo.cc.

References alignCSCRings::corr, HCALHighEnergyHPDFilter_cfi::energy, JetChargeProducer_cfi::exp, LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, METSignificanceParams_cfi::jeta, runnum, and slope.

Referenced by SimpleHBHEPhase1Algo::hbminusCorrectionFactor().

463  {
464  // return energy correction factor for HBM channels
465  // iphi=6 ieta=(-1,-15) and iphi=32 ieta=(-1,-7)
466  // I.Vodopianov 28 Feb. 2011
467  static const float low32[7] = {0.741, 0.721, 0.730, 0.698, 0.708, 0.751, 0.861};
468  static const float high32[7] = {0.973, 0.925, 0.900, 0.897, 0.950, 0.935, 1};
469  static const float low6[15] = {
470  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};
471  static const float high6[15] = {
472  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};
473 
474  double slope, mid, en;
475  double corr = 1.0;
476 
477  if (!(iphi == 6 && ieta < 0 && ieta > -16) && !(iphi == 32 && ieta < 0 && ieta > -8))
478  return corr;
479 
480  int jeta = -ieta - 1;
481  double xeta = (double)ieta;
482  if (energy > 0.)
483  en = energy;
484  else
485  en = 0.;
486 
487  if (iphi == 32) {
488  slope = 0.2272;
489  mid = 17.14 + 0.7147 * xeta;
490  if (en > 100.)
491  corr = high32[jeta];
492  else
493  corr = low32[jeta] + (high32[jeta] - low32[jeta]) / (1.0 + exp(-(en - mid) * slope));
494  } else if (iphi == 6 && runnum < 216091) {
495  slope = 0.1956;
496  mid = 15.96 + 0.3075 * xeta;
497  if (en > 100.0)
498  corr = high6[jeta];
499  else
500  corr = low6[jeta] + (high6[jeta] - low6[jeta]) / (1.0 + exp(-(en - mid) * slope));
501  }
502 
503  // std::cout << "HBHE cell: ieta, iphi = " << ieta << " " << iphi
504  // << " -> energy = " << en << " corr = " << corr << std::endl;
505 
506  return corr;
507 }
int runnum
static const double slope[3]
dictionary corr

◆ timeshift_ns_hbheho()

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

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

Referenced by HcalSimpleRecAlgoImpl::reco().

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