CMS 3D CMS Logo

Public Member Functions | Private Attributes

HcalPulseContainmentCorrection Class Reference

#include <HcalPulseContainmentCorrection.h>

List of all members.

Public Member Functions

double fractionContained (double fc_ampl) const
double getCorrection (double fc_ampl) const
 HcalPulseContainmentCorrection (int num_samples, float fixedphase_ns, float max_fracerror)
 Generate energy correction factors based on a predetermined phase of the hit + time slew.
 HcalPulseContainmentCorrection (const HcalPulseShape *shape, int num_samples, float fixedphase_ns, float max_fracerror)

Private Attributes

std::map< double, double > mCorFactors_

Detailed Description

Amplitude correction for pulse containment in time. Currently only for HPD pulse shape.

Date:
2011/09/08 13:23:03
Revision:
1.3
Author:
P. Dudero - Minnesota

Definition at line 16 of file HcalPulseContainmentCorrection.h.


Constructor & Destructor Documentation

HcalPulseContainmentCorrection::HcalPulseContainmentCorrection ( int  num_samples,
float  fixedphase_ns,
float  max_fracerror 
)

Generate energy correction factors based on a predetermined phase of the hit + time slew.

Definition at line 17 of file HcalPulseContainmentCorrection.cc.

References mCorFactors_.

{
  HcalPulseContainmentAlgo corFalgo(num_samples, (double)fixedphase_ns);

  // Generate lookup map for the correction function, never exceeding
  // a maximum fractional error for lookups.
  //
  //  static const double max_recofc = 5000.0f;
  genlkupmap<HcalPulseContainmentAlgo> (1.0, 5000.0f,  // generation domain
                                     max_fracerror,     // maximum fractional error
                                     1.0,   // min_xstep = minimum true fC increment
                                     corFalgo,
                                     mCorFactors_);     // return lookup map
}
HcalPulseContainmentCorrection::HcalPulseContainmentCorrection ( const HcalPulseShape shape,
int  num_samples,
float  fixedphase_ns,
float  max_fracerror 
)

Definition at line 35 of file HcalPulseContainmentCorrection.cc.

References mCorFactors_.

{
  HcalPulseContainmentAlgo corFalgo(shape, num_samples, (double)fixedphase_ns);
  genlkupmap<HcalPulseContainmentAlgo> (1.0, 5000.0f,  // generation domain
                                     max_fracerror,     // maximum fractional error
                                     1.0,   // min_xstep = minimum true fC increment
                                     corFalgo,
                                     mCorFactors_);     // return lookup map
}

Member Function Documentation

double HcalPulseContainmentCorrection::fractionContained ( double  fc_ampl) const [inline]

Definition at line 26 of file HcalPulseContainmentCorrection.h.

References getCorrection().

{ return 1.0/this->getCorrection(fc_ampl); }
double HcalPulseContainmentCorrection::getCorrection ( double  fc_ampl) const

Definition at line 49 of file HcalPulseContainmentCorrection.cc.

References gather_cfg::cout, mCorFactors_, and alignCSCRings::s.

Referenced by fractionContained(), HcalSimpleRecAlgoImpl::reco(), ZdcSimpleRecAlgoImpl::reco1(), ZdcSimpleRecAlgoImpl::reco2(), and HcalSimpleRecAlgo::reconstruct().

{
  double correction;

  std::map<double,double>::const_iterator fcupper,fclower;

  fcupper = mCorFactors_.upper_bound(fc_ampl);
  fclower = fcupper;
  fclower--;

  if (fcupper == mCorFactors_.end()) {
    correction = fclower->second;
  }
  else if (fcupper == mCorFactors_.begin()) {
    correction = fcupper->second;
  }
  else {
    if (fabs(fclower->first - fc_ampl) <
        fabs(fcupper->first - fc_ampl) )
      correction = fclower->second;
    else
      correction = fcupper->second;
  }

#if 0
  char s[80];
  sprintf (s, "%7.1f (%8.5f %8.5f) (%8.5f %8.5f) %8.5f",
           fc_ampl,
           fclower->first, fclower->second,
           fcupper->first, fcupper->second,
           correction);
  cout << s << endl;
#endif

  return correction;
}

Member Data Documentation

std::map<double,double> HcalPulseContainmentCorrection::mCorFactors_ [private]