CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalChannelStatus.h
Go to the documentation of this file.
1 #ifndef HcalChannelStatus_h
2 #define HcalChannelStatus_h
3 
4 /*
5 \class HcalChannelStatus
6 \author Radek Ofierzynski
7 contains one channel status and corresponding DetId
8 */
9 
11 
12 #include <boost/cstdint.hpp>
13 
14 
16 {
17  public:
18  // contains the defined bits for easy access, see https://twiki.cern.ch/twiki/bin/view/CMS/HcalDataValidationWorkflow
19  enum StatusBit {
20  HcalCellOff=0, // 1=Hcal cell is off
21  HcalCellMask=1, // 1=Hcal cell is masked/to be masked at RecHit Level
22  // Quality Bits
23  HcalCellDead=5, // 1=Hcal cell is dead (from DQM algo)
24  HcalCellHot=6, // 1=Hcal cell is hot (from DQM algo)
25  HcalCellStabErr=7, // 1=Hcal cell has stability error
26  HcalCellTimErr=8, // 1=Hcal cell has timing error
27  HcalCellExcludeFromHBHENoiseSummary = 9, //1=cell is completely excluded from all HBHENoiseSummary computations
28  HcalCellExcludeFromHBHENoiseSummaryR45 = 10, //1=cell's rechit is excluded when calculating the TS4TS5 ratio only in the HBHE Noise Summary
29  HcalBadLaserSignal = 11, //1 = channel does not receive good laser calibration signal
30  // Trigger Bits
31  HcalCellTrigMask=15, // 1=cell is masked from the Trigger
32  // CaloTower Bits
33  HcalCellCaloTowerMask=18, // 1=cell is always excluded from the CaloTower, regardless of other bit settings.
34  HcalCellCaloTowerProb=19 // 1=cell is counted as problematic within the tower.
35  };
36 
38  HcalChannelStatus(unsigned long fid, uint32_t status): mId(fid), mStatus(status) {}
39 
40  // void setDetId(unsigned long fid) {mId = fid;}
41  void setValue(uint32_t value) {mStatus = value;}
42 
43  // for the following, one can use unsigned int values or HcalChannelStatus::StatusBit values
44  // e.g. 5 or HcalChannelStatus::HcalCellDead
45  void setBit(unsigned int bitnumber)
46  {
47  uint32_t statadd = 0x1<<(bitnumber);
48  mStatus = mStatus|statadd;
49  }
50  void unsetBit(unsigned int bitnumber)
51  {
52  uint32_t statadd = 0x1<<(bitnumber);
53  statadd = ~statadd;
54  mStatus = mStatus&statadd;
55  }
56 
57  bool isBitSet(unsigned int bitnumber) const
58  {
59  uint32_t statadd = 0x1<<(bitnumber);
60  return (mStatus&statadd)?(true):(false);
61  }
62 
63  uint32_t rawId() const {return mId;}
64 
65  uint32_t getValue() const {return mStatus;}
66 
67  private:
68  uint32_t mId;
69  uint32_t mStatus;
70 
71 
73 };
74 #endif
HcalChannelStatus(unsigned long fid, uint32_t status)
void unsetBit(unsigned int bitnumber)
void setBit(unsigned int bitnumber)
uint32_t rawId() const
#define COND_SERIALIZABLE
Definition: Serializable.h:38
bool isBitSet(unsigned int bitnumber) const
void setValue(uint32_t value)
uint32_t getValue() const
tuple status
Definition: mps_update.py:57