@@ -44,15 +44,12 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE {
4444
4545 const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> geomToken_;
4646 const edm::EDGetTokenT<edm::DetSetVector<PixelDigi>> pixelDigiToken_;
47-
48- device::EDPutToken<SiPixelDigisSoACollection> digiPutToken_;
49- device::EDPutToken<SiPixelClustersSoACollection> clusterPutToken_;
50-
51- Algo Algo_;
52-
47+ const device::EDPutToken<SiPixelDigisSoACollection> digiPutToken_;
48+ const device::EDPutToken<SiPixelClustersSoACollection> clusterPutToken_;
5349 const SiPixelClusterThresholds clusterThresholds_;
54- uint32_t nDigis_ = 0 ;
5550
51+ Algo algo_;
52+ uint32_t nDigis_ = 0 ;
5653 std::optional<SiPixelDigisSoACollection> digis_d_;
5754 };
5855
@@ -88,18 +85,18 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE {
8885
8986 const TrackerGeometry* geom_ = &iSetup.getData (geomToken_);
9087
91- uint32_t nDigis = 0 ;
88+ nDigis_ = 0 ;
9289 for (const auto & det : input) {
93- nDigis += det.size ();
90+ nDigis_ += det.size ();
9491 }
92+ digis_d_ = SiPixelDigisSoACollection (nDigis_, iEvent.queue ());
9593
96- if (nDigis == 0 )
94+ if (nDigis_ == 0 )
9795 return ;
9896
99- nDigis_ = nDigis;
10097 SiPixelDigisHost digis_h (nDigis_, iEvent.queue ());
10198
102- nDigis = 0 ;
99+ uint32_t nDigis = 0 ;
103100 for (const auto & det : input) {
104101 unsigned int detid = det.detId ();
105102 DetId detIdObject (detid);
@@ -116,22 +113,20 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE {
116113 ++nDigis;
117114 }
118115 }
116+ assert (nDigis == nDigis_);
119117
120- digis_d_ = SiPixelDigisSoACollection (nDigis, iEvent.queue ());
121118 alpaka::memcpy (iEvent.queue (), digis_d_->buffer (), digis_h.buffer ());
122- Algo_ .makePhase2ClustersAsync (iEvent.queue (), clusterThresholds_, digis_d_->view (), nDigis_);
119+ algo_ .makePhase2ClustersAsync (iEvent.queue (), clusterThresholds_, digis_d_->view (), nDigis_);
123120 }
124121
125122 void SiPixelPhase2DigiToCluster::produce (device::Event& iEvent, device::EventSetup const & iSetup) {
126123 if (nDigis_ == 0 ) {
127- SiPixelClustersSoACollection clusters_d{pixelTopology::Phase2::numberOfModules, iEvent.queue ()};
128- SiPixelDigisSoACollection digis_d_zero{0 , iEvent.queue ()};
129- iEvent.emplace (digiPutToken_, std::move (digis_d_zero));
130- iEvent.emplace (clusterPutToken_, std::move (clusters_d));
124+ iEvent.emplace (digiPutToken_, std::move (*digis_d_));
125+ iEvent.emplace (clusterPutToken_, pixelTopology::Phase2::numberOfModules, iEvent.queue ());
131126 } else {
132- digis_d_->setNModules (Algo_ .nModules ());
127+ digis_d_->setNModules (algo_ .nModules ());
133128 iEvent.emplace (digiPutToken_, std::move (*digis_d_));
134- iEvent.emplace (clusterPutToken_, Algo_ .getClusters ());
129+ iEvent.emplace (clusterPutToken_, algo_ .getClusters ());
135130 }
136131 digis_d_.reset ();
137132 }
0 commit comments