CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | Friends
SiPixelDbItem Class Reference

#include <SiPixelDbItem.h>

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. More...
 
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 Member Functions

template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

PackedPixDbType packedVal_
 

Static Private Attributes

static Packing packing_
 

Friends

class boost::serialization::access
 
template<typename CondSerializationT , typename Enabled >
struct cond::serialization::access
 

Detailed Description

Definition at line 22 of file SiPixelDbItem.h.

Member Typedef Documentation

typedef uint32_t SiPixelDbItem::PackedPixDbType
private

Definition at line 24 of file SiPixelDbItem.h.

Constructor & Destructor Documentation

SiPixelDbItem::SiPixelDbItem ( )
inline

Definition at line 27 of file SiPixelDbItem.h.

References set().

27 : packedVal_(0) { set(2, 0, 1.0, 0); } // TO DO: is noise==2 in shifted rep or not???
void set(short noise, short pedestal, float gain, char status)
A fast version which sets all in one go.
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
SiPixelDbItem::~SiPixelDbItem ( )
inline

Definition at line 28 of file SiPixelDbItem.h.

28 {}

Member Function Documentation

float SiPixelDbItem::gain ( )
inline

Definition at line 31 of file SiPixelDbItem.h.

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

31 { return (packedVal_ >> packing_.gain_shift ) & packing_.gain_mask ; }
static Packing packing_
Definition: SiPixelDbItem.h:68
PackedPixDbType gain_mask
Definition: SiPixelDbItem.h:61
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
short SiPixelDbItem::noise ( )
inline
PackedPixDbType SiPixelDbItem::packedValue ( )
inline

Definition at line 33 of file SiPixelDbItem.h.

References packedVal_.

33 { return packedVal_; }
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
short SiPixelDbItem::pedestal ( )
inline
template<class Archive >
void SiPixelDbItem::serialize ( Archive &  ar,
const unsigned int  version 
)
private
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.

Referenced by SiPixelDbItem().

64 {
65  // Convert gain into a shifted-integer
66  int mult_factor = 1 << packing_.gain_shift; // TO DO: check usage here
67  unsigned short gInIntRep = int( gain * mult_factor );
68 
69  packedVal_ =
70  (noise << packing_.noise_shift) |
72  (gInIntRep << packing_.gain_shift) |
74 }
static Packing packing_
Definition: SiPixelDbItem.h:68
short pedestal()
Definition: SiPixelDbItem.h:30
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
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_.

43 {
44  // Convert gain into a shifted-integer
45  int mult_factor = 1 << packing_.gain_shift; // TO DO: check
46  unsigned short gInIntRep = int( g * mult_factor );
47 
48  PackedPixDbType newGain = (gInIntRep & packing_.gain_mask) << packing_.gain_shift;
50  packedVal_ = oldValue | newGain;
51 }
static Packing packing_
Definition: SiPixelDbItem.h:68
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
uint32_t PackedPixDbType
Definition: SiPixelDbItem.h:24
PackedPixDbType gain_mask
Definition: SiPixelDbItem.h:61
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
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_.

29 {
32  packedVal_ = oldValue | newNoise;
33 }
static Packing packing_
Definition: SiPixelDbItem.h:68
uint32_t PackedPixDbType
Definition: SiPixelDbItem.h:24
PackedPixDbType noise_mask
Definition: SiPixelDbItem.h:62
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
void SiPixelDbItem::setPackedVal ( PackedPixDbType  p)
inline

Definition at line 35 of file SiPixelDbItem.h.

References AlCaHLTBitMon_ParallelJobs::p, and packedVal_.

void SiPixelDbItem::setPedestal ( short  p)

Definition at line 35 of file SiPixelDbItem.cc.

References packedVal_, packing_, SiPixelDbItem::Packing::pedestal_mask, and SiPixelDbItem::Packing::pedestal_shift.

36 {
39  packedVal_ = oldValue | newPedestal;
40 }
static Packing packing_
Definition: SiPixelDbItem.h:68
uint32_t PackedPixDbType
Definition: SiPixelDbItem.h:24
PackedPixDbType pedestal_mask
Definition: SiPixelDbItem.h:63
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
void SiPixelDbItem::setStatus ( char  s)

Definition at line 53 of file SiPixelDbItem.cc.

References packedVal_, packing_, SiPixelDbItem::Packing::status_mask, and SiPixelDbItem::Packing::status_shift.

54 {
57  packedVal_ = oldValue | newStatus;
58 }
static Packing packing_
Definition: SiPixelDbItem.h:68
uint32_t PackedPixDbType
Definition: SiPixelDbItem.h:24
PackedPixDbType status_mask
Definition: SiPixelDbItem.h:60
PackedPixDbType packedVal_
Definition: SiPixelDbItem.h:46
char SiPixelDbItem::status ( )
inline

Friends And Related Function Documentation

friend class boost::serialization::access
friend

Definition at line 71 of file SiPixelDbItem.h.

template<typename CondSerializationT , typename Enabled >
friend struct cond::serialization::access
friend

Definition at line 71 of file SiPixelDbItem.h.

Member Data Documentation

PackedPixDbType SiPixelDbItem::packedVal_
private
SiPixelDbItem::Packing SiPixelDbItem::packing_
staticprivate

Definition at line 68 of file SiPixelDbItem.h.

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