CMS 3D CMS Logo

Classes | Public Member Functions | Private Types | Private Attributes | Static Private Attributes

SiPixelDbItem Class Reference

#include <SiPixelDbItem.h>

List of all members.

Classes

class  Packing
 Pack the pixel information to use less memory. More...

Public Member Functions

float gain ()
short noise ()
PackedPixDbType packedValue ()
short pedestal ()
void set (short noise, short pedestal, float gain, char status)
 A fast version which sets all in one go.
void setGain (float g)
void setNoise (short n)
void setPackedVal (PackedPixDbType p)
void setPedestal (short p)
void setStatus (char s)
 SiPixelDbItem ()
char status ()
 ~SiPixelDbItem ()

Private Types

typedef uint32_t PackedPixDbType

Private Attributes

PackedPixDbType packedVal_

Static Private Attributes

static Packing packing_

Detailed Description

Definition at line 20 of file SiPixelDbItem.h.


Member Typedef Documentation

typedef uint32_t SiPixelDbItem::PackedPixDbType [private]

Definition at line 22 of file SiPixelDbItem.h.


Constructor & Destructor Documentation

SiPixelDbItem::SiPixelDbItem ( ) [inline]

Definition at line 25 of file SiPixelDbItem.h.

: packedVal_(0) { set(2, 0, 1.0, 0); }  // TO DO: is noise==2 in shifted rep or not???
SiPixelDbItem::~SiPixelDbItem ( ) [inline]

Definition at line 26 of file SiPixelDbItem.h.

{}

Member Function Documentation

float SiPixelDbItem::gain ( ) [inline]
short SiPixelDbItem::noise ( ) [inline]
PackedPixDbType SiPixelDbItem::packedValue ( ) [inline]

Definition at line 31 of file SiPixelDbItem.h.

References packedVal_.

{ return packedVal_; }
short SiPixelDbItem::pedestal ( ) [inline]
void SiPixelDbItem::set ( short  noise,
short  pedestal,
float  gain,
char  status 
)

A fast version which sets all in one go.

Definition at line 63 of file SiPixelDbItem.cc.

References SiPixelDbItem::Packing::gain_shift, SiPixelDbItem::Packing::noise_shift, packedVal_, packing_, SiPixelDbItem::Packing::pedestal_shift, and SiPixelDbItem::Packing::status_shift.

{
  // Convert gain into a shifted-integer
  int mult_factor = 1 << packing_.gain_shift;   // TO DO: check usage here
  unsigned short gInIntRep = int( gain * mult_factor );

  packedVal_ = 
    (noise     << packing_.noise_shift)     | 
    (pedestal  << packing_.pedestal_shift)  | 
    (gInIntRep << packing_.gain_shift)      |
    (status    << packing_.status_shift);
}
void SiPixelDbItem::setGain ( float  g)

Definition at line 42 of file SiPixelDbItem.cc.

References SiPixelDbItem::Packing::gain_mask, SiPixelDbItem::Packing::gain_shift, packedVal_, and packing_.

{
  // Convert gain into a shifted-integer
  int mult_factor = 1 << packing_.gain_shift;   // TO DO: check
  unsigned short gInIntRep = int( g * mult_factor );

  PackedPixDbType newGain = (gInIntRep & packing_.gain_mask) << packing_.gain_shift;
  PackedPixDbType oldValue = packedVal_ & ( ~(packing_.gain_mask << packing_.gain_shift) );
  packedVal_ = oldValue | newGain;
}
void SiPixelDbItem::setNoise ( short  n)

The logic of individual setters: First, we put the new value into newXXX, which is a 32-bit word which has the new value at the bits where it should go, and 0's everywhere else. To make it, we:

  • assign the value
  • AND with a mask -- so all others are zeroes
  • shift up by noise_shift bits

Next, we prepare the oldValue with a whole where newXXX needs to go. ~(mask << shift) has 1's everywhere except where the new value will go, so AND-ing packedVal_ with it creates a `whole' for the new value.

Finally, the new value is an OR of the two (since the wholes have 0's)

Example: 00 03 c3 02 -- old, new one must blow c3 away, so we AND with ff ff 00 ff, and get 00 03 00 02. The new number is now positioned to be ff ff a2 ff, and then we AND these two and get 00 03 a2 02. We have replaced c3 with a2.

Definition at line 28 of file SiPixelDbItem.cc.

References SiPixelDbItem::Packing::noise_mask, SiPixelDbItem::Packing::noise_shift, packedVal_, and packing_.

void SiPixelDbItem::setPackedVal ( PackedPixDbType  p) [inline]

Definition at line 33 of file SiPixelDbItem.h.

References AlCaHLTBitMon_ParallelJobs::p, and packedVal_.

{ packedVal_ = p; }
void SiPixelDbItem::setPedestal ( short  p)
void SiPixelDbItem::setStatus ( char  s)
char SiPixelDbItem::status ( ) [inline]

Member Data Documentation

Definition at line 66 of file SiPixelDbItem.h.

Referenced by gain(), noise(), pedestal(), set(), setGain(), setNoise(), setPedestal(), setStatus(), and status().