File indexing completed on 2024-04-06 12:21:13
0001
0002
0003
0004
0005
0006
0007
0008 #include <memory>
0009
0010
0011 #include "FWCore/Framework/interface/Frameworkfwd.h"
0012 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/Framework/interface/MakerMacros.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0016 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0017
0018
0019 #include "DataFormats/Common/interface/SortedCollection.h"
0020 #include "DataFormats/HcalDigi/interface/HODataFrame.h"
0021
0022
0023 #include "FWCore/ServiceRegistry/interface/Service.h"
0024 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0025 #include "TTree.h"
0026
0027 #include "L1Trigger/L1TNtuples/interface/L1AnalysisL1HO.h"
0028
0029
0030
0031
0032
0033 class L1HOTreeProducer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
0034 public:
0035 explicit L1HOTreeProducer(const edm::ParameterSet&);
0036 ~L1HOTreeProducer() override = default;
0037
0038 private:
0039 void beginJob(void) override;
0040 void analyze(const edm::Event&, const edm::EventSetup&) override;
0041 void endJob() override;
0042
0043 public:
0044 L1Analysis::L1AnalysisL1HO l1HO;
0045 L1Analysis::L1AnalysisL1HODataFormat* l1HOData;
0046
0047 private:
0048
0049 edm::Service<TFileService> fs_;
0050
0051
0052 TTree* tree_;
0053
0054
0055 const edm::EDGetTokenT<edm::SortedCollection<HODataFrame>> hoDataFrameToken_;
0056 };
0057
0058 L1HOTreeProducer::L1HOTreeProducer(const edm::ParameterSet& iConfig)
0059 : hoDataFrameToken_(consumes<edm::SortedCollection<HODataFrame>>(
0060 iConfig.getUntrackedParameter<edm::InputTag>("hoDataFrameToken"))) {
0061 l1HOData = l1HO.getData();
0062 usesResource(TFileService::kSharedResource);
0063
0064
0065 tree_ = fs_->make<TTree>("L1HOTree", "L1HOTree");
0066 tree_->Branch("L1HO", "L1Analysis::L1AnalysisL1HODataFormat", &l1HOData, 32000, 3);
0067 }
0068
0069
0070
0071
0072
0073
0074 void L1HOTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0075 l1HO.Reset();
0076
0077 edm::Handle<edm::SortedCollection<HODataFrame>> hoDataFrame;
0078
0079 iEvent.getByToken(hoDataFrameToken_, hoDataFrame);
0080
0081 if (hoDataFrame.isValid()) {
0082 l1HO.SetHO(*hoDataFrame);
0083 } else {
0084 edm::LogWarning("MissingProduct") << "HODataFrame not found. Branch will not be filled" << std::endl;
0085 }
0086
0087 tree_->Fill();
0088 }
0089
0090
0091 void L1HOTreeProducer::beginJob(void) {}
0092
0093
0094 void L1HOTreeProducer::endJob() {}
0095
0096
0097 DEFINE_FWK_MODULE(L1HOTreeProducer);