File indexing completed on 2023-03-17 11:12:59
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <memory>
0015
0016
0017 #include "FWCore/Framework/interface/Frameworkfwd.h"
0018 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0019 #include "FWCore/Framework/interface/Event.h"
0020 #include "FWCore/Framework/interface/EventSetup.h"
0021 #include "FWCore/Framework/interface/MakerMacros.h"
0022 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0023 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0024 #include "FWCore/Framework/interface/ESHandle.h"
0025
0026
0027 #include "JetMETCorrections/JetCorrector/interface/JetCorrector.h"
0028
0029
0030 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
0031 #include "DataFormats/JetReco/interface/PFJetCollection.h"
0032 #include "DataFormats/JetReco/interface/JetID.h"
0033
0034
0035 #include "DataFormats/TauReco/interface/PFTau.h"
0036 #include "DataFormats/TauReco/interface/PFTauFwd.h"
0037 #include "DataFormats/TauReco/interface/PFTauDiscriminator.h"
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 #include "FWCore/ServiceRegistry/interface/Service.h"
0049 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0050 #include "TH1.h"
0051 #include "TTree.h"
0052 #include "TF1.h"
0053
0054
0055 #include "L1Trigger/L1TNtuples/interface/L1AnalysisRecoTau.h"
0056 #include "L1Trigger/L1TNtuples/interface/L1AnalysisRecoMet.h"
0057
0058
0059
0060
0061
0062 class L1TauRecoTreeProducer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0063 public:
0064 explicit L1TauRecoTreeProducer(const edm::ParameterSet&);
0065 ~L1TauRecoTreeProducer() override;
0066
0067 private:
0068 void beginJob(void) override;
0069 void analyze(const edm::Event&, const edm::EventSetup&) override;
0070 void endJob() override;
0071
0072 public:
0073 L1Analysis::L1AnalysisRecoTau* tau;
0074
0075 L1Analysis::L1AnalysisRecoTauDataFormat* tau_data;
0076
0077 private:
0078
0079 edm::Service<TFileService> fs_;
0080
0081
0082 TTree* tree_;
0083
0084
0085 edm::EDGetTokenT<reco::PFTauCollection> TauToken_;
0086 edm::EDGetTokenT<reco::PFTauDiscriminator> DMFindingToken_;
0087 edm::EDGetTokenT<reco::PFTauDiscriminator> DMFindingOldToken_;
0088 edm::EDGetTokenT<reco::PFTauDiscriminator> TightIsoToken_;
0089 edm::EDGetTokenT<reco::PFTauDiscriminator> TightRawIsoToken_;
0090 edm::EDGetTokenT<reco::PFTauDiscriminator> LooseIsoToken_;
0091 edm::EDGetTokenT<reco::PFTauDiscriminator> LooseAntiMuonToken_;
0092 edm::EDGetTokenT<reco::PFTauDiscriminator> TightAntiMuonToken_;
0093 edm::EDGetTokenT<reco::PFTauDiscriminator> VLooseAntiElectronToken_;
0094 edm::EDGetTokenT<reco::PFTauDiscriminator> LooseAntiElectronToken_;
0095 edm::EDGetTokenT<reco::PFTauDiscriminator> TightAntiElectronToken_;
0096
0097
0098
0099
0100
0101
0102 bool caloJetsMissing_;
0103 double jetptThreshold_;
0104 unsigned int maxCl_;
0105 std::string period_;
0106 unsigned int maxTau_;
0107 unsigned int maxVtx_;
0108 unsigned int maxTrk_;
0109 };
0110
0111 L1TauRecoTreeProducer::L1TauRecoTreeProducer(const edm::ParameterSet& iConfig) : caloJetsMissing_(false) {
0112 period_ = iConfig.getParameter<std::string>("period");
0113
0114 if (period_ == "2015") {
0115 maxTau_ = iConfig.getParameter<unsigned int>("maxTau");
0116 TauToken_ =
0117 consumes<reco::PFTauCollection>(iConfig.getUntrackedParameter("TauToken", edm::InputTag("hpsPFTauProducer")));
0118 DMFindingToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0119 "DMFindingToken", edm::InputTag("hpsPFTauDiscriminationByDecayModeFindingNewDMs")));
0120 DMFindingOldToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0121 "DMFindingOldToken", edm::InputTag("hpsPFTauDiscriminationByDecayModeFindingOldDMs")));
0122 TightIsoToken_ = consumes<reco::PFTauDiscriminator>(
0123 iConfig.getUntrackedParameter("TightIsoToken", edm::InputTag("hpsPFTauDiscriminationByTightIsolation")));
0124 TightRawIsoToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0125 "TightRawIsoToken", edm::InputTag("hpsPFTauDiscriminationByRawCombinedIsolationDBSumPtCorr3Hits")));
0126 LooseIsoToken_ = consumes<reco::PFTauDiscriminator>(
0127 iConfig.getUntrackedParameter("LooseIsoToken", edm::InputTag("hpsPFTauDiscriminationByLooseIsolation")));
0128 LooseAntiMuonToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0129 "LooseAntiMuonToken", edm::InputTag("hpsPFTauDiscriminationByLooseMuonRejection")));
0130 TightAntiMuonToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0131 "TightAntiMuonToken", edm::InputTag("hpsPFTauDiscriminationByTightMuonRejection")));
0132 VLooseAntiElectronToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0133 "VLooseAntiElectronToken", edm::InputTag("hpsPFTauDiscriminationByMVA5VLooseElectronRejection")));
0134 LooseAntiElectronToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0135 "LooseAntiElectronToken", edm::InputTag("hpsPFTauDiscriminationByMVA5LooseElectronRejection")));
0136 TightAntiElectronToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0137 "TightAntiElectronToken", edm::InputTag("hpsPFTauDiscriminationByMVA5TightElectronRejection")));
0138 } else if (period_ == "2016") {
0139 maxTau_ = iConfig.getParameter<unsigned int>("maxTau");
0140 TauToken_ =
0141 consumes<reco::PFTauCollection>(iConfig.getUntrackedParameter("TauToken", edm::InputTag("hpsPFTauProducer")));
0142 DMFindingToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0143 "DMFindingToken", edm::InputTag("hpsPFTauDiscriminationByDecayModeFindingNewDMs")));
0144 DMFindingOldToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0145 "DMFindingOldToken", edm::InputTag("hpsPFTauDiscriminationByDecayModeFindingOldDMs")));
0146 TightIsoToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0147 "TightIsoToken", edm::InputTag("hpsPFTauDiscriminationByTightCombinedIsolationDBSumPtCorr3Hits")));
0148 TightRawIsoToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0149 "TightRawIsoToken", edm::InputTag("hpsPFTauDiscriminationByRawCombinedIsolationDBSumPtCorr3Hits")));
0150 LooseIsoToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0151 "LooseIsoToken", edm::InputTag("hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr3Hits")));
0152 LooseAntiMuonToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0153 "LooseAntiMuonToken", edm::InputTag("hpsPFTauDiscriminationByLooseMuonRejection3")));
0154 TightAntiMuonToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0155 "TightAntiMuonToken", edm::InputTag("hpsPFTauDiscriminationByTightMuonRejection3")));
0156 VLooseAntiElectronToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0157 "VLooseAntiElectronToken", edm::InputTag("hpsPFTauDiscriminationByMVA6VLooseElectronRejection")));
0158 LooseAntiElectronToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0159 "LooseAntiElectronToken", edm::InputTag("hpsPFTauDiscriminationByMVA6LooseElectronRejection")));
0160 TightAntiElectronToken_ = consumes<reco::PFTauDiscriminator>(iConfig.getUntrackedParameter(
0161 "TightAntiElectronToken", edm::InputTag("hpsPFTauDiscriminationByMVA6TightElectronRejection")));
0162 }
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173 tau = new L1Analysis::L1AnalysisRecoTau();
0174 tau_data = tau->getData();
0175
0176 usesResource(TFileService::kSharedResource);
0177
0178
0179
0180 tree_ = fs_->make<TTree>("TauRecoTree", "TauRecoTree");
0181
0182 tree_->Branch("Tau", "L1Analysis::L1AnalysisRecoTauDataFormat", &tau_data, 32000, 3);
0183 }
0184
0185 L1TauRecoTreeProducer::~L1TauRecoTreeProducer() {
0186
0187
0188 }
0189
0190
0191
0192
0193
0194
0195 void L1TauRecoTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0196 tau->Reset();
0197 edm::Handle<reco::PFTauCollection> recoTaus;
0198 iEvent.getByToken(TauToken_, recoTaus);
0199
0200 edm::Handle<reco::PFTauDiscriminator> DMFindingTaus;
0201 iEvent.getByToken(DMFindingToken_, DMFindingTaus);
0202
0203 edm::Handle<reco::PFTauDiscriminator> DMFindingOldTaus;
0204 iEvent.getByToken(DMFindingOldToken_, DMFindingOldTaus);
0205
0206 edm::Handle<reco::PFTauDiscriminator> TightIsoTaus;
0207 iEvent.getByToken(TightIsoToken_, TightIsoTaus);
0208
0209 edm::Handle<reco::PFTauDiscriminator> TightRawIsoTaus;
0210 iEvent.getByToken(TightRawIsoToken_, TightRawIsoTaus);
0211
0212 edm::Handle<reco::PFTauDiscriminator> LooseIsoTaus;
0213 iEvent.getByToken(LooseIsoToken_, LooseIsoTaus);
0214
0215 edm::Handle<reco::PFTauDiscriminator> LooseAntiMuon;
0216 iEvent.getByToken(LooseAntiMuonToken_, LooseAntiMuon);
0217
0218 edm::Handle<reco::PFTauDiscriminator> TightAntiMuon;
0219 iEvent.getByToken(TightAntiMuonToken_, TightAntiMuon);
0220
0221 edm::Handle<reco::PFTauDiscriminator> VLooseAntiElectron;
0222 iEvent.getByToken(VLooseAntiElectronToken_, VLooseAntiElectron);
0223
0224 edm::Handle<reco::PFTauDiscriminator> LooseAntiElectron;
0225 iEvent.getByToken(LooseAntiElectronToken_, LooseAntiElectron);
0226
0227 edm::Handle<reco::PFTauDiscriminator> TightAntiElectron;
0228 iEvent.getByToken(TightAntiElectronToken_, TightAntiElectron);
0229
0230
0231
0232 if (recoTaus.isValid()) {
0233
0234 tau->SetTau(iEvent,
0235 iSetup,
0236 recoTaus,
0237 DMFindingOldTaus,
0238 DMFindingTaus,
0239 TightIsoTaus,
0240 TightRawIsoTaus,
0241 LooseIsoTaus,
0242 LooseAntiMuon,
0243 TightAntiMuon,
0244 VLooseAntiElectron,
0245 LooseAntiElectron,
0246 TightAntiElectron,
0247 maxTau_);
0248 } else {
0249 if (!caloJetsMissing_) {
0250 edm::LogWarning("MissingProduct") << "CaloJets not found. Branch will not be filled" << std::endl;
0251 }
0252 caloJetsMissing_ = true;
0253 }
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276 tree_->Fill();
0277 }
0278
0279
0280 void L1TauRecoTreeProducer::beginJob(void) {}
0281
0282
0283 void L1TauRecoTreeProducer::endJob() {}
0284
0285
0286 DEFINE_FWK_MODULE(L1TauRecoTreeProducer);