ErrorCounters

Errors

SPYHistograms

Trends

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
#ifndef DQM_SiStripMonitorHardware_SPYHistograms_HH
#define DQM_SiStripMonitorHardware_SPYHistograms_HH

#include <sstream>

#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include "DQMServices/Core/interface/DQMStore.h"

#include "DQM/SiStripMonitorHardware/interface/SiStripSpyUtilities.h"
#include "DQM/SiStripMonitorHardware/interface/HistogramBase.hh"

class SPYHistograms : public HistogramBase {
public:
  struct Trends {
    unsigned int meanDigitalLow;  // digitalLow averaged over all channels
  };

  struct ErrorCounters {
    unsigned int nNoData;     //max=min=0
    unsigned int nLowRange;   // max-min < min value to tune
    unsigned int nHighRange;  // max-min > max value to tune
    unsigned int nMinZero;    // min = 0
    unsigned int nMaxSat;     //max = 1023
    unsigned int nLowPb;      //min < min value to tune but > 0
    unsigned int nHighPb;     //max > max value to tune but < 1023
    unsigned int nOOS;        //header+trailer found with right distance between them but not in expected position
                              // or header found above 16 (no trailer found)
                              // or 2*2-high separated by 70 samples found (last in right position...)
    unsigned int nOtherPbs;
    unsigned int nAPVError;         //number of APVs with error bit 0
    unsigned int nAPVAddressError;  //number of APV pairs with different APV addresses
    unsigned int nNegPeds;          //ped subtr value = 0
  };

  //helper structs to fill histograms
  struct Errors {
    bool hasNoData;
    bool hasLowRange;
    bool hasHighRange;
    bool hasMinZero;
    bool hasMaxSat;
    bool hasLowPb;
    bool hasHighPb;
    bool hasOOS;
    bool hasOtherPbs;
    bool hasErrorBit0;
    bool hasErrorBit1;
    bool hasAPVAddressError0;
    bool hasAPVAddressError1;
    bool hasNegPeds;
  };

  SPYHistograms();

  ~SPYHistograms() override;

  //initialise histograms
  void initialise(const edm::ParameterSet& iConfig, std::ostringstream* pDebugStream) override;

  //book the top level histograms
  void bookTopLevelHistograms(DQMStore::IBooker&, const TkDetMap*);

  //book individual FED histograms or book all FED level histograms at once
  void bookFEDHistograms(DQMStore::IBooker&, const unsigned int fedId, const Errors& aErr, bool doAll = false);

  void bookAllFEDHistograms(DQMStore::IBooker&);

  void fillCountersHistograms(const ErrorCounters& aCounter, const double aTime);

  void fillGainHistograms(const Trends& aTrendElement, const double aTime);

  void fillFEDHistograms(const Errors& aErr, const unsigned int aFedId);

  void fillDetailedHistograms(const Errors& aErr,
                              const sistrip::SpyUtilities::Frame& aFrame,
                              const unsigned int aFedId,
                              const unsigned int aFedChannel);

  bool tkHistoMapEnabled(unsigned int aIndex = 0) override { return false; };

  TkHistoMap* tkHistoMapPointer(unsigned int aIndex = 0) override { return nullptr; };

protected:
private:
  //histos

  //counting histograms (histogram of number of problems per event)
  HistogramConfig nNoData_;
  HistogramConfig nLowRange_;
  HistogramConfig nHighRange_;
  HistogramConfig nMinZero_;
  HistogramConfig nMaxSat_;
  HistogramConfig nLowPb_;
  HistogramConfig nHighPb_;
  HistogramConfig nOutOfSync_;
  HistogramConfig nOtherPbs_;
  HistogramConfig nApvErrorBit_;
  HistogramConfig nApvAddressError_;
  HistogramConfig nNegativePeds_;

  //vsTime
  HistogramConfig nNoDatavsTime_;
  HistogramConfig nLowRangevsTime_;
  HistogramConfig nHighRangevsTime_;
  HistogramConfig nMinZerovsTime_;
  HistogramConfig nMaxSatvsTime_;
  HistogramConfig nLowPbvsTime_;
  HistogramConfig nHighPbvsTime_;
  HistogramConfig nOutOfSyncvsTime_;
  HistogramConfig nOtherPbsvsTime_;
  HistogramConfig nApvErrorBitvsTime_;
  HistogramConfig nApvAddressErrorvsTime_;
  HistogramConfig nNegativePedsvsTime_;
  HistogramConfig meanDigitalLowvsTime_;

  //top level histograms
  HistogramConfig noData_;
  HistogramConfig lowRange_;
  HistogramConfig highRange_;
  HistogramConfig minZero_;
  HistogramConfig maxSat_;
  HistogramConfig lowPb_;
  HistogramConfig highPb_;
  HistogramConfig outOfSync_;
  HistogramConfig otherPbs_;
  HistogramConfig apvErrorBit_;
  HistogramConfig apvAddressError_;
  HistogramConfig negativePeds_;

  HistogramConfig frameRange_;
  HistogramConfig frameMin_;
  HistogramConfig frameMax_;
  HistogramConfig baseline_;

  //FED level histograms
  HistogramConfig noDataDetailed_;
  HistogramConfig lowRangeDetailed_;
  HistogramConfig highRangeDetailed_;
  HistogramConfig minZeroDetailed_;
  HistogramConfig maxSatDetailed_;
  HistogramConfig lowPbDetailed_;
  HistogramConfig highPbDetailed_;
  HistogramConfig outOfSyncDetailed_;
  HistogramConfig otherPbsDetailed_;
  HistogramConfig apvErrorBitDetailed_;
  HistogramConfig apvAddressErrorDetailed_;
  HistogramConfig negativePedsDetailed_;

  HistogramConfig positionOfFirstHeaderBitDetailed_;
  HistogramConfig positionOfFirstTrailerBitDetailed_;
  HistogramConfig distanceHeaderTrailerDetailed_;

  std::map<unsigned int, MonitorElement*> noDataDetailedMap_;
  std::map<unsigned int, MonitorElement*> lowRangeDetailedMap_;
  std::map<unsigned int, MonitorElement*> highRangeDetailedMap_;
  std::map<unsigned int, MonitorElement*> minZeroDetailedMap_;
  std::map<unsigned int, MonitorElement*> maxSatDetailedMap_;
  std::map<unsigned int, MonitorElement*> lowPbDetailedMap_;
  std::map<unsigned int, MonitorElement*> highPbDetailedMap_;
  std::map<unsigned int, MonitorElement*> outOfSyncDetailedMap_;
  std::map<unsigned int, MonitorElement*> otherPbsDetailedMap_;
  std::map<unsigned int, MonitorElement*> apvErrorBitDetailedMap_;
  std::map<unsigned int, MonitorElement*> apvAddressErrorDetailedMap_;
  std::map<unsigned int, MonitorElement*> negativePedsDetailedMap_;

  std::map<unsigned int, MonitorElement*> positionOfFirstHeaderBitDetailedMap_;
  std::map<unsigned int, MonitorElement*> positionOfFirstTrailerBitDetailedMap_;
  std::map<unsigned int, MonitorElement*> distanceHeaderTrailerDetailedMap_;

  std::vector<bool> histosBooked_;

};  //class

#endif  //DQM_SiStripMonitorHardware_SPYHistograms_HH