CMS 3D CMS Logo

Namespaces | Functions | Variables

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/RecoLocalCalo/HcalRecAlgos/src/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

namespace  HcalSimpleRecAlgoImpl

Functions

static float eCorr (int ieta, int iphi, double ampl)
 Ugly hack to apply energy corrections to some HB- cells.
static float leakCorr (double energy)
 Leak correction.
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, bool forData, bool useLeak)
static float timeshift_ns_hbheho (float wpksamp)
static float timeshift_ns_hf (float wpksamp)
 Same as above, but for the HF PMTs.

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 
) [static]

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

Definition at line 384 of file HcalSimpleRecAlgo.cc.

References corr, relval_parameters_module::energy, funct::exp(), and slope.

Referenced by HcalSimpleRecAlgoImpl::reco().

                                               {
// return energy correction factor for HBM channels 
// iphi=6 ieta=(-1,-15) and iphi=32 ieta=(-1,-7)
// I.Vodopianov 28 Feb. 2011
  static const float low32[7]  = {0.741,0.721,0.730,0.698,0.708,0.751,0.861};
  static const float high32[7] = {0.973,0.925,0.900,0.897,0.950,0.935,1};
  static const float low6[15]  = {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};
  static const float high6[15] = {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};

  
  double slope, mid, en;
  double corr = 1.0;

  if (!(iphi==6 && ieta<0 && ieta>-16) && !(iphi==32 && ieta<0 && ieta>-8)) 
    return corr;

  int jeta = -ieta-1;
  double xeta = (double) ieta;
  if (energy > 0.) en=energy;
  else en = 0.;

  if (iphi == 32) {
    slope = 0.2272;
    mid = 17.14 + 0.7147*xeta;
    if (en > 100.) corr = high32[jeta];
    else corr = low32[jeta]+(high32[jeta]-low32[jeta])/(1.0+exp(-(en-mid)*slope));
  }
  else if (iphi == 6) {
    slope = 0.1956;
    mid = 15.96 + 0.3075*xeta;
    if (en > 100.0) corr = high6[jeta];
    else corr = low6[jeta]+(high6[jeta]-low6[jeta])/(1.0+exp(-(en-mid)*slope));
  }

  //  std::cout << "HBHE cell:  ieta, iphi = " << ieta << "  " << iphi 
  //        << "  ->  energy = " << en << "   corr = " << corr << std::endl;

  return corr;
}
float leakCorr ( double  energy) [static]

Leak correction.

Definition at line 428 of file HcalSimpleRecAlgo.cc.

References corr.

Referenced by HcalSimpleRecAlgoImpl::reco().

                              {
  double corr = 1.0;
  return corr;
}
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().

                                         {
  float flx = (num_bins_hbheho-1)*(wpksamp - wpksamp0_hbheho);
  int index = (int)flx;
  float yval;

  if      (index <    0)               return actual_ns_hbheho[0];
  else if (index >= num_bins_hbheho-1) return actual_ns_hbheho[num_bins_hbheho-1];

  // else interpolate:
  float y1 = actual_ns_hbheho[index];
  float y2 = actual_ns_hbheho[index+1];

  yval = y1 + (y2-y1)*(flx-(float)index);

  return yval;
}
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().

                                     {
  float flx = (num_bins_hf-1)*(wpksamp-wpksamp0_hf);
  int index = (int)flx;
  float yval;
  
  if      (index <  0)             return actual_ns_hf[0];
  else if (index >= num_bins_hf-1) return actual_ns_hf[num_bins_hf-1];

  // else interpolate:
  float y1       = actual_ns_hf[index];
  float y2       = actual_ns_hf[index+1];

  // float delta_x  = 1/(float)num_bins_hf;
  // yval = y1 + (y2-y1)*(flx-(float)index)/delta_x;

  yval = y1 + (y2-y1)*(flx-(float)index);
  return yval;
}

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().