File indexing completed on 2025-03-06 03:07:38
0001 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0002 #include "DataFormats/BeamSpot/interface/BeamSpotHost.h"
0003 #include "DataFormats/BeamSpot/interface/BeamSpotPOD.h"
0004 #include "DataFormats/BeamSpot/interface/alpaka/BeamSpotDevice.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/InputTag.h"
0009 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/EDPutToken.h"
0010 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h"
0011 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0012
0013 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0014
0015 class BeamSpotDeviceProducer : public global::EDProducer<> {
0016 public:
0017 BeamSpotDeviceProducer(edm::ParameterSet const& config)
0018 : EDProducer(config),
0019 legacyToken_{consumes(config.getParameter<edm::InputTag>("src"))},
0020 podToken_{produces()} {}
0021
0022 void produce(edm::StreamID, device::Event& event, device::EventSetup const& setup) const override {
0023 reco::BeamSpot const& beamspot = event.get(legacyToken_);
0024
0025 BeamSpotHost hostProduct{event.queue()};
0026 hostProduct->x = beamspot.x0();
0027 hostProduct->y = beamspot.y0();
0028 hostProduct->z = beamspot.z0();
0029 hostProduct->sigmaZ = beamspot.sigmaZ();
0030 hostProduct->beamWidthX = beamspot.BeamWidthX();
0031 hostProduct->beamWidthY = beamspot.BeamWidthY();
0032 hostProduct->dxdz = beamspot.dxdz();
0033 hostProduct->dydz = beamspot.dydz();
0034 hostProduct->emittanceX = beamspot.emittanceX();
0035 hostProduct->emittanceY = beamspot.emittanceY();
0036 hostProduct->betaStar = beamspot.betaStar();
0037
0038 event.emplace(podToken_, std::move(hostProduct));
0039 }
0040
0041 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0042 edm::ParameterSetDescription desc;
0043 desc.add("src", edm::InputTag{});
0044 descriptions.addWithDefaultLabel(desc);
0045 }
0046
0047 private:
0048 const edm::EDGetTokenT<reco::BeamSpot> legacyToken_;
0049 const edm::EDPutTokenT<BeamSpotHost> podToken_;
0050 };
0051
0052 }
0053
0054 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/MakerMacros.h"
0055 DEFINE_FWK_ALPAKA_MODULE(BeamSpotDeviceProducer);