Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:13:00

0001 // -*- C++ -*-
0002 //
0003 // Package:    L1TriggerDPG/L1Ntuples
0004 // Class:      L1UpgradeTreeProducer
0005 //
0006 /**\class L1UpgradeTreeProducer L1UpgradeTreeProducer.cc L1TriggerDPG/L1Ntuples/src/L1UpgradeTreeProducer.cc
0007 
0008 Description: Produce L1 Extra tree
0009 
0010 Implementation:
0011 
0012 */
0013 //
0014 // Original Author:
0015 //         Created:
0016 // $Id: L1UpgradeTreeProducer.cc,v 1.8 2012/08/29 12:44:03 jbrooke Exp $
0017 //
0018 //
0019 
0020 // system include files
0021 #include <memory>
0022 
0023 // framework
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 // data formats
0032 #include "DataFormats/L1Trigger/interface/EGamma.h"
0033 #include "DataFormats/L1Trigger/interface/Tau.h"
0034 #include "DataFormats/L1Trigger/interface/Jet.h"
0035 #include "DataFormats/L1Trigger/interface/Muon.h"
0036 #include "DataFormats/L1Trigger/interface/MuonShower.h"
0037 #include "DataFormats/L1Trigger/interface/EtSum.h"
0038 
0039 // ROOT output stuff
0040 #include "FWCore/ServiceRegistry/interface/Service.h"
0041 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0042 #include "TTree.h"
0043 
0044 #include "L1Trigger/L1TNtuples/interface/L1AnalysisL1Upgrade.h"
0045 
0046 //
0047 // class declaration
0048 //
0049 
0050 class L1UpgradeTreeProducer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0051 public:
0052   explicit L1UpgradeTreeProducer(const edm::ParameterSet&);
0053   ~L1UpgradeTreeProducer() override = default;
0054 
0055 private:
0056   void beginJob(void) override;
0057   void analyze(const edm::Event&, const edm::EventSetup&) override;
0058   void endJob() override;
0059 
0060 public:
0061   L1Analysis::L1AnalysisL1Upgrade* l1Upgrade;
0062   L1Analysis::L1AnalysisL1UpgradeDataFormat* l1UpgradeData;
0063 
0064 private:
0065   unsigned maxL1Upgrade_;
0066 
0067   // output file
0068   edm::Service<TFileService> fs_;
0069 
0070   // tree
0071   TTree* tree_;
0072 
0073   // EDM input tags
0074   const edm::EDGetTokenT<l1t::EGammaBxCollection> egToken_;
0075   const edm::EDGetTokenT<l1t::JetBxCollection> jetToken_;
0076   const edm::EDGetTokenT<l1t::EtSumBxCollection> sumToken_;
0077   const edm::EDGetTokenT<l1t::MuonBxCollection> muonToken_;
0078   const edm::EDGetTokenT<l1t::MuonShowerBxCollection> muonShowerToken_;
0079   std::vector<edm::EDGetTokenT<l1t::TauBxCollection>> tauTokens_;
0080 };
0081 
0082 L1UpgradeTreeProducer::L1UpgradeTreeProducer(const edm::ParameterSet& iConfig)
0083     : egToken_(consumes<l1t::EGammaBxCollection>(iConfig.getUntrackedParameter<edm::InputTag>("egToken"))),
0084       jetToken_(consumes<l1t::JetBxCollection>(iConfig.getUntrackedParameter<edm::InputTag>("jetToken"))),
0085       sumToken_(consumes<l1t::EtSumBxCollection>(iConfig.getUntrackedParameter<edm::InputTag>("sumToken"))),
0086       muonToken_(consumes<l1t::MuonBxCollection>(iConfig.getUntrackedParameter<edm::InputTag>("muonToken"))),
0087       muonShowerToken_(
0088           consumes<l1t::MuonShowerBxCollection>(iConfig.getUntrackedParameter<edm::InputTag>("muonShowerToken"))) {
0089   const auto& taus = iConfig.getUntrackedParameter<std::vector<edm::InputTag>>("tauTokens");
0090   for (const auto& tau : taus) {
0091     tauTokens_.push_back(consumes<l1t::TauBxCollection>(tau));
0092   }
0093 
0094   maxL1Upgrade_ = iConfig.getParameter<unsigned int>("maxL1Upgrade");
0095 
0096   l1Upgrade = new L1Analysis::L1AnalysisL1Upgrade();
0097   l1UpgradeData = l1Upgrade->getData();
0098 
0099   usesResource(TFileService::kSharedResource);
0100 
0101   // set up output
0102   tree_ = fs_->make<TTree>("L1UpgradeTree", "L1UpgradeTree");
0103   tree_->Branch("L1Upgrade", "L1Analysis::L1AnalysisL1UpgradeDataFormat", &l1UpgradeData, 32000, 3);
0104 }
0105 
0106 //
0107 // member functions
0108 //
0109 
0110 // ------------ method called to for each event  ------------
0111 void L1UpgradeTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0112   l1Upgrade->Reset();
0113 
0114   edm::Handle<l1t::EGammaBxCollection> eg;
0115   edm::Handle<l1t::JetBxCollection> jet;
0116   edm::Handle<l1t::EtSumBxCollection> sums;
0117   edm::Handle<l1t::MuonBxCollection> muon;
0118   edm::Handle<l1t::MuonShowerBxCollection> muonShower;
0119 
0120   iEvent.getByToken(egToken_, eg);
0121   iEvent.getByToken(jetToken_, jet);
0122   iEvent.getByToken(sumToken_, sums);
0123   iEvent.getByToken(muonToken_, muon);
0124   iEvent.getByToken(muonShowerToken_, muonShower);
0125 
0126   if (eg.isValid()) {
0127     l1Upgrade->SetEm(eg, maxL1Upgrade_);
0128   } else {
0129     edm::LogWarning("MissingProduct") << "L1Upgrade Em not found. Branch will not be filled" << std::endl;
0130   }
0131   if (jet.isValid()) {
0132     l1Upgrade->SetJet(jet, maxL1Upgrade_);
0133   } else {
0134     edm::LogWarning("MissingProduct") << "L1Upgrade Jets not found. Branch will not be filled" << std::endl;
0135   }
0136 
0137   if (sums.isValid()) {
0138     l1Upgrade->SetSum(sums, maxL1Upgrade_);
0139   } else {
0140     edm::LogWarning("MissingProduct") << "L1Upgrade EtSums not found. Branch will not be filled" << std::endl;
0141   }
0142 
0143   if (muon.isValid()) {
0144     l1Upgrade->SetMuon(muon, maxL1Upgrade_);
0145   } else {
0146     edm::LogWarning("MissingProduct") << "L1Upgrade Muons not found. Branch will not be filled" << std::endl;
0147   }
0148 
0149   if (muonShower.isValid()) {
0150     l1Upgrade->SetMuonShower(muonShower, maxL1Upgrade_);
0151   } else {
0152     edm::LogWarning("MissingProduct") << "L1Upgrade Muon Showers not found. Branch will not be filled" << std::endl;
0153   }
0154 
0155   for (auto& tautoken : tauTokens_) {
0156     edm::Handle<l1t::TauBxCollection> tau;
0157     iEvent.getByToken(tautoken, tau);
0158     if (tau.isValid()) {
0159       l1Upgrade->SetTau(tau, maxL1Upgrade_);
0160     } else {
0161       edm::LogWarning("MissingProduct") << "L1Upgrade Tau not found. Branch will not be filled" << std::endl;
0162     }
0163   }
0164 
0165   tree_->Fill();
0166 }
0167 
0168 // ------------ method called once each job just before starting event loop  ------------
0169 void L1UpgradeTreeProducer::beginJob(void) {}
0170 
0171 // ------------ method called once each job just after ending the event loop  ------------
0172 void L1UpgradeTreeProducer::endJob() {}
0173 
0174 //define this as a plug-in
0175 DEFINE_FWK_MODULE(L1UpgradeTreeProducer);