File indexing completed on 2024-04-06 12:20:08
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "FWCore/Framework/interface/Frameworkfwd.h"
0023 #include "FWCore/Framework/interface/stream/EDProducer.h"
0024 #include "FWCore/Framework/interface/ESHandle.h"
0025 #include "FWCore/ServiceRegistry/interface/Service.h"
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/MakerMacros.h"
0028 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0029
0030 #include <iostream>
0031
0032
0033 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
0034 #include "DataFormats/L1Trigger/interface/Jet.h"
0035
0036 #include "DataFormats/JetReco/interface/GenJet.h"
0037 #include "DataFormats/JetReco/interface/GenJetCollection.h"
0038
0039 class L1CaloJetHTTProducer : public edm::stream::EDProducer<> {
0040 public:
0041 explicit L1CaloJetHTTProducer(const edm::ParameterSet&);
0042
0043 private:
0044 void produce(edm::Event&, const edm::EventSetup&) override;
0045
0046 double EtaMax;
0047 double PtMin;
0048
0049 edm::EDGetTokenT<BXVector<l1t::Jet>> bxvCaloJetsToken_;
0050 edm::Handle<BXVector<l1t::Jet>> bxvCaloJetsHandle;
0051
0052
0053
0054 edm::EDGetTokenT<std::vector<reco::GenJet>> genJetsToken_;
0055 edm::Handle<std::vector<reco::GenJet>> genJetsHandle;
0056
0057 bool debug;
0058
0059 bool use_gen_jets;
0060 };
0061
0062 L1CaloJetHTTProducer::L1CaloJetHTTProducer(const edm::ParameterSet& iConfig)
0063 : EtaMax(iConfig.getParameter<double>("EtaMax")),
0064 PtMin(iConfig.getParameter<double>("PtMin")),
0065 bxvCaloJetsToken_(consumes<BXVector<l1t::Jet>>(iConfig.getParameter<edm::InputTag>("BXVCaloJetsInputTag"))),
0066 genJetsToken_(consumes<std::vector<reco::GenJet>>(iConfig.getParameter<edm::InputTag>("genJets"))),
0067 debug(iConfig.getParameter<bool>("debug")),
0068 use_gen_jets(iConfig.getParameter<bool>("use_gen_jets"))
0069
0070 {
0071 produces<float>("CaloJetHTT");
0072 }
0073
0074 void L1CaloJetHTTProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
0075
0076 std::unique_ptr<float> CaloJetHTT(new float);
0077
0078 *CaloJetHTT = 0.;
0079
0080
0081 if (!use_gen_jets) {
0082 iEvent.getByToken(bxvCaloJetsToken_, bxvCaloJetsHandle);
0083
0084 if (bxvCaloJetsHandle.isValid()) {
0085 for (const auto& caloJet : *bxvCaloJetsHandle.product()) {
0086 if (caloJet.pt() < PtMin)
0087 continue;
0088 if (std::abs(caloJet.eta()) > EtaMax)
0089 continue;
0090 *CaloJetHTT += float(caloJet.pt());
0091 }
0092 }
0093
0094 if (debug) {
0095 LogDebug("L1CaloJetHTTProducer") << " BXV L1CaloJetCollection JetHTT = " << *CaloJetHTT << " for PtMin " << PtMin
0096 << " and EtaMax " << EtaMax << "\n";
0097 }
0098 }
0099
0100
0101 if (use_gen_jets) {
0102 iEvent.getByToken(genJetsToken_, genJetsHandle);
0103
0104 if (genJetsHandle.isValid()) {
0105 for (const auto& genJet : *genJetsHandle.product()) {
0106 if (genJet.pt() < PtMin)
0107 continue;
0108 if (std::abs(genJet.eta()) > EtaMax)
0109 continue;
0110 *CaloJetHTT += float(genJet.pt());
0111 }
0112 }
0113
0114 if (debug) {
0115 LogDebug("L1CaloJetHTTProducer") << " Gen Jets HTT = " << *CaloJetHTT << " for PtMin " << PtMin << " and EtaMax "
0116 << EtaMax << "\n";
0117 }
0118 }
0119
0120 iEvent.put(std::move(CaloJetHTT), "CaloJetHTT");
0121 }
0122
0123 DEFINE_FWK_MODULE(L1CaloJetHTTProducer);