File indexing completed on 2024-04-06 12:32:58
0001
0002 #include "Validation/RecoEgamma/plugins/ElectronMcFakePostValidator.h"
0003 #include "DQMServices/Core/interface/DQMStore.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005
0006 ElectronMcFakePostValidator::ElectronMcFakePostValidator(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 ElectronMcFakePostValidator::~ElectronMcFakePostValidator() {}
0017
0018 void ElectronMcFakePostValidator::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("ElectronMcFakePostValidator::finalize") << "efficiency calculation ";
0025 bookH1andDivide(iBooker,
0026 iGetter,
0027 "etaEff_Extended",
0028 "matchingObjectEta_Extended_matched",
0029 "matchingObject_eta_Extended",
0030 "#eta",
0031 "Efficiency",
0032 "");
0033 bookH1andDivide(iBooker,
0034 iGetter,
0035 "absetaEff_Extended",
0036 "matchingObjectAbsEta_Extended_matched",
0037 "matchingObject_abseta_Extended",
0038 "|#eta|",
0039 "Efficiency",
0040 "");
0041 bookH1andDivide(iBooker, iGetter, "zEff", "matchingObjectZ_matched", "matchingObject_z", "z (cm)", "Efficiency", "");
0042 bookH1andDivide(
0043 iBooker, iGetter, "ptEff", "matchingObjectPt_matched", "matchingObject_Pt", "p_{T} (GeV/c)", "Efficiency", "");
0044 bookH1andDivide(
0045 iBooker, iGetter, "phiEff", "matchingObjectPhi_matched", "matchingObject_phi", "#phi (rad)", "Efficiency", "");
0046
0047
0048
0049
0050
0051
0052
0053 edm::LogInfo("ElectronMcFakePostValidator::finalize") << "all reco electrons ";
0054 bookH1andDivide(iBooker, iGetter, "etaEff_all", "vertexEta_all", "matchingObject_eta", "#eta", "N_{rec}/N_{gen}", "");
0055 bookH1andDivide(
0056 iBooker, iGetter, "ptEff_all", "vertexPt_all", "matchingObject_Pt", "p_{T} (GeV/c)", "N_{rec}/N_{gen}", "");
0057
0058 edm::LogInfo("ElectronMcFakePostValidator::finalize") << "classes";
0059 bookH1andDivide(iBooker,
0060 iGetter,
0061 "eta_goldenFrac",
0062 "eta_golden",
0063 "h_ele_eta",
0064 "|#eta|",
0065 "Fraction of electrons",
0066 "fraction of golden electrons vs eta");
0067 bookH1andDivide(iBooker,
0068 iGetter,
0069 "eta_bbremFrac",
0070 "eta_bbrem",
0071 "h_ele_eta",
0072 "|#eta|",
0073 "Fraction of electrons",
0074 "fraction of big brem electrons vs eta");
0075
0076 bookH1andDivide(iBooker,
0077 iGetter,
0078 "eta_showerFrac",
0079 "eta_shower",
0080 "h_ele_eta",
0081 "|#eta|",
0082 "Fraction of electrons",
0083 "fraction of showering electrons vs eta");
0084
0085
0086 MonitorElement* p1_ele_fbremVsEta_mean = get(iGetter, "fbremvsEtamean");
0087 TAxis* etaAxis = p1_ele_fbremVsEta_mean->getTProfile()->GetXaxis();
0088 MonitorElement* h1_ele_xOverX0VsEta = bookH1withSumw2(
0089 iBooker, "xOverx0VsEta", "mean X/X_0 vs eta", etaAxis->GetNbins(), etaAxis->GetXmin(), etaAxis->GetXmax());
0090 for (int ibin = 1; ibin < etaAxis->GetNbins() + 1; ibin++) {
0091 double xOverX0 = 0.;
0092 if (p1_ele_fbremVsEta_mean->getBinContent(ibin) > 0.) {
0093 xOverX0 = -log(p1_ele_fbremVsEta_mean->getBinContent(ibin));
0094 }
0095 h1_ele_xOverX0VsEta->setBinContent(ibin, xOverX0);
0096 }
0097
0098
0099 MonitorElement* h1_ele_provenance = get(iGetter, "provenance");
0100 if (h1_ele_provenance->getBinContent(3) > 0) {
0101 h1_ele_provenance->getTH1F()->Scale(1. / h1_ele_provenance->getBinContent(3));
0102 }
0103 MonitorElement* h1_ele_provenance_barrel = get(iGetter, "provenance_barrel");
0104 if (h1_ele_provenance_barrel->getBinContent(3) > 0) {
0105 h1_ele_provenance_barrel->getTH1F()->Scale(1. / h1_ele_provenance_barrel->getBinContent(3));
0106 }
0107 MonitorElement* h1_ele_provenance_endcaps = get(iGetter, "provenance_endcaps");
0108 if (h1_ele_provenance_endcaps->getBinContent(3) > 0) {
0109 h1_ele_provenance_endcaps->getTH1F()->Scale(1. / h1_ele_provenance_endcaps->getBinContent(3));
0110 }
0111 MonitorElement* h1_ele_provenance_Extended = get(iGetter, "provenance_Extended");
0112 if (h1_ele_provenance_Extended->getBinContent(3) > 0) {
0113 h1_ele_provenance_Extended->getTH1F()->Scale(1. / h1_ele_provenance_Extended->getBinContent(3));
0114 }
0115
0116
0117 profileX(iBooker, iGetter, "PoPmatchingObjectVsEta", "", "#eta", "<P/P_{gen}>");
0118 profileX(iBooker, iGetter, "PoPmatchingObjectVsPhi", "", "#phi (rad)", "<P/P_{gen}>");
0119 profileX(iBooker, iGetter, "EtaMnEtamatchingObjectVsEta", "", "#eta", "<#eta_{rec} - #eta_{gen}>");
0120 profileX(iBooker, iGetter, "EtaMnEtamatchingObjectVsPhi", "", "#phi (rad)", "<#eta_{rec} - #eta_{gen}>");
0121 profileX(iBooker, iGetter, "PhiMnPhimatchingObjectVsEta", "", "#eta", "<#phi_{rec} - #phi_{gen}> (rad)");
0122 profileX(iBooker, iGetter, "PhiMnPhimatchingObjectVsPhi", "", "#phi (rad)", "");
0123 profileX(iBooker, iGetter, "vertexPtVsEta", "mean ele transverse momentum vs eta", "#eta", "<p_{T}> (GeV/c)");
0124 profileX(iBooker, iGetter, "vertexPtVsPhi", "mean ele transverse momentum vs phi", "#phi (rad)", "<p_{T}> (GeV/c)");
0125 profileX(iBooker, iGetter, "EoPVsEta_Extended", "mean ele E/p vs eta", "#eta", "<E/P_{vertex}>");
0126 profileX(iBooker, iGetter, "EoPVsPhi", "mean ele E/p vs phi", "#phi (rad)", "<E/P_{vertex}>");
0127 profileX(iBooker, iGetter, "EoPoutVsEta", "mean ele E/pout vs eta", "#eta", "<E_{seed}/P_{out}>");
0128 profileX(iBooker, iGetter, "EoPoutVsPhi", "mean ele E/pout vs phi", "#phi (rad)", "<E_{seed}/P_{out}>");
0129 profileX(iBooker, iGetter, "EeleOPoutVsEta", "mean ele Eele/pout vs eta", "#eta", "<E_{ele}/P_{out}>");
0130 profileX(iBooker, iGetter, "EeleOPoutVsPhi", "mean ele Eele/pout vs phi", "#phi (rad)", "<E_{ele}/P_{out}>");
0131 profileX(iBooker, iGetter, "HoEVsEta", "mean ele H/E vs eta", "#eta", "<H/E>");
0132 profileX(iBooker, iGetter, "HoEVsPhi", "mean ele H/E vs phi", "#phi (rad)", "<H/E>");
0133 profileX(iBooker, iGetter, "chi2VsEta", "mean ele track chi2 vs eta", "#eta", "<#Chi^{2}>");
0134 profileX(iBooker, iGetter, "chi2VsPhi", "mean ele track chi2 vs phi", "#phi (rad)", "<#Chi^{2}>");
0135 profileX(iBooker, iGetter, "foundHitsVsEta_Extended", "mean ele track # found hits vs eta", "#eta", "<N_{hits}>");
0136 profileX(iBooker, iGetter, "foundHitsVsPhi", "mean ele track # found hits vs phi", "#phi (rad)", "<N_{hits}>");
0137 profileX(iBooker, iGetter, "lostHitsVsEta", "mean ele track # lost hits vs eta", "#eta", "<N_{hits}>");
0138 profileX(iBooker, iGetter, "lostHitsVsPhi", "mean ele track # lost hits vs phi", "#phi (rad)", "<N_{hits}>");
0139 profileX(iBooker, iGetter, "vertexTIPVsEta", "mean tip (wrt gen vtx) vs eta", "#eta", "<TIP> (cm)");
0140 profileX(iBooker, iGetter, "vertexTIPVsPhi", "mean tip (wrt gen vtx) vs phi", "#phi", "<TIP> (cm)");
0141 profileX(iBooker, iGetter, "vertexTIPVsPt", "mean tip (wrt gen vtx) vs phi", "p_{T} (GeV/c)", "<TIP> (cm)");
0142 profileX(iBooker,
0143 iGetter,
0144 "seedDphi2_VsEta",
0145 "mean ele seed dphi 2nd layer vs eta",
0146 "#eta",
0147 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0148 -0.004,
0149 0.004);
0150 profileX(iBooker,
0151 iGetter,
0152 "seedDphi2_VsPt",
0153 "mean ele seed dphi 2nd layer vs pt",
0154 "p_{T} (GeV/c)",
0155 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0156 -0.004,
0157 0.004);
0158 profileX(iBooker,
0159 iGetter,
0160 "seedDrz2_VsEta",
0161 "mean ele seed dr(dz) 2nd layer vs eta",
0162 "#eta",
0163 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0164 -0.15,
0165 0.15);
0166 profileX(iBooker,
0167 iGetter,
0168 "seedDrz2_VsPt",
0169 "mean ele seed dr(dz) 2nd layer vs pt",
0170 "p_{T} (GeV/c)",
0171 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0172 -0.15,
0173 0.15);
0174 profileX(iBooker,
0175 iGetter,
0176 "seedDphi2Pos_VsEta",
0177 "mean ele seed dphi 2nd layer positron vs eta",
0178 "#eta",
0179 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0180 -0.004,
0181 0.004);
0182 profileX(iBooker,
0183 iGetter,
0184 "seedDphi2Pos_VsPt",
0185 "mean ele seed dphi 2nd layer positron vs pt",
0186 "p_{T} (GeV/c)",
0187 "<#phi_{pred} - #phi_{hit}, 2nd layer> (rad)",
0188 -0.004,
0189 0.004);
0190 profileX(iBooker,
0191 iGetter,
0192 "seedDrz2Pos_VsEta",
0193 "mean ele seed dr(dz) 2nd layer positron vs eta",
0194 "#eta",
0195 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0196 -0.15,
0197 0.15);
0198 profileX(iBooker,
0199 iGetter,
0200 "seedDrz2Pos_VsPt",
0201 "mean ele seed dr(dz) 2nd layer positron vs pt",
0202 "p_{T} (GeV/c)",
0203 "<r(z)_{pred} - r(z)_{hit}, 2nd layer> (cm)",
0204 -0.15,
0205 0.15);
0206
0207 }