CMS 3D CMS Logo

Public Member Functions | Public Attributes

SiPixelRecHitQuality::Packing Class Reference

#include <SiPixelRecHitQuality.h>

List of all members.

Public Member Functions

bool hasBadPixels (QualWordType qualWord) const
bool hasFilledProb (QualWordType qualWord) const
bool isOnEdge (QualWordType qualWord) const
 Packing ()
float probabilityQ (QualWordType qualWord) const
float probabilityX (QualWordType qualWord) const
float probabilityXY (QualWordType qualWord) const
float probabilityY (QualWordType qualWord) const
int qBin (QualWordType qualWord) const
void setHasBadPixels (bool flag, QualWordType &qualWord)
void setHasFilledProb (bool flag, QualWordType &qualWord)
void setIsOnEdge (bool flag, QualWordType &qualWord)
void setProbabilityQ (float prob, QualWordType &qualWord)
void setProbabilityXY (float prob, QualWordType &qualWord)
void setQBin (int qbin, QualWordType &qualWord)
void setSpansTwoROCs (bool flag, QualWordType &qualWord)
bool spansTwoROCs (QualWordType qualWord) const

Public Attributes

QualWordType bad_mask
int bad_shift
char bad_width
QualWordType edge_mask
int edge_shift
char edge_width
QualWordType hasFilledProb_mask
int hasFilledProb_shift
char hasFilledProb_width
double probX_1_over_log_units
QualWordType probX_mask
int probX_shift
float probX_units
char probX_width
double probY_1_over_log_units
QualWordType probY_mask
int probY_shift
float probY_units
char probY_width
QualWordType qBin_mask
int qBin_shift
char qBin_width
char spare_width
QualWordType twoROC_mask
int twoROC_shift
char twoROC_width

Detailed Description

Definition at line 23 of file SiPixelRecHitQuality.h.


Constructor & Destructor Documentation

SiPixelRecHitQuality::Packing::Packing ( )

Definition at line 5 of file SiPixelRecHitQuality.cc.

References bad_mask, bad_shift, bad_width, edge_mask, edge_shift, edge_width, Exception, hasFilledProb_mask, hasFilledProb_shift, hasFilledProb_width, funct::log(), probX_1_over_log_units, probX_mask, probX_shift, probX_units, probX_width, probY_1_over_log_units, probY_mask, probY_shift, probY_units, probY_width, qBin_mask, qBin_shift, qBin_width, spare_width, twoROC_mask, twoROC_shift, and twoROC_width.

{
  // Constructor: pre-computes masks and shifts from field widths
  // X is now XY
  // Y is now Q
  probX_width         = 14;
  probY_width         = 8;
  qBin_width          = 3;
  edge_width          = 1;
  bad_width           = 1;
  twoROC_width        = 1;
  hasFilledProb_width = 1;
  spare_width         = 3;
  
  if ( probX_width + probY_width  + qBin_width          + edge_width  +
       bad_width   + twoROC_width + hasFilledProb_width + spare_width
       != 32 ) {
    throw cms::Exception("SiPixelRecHitQuality::Packing: ")
      << "\nERROR: The allocated bits for the quality word to not sum to 32."
      << "\n\n";
  }
  
  probX_units    = 1.0018;
  probY_units    = 1.0461;
  probX_1_over_log_units = 1.0 / log( probX_units );
  probY_1_over_log_units = 1.0 / log( probY_units );
  
  // Fields are counted from right to left!
  probX_shift          = 0;
  probY_shift          = probX_shift + probX_width;
  qBin_shift           = probY_shift + probY_width; 
  edge_shift           = qBin_shift + qBin_width; 
  bad_shift            = edge_shift + edge_width; 
  twoROC_shift         = bad_shift + bad_width;
  hasFilledProb_shift  = twoROC_shift + twoROC_width;
  
  // Ensure the complement of the correct 
  // number of bits:
  QualWordType zero32 = 0;  // 32-bit wide set of 0's
  
  probX_mask          = ~(~zero32 << probX_width);
  probY_mask          = ~(~zero32 << probY_width);
  qBin_mask           = ~(~zero32 << qBin_width);
  edge_mask           = ~(~zero32 << edge_width);
  bad_mask            = ~(~zero32 << bad_width);
  twoROC_mask         = ~(~zero32 << twoROC_width);
  hasFilledProb_mask  = ~(~zero32 << hasFilledProb_width);
}

Member Function Documentation

bool SiPixelRecHitQuality::Packing::hasBadPixels ( QualWordType  qualWord) const [inline]

Definition at line 114 of file SiPixelRecHitQuality.h.

References bad_mask, and bad_shift.

                                                                {
      return (qualWord >> bad_shift) & bad_mask;
    }
bool SiPixelRecHitQuality::Packing::hasFilledProb ( QualWordType  qualWord) const [inline]

Definition at line 122 of file SiPixelRecHitQuality.h.

References hasFilledProb_mask, and hasFilledProb_shift.

                                                             {
      return (qualWord >> hasFilledProb_shift) & hasFilledProb_mask;
    }
bool SiPixelRecHitQuality::Packing::isOnEdge ( QualWordType  qualWord) const [inline]

