CMS 3D CMS Logo

Public Member Functions | Private Attributes

HcalQIECoder Class Reference

#include <HcalQIECoder.h>

List of all members.

Public Member Functions

unsigned adc (const HcalQIEShape &fShape, float fCharge, unsigned fCapId) const
 fC + capid [0..3] -> ADC conversion
float charge (const HcalQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
 ADC [0..127] + capid [0..3] -> fC conversion.
 HcalQIECoder (unsigned long fId=0)
float offset (unsigned fCapId, unsigned fRange) const
uint32_t rawId () const
void setOffset (unsigned fCapId, unsigned fRange, float fValue)
void setSlope (unsigned fCapId, unsigned fRange, float fValue)
float slope (unsigned fCapId, unsigned fRange) const

Private Attributes

uint32_t mId
float mOffset00
float mOffset01
float mOffset02
float mOffset03
float mOffset10
float mOffset11
float mOffset12
float mOffset13
float mOffset20
float mOffset21
float mOffset22
float mOffset23
float mOffset30
float mOffset31
float mOffset32
float mOffset33
float mSlope00
float mSlope01
float mSlope02
float mSlope03
float mSlope10
float mSlope11
float mSlope12
float mSlope13
float mSlope20
float mSlope21
float mSlope22
float mSlope23
float mSlope30
float mSlope31
float mSlope32
float mSlope33

Detailed Description

Author:
Fedor Ratnikov (UMd) POOL object to store calibration mode QIE coder parameters for one channel $Id
Fedor Ratnikov (UMd) POOL object to store QIE coder parameters for one channel $Author: ratnikov
Date:
2008/03/05 10:38:03
Revision:
1.9

Definition at line 19 of file HcalQIECoder.h.


Constructor & Destructor Documentation

HcalQIECoder::HcalQIECoder ( unsigned long  fId = 0) [inline]

Definition at line 21 of file HcalQIECoder.h.

: mId (fId) {}

Member Function Documentation

unsigned HcalQIECoder::adc ( const HcalQIEShape fShape,
float  fCharge,
unsigned  fCapId 
) const

fC + capid [0..3] -> ADC conversion

Definition at line 27 of file HcalQIECoder.cc.

References newFWLiteAna::bin, HcalQIEShape::highEdge(), offset(), and slope().

Referenced by HcalDigiMonitor::beginRun(), HcalCoderDb::fC2adc_(), and HcalMonitorClient::PlotPedestalValues().

                                                                                            {
  // search for the range
  for (unsigned range = 0; range < 4; range++) {
    float qieCharge = fCharge * slope (fCapId, range) + offset (fCapId, range);
    unsigned minBin = 32*range;
    float qieChargeMax = fShape.highEdge (minBin + 31);
    if (qieCharge <= qieChargeMax) {
      for (unsigned bin = minBin; bin <= minBin + 31; bin++) {
        if (qieCharge < fShape.highEdge (bin)) {
          return bin;
        }
      }
      return minBin; // underflow
    }
    else if (range == 3) {
      return 127; // overflow
    }
  }
  return 0; //should never get here
}
float HcalQIECoder::charge ( const HcalQIEShape fShape,
unsigned  fAdc,
unsigned  fCapId 
) const
float HcalQIECoder::offset ( unsigned  fCapId,
unsigned  fRange 
) const

Definition at line 48 of file HcalQIECoder.cc.

References getHLTprescales::index, and mOffset00.

Referenced by adc(), HcalQIEDataCheck::analyze(), and charge().

                                                                  {
  return *((&mOffset00) + index (fRange, fCapId));
}
uint32_t HcalQIECoder::rawId ( ) const [inline]

Definition at line 35 of file HcalQIECoder.h.

References mId.

{return mId;}
void HcalQIECoder::setOffset ( unsigned  fCapId,
unsigned  fRange,
float  fValue 
)

Definition at line 56 of file HcalQIECoder.cc.

References benchmark_cfg::cerr, getHLTprescales::index, and mOffset00.

Referenced by HcalDbOnline::getObject().

                                                                            {
  if (fCapId < 4U && fRange < 4U) { // fCapId >= 0 and fRange >= 0, since fCapId and fRange are unsigned
    *((&mOffset00) + index (fRange, fCapId)) = fValue;
  }
  else {
    std::cerr << "HcalQIECoder::setOffset-> Wrong parameters capid/range: " << fCapId << '/' << fRange << std::endl;
  }
}
void HcalQIECoder::setSlope ( unsigned  fCapId,
unsigned  fRange,
float  fValue 
)

Definition at line 65 of file HcalQIECoder.cc.

References benchmark_cfg::cerr, getHLTprescales::index, and mSlope00.

Referenced by HcalDbOnline::getObject().

                                                                           {
  if (fCapId < 4U && fRange < 4U) { // fCapId >= 0 and fRange >= 0, since fCapId and fRange are unsigned
    *((&mSlope00) + index (fRange, fCapId)) = fValue;
  }
  else {
    std::cerr << "HcalQIECoder::setSlope-> Wrong parameters capid/range: " << fCapId << '/' << fRange << std::endl;
  }
}
float HcalQIECoder::slope ( unsigned  fCapId,
unsigned  fRange 
) const

Definition at line 52 of file HcalQIECoder.cc.

References getHLTprescales::index, and mSlope00.

Referenced by adc(), HcalQIEDataCheck::analyze(), and charge().

                                                                 {
  return *((&mSlope00) + index (fRange, fCapId));
}

Member Data Documentation

uint32_t HcalQIECoder::mId [private]

Definition at line 38 of file HcalQIECoder.h.

Referenced by rawId().

float HcalQIECoder::mOffset00 [private]

Definition at line 39 of file HcalQIECoder.h.

Referenced by offset(), and setOffset().

float HcalQIECoder::mOffset01 [private]

Definition at line 40 of file HcalQIECoder.h.

float HcalQIECoder::mOffset02 [private]

Definition at line 41 of file HcalQIECoder.h.

float HcalQIECoder::mOffset03 [private]

Definition at line 42 of file HcalQIECoder.h.

float HcalQIECoder::mOffset10 [private]

Definition at line 43 of file HcalQIECoder.h.

float HcalQIECoder::mOffset11 [private]

Definition at line 44 of file HcalQIECoder.h.

float HcalQIECoder::mOffset12 [private]

Definition at line 45 of file HcalQIECoder.h.

float HcalQIECoder::mOffset13 [private]

Definition at line 46 of file HcalQIECoder.h.

float HcalQIECoder::mOffset20 [private]

Definition at line 47 of file HcalQIECoder.h.

float HcalQIECoder::mOffset21 [private]

Definition at line 48 of file HcalQIECoder.h.

float HcalQIECoder::mOffset22 [private]

Definition at line 49 of file HcalQIECoder.h.

float HcalQIECoder::mOffset23 [private]

Definition at line 50 of file HcalQIECoder.h.

float HcalQIECoder::mOffset30 [private]

Definition at line 51 of file HcalQIECoder.h.

float HcalQIECoder::mOffset31 [private]

Definition at line 52 of file HcalQIECoder.h.

float HcalQIECoder::mOffset32 [private]

Definition at line 53 of file HcalQIECoder.h.

float HcalQIECoder::mOffset33 [private]

Definition at line 54 of file HcalQIECoder.h.

float HcalQIECoder::mSlope00 [private]

Definition at line 55 of file HcalQIECoder.h.

Referenced by setSlope(), and slope().

float HcalQIECoder::mSlope01 [private]

Definition at line 56 of file HcalQIECoder.h.

float HcalQIECoder::mSlope02 [private]

Definition at line 57 of file HcalQIECoder.h.

float HcalQIECoder::mSlope03 [private]

Definition at line 58 of file HcalQIECoder.h.

float HcalQIECoder::mSlope10 [private]

Definition at line 59 of file HcalQIECoder.h.

float HcalQIECoder::mSlope11 [private]

Definition at line 60 of file HcalQIECoder.h.

float HcalQIECoder::mSlope12 [private]

Definition at line 61 of file HcalQIECoder.h.

float HcalQIECoder::mSlope13 [private]

Definition at line 62 of file HcalQIECoder.h.

float HcalQIECoder::mSlope20 [private]

Definition at line 63 of file HcalQIECoder.h.

float HcalQIECoder::mSlope21 [private]

Definition at line 64 of file HcalQIECoder.h.

float HcalQIECoder::mSlope22 [private]

Definition at line 65 of file HcalQIECoder.h.

float HcalQIECoder::mSlope23 [private]

Definition at line 66 of file HcalQIECoder.h.

float HcalQIECoder::mSlope30 [private]

Definition at line 67 of file HcalQIECoder.h.

float HcalQIECoder::mSlope31 [private]

Definition at line 68 of file HcalQIECoder.h.

float HcalQIECoder::mSlope32 [private]

Definition at line 69 of file HcalQIECoder.h.

float HcalQIECoder::mSlope33 [private]

Definition at line 70 of file HcalQIECoder.h.