Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-07-03 00:42:11

0001 #include "FWCore/Framework/interface/Event.h"
0002 #include "FWCore/Framework/interface/Frameworkfwd.h"
0003 #include "FWCore/Framework/interface/global/EDProducer.h"
0004 #include "FWCore/Framework/interface/MakerMacros.h"
0005 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0008 #include "FWCore/Utilities/interface/EDPutToken.h"
0009 #include "FWCore/Utilities/interface/StreamID.h"
0010 
0011 #include "DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsHost.h"
0012 
0013 #include <memory>
0014 #include <utility>
0015 #include <vector>
0016 
0017 namespace edmtest {
0018 
0019   class TestWriteHostHitSoA : public edm::global::EDProducer<> {
0020   public:
0021     TestWriteHostHitSoA(edm::ParameterSet const&);
0022     void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override;
0023     static void fillDescriptions(edm::ConfigurationDescriptions&);
0024 
0025     using HitsOnHost = ::reco::TrackingRecHitHost;
0026 
0027   private:
0028     unsigned int hitSize_;
0029     edm::EDPutTokenT<HitsOnHost> putToken_;
0030   };
0031 
0032   TestWriteHostHitSoA::TestWriteHostHitSoA(edm::ParameterSet const& iPSet)
0033       : hitSize_(iPSet.getParameter<unsigned int>("hitSize")), putToken_(produces()) {}
0034 
0035   void TestWriteHostHitSoA::produce(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const {
0036     HitsOnHost hits(cms::alpakatools::host(), hitSize_, 100);
0037     auto hitsView = hits.view();
0038     for (unsigned int i = 0; i < hitSize_; ++i) {
0039       hitsView[i].xGlobal() = float(i);
0040     }
0041     iEvent.emplace(putToken_, std::move(hits));
0042   }
0043 
0044   void TestWriteHostHitSoA::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0045     edm::ParameterSetDescription desc;
0046     desc.add<unsigned int>("hitSize", 1000);
0047     descriptions.addDefault(desc);
0048   }
0049 }  // namespace edmtest
0050 
0051 using edmtest::TestWriteHostHitSoA;
0052 DEFINE_FWK_MODULE(TestWriteHostHitSoA);