CMS 3D CMS Logo

EcalErrorDictionary.h
Go to the documentation of this file.
1 #ifndef CondFormats_EcalObjects_EcalErrorDictionary_H
2 #define CondFormats_EcalObjects_EcalErrorDictionary_H
3 
11 #include <boost/cstdint.hpp>
12 #include <iostream>
13 #include <vector>
14 
16  public:
17  struct errorDef_t {
19  char shortDesc[64];
20  char longDesc[128];
21  };
22 
24  {
25  return getMask(shortDesc) & bitcode;
26  }
27 
29  {
30  for (unsigned int i=0; i<DICTSIZE; i++) {
31  if (getDef(i).shortDesc == shortDesc) {
32  return getDef(i).bitmask;
33  }
34  }
35  return 0;
36  }
37 
38  static void printErrors(uint64_t bitcode)
39  {
40  for (unsigned int i=0; i<DICTSIZE; i++) {
41  if (bitcode & getDef(i).bitmask) {
42  }
43  }
44  }
45 
46  static void getErrors(std::vector<errorDef_t>& errorVec, uint64_t bitcode)
47  {
48  errorVec.clear();
49  for (unsigned int i=0; i<DICTSIZE; i++) {
50  if (bitcode & getDef(i).bitmask) {
51  errorVec.push_back(getDef(i));
52  }
53  }
54  }
55 
56  static void getDictionary(std::vector<errorDef_t> &dict)
57  {
58  dict.clear();
59  for (unsigned int i=0; i<DICTSIZE; i++) {
60  dict.push_back(getDef(i));
61  }
62  }
63 
64  private:
65  EcalErrorDictionary() {}; // Hidden to force static use
66  ~EcalErrorDictionary() {}; // Hidden to force static use
67 
68  const static unsigned int DICTSIZE = 55;
69 
70  static errorDef_t getDef(unsigned int i) {
71  const static errorDef_t ERRORDICT[DICTSIZE] =
72  {
73 
74  { ((uint64_t)1<<0), "CH_ID_WARNING" , "Channel id warning"},
75  { ((uint64_t)1<<1), "CH_GAIN_ZERO_WARNING" , "Channel gain zero warning"},
76  { ((uint64_t)1<<2), "CH_GAIN_SWITCH_WARNING" , "Channel gain switch warning"},
77  { ((uint64_t)1<<3), "CH_ID_ERROR" , "Channel id error"},
78  { ((uint64_t)1<<4), "CH_GAIN_ZERO_ERROR" , "Channel gain zero error"},
79  { ((uint64_t)1<<5), "CH_GAIN_SWITCH_ERROR" , "Channel gain switch error"},
80 
81  { ((uint64_t)1<<6), "TT_ID_WARNING" , "TT id warning"},
82  { ((uint64_t)1<<7), "TT_SIZE_WARNING" , "TT size warning"},
83  { ((uint64_t)1<<8), "TT_LV1_WARNING" , "TT LV1 warning"},
84  { ((uint64_t)1<<9), "TT_BUNCH_X_WARNING" , "TT bunch-x warning"},
85  { ((uint64_t)1<<10), "TT_ID_ERROR" , "TT id error"},
86  { ((uint64_t)1<<11), "TT_SIZE_ERROR" , "TT size error"},
87  { ((uint64_t)1<<12), "TT_LV1_ERROR" , "TT LV1 error"},
88  { ((uint64_t)1<<13), "TT_BUNCH_X_ERROR" , "TT bunch-x error"},
89 
90  { ((uint64_t)1<<16) , "PEDESTAL_LOW_GAIN_MEAN_WARNING" , "Pedestal low gain mean amplitude outside range"},
91  { ((uint64_t)1<<17) , "PEDESTAL_MIDDLE_GAIN_MEAN_WARNING" , "Pedestal middle gain mean amplitude outside range"},
92  { ((uint64_t)1<<18) , "PEDESTAL_HIGH_GAIN_MEAN_WARNING" , "Pedestal high gain mean amplitude outside range"},
93  { ((uint64_t)1<<19) , "PEDESTAL_LOW_GAIN_MEAN_ERROR" , "Pedestal low gain mean amplitude error"},
94  { ((uint64_t)1<<20) , "PEDESTAL_MIDDLE_GAIN_MEAN_ERROR" , "Pedestal middle gain mean amplitude error"},
95  { ((uint64_t)1<<21) , "PEDESTAL_HIGH_GAIN_MEAN_ERROR" , "Pedestal high gain mean amplitude error"},
96 
97  { ((uint64_t)1<<22) , "PEDESTAL_LOW_GAIN_RMS_WARNING" , "Pedestal low gain rms amplitude outside range"},
98  { ((uint64_t)1<<23) , "PEDESTAL_MIDDLE_GAIN_RMS_WARNING" , "Pedestal middle gain rms amplitude outside range"},
99  { ((uint64_t)1<<24) , "PEDESTAL_HIGH_GAIN_RMS_WARNING" , "Pedestal high gain rms amplitude outside range"},
100  { ((uint64_t)1<<25) , "PEDESTAL_LOW_GAIN_RMS_ERROR" , "Pedestal low gain rms amplitude error"},
101  { ((uint64_t)1<<26), "PEDESTAL_MIDDLE_GAIN_RMS_ERROR" , "Pedestal middle gain rms amplitude error"},
102  { ((uint64_t)1<<27), "PEDESTAL_HIGH_GAIN_RMS_ERROR" , "Pedestal high gain rms amplitude error"},
103 
104  { ((uint64_t)1<<28), "PEDESTAL_ONLINE_HIGH_GAIN_MEAN_WARNING" , "Pedestal online high gain mean amplitude outside range"},
105  { ((uint64_t)1<<29), "PEDESTAL_ONLINE_HIGH_GAIN_RMS_WARNING" , "Pedestal online high gain rms amplitude outside range"},
106  { ((uint64_t)1<<30), "PEDESTAL_ONLINE_HIGH_GAIN_MEAN_ERROR" , "Pedestal online high gain mean amplitude error"},
107  { ((uint64_t)1<<31), "PEDESTAL_ONLINE_HIGH_GAIN_RMS_ERROR" , "Pedestal online high gain rms amplitude error"},
108 
109  { ((uint64_t)1<<32), "TESTPULSE_LOW_GAIN_MEAN_WARNING" , "Testpulse low gain mean amplitude outside range"},
110  { ((uint64_t)1<<33), "TESTPULSE_MIDDLE_GAIN_MEAN_WARNING" , "Testpulse middle gain mean amplitude outside range"},
111  { ((uint64_t)1<<34), "TESTPULSE_HIGH_GAIN_MEAN_WARNING" , "Testpulse high gain mean amplitude outside range"},
112  { ((uint64_t)1<<35), "TESTPULSE_LOW_GAIN_RMS_WARNING" , "Testpulse low gain rms amplitude outside range"},
113  { ((uint64_t)1<<36), "TESTPULSE_MIDDLE_GAIN_RMS_WARNING" , "Testpulse middle gain rms amplitude outside range"},
114  { ((uint64_t)1<<37), "TESTPULSE_HIGH_GAIN_RMS_WARNING" , "Testpulse high gain rms amplitude outside range"},
115 
116  { ((uint64_t)1<<38), "LASER_MEAN_WARNING" , "Laser mean amplitude outside range"},
117  { ((uint64_t)1<<39), "LASER_RMS_WARNING" , "Laser rms amplitude outside range"},
118 
119  { ((uint64_t)1<<40), "LASER_MEAN_OVER_PN_WARNING" , "Laser mean amplitude over PN outside range"},
120  { ((uint64_t)1<<41), "LASER_RMS_OVER_PN_WARNING" , "Laser rms amplitude over PN outside range"},
121 
122  { ((uint64_t)1<<42), "LASER_MEAN_TIMING_WARNING" , "Laser channel mean timing outside range"},
123  { ((uint64_t)1<<43), "LASER_RMS_TIMING_WARNING" , "Laser channel rms timing outside range"},
124 
125  { ((uint64_t)1<<44), "LASER_MEAN_TT_TIMING_WARNING" , "Laser tower mean timing outside range"},
126  { ((uint64_t)1<<45), "LASER_RMS_TT_TIMING_WARNING" , "Laser tower rms timing outside range"},
127 
128  { ((uint64_t)1<<46), "PHYSICS_MEAN_TIMING_WARNING" , "Channel mean timing outside range for physics events"},
129  { ((uint64_t)1<<47), "PHYSICS_RMS_TIMING_WARNING" , "Channel rms timing outside range for physics events"},
130 
131  { ((uint64_t)1<<48), "PHYSICS_MEAN_TT_TIMING_WARNING" , "TT mean timing outside range for physics events"},
132  { ((uint64_t)1<<49), "PHYSICS_RMS_TT_TIMING_WARNING" , "TT rms timing outside range for physics events"},
133 
134  { ((uint64_t)1<<50), "PHYSICS_BAD_CHANNEL_WARNING" , "Bad signal for physics events"},
135  { ((uint64_t)1<<51), "PHYSICS_BAD_CHANNEL_ERROR" , "No signal for physics events"},
136 
137  { ((uint64_t)1<<52), "STATUS_FLAG_ERROR" , "Readout tower front end error (any type)"},
138 
139  { ((uint64_t)1<<53), "LED_MEAN_WARNING" , "Led mean amplitude outside range"},
140  { ((uint64_t)1<<54), "LED_RMS_WARNING" , "Led rms amplitude outside range"}
141 
142  };
143 
144  return ERRORDICT[i];
145  }
146 
147 
148 };
149 #endif
static uint64_t hasError(std::string shortDesc, uint64_t bitcode)
static uint64_t getMask(std::string shortDesc)
static void printErrors(uint64_t bitcode)
static void getDictionary(std::vector< errorDef_t > &dict)
unsigned long long uint64_t
Definition: Time.h:15
static void getErrors(std::vector< errorDef_t > &errorVec, uint64_t bitcode)
static errorDef_t getDef(unsigned int i)
static const unsigned int DICTSIZE