File indexing completed on 2024-04-06 12:04:30
0001 #include "DataFormats/FEDRawData/interface/FEDRawData.h"
0002 #include "DataFormats/L1ScoutingRawData/interface/SDSRawDataCollection.h"
0003 #include "FWCore/Framework/interface/Event.h"
0004 #include "FWCore/Framework/interface/Frameworkfwd.h"
0005 #include "FWCore/Framework/interface/global/EDProducer.h"
0006 #include "FWCore/Framework/interface/MakerMacros.h"
0007 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0010 #include "FWCore/Utilities/interface/EDPutToken.h"
0011 #include "FWCore/Utilities/interface/StreamID.h"
0012
0013 #include <memory>
0014 #include <utility>
0015 #include <vector>
0016
0017 namespace edmtest {
0018
0019 class TestWriteSDSRawDataCollection : public edm::global::EDProducer<> {
0020 public:
0021 TestWriteSDSRawDataCollection(edm::ParameterSet const&);
0022 void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override;
0023 static void fillDescriptions(edm::ConfigurationDescriptions&);
0024
0025 private:
0026 std::vector<unsigned int> sdsData1_;
0027 std::vector<unsigned int> sdsData2_;
0028 edm::EDPutTokenT<SDSRawDataCollection> sdsRawDataCollectionPutToken_;
0029 };
0030
0031 TestWriteSDSRawDataCollection::TestWriteSDSRawDataCollection(edm::ParameterSet const& iPSet)
0032 : sdsData1_(iPSet.getParameter<std::vector<unsigned int>>("SDSData1")),
0033 sdsData2_(iPSet.getParameter<std::vector<unsigned int>>("SDSData2")),
0034 sdsRawDataCollectionPutToken_(produces()) {}
0035
0036 void TestWriteSDSRawDataCollection::produce(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const {
0037 auto sdsRawDataCollection = std::make_unique<SDSRawDataCollection>();
0038 FEDRawData& fedData1 = sdsRawDataCollection->FEDData(1);
0039 FEDRawData& fedData2 = sdsRawDataCollection->FEDData(2);
0040
0041 fedData1.resize(sdsData1_.size(), 4);
0042 unsigned char* dataPtr1 = fedData1.data();
0043 for (unsigned int i = 0; i < sdsData1_.size(); ++i) {
0044 dataPtr1[i] = sdsData1_[i];
0045 }
0046 fedData2.resize(sdsData2_.size(), 4);
0047 unsigned char* dataPtr2 = fedData2.data();
0048 for (unsigned int i = 0; i < sdsData2_.size(); ++i) {
0049 dataPtr2[i] = sdsData2_[i];
0050 }
0051 iEvent.put(sdsRawDataCollectionPutToken_, std::move(sdsRawDataCollection));
0052 }
0053
0054 void TestWriteSDSRawDataCollection::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0055 edm::ParameterSetDescription desc;
0056 desc.add<std::vector<unsigned int>>("SDSData1");
0057 desc.add<std::vector<unsigned int>>("SDSData2");
0058 descriptions.addDefault(desc);
0059 }
0060 }
0061
0062 using edmtest::TestWriteSDSRawDataCollection;
0063 DEFINE_FWK_MODULE(TestWriteSDSRawDataCollection);