File indexing completed on 2024-04-06 12:09:22
0001 #include <iostream>
0002
0003 #include "DQMOffline/EGamma/plugins/PhotonDataCertification.h"
0004 #include "FWCore/Framework/interface/Run.h"
0005 #include "RooGlobalFunc.h"
0006 #include "RooRealVar.h"
0007 #include "RooDataSet.h"
0008 #include "RooBreitWigner.h"
0009 #include "RooDataHist.h"
0010 #include "RooFitResult.h"
0011
0012
0013
0014
0015
0016
0017
0018
0019 using namespace std;
0020
0021 PhotonDataCertification::PhotonDataCertification(const edm::ParameterSet& pset)
0022
0023 {
0024 parameters_ = pset;
0025 verbose_ = parameters_.getParameter<bool>("verbose");
0026
0027 if (verbose_)
0028 cout << ">>> Constructor (PhotonDataCertification) <<<" << endl;
0029 }
0030
0031 PhotonDataCertification::~PhotonDataCertification() {}
0032
0033
0034 void PhotonDataCertification::dqmEndJob(DQMStore::IBooker& ibooker, DQMStore::IGetter& igetter) {
0035 using namespace RooFit;
0036 if (verbose_)
0037 std::cout << ">>> endJob (PhotonDataCertification) <<<" << std::endl;
0038
0039
0040 ibooker.setCurrentFolder("Egamma/EventInfo/");
0041 reportSummary_ = ibooker.bookFloat("reportSummary");
0042 reportSummaryMap_ = ibooker.book2D("reportSummaryMap", "reportSummaryMap", 3, 0, 3, 1, 0, 1);
0043
0044 TH2F* reportSummaryMapTH2 = reportSummaryMap_->getTH2F();
0045 reportSummaryMapTH2->GetXaxis()->SetBinLabel(1, "EB");
0046 reportSummaryMapTH2->GetXaxis()->SetBinLabel(2, "EE");
0047 reportSummaryMapTH2->GetXaxis()->SetBinLabel(3, "Total");
0048 reportSummaryMapTH2->GetYaxis()->SetBinLabel(1, "InvMassTest");
0049
0050 float EBResult = invMassZtest(
0051 "Egamma/stdPhotonAnalyzer/InvMass/h_02_invMassIsoPhotonsEBarrel", "invMassIsolatedPhotonsEB", igetter);
0052
0053 float EEResult = invMassZtest(
0054 "Egamma/stdPhotonAnalyzer/InvMass/h_03_invMassIsoPhotonsEEndcap", "invMassIsolatedPhotonsEE", igetter);
0055
0056 float AllResult = invMassZtest(
0057 "Egamma/stdPhotonAnalyzer/InvMass/h_01_invMassAllIsolatedPhotons", "invMassAllIsolatedPhotons", igetter);
0058
0059 if (verbose_) {
0060 std::cout << "EBResult: " << EBResult << std::endl;
0061 std::cout << "EEResult: " << EEResult << std::endl;
0062 std::cout << "AllResult: " << AllResult << std::endl;
0063 }
0064
0065 reportSummaryMapTH2->SetBinContent(1, 1, EBResult);
0066 reportSummaryMapTH2->SetBinContent(2, 1, EEResult);
0067 reportSummaryMapTH2->SetBinContent(3, 1, AllResult);
0068 reportSummary_->Fill(AllResult);
0069 }
0070
0071 float PhotonDataCertification::invMassZtest(string path, TString name, DQMStore::IGetter& igetter) {
0072 float ZMass = 91.2;
0073 float ZWidth = 2.5;
0074 MonitorElement* TestElem = nullptr;
0075 TestElem = igetter.get(path);
0076 if (TestElem == nullptr)
0077 return 0;
0078 TH1F* TestHist = TestElem->getTH1F();
0079 if (TestHist == nullptr)
0080 return 0;
0081 RooMsgService::instance().setGlobalKillBelow(RooFit::WARNING);
0082 RooRealVar mass("mass", "Mass_{2#gamma}", 0, 200, "GeV");
0083 RooRealVar mRes("M_{Z}", "Z Mass", ZMass, 70, 110);
0084 RooRealVar gamma("#Gamma", "#Gamma", ZWidth, 0, 10.0);
0085 RooBreitWigner BreitWigner("BreitWigner", "Breit-Wigner", mass, mRes, gamma);
0086 RooDataHist test(name, name, mass, TestHist);
0087
0088 BreitWigner.fitTo(test, RooFit::Range(80, 100), RooFit::PrintLevel(-1000));
0089
0090 if (std::abs(mRes.getVal() - ZMass) < ZWidth) {
0091 return 1.0;
0092 } else if (std::abs(mRes.getVal() - ZMass) < gamma.getVal()) {
0093 return 0.9;
0094 } else {
0095 return 0.0;
0096 }
0097 }