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 PulseShapeFitOOTPileupCorrection *psFitOOTpuCorr, HcalDeterministicFit *hltOOTpuCorr, PedestalSub *hltPedSub, 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 416 of file HcalSimpleRecAlgo.cc.

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

Referenced by SimpleHBHEPhase1Algo::hbminusCorrectionFactor().

416  {
417 // return energy correction factor for HBM channels
418 // iphi=6 ieta=(-1,-15) and iphi=32 ieta=(-1,-7)
419 // I.Vodopianov 28 Feb. 2011
420  static const float low32[7] = {0.741,0.721,0.730,0.698,0.708,0.751,0.861};
421  static const float high32[7] = {0.973,0.925,0.900,0.897,0.950,0.935,1};
422  static const float low6[15] = {0.635,0.623,0.670,0.633,0.644,0.648,0.600,
423  0.570,0.595,0.554,0.505,0.513,0.515,0.561,0.579};
424  static const float high6[15] = {0.875,0.937,0.942,0.900,0.922,0.925,0.901,
425  0.850,0.852,0.818,0.731,0.717,0.782,0.853,0.778};
426 
427 
428  double slope, mid, en;
429  double corr = 1.0;
430 
431  if (!(iphi==6 && ieta<0 && ieta>-16) && !(iphi==32 && ieta<0 && ieta>-8))
432  return corr;
433 
434  int jeta = -ieta-1;
435  double xeta = (double) ieta;
436  if (energy > 0.) en=energy;
437  else en = 0.;
438 
439  if (iphi == 32) {
440  slope = 0.2272;
441  mid = 17.14 + 0.7147*xeta;
442  if (en > 100.) corr = high32[jeta];
443  else corr = low32[jeta]+(high32[jeta]-low32[jeta])/(1.0+exp(-(en-mid)*slope));
444  }
445  else if (iphi == 6 && runnum < 216091 ) {
446  slope = 0.1956;
447  mid = 15.96 + 0.3075*xeta;
448  if (en > 100.0) corr = high6[jeta];
449  else corr = low6[jeta]+(high6[jeta]-low6[jeta])/(1.0+exp(-(en-mid)*slope));
450  }
451 
452  // std::cout << "HBHE cell: ieta, iphi = " << ieta << " " << iphi
453  // << " -> energy = " << en << " corr = " << corr << std::endl;
454 
455  return corr;
456 }
static const double slope[3]
JetCorrectorParameters corr
Definition: classes.h:5
float leakCorr ( double  energy)
static

Leak correction.

Definition at line 460 of file HcalSimpleRecAlgo.cc.

References corr.

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

460  {
461  double corr = 1.0;
462  return corr;
463 }
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 535 of file HcalSimpleRecAlgo.cc.

References actual_ns_hbheho, diffTreeTool::index, createfilelist::int, num_bins_hbheho, and wpksamp0_hbheho.

Referenced by SimpleHBHEPhase1Algo::m0Time(), and HcalSimpleRecAlgoImpl::reco().

535  {
536  float flx = (num_bins_hbheho-1)*(wpksamp - wpksamp0_hbheho);
537  int index = (int)flx;
538  float yval;
539 
540  if (index < 0) return actual_ns_hbheho[0];
541  else if (index >= num_bins_hbheho-1) return actual_ns_hbheho[num_bins_hbheho-1];
542 
543  // else interpolate:
544  float y1 = actual_ns_hbheho[index];
545  float y2 = actual_ns_hbheho[index+1];
546 
547  yval = y1 + (y2-y1)*(flx-(float)index);
548 
549  return yval;
550 }
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

Timeshift correction for the HF PMTs.

Definition at line 659 of file HcalSimpleRecAlgo.cc.

References actual_ns_hf, diffTreeTool::index, createfilelist::int, num_bins_hf, and wpksamp0_hf.

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

659  {
660  float flx = (num_bins_hf-1)*(wpksamp-wpksamp0_hf);
661  int index = (int)flx;
662  float yval;
663 
664  if (index < 0) return actual_ns_hf[0];
665  else if (index >= num_bins_hf-1) return actual_ns_hf[num_bins_hf-1];
666 
667  // else interpolate:
668  float y1 = actual_ns_hf[index];
669  float y2 = actual_ns_hf[index+1];
670 
671  // float delta_x = 1/(float)num_bins_hf;
672  // yval = y1 + (y2-y1)*(flx-(float)index)/delta_x;
673 
674  yval = y1 + (y2-y1)*(flx-(float)index);
675  return yval;
676 }
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 471 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float actual_ns_hf[num_bins_hf]
static

Definition at line 555 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 469 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const int num_bins_hf = 101
static

Definition at line 552 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

const float wpksamp0_hbheho = 0.5
static

Definition at line 468 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float wpksamp0_hf = 0.5
static

Definition at line 553 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().