File indexing completed on 2024-09-11 04:32:52
0001
0002
0003 #include "DQMOffline/Trigger/interface/JetMETHLTOfflineClient.h"
0004
0005 #include "FWCore/Framework/interface/Run.h"
0006 #include "FWCore/Framework/interface/Event.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 #include "FWCore/ServiceRegistry/interface/Service.h"
0009
0010 #include "DQMServices/Core/interface/DQMStore.h"
0011
0012 JetMETHLTOfflineClient::JetMETHLTOfflineClient(const edm::ParameterSet& iConfig) : conf_(iConfig) {
0013 debug_ = false;
0014 verbose_ = false;
0015
0016 processname_ = iConfig.getParameter<std::string>("processname");
0017
0018 hltTag_ = iConfig.getParameter<std::string>("hltTag");
0019 if (debug_)
0020 std::cout << hltTag_ << std::endl;
0021
0022 dirName_ = iConfig.getParameter<std::string>("DQMDirName");
0023 }
0024
0025 JetMETHLTOfflineClient::~JetMETHLTOfflineClient() = default;
0026
0027 void JetMETHLTOfflineClient::dqmEndJob(DQMStore::IBooker& ibooker, DQMStore::IGetter& igetter) {
0028 ibooker.setCurrentFolder(dirName_);
0029
0030 LogDebug("JetMETHLTOfflineClient") << "dqmEndJob" << std::endl;
0031 if (debug_)
0032 std::cout << "dqmEndJob" << std::endl;
0033
0034 std::vector<MonitorElement*> hltMEs;
0035
0036
0037 std::vector<std::string> fullPathHLTFolders = igetter.getSubdirs();
0038 for (auto& fullPathHLTFolder : fullPathHLTFolders) {
0039
0040 if (debug_)
0041 std::cout << fullPathHLTFolder << std::endl;
0042 if ((fullPathHLTFolder.find("Eff") != std::string::npos)) {
0043 ibooker.setCurrentFolder(fullPathHLTFolder);
0044 } else {
0045 continue;
0046 }
0047
0048
0049 std::vector<std::string> fullSubPathHLTFolders = igetter.getSubdirs();
0050 for (auto& fullSubPathHLTFolder : fullSubPathHLTFolders) {
0051 if (debug_)
0052 std::cout << fullSubPathHLTFolder << std::endl;
0053 ibooker.setCurrentFolder(fullSubPathHLTFolder);
0054
0055
0056 hltMEs = igetter.getContents(fullSubPathHLTFolder);
0057 LogDebug("JetMETHLTOfflineClient") << "Number of MEs for this HLT path = " << hltMEs.size() << std::endl;
0058
0059 for (unsigned int k = 0; k < hltMEs.size(); k++) {
0060 if (debug_)
0061 std::cout << hltMEs[k]->getName() << std::endl;
0062
0063
0064 if ((hltMEs[k]->getName().find("ME_Numerator") != std::string::npos) &&
0065 hltMEs[k]->getName().find("ME_Numerator") == 0) {
0066 std::string name = hltMEs[k]->getName();
0067 name.erase(0, 12);
0068 if (debug_)
0069 std::cout << "==name==" << name << std::endl;
0070
0071
0072 for (unsigned int l = 0; l < hltMEs.size(); l++) {
0073 if (hltMEs[l]->getName() == "ME_Denominator" + name) {
0074
0075 if (name.find("EtaPhi") != std::string::npos) {
0076 TH2F* tNumerator = hltMEs[k]->getTH2F();
0077 TH2F* tDenominator = hltMEs[l]->getTH2F();
0078
0079 std::string title = "Eff_" + hltMEs[k]->getTitle();
0080
0081 auto* teff = (TH2F*)tNumerator->Clone(title.c_str());
0082 teff->Divide(tNumerator, tDenominator, 1, 1);
0083 ibooker.book2D("ME_Eff_" + name, teff);
0084 delete teff;
0085 } else {
0086 TH1F* tNumerator = hltMEs[k]->getTH1F();
0087 TH1F* tDenominator = hltMEs[l]->getTH1F();
0088
0089 std::string title = "Eff_" + hltMEs[k]->getTitle();
0090
0091 auto* teff = (TH1F*)tNumerator->Clone(title.c_str());
0092 teff->Divide(tNumerator, tDenominator, 1, 1);
0093 ibooker.book1D("ME_Eff_" + name, teff);
0094 delete teff;
0095 }
0096 }
0097 }
0098 }
0099
0100 }
0101 }
0102 }
0103 }
0104
0105 #include "FWCore/Framework/interface/MakerMacros.h"
0106 DEFINE_FWK_MODULE(JetMETHLTOfflineClient);