File indexing completed on 2023-03-17 11:28:21
0001
0002 #include "Validation/RecoEgamma/plugins/ElectronMcSignalPostValidator.h"
0003 #include "DQMServices/Core/interface/DQMStore.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005
0006 ElectronMcSignalPostValidator::ElectronMcSignalPostValidator(const edm::ParameterSet& conf)
0007 : ElectronDqmHarvesterBase(conf) {
0008
0009
0010 edm::ParameterSet histosSet = conf.getParameter<edm::ParameterSet>("histosCfg");
0011
0012 set_EfficiencyFlag = histosSet.getParameter<bool>("EfficiencyFlag");
0013 set_StatOverflowFlag = histosSet.getParameter<bool>("StatOverflowFlag");
0014 }
0015
0016 ElectronMcSignalPostValidator::~ElectronMcSignalPostValidator() {}
0017
0018 void ElectronMcSignalPostValidator::finalize(DQMStore::IBooker& iBooker, DQMStore::IGetter& iGetter) {
0019 setBookIndex(-1);
0020 setBookPrefix("h_ele");
0021 setBookEfficiencyFlag(set_EfficiencyFlag);
0022 setBookStatOverflowFlag(set_StatOverflowFlag);
0023
0024 edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "efficiency calculation";
0025 bookH1andDivide(iBooker,
0026 iGetter,
0027 "etaEff_Extended",
0028 "mc_Eta_Extended_matched",
0029 "mc_Eta_Extended",
0030 "#eta",
0031 "Efficiency",
0032 "Efficiency vs gen eta");
0033 bookH1andDivide(iBooker, iGetter, "zEff", "mc_Z_matched", "mc_Z", "z (cm)", "Efficiency", "");
0034 bookH1andDivide(iBooker,
0035 iGetter,
0036 "absetaEff_Extended",
0037 "mc_AbsEta_Extended_matched",
0038 "mc_AbsEta_Extended",
0039 "|#eta|",
0040 "Efficiency",
0041 "");
0042 bookH1andDivide(iBooker, iGetter, "ptEff", "mc_Pt_matched", "mc_Pt", "p_{T} (GeV/c)", "Efficiency", "");
0043 bookH1andDivide(iBooker, iGetter, "phiEff", "mc_Phi_matched", "mc_Phi", "#phi (rad)", "Efficiency", "");
0044
0045 edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "q-misid calculation";
0046 bookH1andDivide(iBooker, iGetter, "etaQmisid", "mc_Eta_matched_qmisid", "mc_Eta", "#eta", "q misId", "");
0047 bookH1andDivide(iBooker, iGetter, "zQmisid", "mc_Z_matched_qmisid", "mc_Z", "z (cm)", "q misId", "");
0048 bookH1andDivide(iBooker, iGetter, "absetaQmisid", "mc_AbsEta_matched_qmisid", "mc_AbsEta", "|#eta|", "q misId", "");
0049 bookH1andDivide(iBooker, iGetter, "ptQmisid", "mc_Pt_matched_qmisid", "mc_Pt", "p_{T} (GeV/c)", "q misId", "");
0050
0051 edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "all reco electrons";
0052 bookH1andDivide(iBooker, iGetter, "etaEff_all", "vertexEta_all", "h_mc_Eta", "#eta", "N_{rec}/N_{gen}", "");
0053 bookH1andDivide(iBooker, iGetter, "ptEff_all", "vertexPt_all", "h_mc_Pt", "p_{T} (GeV/c)", "N_{rec}/N_{gen}", "");
0054
0055 edm::LogInfo("ElectronMcSignalPostValidator::finalize") << "classes";
0056 bookH1andDivide(iBooker,
0057 iGetter,
0058 "eta_goldenFrac",
0059 "eta_golden",
0060 "h_ele_eta",
0061 "|#eta|",
0062 "Fraction of electrons",
0063 "fraction of golden electrons vs eta");
0064 bookH1andDivide(iBooker,
0065 iGetter,
0066 "eta_bbremFrac",
0067 "eta_bbrem",
0068 "h_ele_eta",
0069 "|#eta|",
0070 "Fraction of electrons",
0071 "fraction of big brem electrons vs eta");
0072 bookH1andDivide(iBooker,
0073 iGetter,
0074 "eta_showerFrac",
0075 "eta_shower",
0076 "h_ele_eta",
0077 "|#eta|",
0078 "Fraction of electrons",
0079 "fraction of showering electrons vs eta");
0080
0081
0082 MonitorElement* p1_ele_fbremVsEta_mean = get(iGetter, "fbremvsEtamean");
0083 TAxis* etaAxis = p1_ele_fbremVsEta_mean->getTProfile()->GetXaxis();
0084 MonitorElement* h1_ele_xOverX0VsEta = bookH1withSumw2(
0085 iBooker, "xOverx0VsEta", "mean X/X_0 vs eta", etaAxis->GetNbins(), etaAxis->GetXmin(), etaAxis->GetXmax());
0086 for (int ibin = 1; ibin < etaAxis->GetNbins() + 1; ibin++) {
0087 double xOverX0 = 0.;
0088 if (p1_ele_fbremVsEta_mean->getBinContent(ibin) > 0.) {
0089 xOverX0 = -log(p1_ele_fbremVsEta_mean->getBinContent(ibin));
0090 }
0091 h1_ele_xOverX0VsEta->setBinContent(ibin, xOverX0);
0092 }
0093
0094 MonitorElement* h1_ele_provenance = get(iGetter, "provenance");
0095 if (h1_ele_provenance->getBinContent(3) > 0) {
0096 h1_ele_provenance->getTH1F()->Scale(1. / h1_ele_provenance->getBinContent(3));
0097 }
0098 MonitorElement* h1_ele_provenance_barrel = get(iGetter, "provenance_barrel");
0099 if (h1_ele_provenance_barrel->getBinContent(3) > 0) {
0100 h1_ele_provenance_barrel->getTH1F()->Scale(1. / h1_ele_provenance_barrel->getBinContent(3));
0101 }
0102 MonitorElement* h1_ele_provenance_endcaps = get(iGetter, "provenance_endcaps");
0103 if (h1_ele_provenance_endcaps->getBinContent(3) > 0) {
0104 h1_ele_provenance_endcaps->getTH1F()->Scale(1. / h1_ele_provenance_endcaps->getBinContent(3));
0105 }
0106
0107 MonitorElement* h1_ele_provenance_Extended = get(iGetter, "provenance_Extended");
0108 if (h1_ele_provenance_Extended->getBinContent(3) > 0) {
0109 h1_ele_provenance_Extended->getTH1F()->Scale(1. / h1_ele_provenance_Extended->getBinContent(3));
0110 }
0111
0112
0113 profileX(iBooker,
0114 iGetter,
0115 "scl_EoEtrueVsrecOfflineVertices",
0116 "E/Etrue vs number of primary vertices",
0117 "N_{primary vertices}",
0118 "E/E_{true}",
0119 0.8);
0120 profileX(iBooker,
0121 iGetter,
0122 "scl_EoEtrueVsrecOfflineVertices_Extended",
0123 "E/Etrue vs number of primary vertices, 2.5<|eta|<3",
0124 "N_{primary vertices}",
0125 "E/E_{true}",
0126 0.8);
0127 profileX(iBooker,
0128 iGetter,
0129 "scl_EoEtrueVsrecOfflineVertices_barrel",
0130 "E/Etrue vs number of primary vertices , barrel",
0131 "N_{primary vertices}",
0132 "E/E_{true}",
0133 0.8);
0134 profileX(iBooker,
0135 iGetter,
0136 "scl_EoEtrueVsrecOfflineVertices_endcaps",
0137 "E/Etrue vs number of primary vertices , endcaps",
0138 "N_{primary vertices}",
0139 "E/E_{true}",
0140 0.8);
0141
0142 profileX(iBooker, iGetter, "PoPtrueVsEta_Extended", "mean ele momentum / gen momentum vs eta", "#eta", "<P/P_{gen}>");
0143 profileX(iBooker, iGetter, "PoPtrueVsPhi", "mean ele momentum / gen momentum vs phi", "#phi (rad)", "<P/P_{gen}>");
0144 profileX(iBooker, iGetter, "sigmaIetaIetaVsPt", "SigmaIetaIeta vs pt", "p_{T} (GeV/c)", "SigmaIetaIeta");
0145 profileX(iBooker,
0146 iGetter,
0147 "EoEtruePfVsEg",
0148 "mean mustache SC/true energy vs final SC/true energy",
0149 "E_{final SC}/E_{gen}",
0150 "E_{mustache}/E_{gen}");
0151 profileY(iBooker,
0152 iGetter,
0153 "EoEtruePfVsEg",
0154 "mean mustache SC/true energy vs final SC/true energy",
0155 "E_{final SC}/E_{gen}",
0156 "E_{mustache}/E_{gen}");
0157 profileX(iBooker, iGetter, "EtaMnEtaTrueVsEta", "mean ele eta - gen eta vs eta", "#eta", "<#eta_{rec} - #eta_{gen}>");
0158 profileX(
0159 iBooker, iGetter, "EtaMnEtaTrueVsPhi", "mean ele eta - gen eta vs phi", "#phi (rad)", "<#eta_{rec} - #eta_{gen}>");
0160 profileX(
0161 iBooker, iGetter, "PhiMnPhiTrueVsEta", "mean ele phi - gen phi vs eta", "#eta", "<#phi_{rec} - #phi_{gen}> (rad)");
0162 profileX(iBooker, iGetter, "PhiMnPhiTrueVsPhi", "mean ele phi - gen phi vs phi", "#phi (rad)", "");
0163 profileX(iBooker, iGetter, "vertexPtVsEta", "mean ele transverse momentum vs eta", "#eta", "<p_{T}> (GeV/c)");
0164 profileX(iBooker, iGetter, "vertexPtVsPhi", "mean ele transverse momentum vs phi", "#phi (rad)", "<p_{T}> (GeV/c)");
0165 profileX(iBooker, iGetter, "EoPVsEta_Extended", "mean ele E/p vs eta", "#eta", "<E/P_{vertex}>");
0166 profileX(iBooker, iGetter, "EoPVsPhi", "mean ele E/p vs phi", "#phi (rad)", "<E/P_{vertex}>");
0167 profileX(iBooker, iGetter, "EoPoutVsEta", "mean ele E/pout vs eta", "#eta", "<E_{seed}/P_{out}>");
0168 profileX(iBooker, iGetter, "EoPoutVsPhi", "mean ele E/pout vs phi", "#phi (rad)", "<E_{seed}/P_{out}>");
0169 profileX(iBooker, iGetter, "EeleOPoutVsEta", "mean ele Eele/pout vs eta", "#eta", "<E_{ele}/P_{out}>");
0170 profileX(iBooker, iGetter, "EeleOPoutVsPhi", "mean ele Eele/pout vs phi", "#phi (rad)", "<E_{ele}/P_{out}>");
0171 profileX(iBooker, iGetter, "HoEVsEta", "mean ele H/E vs eta", "#eta", "<H/E>");
0172 profileX(iBooker, iGetter, "HoEVsPhi", "mean ele H/E vs phi", "#phi (rad)", "<H/E>");
0173 profileX(iBooker, iGetter, "chi2VsEta", "mean ele track chi2 vs eta", "#eta", "<#Chi^{2}>");
0174 profileX(iBooker, iGetter, "chi2VsPhi", "mean ele track chi2 vs phi", "#phi (rad)", "<#Chi^{2}>");
0175 profileX(iBooker, iGetter, "ambiguousTracksVsEta", "mean ele # ambiguous tracks vs eta", "#eta", "<N_{ambiguous}>");
0176 profileX(iBooker, iGetter, "foundHitsVsEta_Extended", "mean ele track # found hits vs eta", "#eta", "<N_{hits}>");
0177 profileX(iBooker, iGetter, "foundHitsVsEta_mAOD", "mean ele track # found hits vs eta", "#eta", "<N_{hits}>");
0178 profileX(iBooker, iGetter, "foundHitsVsPhi", "mean ele track # found hits vs phi", "#phi (rad)", "<N_{hits}>");
0179 profileX(iBooker, iGetter, "lostHitsVsEta", "mean ele track # lost hits vs eta", "#eta", "<N_{hits}>");
0180 profileX(iBooker, iGetter, "lostHitsVsPhi", "mean ele track # lost hits vs phi", "#phi (rad)", "<N_{hits}>");
0181 profileX(iBooker, iGetter, "vertexTIPVsEta", "mean tip (wrt gen vtx) vs eta", "#eta", "<TIP> (cm)");
0182 profileX(iBooker, iGetter, "vertexTIPVsPhi", "mean tip (wrt gen vtx) vs phi", "#phi", "<TIP> (cm)");
0183 profileX(iBooker, iGetter, "vertexTIPVsPt", "mean tip (wrt gen vtx) vs phi", "p_{T} (GeV/c)", "<TIP> (cm)");
0184 profileX(iBooker,
0185 iGetter,
0186 "seedDphi2_VsEta",
0187 "mean ele seed dphi 2nd layer vs eta",
0188 "#eta",
0189 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0190 -0.004,
0191 0.004);
0192 profileX(iBooker,
0193 iGetter,
0194 "seedDphi2_VsPt",
0195 "mean ele seed dphi 2nd layer vs pt",
0196 "p_{T} (GeV/c)",
0197 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0198 -0.004,
0199 0.004);
0200 profileX(iBooker,
0201 iGetter,
0202 "seedDrz2_VsEta",
0203 "mean ele seed dr(dz) 2nd layer vs eta",
0204 "#eta",
0205 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0206 -0.15,
0207 0.15);
0208 profileX(iBooker,
0209 iGetter,
0210 "seedDrz2_VsPt",
0211 "mean ele seed dr(dz) 2nd layer vs pt",
0212 "p_{T} (GeV/c)",
0213 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0214 -0.15,
0215 0.15);
0216 profileX(iBooker,
0217 iGetter,
0218 "seedDphi2Pos_VsEta",
0219 "mean ele seed dphi 2nd layer positron vs eta",
0220 "#eta",
0221 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0222 -0.004,
0223 0.004);
0224 profileX(iBooker,
0225 iGetter,
0226 "seedDphi2Pos_VsPt",
0227 "mean ele seed dphi 2nd layer positron vs pt",
0228 "p_{T} (GeV/c)",
0229 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0230 -0.004,
0231 0.004);
0232 profileX(iBooker,
0233 iGetter,
0234 "seedDrz2Pos_VsEta",
0235 "mean ele seed dr(dz) 2nd layer positron vs eta",
0236 "#eta",
0237 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0238 -0.15,
0239 0.15);
0240 profileX(iBooker,
0241 iGetter,
0242 "seedDrz2Pos_VsPt",
0243 "mean ele seed dr(dz) 2nd layer positron vs pt",
0244 "p_{T} (GeV/c)",
0245 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0246 -0.15,
0247 0.15);
0248
0249 }