File indexing completed on 2024-04-06 12:10:42
0001 #include "EventFilter/HcalRawToDigi/plugins/HcalHistogramRawToDigi.h"
0002 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
0003 #include "DataFormats/HcalDigi/interface/HcalDigiCollections.h"
0004 #include "FWCore/Framework/interface/ESHandle.h"
0005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0006 #include <iostream>
0007
0008 HcalHistogramRawToDigi::HcalHistogramRawToDigi(edm::ParameterSet const& conf)
0009 : unpacker_(conf.getUntrackedParameter<int>("HcalFirstFED", FEDNumbering::MINHCALFEDID)),
0010 fedUnpackList_(conf.getUntrackedParameter<std::vector<int> >("FEDs")),
0011 firstFED_(conf.getUntrackedParameter<int>("HcalFirstFED", FEDNumbering::MINHCALFEDID)) {
0012 std::ostringstream ss;
0013 for (unsigned int i = 0; i < fedUnpackList_.size(); i++)
0014 ss << fedUnpackList_[i] << " ";
0015 edm::LogInfo("HCAL") << "HcalHistogramRawToDigi will unpack FEDs ( " << ss.str() << ")";
0016
0017 tok_data_ = consumes<FEDRawDataCollection>(conf.getParameter<edm::InputTag>("InputLabel"));
0018 tok_dbService_ = esConsumes<HcalDbService, HcalDbRecord>();
0019
0020
0021 produces<HcalHistogramDigiCollection>();
0022 }
0023
0024
0025 HcalHistogramRawToDigi::~HcalHistogramRawToDigi() {}
0026
0027
0028 void HcalHistogramRawToDigi::produce(edm::Event& e, const edm::EventSetup& es) {
0029
0030 edm::Handle<FEDRawDataCollection> rawraw;
0031 e.getByToken(tok_data_, rawraw);
0032
0033 edm::ESHandle<HcalDbService> pSetup = es.getHandle(tok_dbService_);
0034 const HcalElectronicsMap* readoutMap = pSetup->getHcalMapping();
0035
0036
0037 auto prod = std::make_unique<HcalHistogramDigiCollection>();
0038 std::vector<HcalHistogramDigi> digis;
0039
0040
0041 for (std::vector<int>::const_iterator i = fedUnpackList_.begin(); i != fedUnpackList_.end(); i++) {
0042 const FEDRawData& fed = rawraw->FEDData(*i);
0043
0044 unpacker_.unpack(fed, *readoutMap, digis);
0045 }
0046
0047
0048 prod->swap_contents(digis);
0049
0050
0051 prod->sort();
0052 e.put(std::move(prod));
0053 }