CMS 3D CMS Logo

EcalErrorDictionary.h

Go to the documentation of this file.
00001 #ifndef CondFormats_EcalObjects_EcalErrorDictionary_H
00002 #define CondFormats_EcalObjects_EcalErrorDictionary_H
00003 
00011 #include <boost/cstdint.hpp>
00012 #include <iostream>
00013 #include <vector>
00014 
00015 class EcalErrorDictionary {
00016  public:
00017   struct errorDef_t {
00018     uint64_t bitmask;
00019     char shortDesc[64];
00020     char longDesc[128];
00021   };
00022 
00023   static uint64_t hasError(std::string shortDesc, uint64_t bitcode)
00024     {
00025       return getMask(shortDesc) & bitcode;
00026     }
00027 
00028   static uint64_t getMask(std::string shortDesc)
00029     {
00030       for (unsigned int i=0; i<DICTSIZE; i++) {
00031         if (getDef(i).shortDesc == shortDesc) {
00032           return getDef(i).bitmask;
00033         }
00034       }
00035       return 0;
00036     }
00037   
00038   static void printErrors(uint64_t bitcode)
00039     {
00040       for (unsigned int i=0; i<DICTSIZE; i++) {
00041         if (bitcode & getDef(i).bitmask) {
00042           std::cout << getDef(i).shortDesc << std::endl;
00043         }
00044       }
00045     }
00046 
00047   static void getErrors(std::vector<errorDef_t>& errorVec, uint64_t bitcode)
00048     {
00049       errorVec.clear();
00050       for (unsigned int i=0; i<DICTSIZE; i++) {
00051         if (bitcode & getDef(i).bitmask) {
00052           errorVec.push_back(getDef(i));
00053         }
00054       }
00055     }
00056 
00057   static void getDictionary(std::vector<errorDef_t> &dict)
00058     {
00059       dict.clear();
00060       for (unsigned int i=0; i<DICTSIZE; i++) {
00061         dict.push_back(getDef(i));
00062       }
00063     }
00064 
00065  private:
00066   EcalErrorDictionary() {}; // Hidden to force static use
00067   ~EcalErrorDictionary() {};  // Hidden to force static use
00068 
00069   const static unsigned int DICTSIZE = 50;
00070   
00071   static errorDef_t getDef(unsigned int i) {
00072     const static errorDef_t ERRORDICT[DICTSIZE] =
00073       {
00074 
00075         { ((uint64_t)1<<0), "CH_ID_WARNING" , "Channel id warning"},
00076         { ((uint64_t)1<<1), "CH_GAIN_ZERO_WARNING" , "Channel gain zero warning"},
00077         { ((uint64_t)1<<2), "CH_GAIN_SWITCH_WARNING" , "Channel gain switch warning"},
00078         { ((uint64_t)1<<3), "CH_ID_ERROR" , "Channel id error"},
00079         { ((uint64_t)1<<4), "CH_GAIN_ZERO_ERROR" , "Channel gain zero error"},
00080         { ((uint64_t)1<<5), "CH_GAIN_SWITCH_ERROR" , "Channel gain switch error"},
00081 
00082         { ((uint64_t)1<<6), "TT_ID_WARNING" , "TT id warning"},
00083         { ((uint64_t)1<<7), "TT_SIZE_WARNING" , "TT size warning"},
00084         { ((uint64_t)1<<8), "TT_LV1_WARNING" , "TT LV1 warning"},
00085         { ((uint64_t)1<<9), "TT_BUNCH_X_WARNING" , "TT bunch-x warning"},
00086         { ((uint64_t)1<<10), "TT_ID_ERROR" , "TT id error"},
00087         { ((uint64_t)1<<11), "TT_SIZE_ERROR" , "TT size error"},
00088         { ((uint64_t)1<<12), "TT_LV1_ERROR" , "TT LV1 error"},
00089         { ((uint64_t)1<<13), "TT_BUNCH_X_ERROR" , "TT bunch-x error"},
00090 
00091         { ((uint64_t)1<<16) , "PEDESTAL_LOW_GAIN_MEAN_WARNING" , "Pedestal low gain mean amplitude outside range"},
00092         { ((uint64_t)1<<17) , "PEDESTAL_MIDDLE_GAIN_MEAN_WARNING" , "Pedestal middle gain mean amplitude outside range"},
00093         { ((uint64_t)1<<18) , "PEDESTAL_HIGH_GAIN_MEAN_WARNING" , "Pedestal high gain mean amplitude outside range"},
00094         { ((uint64_t)1<<19) , "PEDESTAL_LOW_GAIN_MEAN_ERROR" , "Pedestal low gain mean amplitude error"},
00095         { ((uint64_t)1<<20) , "PEDESTAL_MIDDLE_GAIN_MEAN_ERROR" , "Pedestal middle gain mean amplitude error"},
00096         { ((uint64_t)1<<21) , "PEDESTAL_HIGH_GAIN_MEAN_ERROR" , "Pedestal high gain mean amplitude error"},
00097 
00098         { ((uint64_t)1<<22) , "PEDESTAL_LOW_GAIN_RMS_WARNING" , "Pedestal low gain rms amplitude outside range"},
00099         { ((uint64_t)1<<23) , "PEDESTAL_MIDDLE_GAIN_RMS_WARNING" , "Pedestal middle gain rms amplitude outside range"},
00100         { ((uint64_t)1<<24) , "PEDESTAL_HIGH_GAIN_RMS_WARNING" , "Pedestal high gain rms amplitude outside range"},
00101         { ((uint64_t)1<<25) , "PEDESTAL_LOW_GAIN_RMS_ERROR" , "Pedestal low gain rms amplitude error"},
00102         { ((uint64_t)1<<26), "PEDESTAL_MIDDLE_GAIN_RMS_ERROR" , "Pedestal middle gain rms amplitude error"},
00103         { ((uint64_t)1<<27), "PEDESTAL_HIGH_GAIN_RMS_ERROR" , "Pedestal high gain rms amplitude error"},
00104 
00105         { ((uint64_t)1<<28), "PEDESTAL_ONLINE_HIGH_GAIN_MEAN_WARNING" , "Pedestal online high gain mean amplitude outside range"},
00106         { ((uint64_t)1<<29), "PEDESTAL_ONLINE_HIGH_GAIN_RMS_WARNING" , "Pedestal online high gain rms amplitude outside range"},
00107         { ((uint64_t)1<<30), "PEDESTAL_ONLINE_HIGH_GAIN_MEAN_ERROR" ,  "Pedestal online high gain mean amplitude error"},
00108         { ((uint64_t)1<<31), "PEDESTAL_ONLINE_HIGH_GAIN_RMS_ERROR" , "Pedestal online high gain rms amplitude error"},
00109 
00110         { ((uint64_t)1<<32), "TESTPULSE_LOW_GAIN_MEAN_WARNING" , "Testpulse low gain mean amplitude outside range"},
00111         { ((uint64_t)1<<33), "TESTPULSE_MIDDLE_GAIN_MEAN_WARNING" , "Testpulse middle gain mean amplitude outside range"},
00112         { ((uint64_t)1<<34), "TESTPULSE_HIGH_GAIN_MEAN_WARNING" , "Testpulse high gain mean amplitude outside range"},
00113         { ((uint64_t)1<<35), "TESTPULSE_LOW_GAIN_RMS_WARNING" , "Testpulse low gain rms amplitude outside range"},
00114         { ((uint64_t)1<<36), "TESTPULSE_MIDDLE_GAIN_RMS_WARNING" , "Testpulse middle gain rms amplitude outside range"},
00115         { ((uint64_t)1<<37), "TESTPULSE_HIGH_GAIN_RMS_WARNING" , "Testpulse high gain rms amplitude outside range"},
00116 
00117         { ((uint64_t)1<<38), "LASER_MEAN_WARNING" , "Laser mean amplitude outside range"},
00118         { ((uint64_t)1<<39), "LASER_RMS_WARNING" , "Laser rms amplitude outside range"},
00119 
00120         { ((uint64_t)1<<40), "LASER_MEAN_OVER_PN_WARNING" , "Laser mean amplitude over PN outside range"},
00121         { ((uint64_t)1<<41), "LASER_RMS_OVER_PN_WARNING" , "Laser rms amplitude over PN outside range"},
00122 
00123         { ((uint64_t)1<<42), "LASER_MEAN_TIMING_WARNING" , "Laser channel mean timing outside range"},
00124         { ((uint64_t)1<<43), "LASER_RMS_TIMING_WARNING" , "Laser channel rms timing outside range"},
00125 
00126         { ((uint64_t)1<<44), "LASER_MEAN_TT_TIMING_WARNING" , "Laser tower mean timing outside range"},
00127         { ((uint64_t)1<<45), "LASER_RMS_TT_TIMING_WARNING" , "Laser tower rms timing outside range"},
00128 
00129         { ((uint64_t)1<<46), "PHYSICS_MEAN_TIMING_WARNING" , "Channel mean timing outside range for physics events"},
00130         { ((uint64_t)1<<47), "PHYSICS_RMS_TIMING_WARNING" , "Channel rms timing outside range for physics events"},
00131 
00132         { ((uint64_t)1<<48), "PHYSICS_MEAN_TT_TIMING_WARNING" , "TT mean timing outside range for physics events"},
00133         { ((uint64_t)1<<49), "PHYSICS_RMS_TT_TIMING_WARNING" , "TT rms timing outside range for physics events"},
00134 
00135         { ((uint64_t)1<<50), "PHYSICS_BAD_CHANNEL_WARNING" , "Bad signal for physics events"},
00136         { ((uint64_t)1<<51), "PHYSICS_BAD_CHANNEL_ERROR" , "No signal for physics events"}
00137 
00138 
00139 
00140       };
00141 
00142     return ERRORDICT[i];
00143   }
00144 
00145 
00146 };
00147 #endif

Generated on Tue Jun 9 17:26:52 2009 for CMSSW by  doxygen 1.5.4