File indexing completed on 2023-03-17 10:55:00
0001 #ifndef FOURVECTORHLT_H
0002 #define FOURVECTORHLT_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include <memory>
0024 #include <unistd.h>
0025
0026
0027 #include "FWCore/Framework/interface/Frameworkfwd.h"
0028 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0029
0030 #include "FWCore/Framework/interface/Event.h"
0031 #include "FWCore/Framework/interface/MakerMacros.h"
0032 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
0033
0034 #include "DQMServices/Core/interface/DQMStore.h"
0035 #include "FWCore/ServiceRegistry/interface/Service.h"
0036 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0037 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0038 #include <iostream>
0039 #include <fstream>
0040 #include <vector>
0041
0042
0043
0044
0045
0046 class FourVectorHLT : public edm::one::EDAnalyzer<edm::one::SharedResources, edm::one::WatchRuns> {
0047 public:
0048 typedef dqm::legacy::MonitorElement MonitorElement;
0049 typedef dqm::legacy::DQMStore DQMStore;
0050
0051 explicit FourVectorHLT(const edm::ParameterSet&);
0052 ~FourVectorHLT() override;
0053
0054 private:
0055 void beginJob() override;
0056 void analyze(const edm::Event&, const edm::EventSetup&) override;
0057 void endJob() override;
0058
0059
0060 void beginRun(const edm::Run& run, const edm::EventSetup& c) override;
0061
0062
0063 void endRun(const edm::Run& run, const edm::EventSetup& c) override;
0064
0065
0066 int nev_;
0067 DQMStore* dbe_;
0068
0069 bool plotAll_;
0070
0071 unsigned int nBins_;
0072 double ptMin_;
0073 double ptMax_;
0074
0075 std::string dirname_;
0076 edm::InputTag triggerSummaryLabel_;
0077 edm::InputTag triggerResultLabel_;
0078
0079
0080 edm::EDGetTokenT<trigger::TriggerEvent> triggerSummaryToken_;
0081
0082
0083 class PathInfo {
0084 PathInfo() : pathIndex_(-1), pathName_("unset"), objectType_(-1){};
0085
0086 public:
0087 void setHistos(MonitorElement* const et,
0088 MonitorElement* const eta,
0089 MonitorElement* const phi,
0090 MonitorElement* const etavsphi) {
0091 et_ = et;
0092 eta_ = eta;
0093 phi_ = phi;
0094 etavsphi_ = etavsphi;
0095 }
0096 MonitorElement* getEtHisto() { return et_; }
0097 MonitorElement* getEtaHisto() { return eta_; }
0098 MonitorElement* getPhiHisto() { return phi_; }
0099 MonitorElement* getEtaVsPhiHisto() { return etavsphi_; }
0100 const std::string getName(void) const { return pathName_; }
0101 ~PathInfo(){};
0102 PathInfo(std::string pathName, size_t type, float ptmin, float ptmax)
0103 : pathName_(pathName),
0104 objectType_(type),
0105 et_(nullptr),
0106 eta_(nullptr),
0107 phi_(nullptr),
0108 etavsphi_(nullptr),
0109 ptmin_(ptmin),
0110 ptmax_(ptmax){};
0111 PathInfo(std::string pathName,
0112 size_t type,
0113 MonitorElement* et,
0114 MonitorElement* eta,
0115 MonitorElement* phi,
0116 MonitorElement* etavsphi,
0117 float ptmin,
0118 float ptmax)
0119 : pathName_(pathName),
0120 objectType_(type),
0121 et_(et),
0122 eta_(eta),
0123 phi_(phi),
0124 etavsphi_(etavsphi),
0125 ptmin_(ptmin),
0126 ptmax_(ptmax){};
0127 bool operator==(const std::string v) { return v == pathName_; }
0128
0129 private:
0130 int pathIndex_;
0131 std::string pathName_;
0132 int objectType_;
0133
0134
0135 MonitorElement *et_, *eta_, *phi_, *etavsphi_;
0136
0137 float ptmin_, ptmax_;
0138
0139 const int index() { return pathIndex_; }
0140 const int type() { return objectType_; }
0141
0142 public:
0143 float getPtMin() const { return ptmin_; }
0144 float getPtMax() const { return ptmax_; }
0145 };
0146
0147
0148 class PathInfoCollection : public std::vector<PathInfo> {
0149 public:
0150 PathInfoCollection() : std::vector<PathInfo>(){};
0151 std::vector<PathInfo>::iterator find(std::string pathName) { return std::find(begin(), end(), pathName); }
0152 };
0153 PathInfoCollection hltPaths_;
0154 };
0155 #endif