File indexing completed on 2024-04-06 12:24:00
0001 #include <map>
0002 #include <string>
0003
0004 #include "TH1.h"
0005
0006 #include "FWCore/Framework/interface/Event.h"
0007 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0008 #include "FWCore/Utilities/interface/InputTag.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "FWCore/ServiceRegistry/interface/Service.h"
0011 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0012
0013 #include "DataFormats/PatCandidates/interface/Electron.h"
0014 #include "DataFormats/PatCandidates/interface/Photon.h"
0015 #include "DataFormats/PatCandidates/interface/Muon.h"
0016 #include "DataFormats/PatCandidates/interface/Tau.h"
0017 #include "DataFormats/PatCandidates/interface/Jet.h"
0018 #include "DataFormats/PatCandidates/interface/MET.h"
0019
0020 class PatBasicAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0021 public:
0022
0023 explicit PatBasicAnalyzer(const edm::ParameterSet&);
0024
0025 ~PatBasicAnalyzer() override;
0026
0027 private:
0028
0029 void beginJob() override;
0030
0031 void analyze(const edm::Event&, const edm::EventSetup&) override;
0032
0033 void endJob() override;
0034
0035
0036
0037
0038 std::map<std::string, TH1F*> histContainer_;
0039
0040 TH1F* jetTowers_;
0041
0042
0043 edm::EDGetTokenT<edm::View<pat::Photon>> photonSrcToken_;
0044 edm::EDGetTokenT<edm::View<pat::Electron>> elecSrcToken_;
0045 edm::EDGetTokenT<edm::View<pat::Muon>> muonSrcToken_;
0046 edm::EDGetTokenT<edm::View<pat::Tau>> tauSrcToken_;
0047 edm::EDGetTokenT<edm::View<pat::Jet>> jetSrcToken_;
0048 edm::EDGetTokenT<edm::View<pat::MET>> metSrcToken_;
0049 };
0050
0051 PatBasicAnalyzer::PatBasicAnalyzer(const edm::ParameterSet& iConfig)
0052 : histContainer_(),
0053 photonSrcToken_(consumes<edm::View<pat::Photon>>(iConfig.getUntrackedParameter<edm::InputTag>("photonSrc"))),
0054 elecSrcToken_(consumes<edm::View<pat::Electron>>(iConfig.getUntrackedParameter<edm::InputTag>("electronSrc"))),
0055 muonSrcToken_(consumes<edm::View<pat::Muon>>(iConfig.getUntrackedParameter<edm::InputTag>("muonSrc"))),
0056 tauSrcToken_(consumes<edm::View<pat::Tau>>(iConfig.getUntrackedParameter<edm::InputTag>("tauSrc"))),
0057 jetSrcToken_(consumes<edm::View<pat::Jet>>(iConfig.getUntrackedParameter<edm::InputTag>("jetSrc"))),
0058 metSrcToken_(consumes<edm::View<pat::MET>>(iConfig.getUntrackedParameter<edm::InputTag>("metSrc"))) {
0059 usesResource(TFileService::kSharedResource);
0060 }
0061
0062 PatBasicAnalyzer::~PatBasicAnalyzer() {}
0063
0064 void PatBasicAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0065
0066 edm::Handle<edm::View<pat::Electron>> electrons;
0067 iEvent.getByToken(elecSrcToken_, electrons);
0068
0069
0070 edm::Handle<edm::View<pat::Muon>> muons;
0071 iEvent.getByToken(muonSrcToken_, muons);
0072
0073
0074 edm::Handle<edm::View<pat::Tau>> taus;
0075 iEvent.getByToken(tauSrcToken_, taus);
0076
0077
0078 edm::Handle<edm::View<pat::Jet>> jets;
0079 iEvent.getByToken(jetSrcToken_, jets);
0080
0081
0082 edm::Handle<edm::View<pat::MET>> mets;
0083 iEvent.getByToken(metSrcToken_, mets);
0084
0085
0086 edm::Handle<edm::View<pat::Photon>> photons;
0087 iEvent.getByToken(photonSrcToken_, photons);
0088
0089
0090 size_t nJets = 0;
0091 for (edm::View<pat::Jet>::const_iterator jet = jets->begin(); jet != jets->end(); ++jet) {
0092 if (jet->pt() > 50) {
0093 ++nJets;
0094 }
0095
0096
0097
0098 }
0099 histContainer_["jets"]->Fill(nJets);
0100
0101
0102 histContainer_["photons"]->Fill(photons->size());
0103 histContainer_["elecs"]->Fill(electrons->size());
0104 histContainer_["muons"]->Fill(muons->size());
0105 histContainer_["taus"]->Fill(taus->size());
0106 histContainer_["met"]->Fill(mets->empty() ? 0 : (*mets)[0].et());
0107 }
0108
0109 void PatBasicAnalyzer::beginJob() {
0110
0111 edm::Service<TFileService> fs;
0112
0113
0114
0115
0116 histContainer_["photons"] = fs->make<TH1F>("photons", "photon multiplicity", 10, 0, 10);
0117 histContainer_["elecs"] = fs->make<TH1F>("elecs", "electron multiplicity", 10, 0, 10);
0118 histContainer_["muons"] = fs->make<TH1F>("muons", "muon multiplicity", 10, 0, 10);
0119 histContainer_["taus"] = fs->make<TH1F>("taus", "tau multiplicity", 10, 0, 10);
0120 histContainer_["jets"] = fs->make<TH1F>("jets", "jet multiplicity", 10, 0, 10);
0121 histContainer_["met"] = fs->make<TH1F>("met", "missing E_{T}", 20, 0, 100);
0122 }
0123
0124 void PatBasicAnalyzer::endJob() {}
0125
0126 #include "FWCore/Framework/interface/MakerMacros.h"
0127 DEFINE_FWK_MODULE(PatBasicAnalyzer);