Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:15

0001 /** 
0002 \class HcalQIEData
0003 \author Fedor Ratnikov (UMd)
0004 POOL object to store calibration mode QIE coder parameters for one channel
0005 $Id
0006 */
0007 
0008 #include <iostream>
0009 
0010 #include "CondFormats/HcalObjects/interface/HcalCalibrationQIECoder.h"
0011 
0012 float HcalCalibrationQIECoder::charge(unsigned fAdc) const {
0013   const float* data = base();
0014   if (fAdc >= 31)
0015     return (3 * data[31] - data[30]) / 2.;  // extrapolation
0016   return (data[fAdc] + data[fAdc + 1]) / 2;
0017 }
0018 
0019 unsigned HcalCalibrationQIECoder::adc(float fCharge) const {
0020   const float* data = base();
0021   unsigned adc = 1;
0022   for (; adc < 32; adc++) {
0023     if (fCharge < data[adc])
0024       return adc - 1;
0025   }
0026   return 31;  // overflow
0027 }
0028 
0029 float HcalCalibrationQIECoder::minCharge(unsigned fBin) const {
0030   const float* data = base();
0031   return fBin < 32 ? data[fBin] : data[31];
0032 }
0033 
0034 const float* HcalCalibrationQIECoder::minCharges() const {
0035   const float* data = base();
0036   return data;
0037 }
0038 
0039 void HcalCalibrationQIECoder::setMinCharge(unsigned fBin, float fValue) {
0040   float* data = base();
0041   if (fBin < 32)
0042     data[fBin] = fValue;
0043 }
0044 
0045 void HcalCalibrationQIECoder::setMinCharges(const float fValue[32]) {
0046   float* data = base();
0047   for (int i = 0; i < 32; i++)
0048     data[i] = fValue[i];
0049 }