Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:30:34

0001 // -*- C++ -*-
0002 //
0003 //
0004 // Original Author:  Andreas Gruber
0005 //         Created:  Mon, 16 Oct 2023 14:24:35 GMT
0006 //
0007 //
0008 
0009 // system include files
0010 #include <memory>
0011 
0012 // user include files
0013 #include "FWCore/Framework/interface/Frameworkfwd.h"
0014 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0015 #include "FWCore/Framework/interface/ConsumesCollector.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 
0018 #include "FWCore/Framework/interface/Event.h"
0019 #include "FWCore/Framework/interface/MakerMacros.h"
0020 #include "TH1.h"
0021 
0022 #include "SimDataFormats/CaloAnalysis/interface/CaloParticleFwd.h"
0023 #include "SimDataFormats/CaloAnalysis/interface/CaloParticle.h"
0024 #include "SimDataFormats/CaloAnalysis/interface/SimTauCPLink.h"
0025 
0026 #include "FWCore/ServiceRegistry/interface/Service.h"
0027 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0028 
0029 class SimTauAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0030 public:
0031   explicit SimTauAnalyzer(const edm::ParameterSet&);
0032   ~SimTauAnalyzer() override = default;
0033 
0034 private:
0035   void analyze(const edm::Event&, const edm::EventSetup&) override;
0036 
0037   const edm::EDGetTokenT<std::vector<SimTauCPLink>> simTau_token_;
0038   TH1D* DM_histo;
0039 };
0040 
0041 SimTauAnalyzer::SimTauAnalyzer(const edm::ParameterSet& iConfig)
0042     : simTau_token_(consumes<std::vector<SimTauCPLink>>(iConfig.getParameter<edm::InputTag>("simTau"))) {
0043   usesResource(TFileService::kSharedResource);
0044   edm::Service<TFileService> fs;
0045   DM_histo = fs->make<TH1D>("DM_histo", "DM_histo", 20, -1, 19);
0046 }
0047 
0048 // ------------ method called for each event  ------------
0049 void SimTauAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0050   edm::Handle<std::vector<SimTauCPLink>> simTau_h;
0051   iEvent.getByToken(simTau_token_, simTau_h);
0052 
0053   const auto& simTaus = *simTau_h;
0054 
0055   for (auto const& simTau : simTaus) {
0056 #ifdef EDM_ML_DEBUG
0057     simTau.dumpFullDecay();
0058     simTau.dump();
0059 #endif
0060     DM_histo->Fill(simTau.decayMode);
0061   }
0062 }
0063 
0064 //define this as a plug-in
0065 DEFINE_FWK_MODULE(SimTauAnalyzer);