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
|