File indexing completed on 2023-03-17 11:18:48
0001 #include "FWCore/Framework/interface/global/EDProducer.h"
0002 #include "FWCore/Framework/interface/Event.h"
0003 #include "DataFormats/Common/interface/Handle.h"
0004 #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
0005 #include "DataFormats/HcalDigi/interface/HcalLaserDigi.h"
0006 #include "RecoLocalCalo/HcalLaserReco/src/HcalLaserUnpacker.h"
0007 #include "DataFormats/Common/interface/EDCollection.h"
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009 #include "FWCore/Utilities/interface/InputTag.h"
0010
0011 #include <iostream>
0012 #include <fstream>
0013
0014 class HcalLaserReco : public edm::global::EDProducer<> {
0015 public:
0016 explicit HcalLaserReco(const edm::ParameterSet& ps);
0017 void produce(edm::StreamID, edm::Event& e, const edm::EventSetup& c) const override;
0018
0019 private:
0020 int qdctdcFed_;
0021 HcalLaserUnpacker unpacker_;
0022 edm::EDGetTokenT<FEDRawDataCollection> tok_raw_;
0023 };
0024
0025 HcalLaserReco::HcalLaserReco(edm::ParameterSet const& conf)
0026 : qdctdcFed_(conf.getUntrackedParameter<int>("QADCTDCFED", 8)) {
0027 tok_raw_ = consumes<FEDRawDataCollection>(conf.getParameter<edm::InputTag>("fedRawDataCollectionTag"));
0028
0029 produces<HcalLaserDigi>();
0030 }
0031
0032
0033 void HcalLaserReco::produce(edm::StreamID, edm::Event& e, const edm::EventSetup&) const {
0034
0035 edm::Handle<FEDRawDataCollection> rawraw;
0036 e.getByToken(tok_raw_, rawraw);
0037
0038
0039 auto digi = std::make_unique<HcalLaserDigi>();
0040
0041 if (qdctdcFed_ >= 0) {
0042
0043 const FEDRawData& fed = rawraw->FEDData(qdctdcFed_);
0044 unpacker_.unpack(fed, *digi);
0045 }
0046
0047
0048 e.put(std::move(digi));
0049 }
0050
0051 #include "FWCore/PluginManager/interface/ModuleDef.h"
0052 #include "FWCore/Framework/interface/MakerMacros.h"
0053
0054 DEFINE_FWK_MODULE(HcalLaserReco);