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 <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)
 
template<class Digi , class RecHit >
RecHit HcalSimpleRecAlgoImpl::recoHBHE (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)
 
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]
 
int HPDShapev3DataNum = 105
 
int HPDShapev3MCNum = 105
 
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 611 of file HcalSimpleRecAlgo.cc.

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

Referenced by SimpleHBHEPhase1Algo::hbminusCorrectionFactor(), HcalSimpleRecAlgoImpl::reco(), and HcalSimpleRecAlgoImpl::recoHBHE().

611  {
612 // return energy correction factor for HBM channels
613 // iphi=6 ieta=(-1,-15) and iphi=32 ieta=(-1,-7)
614 // I.Vodopianov 28 Feb. 2011
615  static const float low32[7] = {0.741,0.721,0.730,0.698,0.708,0.751,0.861};
616  static const float high32[7] = {0.973,0.925,0.900,0.897,0.950,0.935,1};
617  static const float low6[15] = {0.635,0.623,0.670,0.633,0.644,0.648,0.600,
618  0.570,0.595,0.554,0.505,0.513,0.515,0.561,0.579};
619  static const float high6[15] = {0.875,0.937,0.942,0.900,0.922,0.925,0.901,
620  0.850,0.852,0.818,0.731,0.717,0.782,0.853,0.778};
621 
622 
623  double slope, mid, en;
624  double corr = 1.0;
625 
626  if (!(iphi==6 && ieta<0 && ieta>-16) && !(iphi==32 && ieta<0 && ieta>-8))
627  return corr;
628 
629  int jeta = -ieta-1;
630  double xeta = (double) ieta;
631  if (energy > 0.) en=energy;
632  else en = 0.;
633 
634  if (iphi == 32) {
635  slope = 0.2272;
636  mid = 17.14 + 0.7147*xeta;
637  if (en > 100.) corr = high32[jeta];
638  else corr = low32[jeta]+(high32[jeta]-low32[jeta])/(1.0+exp(-(en-mid)*slope));
639  }
640  else if (iphi == 6 && runnum < 216091 ) {
641  slope = 0.1956;
642  mid = 15.96 + 0.3075*xeta;
643  if (en > 100.0) corr = high6[jeta];
644  else corr = low6[jeta]+(high6[jeta]-low6[jeta])/(1.0+exp(-(en-mid)*slope));
645  }
646 
647  // std::cout << "HBHE cell: ieta, iphi = " << ieta << " " << iphi
648  // << " -> energy = " << en << " corr = " << corr << std::endl;
649 
650  return corr;
651 }
static const double slope[3]
JetCorrectorParameters corr
Definition: classes.h:5
float leakCorr ( double  energy)
static

Leak correction.

Definition at line 655 of file HcalSimpleRecAlgo.cc.

References corr.

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

655  {
656  double corr = 1.0;
657  return corr;
658 }
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 730 of file HcalSimpleRecAlgo.cc.

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

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

730  {
731  float flx = (num_bins_hbheho-1)*(wpksamp - wpksamp0_hbheho);
732  int index = (int)flx;
733  float yval;
734 
735  if (index < 0) return actual_ns_hbheho[0];
736  else if (index >= num_bins_hbheho-1) return actual_ns_hbheho[num_bins_hbheho-1];
737 
738  // else interpolate:
739  float y1 = actual_ns_hbheho[index];
740  float y2 = actual_ns_hbheho[index+1];
741 
742  yval = y1 + (y2-y1)*(flx-(float)index);
743 
744  return yval;
745 }
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 854 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().

854  {
855  float flx = (num_bins_hf-1)*(wpksamp-wpksamp0_hf);
856  int index = (int)flx;
857  float yval;
858 
859  if (index < 0) return actual_ns_hf[0];
860  else if (index >= num_bins_hf-1) return actual_ns_hf[num_bins_hf-1];
861 
862  // else interpolate:
863  float y1 = actual_ns_hf[index];
864  float y2 = actual_ns_hf[index+1];
865 
866  // float delta_x = 1/(float)num_bins_hf;
867  // yval = y1 + (y2-y1)*(flx-(float)index)/delta_x;
868 
869  yval = y1 + (y2-y1)*(flx-(float)index);
870  return yval;
871 }
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 666 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float actual_ns_hf[num_bins_hf]
static

Definition at line 750 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

int HPDShapev3DataNum = 105

Definition at line 16 of file HcalSimpleRecAlgo.cc.

Referenced by HcalSimpleRecAlgo::setForData().

int HPDShapev3MCNum = 105

Definition at line 17 of file HcalSimpleRecAlgo.cc.

Referenced by HcalSimpleRecAlgo::setForData().

double MaximumFractionalError = 0.002

Definition at line 15 of file HcalSimpleRecAlgo.cc.

Referenced by HcalSimpleRecAlgo::HcalSimpleRecAlgo().

const int num_bins_hbheho = 61
static

Definition at line 664 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const int num_bins_hf = 101
static

Definition at line 747 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().

const float wpksamp0_hbheho = 0.5
static

Definition at line 663 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hbheho().

const float wpksamp0_hf = 0.5
static

Definition at line 748 of file HcalSimpleRecAlgo.cc.

Referenced by timeshift_ns_hf().