CMS 3D CMS Logo

ElectronMcSignalPostValidator.cc
Go to the documentation of this file.
1 
5 
8  // histos bining and limits
9 
10  edm::ParameterSet histosSet = conf.getParameter<edm::ParameterSet>("histosCfg");
11 
12  set_EfficiencyFlag = histosSet.getParameter<bool>("EfficiencyFlag");
13  set_StatOverflowFlag = histosSet.getParameter<bool>("StatOverflowFlag");
14 }
15 
17 
19  setBookIndex(-1);
20  setBookPrefix("h_ele");
23 
24  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "efficiency calculation";
25  bookH1andDivide(iBooker, iGetter, "etaEff", "mc_Eta_matched", "mc_Eta", "#eta", "Efficiency", "");
26  bookH1andDivide(iBooker, iGetter, "zEff", "mc_Z_matched", "mc_Z", "z (cm)", "Efficiency", "");
27  bookH1andDivide(iBooker, iGetter, "absetaEff", "mc_AbsEta_matched", "mc_AbsEta", "|#eta|", "Efficiency", "");
28  bookH1andDivide(iBooker, iGetter, "ptEff", "mc_Pt_matched", "mc_Pt", "p_{T} (GeV/c)", "Efficiency", "");
29  bookH1andDivide(iBooker, iGetter, "phiEff", "mc_Phi_matched", "mc_Phi", "#phi (rad)", "Efficiency", "");
30  bookH2andDivide(iBooker, iGetter, "ptEtaEff", "mc_PtEta_matched", "mc_PtEta", "#eta", "p_{T} (GeV/c)", "");
31 
32  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "q-misid calculation";
33  bookH1andDivide(iBooker, iGetter, "etaQmisid", "mc_Eta_matched_qmisid", "mc_Eta", "#eta", "q misId", "");
34  bookH1andDivide(iBooker, iGetter, "zQmisid", "mc_Z_matched_qmisid", "mc_Z", "z (cm)", "q misId", "");
35  bookH1andDivide(iBooker, iGetter, "absetaQmisid", "mc_AbsEta_matched_qmisid", "mc_AbsEta", "|#eta|", "q misId", "");
36  bookH1andDivide(iBooker, iGetter, "ptQmisid", "mc_Pt_matched_qmisid", "mc_Pt", "p_{T} (GeV/c)", "q misId", "");
37 
38  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "all reco electrons";
39  bookH1andDivide(iBooker, iGetter, "etaEff_all", "vertexEta_all", "h_mc_Eta", "#eta", "N_{rec}/N_{gen}", "");
40  bookH1andDivide(iBooker, iGetter, "ptEff_all", "vertexPt_all", "h_mc_Pt", "p_{T} (GeV/c)", "N_{rec}/N_{gen}", "");
41 
42  edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "classes";
43  bookH1andDivide(iBooker,
44  iGetter,
45  "eta_goldenFrac",
46  "eta_golden",
47  "h_ele_eta",
48  "|#eta|",
49  "Fraction of electrons",
50  "fraction of golden electrons vs eta");
51  bookH1andDivide(iBooker,
52  iGetter,
53  "eta_bbremFrac",
54  "eta_bbrem",
55  "h_ele_eta",
56  "|#eta|",
57  "Fraction of electrons",
58  "fraction of big brem electrons vs eta");
59  bookH1andDivide(iBooker,
60  iGetter,
61  "eta_showerFrac",
62  "eta_shower",
63  "h_ele_eta",
64  "|#eta|",
65  "Fraction of electrons",
66  "fraction of showering electrons vs eta");
67 
68  // fbrem
69  MonitorElement* p1_ele_fbremVsEta_mean = get(iGetter, "fbremvsEtamean");
70  TAxis* etaAxis = p1_ele_fbremVsEta_mean->getTProfile()->GetXaxis();
72  iBooker, "xOverx0VsEta", "mean X/X_0 vs eta", etaAxis->GetNbins(), etaAxis->GetXmin(), etaAxis->GetXmax());
73  for (int ibin = 1; ibin < etaAxis->GetNbins() + 1; ibin++) {
74  double xOverX0 = 0.;
75  if (p1_ele_fbremVsEta_mean->getBinContent(ibin) > 0.) {
76  xOverX0 = -log(p1_ele_fbremVsEta_mean->getBinContent(ibin));
77  }
78  h1_ele_xOverX0VsEta->setBinContent(ibin, xOverX0);
79  }
80 
81  MonitorElement* h1_ele_provenance = get(iGetter, "provenance");
82  if (h1_ele_provenance->getBinContent(3) > 0) {
83  h1_ele_provenance->getTH1F()->Scale(1. / h1_ele_provenance->getBinContent(3));
84  }
85  MonitorElement* h1_ele_provenance_barrel = get(iGetter, "provenance_barrel");
86  if (h1_ele_provenance_barrel->getBinContent(3) > 0) {
87  h1_ele_provenance_barrel->getTH1F()->Scale(1. / h1_ele_provenance_barrel->getBinContent(3));
88  }
89  MonitorElement* h1_ele_provenance_endcaps = get(iGetter, "provenance_endcaps");
90  if (h1_ele_provenance_endcaps->getBinContent(3) > 0) {
91  h1_ele_provenance_endcaps->getTH1F()->Scale(1. / h1_ele_provenance_endcaps->getBinContent(3));
92  }
93 
94  // profiles from 2D histos
95  profileX(iBooker,
96  iGetter,
97  "scl_EoEtrueVsrecOfflineVertices",
98  "E/Etrue vs number of primary vertices",
99  "N_{primary vertices}",
100  "E/E_{true}",
101  0.8);
102  profileX(iBooker,
103  iGetter,
104  "scl_EoEtrueVsrecOfflineVertices_barrel",
105  "E/Etrue vs number of primary vertices , barrel",
106  "N_{primary vertices}",
107  "E/E_{true}",
108  0.8);
109  profileX(iBooker,
110  iGetter,
111  "scl_EoEtrueVsrecOfflineVertices_endcaps",
112  "E/Etrue vs number of primary vertices , endcaps",
113  "N_{primary vertices}",
114  "E/E_{true}",
115  0.8);
116 
117  profileX(iBooker, iGetter, "PoPtrueVsEta", "mean ele momentum / gen momentum vs eta", "#eta", "<P/P_{gen}>");
118  profileX(iBooker, iGetter, "PoPtrueVsPhi", "mean ele momentum / gen momentum vs phi", "#phi (rad)", "<P/P_{gen}>");
119  profileX(iBooker, iGetter, "sigmaIetaIetaVsPt", "SigmaIetaIeta vs pt", "p_{T} (GeV/c)", "SigmaIetaIeta");
120  profileX(iBooker,
121  iGetter,
122  "EoEtruePfVsEg",
123  "mean mustache SC/true energy vs final SC/true energy",
124  "E_{final SC}/E_{gen}",
125  "E_{mustache}/E_{gen}");
126  profileY(iBooker,
127  iGetter,
128  "EoEtruePfVsEg",
129  "mean mustache SC/true energy vs final SC/true energy",
130  "E_{final SC}/E_{gen}",
131  "E_{mustache}/E_{gen}");
132  profileX(iBooker, iGetter, "EtaMnEtaTrueVsEta", "mean ele eta - gen eta vs eta", "#eta", "<#eta_{rec} - #eta_{gen}>");
133  profileX(
134  iBooker, iGetter, "EtaMnEtaTrueVsPhi", "mean ele eta - gen eta vs phi", "#phi (rad)", "<#eta_{rec} - #eta_{gen}>");
135  profileX(
136  iBooker, iGetter, "PhiMnPhiTrueVsEta", "mean ele phi - gen phi vs eta", "#eta", "<#phi_{rec} - #phi_{gen}> (rad)");
137  profileX(iBooker, iGetter, "PhiMnPhiTrueVsPhi", "mean ele phi - gen phi vs phi", "#phi (rad)", "");
138  profileX(iBooker, iGetter, "vertexPtVsEta", "mean ele transverse momentum vs eta", "#eta", "<p_{T}> (GeV/c)");
139  profileX(iBooker, iGetter, "vertexPtVsPhi", "mean ele transverse momentum vs phi", "#phi (rad)", "<p_{T}> (GeV/c)");
140  profileX(iBooker, iGetter, "EoPVsEta", "mean ele E/p vs eta", "#eta", "<E/P_{vertex}>");
141  profileX(iBooker, iGetter, "EoPVsPhi", "mean ele E/p vs phi", "#phi (rad)", "<E/P_{vertex}>");
142  profileX(iBooker, iGetter, "EoPoutVsEta", "mean ele E/pout vs eta", "#eta", "<E_{seed}/P_{out}>");
143  profileX(iBooker, iGetter, "EoPoutVsPhi", "mean ele E/pout vs phi", "#phi (rad)", "<E_{seed}/P_{out}>");
144  profileX(iBooker, iGetter, "EeleOPoutVsEta", "mean ele Eele/pout vs eta", "#eta", "<E_{ele}/P_{out}>");
145  profileX(iBooker, iGetter, "EeleOPoutVsPhi", "mean ele Eele/pout vs phi", "#phi (rad)", "<E_{ele}/P_{out}>");
146  profileX(iBooker, iGetter, "HoEVsEta", "mean ele H/E vs eta", "#eta", "<H/E>");
147  profileX(iBooker, iGetter, "HoEVsPhi", "mean ele H/E vs phi", "#phi (rad)", "<H/E>");
148  profileX(iBooker, iGetter, "chi2VsEta", "mean ele track chi2 vs eta", "#eta", "<#Chi^{2}>");
149  profileX(iBooker, iGetter, "chi2VsPhi", "mean ele track chi2 vs phi", "#phi (rad)", "<#Chi^{2}>");
150  profileX(iBooker, iGetter, "ambiguousTracksVsEta", "mean ele # ambiguous tracks vs eta", "#eta", "<N_{ambiguous}>");
151  profileX(iBooker, iGetter, "foundHitsVsEta", "mean ele track # found hits vs eta", "#eta", "<N_{hits}>");
152  profileX(iBooker, iGetter, "foundHitsVsEta_mAOD", "mean ele track # found hits vs eta", "#eta", "<N_{hits}>");
153  profileX(iBooker, iGetter, "foundHitsVsPhi", "mean ele track # found hits vs phi", "#phi (rad)", "<N_{hits}>");
154  profileX(iBooker, iGetter, "lostHitsVsEta", "mean ele track # lost hits vs eta", "#eta", "<N_{hits}>");
155  profileX(iBooker, iGetter, "lostHitsVsPhi", "mean ele track # lost hits vs phi", "#phi (rad)", "<N_{hits}>");
156  profileX(iBooker, iGetter, "vertexTIPVsEta", "mean tip (wrt gen vtx) vs eta", "#eta", "<TIP> (cm)");
157  profileX(iBooker, iGetter, "vertexTIPVsPhi", "mean tip (wrt gen vtx) vs phi", "#phi", "<TIP> (cm)");
158  profileX(iBooker, iGetter, "vertexTIPVsPt", "mean tip (wrt gen vtx) vs phi", "p_{T} (GeV/c)", "<TIP> (cm)");
159  profileX(iBooker,
160  iGetter,
161  "seedDphi2_VsEta",
162  "mean ele seed dphi 2nd layer vs eta",
163  "#eta",
164  "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
165  -0.004,
166  0.004);
167  profileX(iBooker,
168  iGetter,
169  "seedDphi2_VsPt",
170  "mean ele seed dphi 2nd layer vs pt",
171  "p_{T} (GeV/c)",
172  "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
173  -0.004,
174  0.004);
175  profileX(iBooker,
176  iGetter,
177  "seedDrz2_VsEta",
178  "mean ele seed dr(dz) 2nd layer vs eta",
179  "#eta",
180  "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
181  -0.15,
182  0.15);
183  profileX(iBooker,
184  iGetter,
185  "seedDrz2_VsPt",
186  "mean ele seed dr(dz) 2nd layer vs pt",
187  "p_{T} (GeV/c)",
188  "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
189  -0.15,
190  0.15);
191  profileX(iBooker,
192  iGetter,
193  "seedDphi2Pos_VsEta",
194  "mean ele seed dphi 2nd layer positron vs eta",
195  "#eta",
196  "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
197  -0.004,
198  0.004);
199  profileX(iBooker,
200  iGetter,
201  "seedDphi2Pos_VsPt",
202  "mean ele seed dphi 2nd layer positron vs pt",
203  "p_{T} (GeV/c)",
204  "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
205  -0.004,
206  0.004);
207  profileX(iBooker,
208  iGetter,
209  "seedDrz2Pos_VsEta",
210  "mean ele seed dr(dz) 2nd layer positron vs eta",
211  "#eta",
212  "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
213  -0.15,
214  0.15);
215  profileX(iBooker,
216  iGetter,
217  "seedDrz2Pos_VsPt",
218  "mean ele seed dr(dz) 2nd layer positron vs pt",
219  "p_{T} (GeV/c)",
220  "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
221  -0.15,
222  0.15);
223 
224 }
T getParameter(std::string const &) const
MonitorElement * profileX(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
MonitorElement * bookH1withSumw2(DQMStore::IBooker &, const std::string &name, const std::string &title, int nchX, double lowX, double highX, const std::string &titleX="", const std::string &titleY="Events", Option_t *option="E1 P")
virtual TH1F * getTH1F() const
void setBookPrefix(const std::string &)
MonitorElement * bookH2andDivide(DQMStore::IBooker &iBooker, DQMStore::IGetter &, const std::string &name, MonitorElement *num, MonitorElement *denom, const std::string &titleX, const std::string &titleY, const std::string &title="")
ElectronMcSignalPostValidator(const edm::ParameterSet &conf)
MonitorElement * bookH1andDivide(DQMStore::IBooker &iBooker, DQMStore::IGetter &, const std::string &name, MonitorElement *num, MonitorElement *denom, const std::string &titleX, const std::string &titleY, const std::string &title="")
void finalize(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter) override
MonitorElement * profileY(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, MonitorElement *me2d, const std::string &title="", const std::string &titleX="", const std::string &titleY="", Double_t minimum=-1111, Double_t maximum=-1111)
void setBookStatOverflowFlag(const bool &)
void setBookEfficiencyFlag(const bool &)
virtual double getBinContent(int binx) const
get content of bin (1-D)
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
virtual TProfile * getTProfile() const