SiPixelDataQuality

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

#include "DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h"
#include "DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h"
#include "DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h"
#include "DQM/SiPixelMonitorClient/interface/SiPixelLayoutParser.h"
#include "DQMServices/Core/interface/DQMStore.h"

#include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h"
#include "CondFormats/SiPixelObjects/interface/DetectorIndex.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFrameConverter.h"
#include "DataFormats/Common/interface/DetSetVector.h"
#include "DataFormats/SiPixelDigi/interface/PixelDigi.h"

#include "TCanvas.h"
#include "TF1.h"
#include "TGaxis.h"
#include "TH2F.h"
#include "TPaveText.h"

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

class SiPixelEDAClient;
class SiPixelDataQuality {
public:
  typedef dqm::legacy::MonitorElement MonitorElement;
  typedef dqm::legacy::DQMStore DQMStore;

  SiPixelDataQuality(bool offlineXMLfile);
  ~SiPixelDataQuality();

  int getDetId(MonitorElement *mE);

  void bookGlobalQualityFlag(DQMStore::IBooker &iBooker, bool Tier0Flag, int nFEDs);

  void computeGlobalQualityFlag(
      DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool init, int nFEDs, bool Tier0Flag);

  void computeGlobalQualityFlagByLumi(DQMStore::IGetter &iGetter,
                                      bool init,
                                      int nFEDs,
                                      bool Tier0Flag,
                                      int nEvents_lastLS_,
                                      int nErrorsBarrel_lastLS_,
                                      int nErrorsEndcap_lastLS_);

  void fillGlobalQualityPlot(DQMStore::IBooker &iBooker,
                             DQMStore::IGetter &iGetter,
                             bool init,
                             const SiPixelFedCablingMap *theCablingMap,
                             int nFEDs,
                             bool Tier0Flag,
                             int lumisec);

private:
  bool offlineXMLfile_;

  TH2F *allmodsMap;
  TH2F *errmodsMap;
  TH2F *goodmodsMap;
  TH1D *allmodsVec;
  TH1D *errmodsVec;
  TH1D *goodmodsVec;
  int count;
  int errcount;
  bool gotDigis;

  int objectCount_;
  bool DONE_;

  std::ofstream myfile_;
  int nevents_;
  bool endOfModules_;

  // Final combined Data Quality Flags:
  MonitorElement *SummaryReportMap;
  MonitorElement *SummaryPixel;
  MonitorElement *SummaryBarrel;
  MonitorElement *SummaryEndcap;
  MonitorElement *ClusterModAll;
  MonitorElement *ClusterMod1;
  MonitorElement *ClusterMod2;
  MonitorElement *ClusterMod3;
  MonitorElement *ClusterMod4;

  float qflag_;
  int allMods_, errorMods_, barrelMods_, endcapMods_;

  // FEDErrors Cuts:
  MonitorElement *FEDErrReportMap;
  MonitorElement *NErrorsBarrel;
  MonitorElement *NErrorsEndcap;
  MonitorElement *NErrorsFEDs;
  int n_errors_barrel_, n_errors_endcap_, n_errors_pixel_;
  float barrel_error_flag_, endcap_error_flag_, pixel_error_flag_;

  bool digiStatsBarrel, clusterStatsBarrel, trackStatsBarrel;
  int digiCounterBarrel, clusterCounterBarrel, trackCounterBarrel;
  bool digiStatsEndcap, clusterStatsEndcap, trackStatsEndcap;
  int digiCounterEndcap, clusterCounterEndcap, trackCounterEndcap;

  // Digis Cuts:
  MonitorElement *NDigisBarrel;
  MonitorElement *NDigisEndcap;
  MonitorElement *DigiChargeBarrel;
  MonitorElement *DigiChargeEndcap;

  // Cluster Cuts:
  MonitorElement *ClusterSizeBarrel;
  MonitorElement *ClusterSizeEndcap;
  MonitorElement *ClusterChargeBarrel;
  MonitorElement *ClusterChargeEndcap;
  MonitorElement *NClustersBarrel;
  MonitorElement *NClustersEndcap;

  // Track Cuts:
  MonitorElement *NPixelTracks;

  int count1;
  int count2;
  int count3;
  int count4;
  int count5;
  int count6;

  int timeoutCounter_;
  int modCounter_;
  int lastLS_;
  float lasterrmods_[40];
  float lastallmods_[40];
};
#endif