File indexing completed on 2024-04-06 12:21:13
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include <memory>
0022
0023
0024 #include "FWCore/Framework/interface/Frameworkfwd.h"
0025 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/MakerMacros.h"
0028 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0029 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0030
0031
0032 #include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h"
0033 #include "DataFormats/L1Trigger/interface/L1EmParticle.h"
0034 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
0035 #include "DataFormats/L1Trigger/interface/L1JetParticle.h"
0036 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
0037 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
0038 #include "DataFormats/L1Trigger/interface/L1EtMissParticleFwd.h"
0039 #include "DataFormats/L1Trigger/interface/L1EtMissParticle.h"
0040 #include "DataFormats/L1Trigger/interface/L1HFRingsFwd.h"
0041 #include "DataFormats/L1Trigger/interface/L1HFRings.h"
0042 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
0043
0044
0045 #include "FWCore/ServiceRegistry/interface/Service.h"
0046 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0047 #include "TTree.h"
0048
0049 #include "L1Trigger/L1TNtuples/interface/L1AnalysisL1Extra.h"
0050
0051
0052
0053
0054
0055 class L1ExtraTreeProducer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0056 public:
0057 explicit L1ExtraTreeProducer(const edm::ParameterSet&);
0058 ~L1ExtraTreeProducer() override;
0059
0060 private:
0061 void beginJob(void) override;
0062 void analyze(const edm::Event&, const edm::EventSetup&) override;
0063 void endJob() override;
0064
0065 public:
0066 L1Analysis::L1AnalysisL1Extra* l1Extra;
0067 L1Analysis::L1AnalysisL1ExtraDataFormat* l1ExtraData;
0068
0069 private:
0070 unsigned maxL1Extra_;
0071
0072
0073 edm::Service<TFileService> fs_;
0074
0075
0076 TTree* tree_;
0077
0078
0079 edm::EDGetTokenT<l1extra::L1EmParticleCollection> nonIsoEmToken_;
0080 edm::EDGetTokenT<l1extra::L1EmParticleCollection> isoEmToken_;
0081 edm::EDGetTokenT<l1extra::L1JetParticleCollection> tauJetToken_;
0082 edm::EDGetTokenT<l1extra::L1JetParticleCollection> isoTauJetToken_;
0083 edm::EDGetTokenT<l1extra::L1JetParticleCollection> cenJetToken_;
0084 edm::EDGetTokenT<l1extra::L1JetParticleCollection> fwdJetToken_;
0085 edm::EDGetTokenT<l1extra::L1MuonParticleCollection> muonToken_;
0086 edm::EDGetTokenT<l1extra::L1EtMissParticleCollection> metToken_;
0087 edm::EDGetTokenT<l1extra::L1EtMissParticleCollection> mhtToken_;
0088 edm::EDGetTokenT<l1extra::L1HFRingsCollection> hfRingsToken_;
0089 };
0090
0091 L1ExtraTreeProducer::L1ExtraTreeProducer(const edm::ParameterSet& iConfig) {
0092 nonIsoEmToken_ = consumes<l1extra::L1EmParticleCollection>(
0093 iConfig.getUntrackedParameter("nonIsoEmToken", edm::InputTag("l1extraParticles:NonIsolated")));
0094 isoEmToken_ = consumes<l1extra::L1EmParticleCollection>(
0095 iConfig.getUntrackedParameter("isoEmToken", edm::InputTag("l1extraParticles:Isolated")));
0096 tauJetToken_ = consumes<l1extra::L1JetParticleCollection>(
0097 iConfig.getUntrackedParameter("tauJetToken", edm::InputTag("l1extraParticles:Tau")));
0098 isoTauJetToken_ = consumes<l1extra::L1JetParticleCollection>(
0099 iConfig.getUntrackedParameter("isoTauJetToken", edm::InputTag("l1extraParticles:IsoTau")));
0100 cenJetToken_ = consumes<l1extra::L1JetParticleCollection>(
0101 iConfig.getUntrackedParameter("cenJetToken", edm::InputTag("l1extraParticles:Central")));
0102 fwdJetToken_ = consumes<l1extra::L1JetParticleCollection>(
0103 iConfig.getUntrackedParameter("fwdJetToken", edm::InputTag("l1extraParticles:Forward")));
0104 muonToken_ = consumes<l1extra::L1MuonParticleCollection>(
0105 iConfig.getUntrackedParameter("muonToken", edm::InputTag("l1extraParticles")));
0106 metToken_ = consumes<l1extra::L1EtMissParticleCollection>(
0107 iConfig.getUntrackedParameter("metToken", edm::InputTag("l1extraParticles:MET")));
0108 mhtToken_ = consumes<l1extra::L1EtMissParticleCollection>(
0109 iConfig.getUntrackedParameter("mhtToken", edm::InputTag("l1extraParticles:MHT")));
0110 hfRingsToken_ = consumes<l1extra::L1HFRingsCollection>(
0111 iConfig.getUntrackedParameter("hfRingsToken", edm::InputTag("l1extraParticles")));
0112
0113 maxL1Extra_ = iConfig.getParameter<unsigned int>("maxL1Extra");
0114
0115 l1Extra = new L1Analysis::L1AnalysisL1Extra();
0116 l1ExtraData = l1Extra->getData();
0117
0118 usesResource(TFileService::kSharedResource);
0119
0120 tree_ = fs_->make<TTree>("L1ExtraTree", "L1ExtraTree");
0121 tree_->Branch("L1Extra", "L1Analysis::L1AnalysisL1ExtraDataFormat", &l1ExtraData, 32000, 3);
0122 }
0123
0124 L1ExtraTreeProducer::~L1ExtraTreeProducer() {
0125
0126
0127 }
0128
0129
0130
0131
0132
0133
0134 void L1ExtraTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0135 l1Extra->Reset();
0136
0137 edm::Handle<l1extra::L1EmParticleCollection> isoEm;
0138 edm::Handle<l1extra::L1EmParticleCollection> nonIsoEm;
0139 edm::Handle<l1extra::L1JetParticleCollection> cenJet;
0140 edm::Handle<l1extra::L1JetParticleCollection> fwdJet;
0141 edm::Handle<l1extra::L1JetParticleCollection> tauJet;
0142 edm::Handle<l1extra::L1JetParticleCollection> isoTauJet;
0143 edm::Handle<l1extra::L1MuonParticleCollection> muon;
0144 ;
0145 edm::Handle<l1extra::L1EtMissParticleCollection> mets;
0146 edm::Handle<l1extra::L1EtMissParticleCollection> mhts;
0147 edm::Handle<l1extra::L1HFRingsCollection> hfRings;
0148
0149 iEvent.getByToken(nonIsoEmToken_, nonIsoEm);
0150 iEvent.getByToken(isoEmToken_, isoEm);
0151 iEvent.getByToken(tauJetToken_, tauJet);
0152 iEvent.getByToken(isoTauJetToken_, isoTauJet);
0153 iEvent.getByToken(cenJetToken_, cenJet);
0154 iEvent.getByToken(fwdJetToken_, fwdJet);
0155 iEvent.getByToken(muonToken_, muon);
0156 iEvent.getByToken(metToken_, mets);
0157 iEvent.getByToken(mhtToken_, mhts);
0158 iEvent.getByToken(hfRingsToken_, hfRings);
0159
0160 if (isoEm.isValid()) {
0161 l1Extra->SetIsoEm(isoEm, maxL1Extra_);
0162 } else {
0163 edm::LogWarning("MissingProduct") << "L1Extra Iso Em not found. Branch will not be filled" << std::endl;
0164 }
0165
0166 if (nonIsoEm.isValid()) {
0167 l1Extra->SetNonIsoEm(nonIsoEm, maxL1Extra_);
0168 } else {
0169 edm::LogWarning("MissingProduct") << "L1Extra Non Iso Em not found. Branch will not be filled" << std::endl;
0170 }
0171
0172 if (cenJet.isValid()) {
0173 l1Extra->SetCenJet(cenJet, maxL1Extra_);
0174 } else {
0175 edm::LogWarning("MissingProduct") << "L1Extra Central Jets not found. Branch will not be filled" << std::endl;
0176 }
0177
0178 if (tauJet.isValid()) {
0179 l1Extra->SetTauJet(tauJet, maxL1Extra_);
0180 } else {
0181 edm::LogWarning("MissingProduct") << "L1Extra Tau Jets not found. Branch will not be filled" << std::endl;
0182 }
0183
0184 if (isoTauJet.isValid()) {
0185 l1Extra->SetIsoTauJet(isoTauJet, maxL1Extra_);
0186 } else {
0187 edm::LogWarning("MissingProduct") << "L1Extra Iso Tau Jets not found. Branch will not be filled" << std::endl;
0188 }
0189
0190 if (fwdJet.isValid()) {
0191 l1Extra->SetFwdJet(fwdJet, maxL1Extra_);
0192 } else {
0193 edm::LogWarning("MissingProduct") << "L1Extra Forward Jets not found. Branch will not be filled" << std::endl;
0194 }
0195
0196 if (muon.isValid()) {
0197 l1Extra->SetMuon(muon, maxL1Extra_);
0198 } else {
0199 edm::LogWarning("MissingProduct") << "L1Extra Muons not found. Branch will not be filled" << std::endl;
0200 }
0201
0202 if (mets.isValid()) {
0203 l1Extra->SetMet(mets);
0204 } else {
0205 edm::LogWarning("MissingProduct") << "L1Extra MET not found. Branch will not be filled" << std::endl;
0206 }
0207
0208 if (mhts.isValid()) {
0209 l1Extra->SetMht(mhts);
0210 } else {
0211 edm::LogWarning("MissingProduct") << "L1Extra MHT not found. Branch will not be filled" << std::endl;
0212 }
0213
0214 if (hfRings.isValid()) {
0215 l1Extra->SetHFring(hfRings);
0216 } else {
0217 edm::LogWarning("MissingProduct") << "L1Extra HF Rings not found. Branch will not be filled" << std::endl;
0218 }
0219
0220 tree_->Fill();
0221 }
0222
0223
0224 void L1ExtraTreeProducer::beginJob(void) {}
0225
0226
0227 void L1ExtraTreeProducer::endJob() {}
0228
0229
0230 DEFINE_FWK_MODULE(L1ExtraTreeProducer);