Definition at line 110 of file SiPixelRecHitQuality.h.

References edge_mask, and edge_shift.

                                                            {
      return (qualWord >> edge_shift) & edge_mask;
    }
float SiPixelRecHitQuality::Packing::probabilityQ ( QualWordType  qualWord) const [inline]

Definition at line 88 of file SiPixelRecHitQuality.h.

References funct::pow(), probY_mask, probY_shift, and probY_units.

                                                                 {
      int raw = (qualWord >> probY_shift) & probY_mask;
      if(raw<0 || raw >255) {
        edm::LogWarning("OutOfBounds") << "Probability Q outside the bounds of the quality word. Defaulting to Prob=0. Raw = " << raw << " QualityWord = " << qualWord;
        raw = 255;
      }
      float prob = (raw==255) ? 0 : pow( probY_units, (float)( -raw) );
      // cout << "Bits = " << raw << " --> Prob = " << prob << endl;
      return prob;
    }
float SiPixelRecHitQuality::Packing::probabilityX ( QualWordType  qualWord) const [inline]

Definition at line 69 of file SiPixelRecHitQuality.h.

                                                             {
      edm::LogWarning("ObsoleteVariable") << "Since 39x, probabilityX and probabilityY have been replaced by probabilityXY and probabilityQ";
      return -10;
    }
float SiPixelRecHitQuality::Packing::probabilityXY ( QualWordType  qualWord) const [inline]

Definition at line 78 of file SiPixelRecHitQuality.h.

References funct::pow(), probX_mask, probX_shift, and probX_units.

                                                                  {
      int raw = (qualWord >> probX_shift) & probX_mask;
      if(raw<0 || raw >16383) {
        edm::LogWarning("OutOfBounds") << "Probability XY outside the bounds of the quality word. Defaulting to Prob=0. Raw = " << raw << " QualityWord = " << qualWord;
        raw = 16383;
      }
      float prob = (raw==16383) ? 0: pow( probX_units, (float)( -raw) );
      // cout << "Bits = " << raw << " --> Prob = " << prob << endl;
      return prob;
    }
float SiPixelRecHitQuality::Packing::probabilityY ( QualWordType  qualWord) const [inline]

Definition at line 73 of file SiPixelRecHitQuality.h.

                                                             {
      edm::LogWarning("ObsoleteVariable") << "Since 39x, probabilityX and probabilityY have been replaced by probabilityXY and probabilityQ";
      return -10;
    }
int SiPixelRecHitQuality::Packing::qBin ( QualWordType  qualWord) const [inline]

Definition at line 100 of file SiPixelRecHitQuality.h.

References qBin_mask, and qBin_shift.

                                                       {
      int qbin = (qualWord >> qBin_shift) & qBin_mask;
      if(qbin<0 || qbin >7) {
        edm::LogWarning("OutOfBounds") << "Qbin outside the bounds of the quality word. Defaulting to Qbin=0. Qbin = " << qbin << " QualityWord = " << qualWord;
        qbin=0;
      }
      return qbin;
    }
void SiPixelRecHitQuality::Packing::setHasBadPixels ( bool  flag,
QualWordType qualWord 
) [inline]

Definition at line 163 of file SiPixelRecHitQuality.h.

References bad_mask, and bad_shift.

                                                                      {
      qualWord |= ((flag & bad_mask) << bad_shift);
    }
void SiPixelRecHitQuality::Packing::setHasFilledProb ( bool  flag,
QualWordType qualWord 
) [inline]

Definition at line 169 of file SiPixelRecHitQuality.h.

References hasFilledProb_mask, and hasFilledProb_shift.

                                                                       {
      qualWord |= ((flag & hasFilledProb_mask) << hasFilledProb_shift);
    }
void SiPixelRecHitQuality::Packing::setIsOnEdge ( bool  flag,
QualWordType qualWord 
) [inline]

Definition at line 160 of file SiPixelRecHitQuality.h.

References edge_mask, and edge_shift.

                                                                  {
      qualWord |= ((flag & edge_mask) << edge_shift);
    }
void SiPixelRecHitQuality::Packing::setProbabilityQ ( float  prob,
QualWordType qualWord 
) [inline]

Definition at line 140 of file SiPixelRecHitQuality.h.

References cond::draw(), funct::log(), probY_1_over_log_units, probY_mask, and probY_shift.

                                                                       {
      if(prob<0 || prob>1) {
        edm::LogWarning("OutOfBounds") << "Prob Q outside the bounds of the quality word. Defaulting to Prob=0. Prob = " << prob << " QualityWord = " << qualWord;
        prob=0;
      }
      double draw = (prob<=1E-5) ? 255 : - log( (double) prob ) * probY_1_over_log_units;
      unsigned int raw = (int) (draw+0.5);   // convert to integer, round correctly
      // cout << "Prob = " << prob << " --> Bits = " << raw << endl;
      qualWord |= ((raw & probY_mask) << probY_shift);
    }
void SiPixelRecHitQuality::Packing::setProbabilityXY ( float  prob,
QualWordType qualWord 
) [inline]

Definition at line 130 of file SiPixelRecHitQuality.h.

