Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:33:00

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   // histos bining and limits
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");  //Efficiency vs gen eta --- Eta of matched electrons
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   // fbrem
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   // profiles from 2D histos
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 }