Back to home page

Project CMSSW displayed by LXR

 
 

    


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   // 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 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   //    bookH2andDivide(iBooker,iGetter, "ptEtaEff","matchingObjectPtEta_matched","matchingObjectPtEta","#eta","p_{T} (GeV/c)","");
0047   //
0048   //    bookH1andDivide(iBooker,iGetter, "etaQmisid","matchingObjectEta_matched_qmisid","h_simEta","#eta","q misId","");
0049   //    bookH1andDivide(iBooker,iGetter, "zQmisid","matchingObjectZ_matched_qmisid","h_simZ","z (cm)","q misId","");
0050   //    bookH1andDivide(iBooker,iGetter, "absetaQmisid","matchingObjectAbsEta_matched_qmisid","h_simAbsEta","|#eta|","q misId","");
0051   //    bookH1andDivide(iBooker,iGetter, "ptQmisid","matchingObjectPt_matched_qmisid","h_simPt","p_{T} (GeV/c)","q misId","");
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   //  bookH1andDivide(iBooker,iGetter, "eta_narrowFrac","eta_narrow","h_ele_eta","|#eta|","Fraction of electrons","fraction of narrow electrons vs eta");
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   // fbrem
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   // profiles from 2D histos
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 }