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
|
#ifndef MuonTestSummary_H
#define MuonTestSummary_H
/** \class MuonTestSummary
* *
* DQM Client for global summary
*
* \author G. Mila - INFN Torino
* updates: G. Hesketh - CERN
*
*/
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include <FWCore/Framework/interface/Event.h>
#include <FWCore/Framework/interface/MakerMacros.h>
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include <FWCore/Framework/interface/LuminosityBlock.h>
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/DQMEDHarvester.h"
#include "FWCore/Framework/interface/Run.h"
#include <memory>
#include <string>
class MuonTestSummary : public DQMEDHarvester {
public:
/// Constructor
MuonTestSummary(const edm::ParameterSet &ps);
/// Destructor
~MuonTestSummary() override;
protected:
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override; //performed in the endJob
/// test operations
void doKinematicsTests(DQMStore::IGetter &, std::string, int);
void doResidualsTests(DQMStore::IGetter &, std::string, std::string, int);
void doMuonIDTests(DQMStore::IGetter &);
void doEnergyTests(DQMStore::IGetter &, std::string nameHisto, std::string muonType, int bin);
void doMultiplicityTests(DQMStore::IGetter &);
void ResidualCheck(DQMStore::IGetter &,
std::string muType,
const std::vector<std::string> &resHistos,
int &numPlot,
double &Mean,
double &Mean_err,
double &Sigma,
double &Sigma_err);
void GaussFit(std::string type,
std::string parameter,
MonitorElement *Histo,
float &mean,
float &mean_err,
float &sigma,
float &sigma_err);
private:
// Switch for verbosity
std::string metname;
// test ranges
double etaExpected;
double phiExpected;
double chi2Fraction;
double chi2Spread;
double resEtaSpread_tkGlb;
double resEtaSpread_glbSta;
double resPhiSpread_tkGlb;
double resPhiSpread_glbSta;
double resOneOvPSpread_tkGlb;
double resOneOvPSpread_glbSta;
double pullEtaSpread;
double pullPhiSpread;
double pullOneOvPSpread;
double resChargeLimit_tkGlb;
double resChargeLimit_glbSta;
double resChargeLimit_tkSta;
double numMatchedExpected_min;
double numMatchedExpected_max;
double matchesFractionDt_min;
double matchesFractionDt_max;
double matchesFractionCsc_min;
double matchesFractionCsc_max;
double resSegmTrack_rms_min;
double resSegmTrack_rms_max;
double resSegmTrack_mean_min;
double resSegmTrack_mean_max;
double sigmaResSegmTrackExp;
double expPeakEcalS9_min;
double expPeakEcalS9_max;
double expPeakHadS9_min;
double expPeakHadS9_max;
double expMultiplicityGlb_min;
double expMultiplicityTk_min;
double expMultiplicitySta_min;
double expMultiplicityGlb_max;
double expMultiplicityTk_max;
double expMultiplicitySta_max;
// the report MEs
//------
MonitorElement *KolmogorovTestSummaryMap;
MonitorElement *chi2TestSummaryMap;
//-----
MonitorElement *kinematicsSummaryMap;
MonitorElement *residualsSummaryMap;
MonitorElement *muonIdSummaryMap;
MonitorElement *energySummaryMap;
MonitorElement *multiplicitySummaryMap;
MonitorElement *summaryReport;
MonitorElement *summaryReportMap;
std::vector<MonitorElement *> theSummaryContents;
MonitorElement *summaryCertification;
MonitorElement *summaryCertificationMap;
std::vector<MonitorElement *> theCertificationContents;
};
#endif
|