CMS 3D CMS Logo

Public Member Functions | Private Attributes

CastorQIECoder Class Reference

#include <CastorQIECoder.h>

List of all members.

Public Member Functions

unsigned adc (const CastorQIEShape &fShape, float fCharge, unsigned fCapId) const
 fC + capid [0..3] -> ADC conversion
 CastorQIECoder (unsigned long fId=0)
float charge (const CastorQIEShape &fShape, unsigned fAdc, unsigned fCapId) const
 ADC [0..127] + capid [0..3] -> fC conversion.
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:
Panos Katsas (UoA) 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:
2009/03/26 18:03:15
Revision:
1.2

Modified for CASTOR by L. Mundim

Definition at line 20 of file CastorQIECoder.h.


Constructor & Destructor Documentation

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

Definition at line 22 of file CastorQIECoder.h.


Member Function Documentation

unsigned CastorQIECoder::adc ( const CastorQIEShape fShape,
float  fCharge,
unsigned  fCapId 
) const

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

Definition at line 24 of file CastorQIECoder.cc.

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

Referenced by CastorCoderDb::fC2adc_().

                                                                                                {
  // 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 CastorQIECoder::charge ( const CastorQIEShape fShape,
unsigned  fAdc,
unsigned  fCapId 
) const
float CastorQIECoder::offset ( unsigned  fCapId,
unsigned  fRange 
) const

Definition at line 45 of file CastorQIECoder.cc.

References getHLTprescales::index, and mOffset00.

Referenced by adc(), and charge().

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

Definition at line 42 of file CastorQIECoder.h.

References mId.

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

Definition at line 53 of file CastorQIECoder.cc.

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

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

Definition at line 62 of file CastorQIECoder.cc.

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

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

Definition at line 49 of file CastorQIECoder.cc.

References getHLTprescales::index, and mSlope00.

Referenced by adc(), and charge().

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

Member Data Documentation

uint32_t CastorQIECoder::mId [private]

Definition at line 45 of file CastorQIECoder.h.

Referenced by rawId().

float CastorQIECoder::mOffset00 [private]

Definition at line 46 of file CastorQIECoder.h.

Referenced by offset(), and setOffset().

float CastorQIECoder::mOffset01 [private]

Definition at line 47 of file CastorQIECoder.h.

float CastorQIECoder::mOffset02 [private]

Definition at line 48 of file CastorQIECoder.h.

float CastorQIECoder::mOffset03 [private]

Definition at line 49 of file CastorQIECoder.h.

float CastorQIECoder::mOffset10 [private]

Definition at line 50 of file CastorQIECoder.h.

float CastorQIECoder::mOffset11 [private]

Definition at line 51 of file CastorQIECoder.h.

float CastorQIECoder::mOffset12 [private]

Definition at line 52 of file CastorQIECoder.h.

float CastorQIECoder::mOffset13 [private]

Definition at line 53 of file CastorQIECoder.h.

float CastorQIECoder::mOffset20 [private]

Definition at line 54 of file CastorQIECoder.h.

float CastorQIECoder::mOffset21 [private]

Definition at line 55 of file CastorQIECoder.h.

float CastorQIECoder::mOffset22 [private]

Definition at line 56 of file CastorQIECoder.h.

float CastorQIECoder::mOffset23 [private]

Definition at line 57 of file CastorQIECoder.h.

float CastorQIECoder::mOffset30 [private]

Definition at line 58 of file CastorQIECoder.h.

float CastorQIECoder::mOffset31 [private]

Definition at line 59 of file CastorQIECoder.h.

float CastorQIECoder::mOffset32 [private]

Definition at line 60 of file CastorQIECoder.h.

float CastorQIECoder::mOffset33 [private]

Definition at line 61 of file CastorQIECoder.h.

float CastorQIECoder::mSlope00 [private]

Definition at line 62 of file CastorQIECoder.h.

Referenced by setSlope(), and slope().

float CastorQIECoder::mSlope01 [private]

Definition at line 63 of file CastorQIECoder.h.

float CastorQIECoder::mSlope02 [private]

Definition at line 64 of file CastorQIECoder.h.

float CastorQIECoder::mSlope03 [private]

Definition at line 65 of file CastorQIECoder.h.

float CastorQIECoder::mSlope10 [private]

Definition at line 66 of file CastorQIECoder.h.

float CastorQIECoder::mSlope11 [private]

Definition at line 67 of file CastorQIECoder.h.

float CastorQIECoder::mSlope12 [private]

Definition at line 68 of file CastorQIECoder.h.

float CastorQIECoder::mSlope13 [private]

Definition at line 69 of file CastorQIECoder.h.

float CastorQIECoder::mSlope20 [private]

Definition at line 70 of file CastorQIECoder.h.

float CastorQIECoder::mSlope21 [private]

Definition at line 71 of file CastorQIECoder.h.

float CastorQIECoder::mSlope22 [private]

Definition at line 72 of file CastorQIECoder.h.

float CastorQIECoder::mSlope23 [private]

Definition at line 73 of file CastorQIECoder.h.

float CastorQIECoder::mSlope30 [private]

Definition at line 74 of file CastorQIECoder.h.

float CastorQIECoder::mSlope31 [private]

Definition at line 75 of file CastorQIECoder.h.

float CastorQIECoder::mSlope32 [private]

Definition at line 76 of file CastorQIECoder.h.

float CastorQIECoder::mSlope33 [private]

Definition at line 77 of file CastorQIECoder.h.