File indexing completed on 2024-04-06 12:07:44
0001
0002 #ifndef L1TCOMPARE_H
0003 #define L1TCOMPARE_H
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021 #include <unistd.h>
0022
0023 #include <iostream>
0024 #include <fstream>
0025 #include <vector>
0026
0027
0028 #include "FWCore/Framework/interface/Frameworkfwd.h"
0029
0030 #include "FWCore/Framework/interface/Event.h"
0031 #include "FWCore/Framework/interface/MakerMacros.h"
0032
0033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0034
0035 #include "FWCore/ServiceRegistry/interface/Service.h"
0036 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0037
0038
0039 #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctCollections.h"
0040 #include "DataFormats/L1CaloTrigger/interface/L1CaloCollections.h"
0041 #include "DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h"
0042
0043
0044 #include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h"
0045 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
0046 #include "DataFormats/L1Trigger/interface/L1EtMissParticleFwd.h"
0047
0048
0049 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0050
0051
0052 #include "DQMServices/Core/interface/DQMStore.h"
0053
0054 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0055
0056
0057
0058
0059
0060
0061 class L1TCompare : public DQMEDAnalyzer {
0062 public:
0063
0064 L1TCompare(const edm::ParameterSet& ps);
0065
0066
0067 ~L1TCompare() override;
0068
0069 protected:
0070
0071 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0072
0073
0074 void bookHistograms(DQMStore::IBooker& ibooker, edm::Run const&, edm::EventSetup const&) override;
0075 void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override;
0076
0077 private:
0078
0079
0080
0081
0082 MonitorElement* rctGctLeadingIsoEmEta_;
0083 MonitorElement* rctGctLeadingIsoEmPhi_;
0084 MonitorElement* rctGctLeadingIsoEmRank_;
0085
0086 MonitorElement* rctGctLeadingNonIsoEmEta_;
0087 MonitorElement* rctGctLeadingNonIsoEmPhi_;
0088 MonitorElement* rctGctLeadingNonIsoEmRank_;
0089
0090
0091 MonitorElement* ecalTpgRctLeadingEmEta_;
0092 MonitorElement* ecalTpgRctLeadingEmEta2_;
0093 MonitorElement* ecalTpgRctLeadingEmPhi_;
0094 MonitorElement* ecalTpgRctLeadingEmRank_;
0095
0096 int nev_;
0097 std::string outputFile_;
0098 bool verbose_;
0099 bool verbose() const { return verbose_; };
0100 bool monitorDaemon_;
0101 std::ofstream logFile_;
0102
0103 edm::EDGetTokenT<L1CaloEmCollection> rctSourceEm_token_;
0104 edm::EDGetTokenT<L1CaloRegionCollection> rctSourceRctEmRgn_token_;
0105 edm::InputTag rctSource_;
0106 edm::InputTag gctSource_;
0107 edm::InputTag ecalTpgSource_;
0108 edm::EDGetTokenT<EcalTrigPrimDigiCollection> ecalTpgSource_token_;
0109
0110
0111 edm::EDGetTokenT<L1GctJetCandCollection> gctCenJetsToken_;
0112 edm::EDGetTokenT<L1GctEmCandCollection> gctIsoEmCandsToken_;
0113 edm::EDGetTokenT<L1GctEmCandCollection> gctNonIsoEmCandsToken_;
0114
0115 class RctObject {
0116 public:
0117 RctObject(int eta, int phi, int rank) : eta_(eta), phi_(phi), rank_(rank) {}
0118 virtual ~RctObject() {}
0119 int eta_, phi_;
0120 int rank_;
0121 };
0122 typedef std::vector<L1TCompare::RctObject> RctObjectCollection;
0123
0124
0125
0126
0127 static bool rctObjectComp(const RctObject& a, const RctObject& b) {
0128
0129 if (a.rank_ == b.rank_) {
0130 if (a.eta_ == b.eta_) {
0131 return a.phi_ < b.phi_;
0132 } else {
0133 return a.eta_ < b.eta_;
0134 }
0135 } else {
0136 return a.rank_ < b.rank_;
0137 }
0138 }
0139 };
0140
0141 #endif