CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
CastorQIEShape Class Reference

#include <CastorQIEShape.h>

Public Member Functions

 CastorQIEShape ()
 
float center (unsigned fAdc) const
 
float highEdge (unsigned fAdc) const
 
unsigned local (unsigned fAdc) const
 
float lowEdge (unsigned fAdc) const
 
unsigned range (unsigned fAdc) const
 
bool setLowEdges (const float fValue[32])
 
 ~CastorQIEShape ()
 

Private Member Functions

void expand ()
 
bool setLowEdge (float fValue, unsigned fAdc)
 

Private Attributes

float mValues [129]
 

Detailed Description

Definition at line 14 of file CastorQIEShape.h.

Constructor & Destructor Documentation

◆ CastorQIEShape()

CastorQIEShape::CastorQIEShape ( )

Definition at line 13 of file CastorQIEShape.cc.

References binMin, expand(), mps_fire::i, and mValues.

13  {
14  for (int i = 0; i < 32; i++)
15  mValues[i] = binMin[i];
16  expand();
17 }
float mValues[129]
const float binMin[32]

◆ ~CastorQIEShape()

CastorQIEShape::~CastorQIEShape ( )

Definition at line 19 of file CastorQIEShape.cc.

19 {}

Member Function Documentation

◆ center()

float CastorQIEShape::center ( unsigned  fAdc) const

Definition at line 40 of file CastorQIEShape.cc.

References mValues.

Referenced by CastorQIECoder::charge().

40  {
41  if (fAdc < 128) {
42  if (fAdc % 32 == 31)
43  return 0.5 * (3 * mValues[fAdc] - mValues[fAdc - 1]); // extrapolate
44  else
45  return 0.5 * (mValues[fAdc] + mValues[fAdc + 1]); // interpolate
46  }
47  return 0.;
48 }
float mValues[129]

◆ expand()

void CastorQIEShape::expand ( )
private

Definition at line 21 of file CastorQIEShape.cc.

References mps_fire::i, mValues, range(), and L1EGammaClusterEmuProducer_cfi::scale.

Referenced by CastorQIEShape(), and setLowEdges().

21  {
22  int scale = 1;
23  for (unsigned range = 1; range < 4; range++) {
24  scale = scale * 5;
25  unsigned index = range * 32;
26  mValues[index] = mValues[index - 2]; // link to previous range
27  for (unsigned i = 1; i < 32; i++) {
28  mValues[index + i] = mValues[index + i - 1] + scale * (mValues[i] - mValues[i - 1]);
29  }
30  }
31  mValues[128] = 2 * mValues[127] - mValues[126]; // extrapolate
32 }
unsigned range(unsigned fAdc) const
float mValues[129]

◆ highEdge()

float CastorQIEShape::highEdge ( unsigned  fAdc) const

Definition at line 50 of file CastorQIEShape.cc.

References mValues.

Referenced by CastorQIECoder::adc().

50  {
51  if (fAdc >= 128)
52  return 0;
53  if (fAdc == 127)
54  return mValues[fAdc + 1];
55  if (fAdc % 32 == 31)
56  return mValues[fAdc + 3];
57  return mValues[fAdc + 1];
58 }
float mValues[129]

◆ local()

unsigned CastorQIEShape::local ( unsigned  fAdc) const
inline

Definition at line 23 of file CastorQIEShape.h.

23 { return fAdc & 0x1f; }

◆ lowEdge()

float CastorQIEShape::lowEdge ( unsigned  fAdc) const

Definition at line 34 of file CastorQIEShape.cc.

References mValues.

Referenced by CastorDbASCIIIO::dumpObject().

34  {
35  if (fAdc < 128)
36  return mValues[fAdc];
37  return 0.;
38 }
float mValues[129]

◆ range()

unsigned CastorQIEShape::range ( unsigned  fAdc) const
inline

Definition at line 22 of file CastorQIEShape.h.

Referenced by CastorQIECoder::charge(), and expand().

22 { return (fAdc >> 5) & 0x3; }

◆ setLowEdge()

bool CastorQIEShape::setLowEdge ( float  fValue,
unsigned  fAdc 
)
private

Definition at line 60 of file CastorQIEShape.cc.

References mValues.

Referenced by setLowEdges().

60  {
61  if (fAdc >= 32)
62  return false;
63  mValues[fAdc] = fValue;
64  return true;
65 }
float mValues[129]

◆ setLowEdges()

bool CastorQIEShape::setLowEdges ( const float  fValue[32])

Definition at line 67 of file CastorQIEShape.cc.

References gpuClustering::adc, expand(), mps_fire::result, and setLowEdge().

67  {
68  bool result = true;
69  for (int adc = 0; adc < 32; adc++)
70  result = result && setLowEdge(fValue[adc], adc);
71  expand();
72  return result;
73 }
bool setLowEdge(float fValue, unsigned fAdc)
uint16_t *__restrict__ uint16_t const *__restrict__ adc

Member Data Documentation

◆ mValues

float CastorQIEShape::mValues[129]
private

Definition at line 29 of file CastorQIEShape.h.

Referenced by CastorQIEShape(), center(), expand(), highEdge(), lowEdge(), and setLowEdge().