4 #include <alpaka/alpaka.hpp> 16 using namespace particleFlowRecHitProducer;
18 template <
typename CAL>
23 pfRecHitsToken_(produces()),
24 synchronise_(
config.getUntrackedParameter<
bool>(
"synchronise")) {
25 const std::vector<edm::ParameterSet>
producers =
config.getParameter<std::vector<edm::ParameterSet>>(
"producers");
34 const typename CAL::TopologyTypeDevice& topology =
setup.getData(topologyToken_);
36 uint32_t num_recHits = 0;
37 for (
const auto&
token : recHitsToken_)
38 num_recHits +=
event.get(
token.first)->metadata().size();
43 for (
const auto&
token : recHitsToken_)
45 kernel.associateTopologyInfo(
event.queue(), topology, pfRecHits);
50 event.emplace(pfRecHitsToken_,
std::move(pfRecHits));
58 desc.addVPSet(
"producers",
producers)->setComment(
"List of inputs and quality cuts");
60 desc.addUntracked<
bool>(
"synchronise",
false)
61 ->setComment(
"Add synchronisation point after execution (for benchmarking asynchronous execution)");
67 std::vector<std::pair<device::EDGetToken<typename CAL::CaloRecHitSoATypeDevice>,
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
void processRecHits(Queue &queue, const typename CAL::CaloRecHitSoATypeDevice &recHits, const typename CAL::ParameterType ¶ms, reco::PFRecHitDeviceCollection &pfRecHits)
const device::EDPutToken< reco::PFRecHitDeviceCollection > pfRecHitsToken_
PFRecHitSoAProducer< HCAL > PFRecHitSoAProducerHCAL
void produce(edm::StreamID, device::Event &event, const device::EventSetup &setup) const override
const device::ESGetToken< typename CAL::TopologyTypeDevice, typename CAL::TopologyRecordType > topologyToken_
PFRecHitSoAProducer(edm::ParameterSet const &config)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
#define DEFINE_FWK_ALPAKA_MODULE(name)
std::vector< std::pair< device::EDGetToken< typename CAL::CaloRecHitSoATypeDevice >, device::ESGetToken< typename CAL::ParameterType, typename CAL::ParameterRecordType > > > recHitsToken_
PFRecHitSoAProducer< ECAL > PFRecHitSoAProducerECAL