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
|
#ifndef _SiPixelActionExecutor_h_
#define _SiPixelActionExecutor_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 "DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h"
#include "DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include <fstream>
#include <map>
#include <string>
#include <vector>
// For Tracker Map
enum funcType { EachBinContent, Entries, Mean, Sum, WeightedSum };
#define PI_12 0.261799
#define PI 3.141592
#define PI_2 1.570796
// Number of HalfCylinders in Endcap or number of Shells in Barrel, which is bigger
#define NLev1 4
// Number of Disks in Endcap or number of Layers in Barrel, which is bigger
#define NLev2 3
// Number of Blades in Endcap or number of Ladders in Barrel, which is bigger
#define NLev3 22
// Number of Modules - different for Endcap and Barrel, which is bigger
#define NLev4 7
#define NCyl 4
#define NDisk 2
#define NBlade 12
#define NModuleE 7
#define NShell 4
#define NLayer 3
#define NModuleB 4
#define NPoints 5
// End for Tracker Map
class SiPixelActionExecutor {
public:
typedef dqm::legacy::DQMStore DQMStore;
typedef dqm::legacy::MonitorElement MonitorElement;
SiPixelActionExecutor(bool offlineXMLfile, bool Tier0Flag);
~SiPixelActionExecutor();
void createSummary(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isUpgrade);
void bookDeviations(DQMStore::IBooker &iBooker, bool isUpgrade);
void bookEfficiency(DQMStore::IBooker &iBooker, bool isUpgrade);
void createEfficiency(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isUpgrade);
void fillEfficiency(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isbarrel, bool isUpgrade);
void fillEfficiencySummary(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter);
void bookOccupancyPlots(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool hiRes, bool isbarrel);
void bookOccupancyPlots(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool hiRes);
void createOccupancy(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter);
void normaliseAvDigiOcc(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter);
void normaliseAvDigiOccVsLumi(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, int lumisec);
bool readConfiguration(int &tkmap_freq,
int &sum_barrel_freq,
int &sum_endcap_freq,
int &sum_grandbarrel_freq,
int &sum_grandendcap_freq,
int &message_limit,
int &source_type,
int &calib_type);
bool readConfiguration(int &tkmap_freq, int &summary_freq);
void readConfiguration();
int getLadder(const std::string &dname);
int getBlade(const std::string &dname);
private:
MonitorElement *getSummaryME(DQMStore::IBooker &iBooker,
DQMStore::IGetter &iGetter,
std::string me_name,
bool isUpgrade);
MonitorElement *getFEDSummaryME(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, std::string me_name);
void GetBladeSubdirs(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, std::vector<std::string> &blade_subdirs);
void fillSummary(DQMStore::IBooker &iBooker,
DQMStore::IGetter &iGetter,
std::string dir_name,
std::vector<std::string> &me_names,
bool isbarrel,
bool isUpgrade);
void fillFEDErrorSummary(DQMStore::IBooker &iBooker,
DQMStore::IGetter &iGetter,
std::string dir_name,
std::vector<std::string> &me_names);
void fillGrandBarrelSummaryHistos(DQMStore::IBooker &iBooker,
DQMStore::IGetter &iGetter,
std::vector<std::string> &me_names,
bool isUpgrade);
void fillGrandEndcapSummaryHistos(DQMStore::IBooker &iBooker,
DQMStore::IGetter &iGetter,
std::vector<std::string> &me_names,
bool isUpgrade);
void getGrandSummaryME(DQMStore::IBooker &iBooker,
DQMStore::IGetter &iGetter,
int nbin,
std::string &me_name,
std::vector<MonitorElement *> &mes);
void fillOccupancy(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool isbarrel);
SiPixelConfigParser *configParser_;
SiPixelConfigWriter *configWriter_;
std::vector<std::string> summaryMENames;
std::vector<std::string> tkMapMENames;
int message_limit_;
int source_type_;
int calib_type_;
int ndet_;
bool offlineXMLfile_;
bool Tier0Flag_;
MonitorElement *OccupancyMap;
MonitorElement *PixelOccupancyMap;
MonitorElement *HitEfficiency_L1;
MonitorElement *HitEfficiency_L2;
MonitorElement *HitEfficiency_L3;
MonitorElement *HitEfficiency_L4;
MonitorElement *HitEfficiency_Dp1;
MonitorElement *HitEfficiency_Dp2;
MonitorElement *HitEfficiency_Dp3;
MonitorElement *HitEfficiency_Dm1;
MonitorElement *HitEfficiency_Dm2;
MonitorElement *HitEfficiency_Dm3;
MonitorElement *HitEfficiencySummary;
MonitorElement *DEV_adc_Barrel;
MonitorElement *DEV_ndigis_Barrel;
MonitorElement *DEV_charge_Barrel;
MonitorElement *DEV_nclusters_Barrel;
MonitorElement *DEV_size_Barrel;
MonitorElement *DEV_adc_Endcap;
MonitorElement *DEV_ndigis_Endcap;
MonitorElement *DEV_charge_Endcap;
MonitorElement *DEV_nclusters_Endcap;
MonitorElement *DEV_size_Endcap;
TH2F *temp_H;
TH2F *temp_1x2;
TH2F *temp_1x5;
TH2F *temp_2x3;
TH2F *temp_2x4;
TH2F *temp_2x5;
};
#endif
|