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 <algorithm>
#include <math.h>
#include <iostream>

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, int ifirst, int n, bool slewCorrect, bool pulseCorrect, const HcalPulseContainmentCorrection *corr, HcalTimeSlew::BiasSetting slewFlavor, int runnum_, bool useLeak)
 
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 384 of file HcalSimpleRecAlgo.cc.

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

Referenced by PFClusterProducer::produce(), and HcalSimpleRecAlgoImpl::reco().

384  {
385 // return energy correction factor for HBM channels
386 // iphi=6 ieta=(-1,-15) and iphi=32 ieta=(-1,-7)
387 // I.Vodopianov 28 Feb. 2011
388  static const float low32[7] = {0.741,0.721,0.730,0.698,0.708,0.751,0.861};
389  static const float high32[7] = {0.973,0.925,0.900,0.897,0.950,0.935,1};
390  static const float low6[15] = {0.635,0.623,0.670,0.633,0.644,0.648,0.600,
391  0.570,0.595,0.554,0.505,0.513,0.515,0.561,0.579};
392  static const float high6[15] = {0.875,0.937,0.942,0.900,0.922,0.925,0.901,
393  0.850,0.852,0.818,0.731,0.717,0.782,0.853,0.778};
394 
395 
396  double slope, mid, en;
397  double corr = 1.0;
398 
399  if (!(iphi==6 && ieta<0 && ieta>-16) && !(iphi==32 && ieta<0 && ieta>-8))
400  return corr;
401 
402  int jeta = -ieta-1;
403  double xeta = (double) ieta;
404  if (energy > 0.) en=energy;
405  else en = 0.;
406 
407  if (iphi == 32) {
408  slope = 0.2272;
409  mid = 17.14 + 0.7147*xeta;
410  if (en > 100.) corr = high32[jeta];
411  else corr = low32[jeta]+(high32[jeta]-low32[jeta])/(1.0+exp(-(en-mid)*slope));
412  }
413  else if (iphi == 6 && runnum < 216091 ) {
414  slope = 0.1956;
415  mid = 15.96 + 0.3075*xeta;
416  if (en > 100.0) corr = high6[jeta];
417  else corr = low6[jeta]+(high6[jeta]-low6[jeta])/(1.0+exp(-(en-mid)*slope));
418  }
419 
420  // std::cout << "HBHE cell: ieta, iphi = " << ieta << " " << iphi
421  // << " -> energy = " << en << " corr = " << corr << std::endl;
422 
423  return corr;
424 }
static const double slope[3]
tuple runnum
Definition: summaryLumi.py:210
float leakCorr ( double  energy)
static

Leak correction.

Definition at line 428 of file HcalSimpleRecAlgo.cc.

References alignCSCRings::corr.

Referenced by HcalSimpleRecAlgoImpl::reco().

428  {
429  double corr = 1.0;
430  return corr;
431 }
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 503 of file HcalSimpleRecAlgo.cc.

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

Referenced by HcalSimpleRecAlgoImpl::reco().

503  {
504  float flx = (num_bins_hbheho-1)*(wpksamp - wpksamp0_hbheho);
505  int index = (int)flx;
506  float yval;
507 
508  if (index < 0) return actual_ns_hbheho[0];
509  else if (index >= num_bins_hbheho-1) return actual_ns_hbheho[num_bins_hbheho-1];
510 
511  // else interpolate:
512  float y1 = actual_ns_hbheho[index];
513  float y2 = actual_ns_hbheho[index+1];
514 
515  yval = y1 + (y2-y1)*(flx-(float)index);
516 
517  return yval;
518 }
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 627 of file HcalSimpleRecAlgo.cc.

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

Referenced by HcalSimpleRecAlgo::reconstruct(), and HcalSimpleRecAlgo::reconstructHFUpgrade().

627  {
628  float flx = (num_bins_hf-1)*(wpksamp-wpksamp0_hf);
629  int index = (int)flx;
630  float yval;
631 
632  if (index < 0) return actual_ns_hf[0];
633  else if (index >= num_bins_hf-1) return actual_ns_hf[num_bins_hf-1];
634 
635  // else interpolate:
636  float y1 = actual_ns_hf[index];
637  float y2 = actual_ns_hf[index+1];
638 
639  // float delta_x = 1/(float)num_bins_hf;
640  // yval = y1 + (y2-y1)*(flx-(float)index)/delta_x;
641 
642  yval = y1 + (y2-y1)*(flx-(float)index);
643  return yval;
644 }
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 439 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float actual_ns_hf[num_bins_hf]
static

Definition at line 523 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

constexpr double MaximumFractionalError = 0.002

Definition at line 10 of file HcalSimpleRecAlgo.cc.

const int num_bins_hbheho = 61
static

Definition at line 437 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const int num_bins_hf = 101
static

Definition at line 520 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

const float wpksamp0_hbheho = 0.5
static

Definition at line 436 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float wpksamp0_hf = 0.5
static

Definition at line 521 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().