Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }  // namespace edmtest
0061 
0062 using edmtest::TestWriteSDSRawDataCollection;
0063 DEFINE_FWK_MODULE(TestWriteSDSRawDataCollection);