SiStripQualityChecker

SubDetMEs

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
#ifndef _SiStripQualityChecker_h_
#define _SiStripQualityChecker_h_

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

#include <iostream>
#include <fstream>
#include <sstream>
#include <map>
#include <vector>
#include <string>

class TkDetMap;
class TrackerTopology;
class SiStripDetCabling;

class SiStripQualityChecker {
public:
  typedef dqm::harvesting::MonitorElement MonitorElement;
  typedef dqm::harvesting::DQMStore DQMStore;

  SiStripQualityChecker(edm::ParameterSet const& ps);
  ~SiStripQualityChecker();

  void bookStatus(DQMStore& dqm_store);
  void resetStatus();
  void fillDummyStatus();
  void fillStatus(DQMStore& dqm_store,
                  const SiStripDetCabling* cabling,
                  const TkDetMap* tkDetMap,
                  const TrackerTopology* tTopo);
  void fillStatusAtLumi(DQMStore& dqm_store);
  void printStatusReport();
  void fillFaultyModuleStatus(DQMStore& dqm_store, const TrackerTopology* tTopo);

private:
  struct SubDetMEs {
    MonitorElement* DetFraction;
    MonitorElement* SToNFlag;
    MonitorElement* SummaryFlag;
    std::string detectorTag;
  };

  void fillDetectorStatus(DQMStore& dqm_store, const SiStripDetCabling* cabling);
  void fillSubDetStatus(
      DQMStore& dqm_store, const SiStripDetCabling* cabling, SubDetMEs& mes, unsigned int xbin, float& gflag);
  void getModuleStatus(DQMStore& dqm_store,
                       std::vector<MonitorElement*>& layer_mes,
                       int& errdet,
                       int& errdet_hasBadChan,
                       int& errdet_hasTooManyDigis,
                       int& errdet_hasTooManyClu,
                       int& errdet_hasExclFed,
                       int& errdet_hasDcsErr);

  void fillStatusHistogram(MonitorElement const*, int xbin, int ybin, float val);
  void initialiseBadModuleList();

  void fillDetectorStatusAtLumi(DQMStore& dqm_store);

  std::map<std::string, SubDetMEs> SubDetMEsMap;
  std::map<std::string, std::string> SubDetFolderMap;

  MonitorElement* DetFractionReportMap{nullptr};
  MonitorElement* DetFractionReportMap_hasBadChan{nullptr};
  MonitorElement* DetFractionReportMap_hasTooManyDigis{nullptr};
  MonitorElement* DetFractionReportMap_hasTooManyClu{nullptr};
  MonitorElement* DetFractionReportMap_hasExclFed{nullptr};
  MonitorElement* DetFractionReportMap_hasDcsErr{nullptr};
  MonitorElement* SToNReportMap{nullptr};
  MonitorElement* SummaryReportMap{nullptr};
  MonitorElement* SummaryReportGlobal{nullptr};
  MonitorElement* TrackSummaryReportMap{nullptr};
  MonitorElement* TrackSummaryReportGlobal{nullptr};

  std::map<uint32_t, uint16_t> badModuleList;

  edm::ParameterSet const pSet_;

  bool bookedStripStatus_{false};

  const TkDetMap* tkDetMap_;
};
#endif