Go to the documentation of this file.00001 #ifndef DQM_HCALMONITORTASKS_HCALRAWDATAMONITOR_H
00002 #define DQM_HCALMONITORTASKS_HCALRAWDATAMONITOR_H
00003
00004 #define NUMDCCS 32
00005 #define NUMSPIGS 15
00006 #define HTRCHANMAX 24
00007
00008
00009 #define TWO___FED (1+((2+1)*NUMDCCS) )
00010 #define THREE_FED (1+((3+1)*NUMDCCS) )
00011 #define TWO__SPGT (1+((2+1)*NUMSPIGS) )
00012 #define THREE_SPG (1+((3+1)*NUMSPIGS) )
00013 #define TWO_CHANN (1+((2+1)*HTRCHANMAX))
00014
00015 #define ETABINS 85
00016 #define PHIBINS 72
00017 #define DEPTHBINS 4
00018
00019 #include "DQM/HcalMonitorTasks/interface/HcalBaseDQMonitor.h"
00020 #include "EventFilter/HcalRawToDigi/interface/HcalUnpacker.h"
00021 #include "EventFilter/HcalRawToDigi/interface/HcalHTRData.h"
00022 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
00023 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00024 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
00025 #include "DataFormats/FEDRawData/interface/FEDTrailer.h"
00026 #include <math.h>
00027
00034 class HcalRawDataMonitor: public HcalBaseDQMonitor {
00035 public:
00036 HcalRawDataMonitor(const edm::ParameterSet& ps);
00037
00038 HcalRawDataMonitor(){};
00039 ~HcalRawDataMonitor();
00040 protected:
00041 void analyze(const edm::Event& e, const edm::EventSetup& c);
00042 void beginRun(const edm::Run& run, const edm::EventSetup& c);
00043 void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg,
00044 const edm::EventSetup& c) ;
00045
00046
00047 void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,
00048 const edm::EventSetup& c);
00049
00050 void processEvent(const FEDRawDataCollection& rawraw,
00051 const HcalUnpackerReport& report);
00052
00053 void unpack(const FEDRawData& raw);
00054 void endJob(void);
00055 void endRun(const edm::Run& run, const edm::EventSetup& c);
00056 void setup(void);
00057 void reset(void);
00058
00059 edm::InputTag FEDRawDataCollection_;
00060 edm::InputTag digiLabel_;
00061 const HcalElectronicsMap* readoutMap_;
00062
00063 inline int hashup(uint32_t d=0, uint32_t s=0, uint32_t c=1) {
00064 return (int) ( (d*NUMSPIGS*HTRCHANMAX)+(s*HTRCHANMAX)+(c)); }
00065 void stashHDI(int thehash, HcalDetId thehcaldetid);
00066
00067 inline HcalDetId HashToHDI(int thehash) {
00068 return ( ( (thehash<0) || (thehash>(NUMDCCS*NUMSPIGS*HTRCHANMAX)) )
00069 ?(HcalDetId::Undefined)
00070 :(hashedHcalDetId_[thehash]));
00071 };
00072 uint64_t uniqcounter[ETABINS][PHIBINS][DEPTHBINS];
00073 uint64_t problemcount[ETABINS][PHIBINS][DEPTHBINS];
00074 bool problemfound[ETABINS][PHIBINS][DEPTHBINS];
00075 void mapDCCproblem (int dcc);
00076 void mapHTRproblem (int dcc, int spigot);
00077 void mapChannproblem(int dcc, int spigot, int htrchan);
00078 void whosebad(int subdet);
00079
00080 private:
00081 MonitorElement* meCh_DataIntegrityFED00_;
00082 MonitorElement* meCh_DataIntegrityFED01_;
00083 MonitorElement* meCh_DataIntegrityFED02_;
00084 MonitorElement* meCh_DataIntegrityFED03_;
00085 MonitorElement* meCh_DataIntegrityFED04_;
00086 MonitorElement* meCh_DataIntegrityFED05_;
00087 MonitorElement* meCh_DataIntegrityFED06_;
00088 MonitorElement* meCh_DataIntegrityFED07_;
00089 MonitorElement* meCh_DataIntegrityFED08_;
00090 MonitorElement* meCh_DataIntegrityFED09_;
00091 MonitorElement* meCh_DataIntegrityFED10_;
00092 MonitorElement* meCh_DataIntegrityFED11_;
00093 MonitorElement* meCh_DataIntegrityFED12_;
00094 MonitorElement* meCh_DataIntegrityFED13_;
00095 MonitorElement* meCh_DataIntegrityFED14_;
00096 MonitorElement* meCh_DataIntegrityFED15_;
00097 MonitorElement* meCh_DataIntegrityFED16_;
00098 MonitorElement* meCh_DataIntegrityFED17_;
00099 MonitorElement* meCh_DataIntegrityFED18_;
00100 MonitorElement* meCh_DataIntegrityFED19_;
00101 MonitorElement* meCh_DataIntegrityFED20_;
00102 MonitorElement* meCh_DataIntegrityFED21_;
00103 MonitorElement* meCh_DataIntegrityFED22_;
00104 MonitorElement* meCh_DataIntegrityFED23_;
00105 MonitorElement* meCh_DataIntegrityFED24_;
00106 MonitorElement* meCh_DataIntegrityFED25_;
00107 MonitorElement* meCh_DataIntegrityFED26_;
00108 MonitorElement* meCh_DataIntegrityFED27_;
00109 MonitorElement* meCh_DataIntegrityFED28_;
00110 MonitorElement* meCh_DataIntegrityFED29_;
00111 MonitorElement* meCh_DataIntegrityFED30_;
00112 MonitorElement* meCh_DataIntegrityFED31_;
00113
00114 MonitorElement* meChann_DataIntegrityCheck_[NUMDCCS];
00115
00116 uint64_t UScount[NUMDCCS][NUMSPIGS];
00117 float HalfHTRDataCorruptionIndicators_ [THREE_FED][THREE_SPG];
00118 float LRBDataCorruptionIndicators_ [THREE_FED][THREE_SPG];
00119 float ChannSumm_DataIntegrityCheck_ [TWO___FED][TWO__SPGT];
00120 float Chann_DataIntegrityCheck_[NUMDCCS][TWO_CHANN][TWO__SPGT];
00121 float DataFlowInd_ [TWO___FED][THREE_SPG];
00122
00123 MonitorElement* meHalfHTRDataCorruptionIndicators_;
00124 MonitorElement* meLRBDataCorruptionIndicators_;
00125 MonitorElement* meChannSumm_DataIntegrityCheck_;
00126 MonitorElement* meDataFlowInd_;
00127
00128
00129 void label_ySpigots(MonitorElement* me_ptr,int ybins);
00130 void label_xFEDs (MonitorElement* me_ptr,int xbins);
00131 void label_xChanns (MonitorElement* me_ptr,int xbins);
00132
00133 HcalDetId hashedHcalDetId_[NUMDCCS * NUMSPIGS * HTRCHANMAX];
00134
00135
00136 void UpdateMEs (void );
00137
00138
00139 std::map<int, short> CDFversionNumber_list;
00140 std::map<int, short>::iterator CDFvers_it;
00141 std::map<int, short> CDFReservedBits_list;
00142 std::map<int, short>::iterator CDFReservedBits_it;
00143 std::map<int, short> DCCEvtFormat_list;
00144 std::map<int, short>::iterator DCCEvtFormat_it;
00145
00146
00147
00148 MonitorElement* meCDFErrorFound_;
00149 MonitorElement* meDCCEventFormatError_;
00150
00151
00152 MonitorElement* meBCN_;
00153 MonitorElement* medccBCN_;
00154 MonitorElement* meBCNCheck_;
00155 MonitorElement* meBCNSynch_;
00156
00157 MonitorElement* meEvtNCheck_;
00158 MonitorElement* meEvtNumberSynch_;
00159
00160 MonitorElement* meOrNCheck_;
00161 MonitorElement* meOrNSynch_;
00162 MonitorElement* meBCNwhenOrNDiff_;
00163
00164 MonitorElement* mefedEntries_;
00165 MonitorElement* meFEDRawDataSizes_;
00166 MonitorElement* meEvFragSize_;
00167 MonitorElement* meEvFragSize2_;
00168 MonitorElement* meDCCVersion_;
00169
00170 void labelHTRBits(MonitorElement* mePlot,unsigned int axisType);
00171 MonitorElement* HTR_StatusWd_HBHE;
00172 MonitorElement* HTR_StatusWd_HF;
00173 MonitorElement* HTR_StatusWd_HO;
00174 MonitorElement* meStatusWdCrate_;
00175 MonitorElement* meInvHTRData_;
00176 MonitorElement* meFibBCN_;
00177
00178
00179
00180 MonitorElement* meCrate0HTRStatus_ ;
00181 MonitorElement* meCrate1HTRStatus_ ;
00182 MonitorElement* meCrate2HTRStatus_ ;
00183 MonitorElement* meCrate3HTRStatus_ ;
00184 MonitorElement* meCrate4HTRStatus_ ;
00185 MonitorElement* meCrate5HTRStatus_ ;
00186 MonitorElement* meCrate6HTRStatus_ ;
00187 MonitorElement* meCrate7HTRStatus_ ;
00188 MonitorElement* meCrate9HTRStatus_ ;
00189 MonitorElement* meCrate10HTRStatus_;
00190 MonitorElement* meCrate11HTRStatus_;
00191 MonitorElement* meCrate12HTRStatus_;
00192 MonitorElement* meCrate13HTRStatus_;
00193 MonitorElement* meCrate14HTRStatus_;
00194 MonitorElement* meCrate15HTRStatus_;
00195 MonitorElement* meCrate17HTRStatus_;
00196
00197 MonitorElement* meUSFractSpigs_;
00198 MonitorElement* meHTRFWVersion_;
00199 MonitorElement* meFib1OrbMsgBCN_;
00200 MonitorElement* meFib2OrbMsgBCN_;
00201 MonitorElement* meFib3OrbMsgBCN_;
00202 MonitorElement* meFib4OrbMsgBCN_;
00203 MonitorElement* meFib5OrbMsgBCN_;
00204 MonitorElement* meFib6OrbMsgBCN_;
00205 MonitorElement* meFib7OrbMsgBCN_;
00206 MonitorElement* meFib8OrbMsgBCN_;
00207
00208 int NumBadHB, NumBadHE, NumBadHO, NumBadHF, NumBadHFLUMI, NumBadHO0, NumBadHO12;
00209
00210 void HTRPrint(const HcalHTRData& htr,int prtlvl);
00211
00212 bool excludeHORing2_;
00213 };
00214
00215 #endif