References cond::draw(), funct::log(), probX_1_over_log_units, probX_mask, and probX_shift.

                                                                        {
      if(prob<0 || prob>1) {
        edm::LogWarning("OutOfBounds") << "Prob XY outside the bounds of the quality word. Defaulting to Prob=0. Prob = " << prob << " QualityWord = " << qualWord;
        prob=0;
      }
      double draw = (prob<=1.6E-13) ? 16383 : - log( (double) prob ) * probX_1_over_log_units;
      unsigned int raw = (int) (draw+0.5);   // convert to integer, round correctly
      // cout << "Prob = " << prob << " --> Bits = " << raw << endl;
      qualWord |= ((raw & probX_mask) << probX_shift);
    }
void SiPixelRecHitQuality::Packing::setQBin ( int  qbin,
QualWordType qualWord 
) [inline]

Definition at line 152 of file SiPixelRecHitQuality.h.

References qBin_mask, and qBin_shift.

                                                             {
      if(qbin<0 || qbin >7) {
        edm::LogWarning("OutOfBounds") << "Qbin outside the bounds of the quality word. Defaulting to Qbin=0. Qbin = " << qbin << " QualityWord = " << qualWord;
        qbin=0;
      }
      qualWord |= ((qbin & qBin_mask) << qBin_shift);
    }
void SiPixelRecHitQuality::Packing::setSpansTwoROCs ( bool  flag,
QualWordType qualWord 
) [inline]

Definition at line 166 of file SiPixelRecHitQuality.h.

References twoROC_mask, and twoROC_shift.

                                                                      {
      qualWord |= ((flag & twoROC_mask) << twoROC_shift);
    }
bool SiPixelRecHitQuality::Packing::spansTwoROCs ( QualWordType  qualWord) const [inline]

Definition at line 118 of file SiPixelRecHitQuality.h.

References twoROC_mask, and twoROC_shift.

                                                                {
      return (qualWord >> twoROC_shift) & twoROC_mask;
    }

Member Data Documentation

Definition at line 50 of file SiPixelRecHitQuality.h.

Referenced by hasBadPixels(), Packing(), and setHasBadPixels().

Definition at line 51 of file SiPixelRecHitQuality.h.

Referenced by hasBadPixels(), Packing(), and setHasBadPixels().

Definition at line 52 of file SiPixelRecHitQuality.h.

Referenced by Packing().

Definition at line 46 of file SiPixelRecHitQuality.h.

Referenced by isOnEdge(), Packing(), and setIsOnEdge().

Definition at line 47 of file SiPixelRecHitQuality.h.

Referenced by isOnEdge(), Packing(), and setIsOnEdge().

Definition at line 48 of file SiPixelRecHitQuality.h.

Referenced by Packing().

Definition at line 58 of file SiPixelRecHitQuality.h.

Referenced by hasFilledProb(), Packing(), and setHasFilledProb().

Definition at line 59 of file SiPixelRecHitQuality.h.

Referenced by hasFilledProb(), Packing(), and setHasFilledProb().

Definition at line 60 of file SiPixelRecHitQuality.h.

Referenced by Packing().

Definition at line 33 of file SiPixelRecHitQuality.h.

Referenced by Packing(), and setProbabilityXY().

Definition at line 30 of file SiPixelRecHitQuality.h.

Referenced by Packing(), probabilityXY(), and setProbabilityXY().

Definition at line 31 of file SiPixelRecHitQuality.h.

Referenced by Packing(), probabilityXY(), and setProbabilityXY().

Definition at line 32 of file SiPixelRecHitQuality.h.

Referenced by Packing(), and probabilityXY().

Definition at line 34 of file SiPixelRecHitQuality.h.

Referenced by Packing().

Definition at line 39 of file SiPixelRecHitQuality.h.

Referenced by Packing(), and setProbabilityQ().

Definition at line 36 of file SiPixelRecHitQuality.h.

Referenced by Packing(), probabilityQ(), and setProbabilityQ().

Definition at line 37 of file SiPixelRecHitQuality.h.

Referenced by Packing(), probabilityQ(), and setProbabilityQ().

Definition at line 38 of file SiPixelRecHitQuality.h.

Referenced by Packing(), and probabilityQ().

Definition at line 40 of file SiPixelRecHitQuality.h.

Referenced by Packing().

Definition at line 42 of file SiPixelRecHitQuality.h.

Referenced by Packing(), qBin(), and setQBin().

Definition at line 43 of file SiPixelRecHitQuality.h.

Referenced by Packing(), qBin(), and setQBin().

Definition at line 44 of file SiPixelRecHitQuality.h.

Referenced by Packing().

Definition at line 62 of file SiPixelRecHitQuality.h.

Referenced by Packing().

Definition at line 54 of file SiPixelRecHitQuality.h.

Referenced by Packing(), setSpansTwoROCs(), and spansTwoROCs().

Definition at line 55 of file SiPixelRecHitQuality.h.

Referenced by Packing(), setSpansTwoROCs(), and spansTwoROCs().

Definition at line 56 of file SiPixelRecHitQuality.h.

Referenced by Packing().