diff --git a/RecoTracker/LSTCore/src/alpaka/Event.dev.cc b/RecoTracker/LSTCore/src/alpaka/Event.dev.cc index 23f3d5c68e17d..7badc77baa94d 100644 --- a/RecoTracker/LSTCore/src/alpaka/Event.dev.cc +++ b/RecoTracker/LSTCore/src/alpaka/Event.dev.cc @@ -12,26 +12,26 @@ using namespace ALPAKA_ACCELERATOR_NAMESPACE::lst; void Event::initSync(bool verbose) { alpaka::wait(queue); // other calls can be asynchronous addObjects = verbose; - hitsInGPU = nullptr; - mdsInGPU = nullptr; - segmentsInGPU = nullptr; - tripletsInGPU = nullptr; - quintupletsInGPU = nullptr; - trackCandidatesInGPU = nullptr; - pixelTripletsInGPU = nullptr; - pixelQuintupletsInGPU = nullptr; - rangesInGPU = nullptr; - - hitsInCPU = nullptr; - rangesInCPU = nullptr; - mdsInCPU = nullptr; - segmentsInCPU = nullptr; - tripletsInCPU = nullptr; - trackCandidatesInCPU = nullptr; - modulesInCPU = nullptr; - quintupletsInCPU = nullptr; - pixelTripletsInCPU = nullptr; - pixelQuintupletsInCPU = nullptr; + hitsInGPU = std::nullopt; + mdsInGPU = std::nullopt; + segmentsInGPU = std::nullopt; + tripletsInGPU = std::nullopt; + quintupletsInGPU = std::nullopt; + trackCandidatesInGPU = std::nullopt; + pixelTripletsInGPU = std::nullopt; + pixelQuintupletsInGPU = std::nullopt; + rangesInGPU = std::nullopt; + + hitsInCPU = std::nullopt; + rangesInCPU = std::nullopt; + mdsInCPU = std::nullopt; + segmentsInCPU = std::nullopt; + tripletsInCPU = std::nullopt; + trackCandidatesInCPU = std::nullopt; + modulesInCPU = std::nullopt; + quintupletsInCPU = std::nullopt; + pixelTripletsInCPU = std::nullopt; + pixelQuintupletsInCPU = std::nullopt; //reset the arrays for (int i = 0; i < 6; i++) { @@ -72,90 +72,71 @@ void Event::resetEventSync() { } } if (hitsInGPU) { - delete hitsInGPU; - delete hitsBuffers; - hitsInGPU = nullptr; + hitsInGPU = std::nullopt; + hitsBuffers = std::nullopt; } if (mdsInGPU) { - delete mdsInGPU; - delete miniDoubletsBuffers; - mdsInGPU = nullptr; + mdsInGPU = std::nullopt; + miniDoubletsBuffers = std::nullopt; } if (rangesInGPU) { - delete rangesInGPU; - delete rangesBuffers; - rangesInGPU = nullptr; + rangesInGPU = std::nullopt; + rangesBuffers = std::nullopt; } if (segmentsInGPU) { - delete segmentsInGPU; - delete segmentsBuffers; - segmentsInGPU = nullptr; + segmentsInGPU = std::nullopt; + segmentsBuffers = std::nullopt; } if (tripletsInGPU) { - delete tripletsInGPU; - delete tripletsBuffers; - tripletsInGPU = nullptr; + tripletsInGPU = std::nullopt; + tripletsBuffers = std::nullopt; } if (quintupletsInGPU) { - delete quintupletsInGPU; - delete quintupletsBuffers; - quintupletsInGPU = nullptr; + quintupletsInGPU = std::nullopt; + quintupletsBuffers = std::nullopt; } if (trackCandidatesInGPU) { - delete trackCandidatesInGPU; - delete trackCandidatesBuffers; - trackCandidatesInGPU = nullptr; + trackCandidatesInGPU = std::nullopt; + trackCandidatesBuffers = std::nullopt; } if (pixelTripletsInGPU) { - delete pixelTripletsInGPU; - delete pixelTripletsBuffers; - pixelTripletsInGPU = nullptr; + pixelTripletsInGPU = std::nullopt; + pixelTripletsBuffers = std::nullopt; } if (pixelQuintupletsInGPU) { - delete pixelQuintupletsInGPU; - delete pixelQuintupletsBuffers; - pixelQuintupletsInGPU = nullptr; + pixelQuintupletsInGPU = std::nullopt; + pixelQuintupletsBuffers = std::nullopt; } - if (hitsInCPU != nullptr) { - delete hitsInCPU; - hitsInCPU = nullptr; + if (hitsInCPU) { + hitsInCPU = std::nullopt; } - if (rangesInCPU != nullptr) { - delete rangesInCPU; - rangesInCPU = nullptr; + if (rangesInCPU) { + rangesInCPU = std::nullopt; } - if (mdsInCPU != nullptr) { - delete mdsInCPU; - mdsInCPU = nullptr; + if (mdsInCPU) { + mdsInCPU = std::nullopt; } - if (segmentsInCPU != nullptr) { - delete segmentsInCPU; - segmentsInCPU = nullptr; + if (segmentsInCPU) { + segmentsInCPU = std::nullopt; } - if (tripletsInCPU != nullptr) { - delete tripletsInCPU; - tripletsInCPU = nullptr; + if (tripletsInCPU) { + tripletsInCPU = std::nullopt; } - if (quintupletsInCPU != nullptr) { - delete quintupletsInCPU; - quintupletsInCPU = nullptr; + if (quintupletsInCPU) { + quintupletsInCPU = std::nullopt; } - if (pixelTripletsInCPU != nullptr) { - delete pixelTripletsInCPU; - pixelTripletsInCPU = nullptr; + if (pixelTripletsInCPU) { + pixelTripletsInCPU = std::nullopt; } - if (pixelQuintupletsInCPU != nullptr) { - delete pixelQuintupletsInCPU; - pixelQuintupletsInCPU = nullptr; + if (pixelQuintupletsInCPU) { + pixelQuintupletsInCPU = std::nullopt; } - if (trackCandidatesInCPU != nullptr) { - delete trackCandidatesInCPU; - trackCandidatesInCPU = nullptr; + if (trackCandidatesInCPU) { + trackCandidatesInCPU = std::nullopt; } - if (modulesInCPU != nullptr) { - delete modulesInCPU; - modulesInCPU = nullptr; + if (modulesInCPU) { + modulesInCPU = std::nullopt; } } @@ -168,15 +149,15 @@ void Event::addHitToEvent(std::vector const& x, unsigned int nHits = x.size(); // Initialize space on device/host for next event. - if (hitsInGPU == nullptr) { - hitsInGPU = new Hits(); - hitsBuffers = new HitsBuffer(nModules_, nHits, devAcc, queue); + if (!hitsInGPU) { + hitsInGPU = Hits(); + hitsBuffers = HitsBuffer(nModules_, nHits, devAcc, queue); hitsInGPU->setData(*hitsBuffers); } - if (rangesInGPU == nullptr) { - rangesInGPU = new ObjectRanges(); - rangesBuffers = new ObjectRangesBuffer(nModules_, nLowerModules_, devAcc, queue); + if (!rangesInGPU) { + rangesInGPU = ObjectRanges(); + rangesBuffers = ObjectRangesBuffer(nModules_, nLowerModules_, devAcc, queue); rangesInGPU->setData(*rangesBuffers); } @@ -249,7 +230,7 @@ void Event::addPixelSegmentToEvent(std::vector const& hitIndices0, unsigned int mdSize = 2 * size; uint16_t pixelModuleIndex = pixelMapping_.pixelModuleIndex; - if (mdsInGPU == nullptr) { + if (!mdsInGPU) { // Create a view for the element nLowerModules_ inside rangesBuffers->miniDoubletModuleOccupancy auto dst_view_miniDoubletModuleOccupancy = alpaka::createSubView(rangesBuffers->miniDoubletModuleOccupancy_buf, (Idx)1u, (Idx)nLowerModules_); @@ -272,13 +253,13 @@ void Event::addPixelSegmentToEvent(std::vector const& hitIndices0, *nTotalMDs_buf_h.data() += n_max_pixel_md_per_modules; unsigned int nTotalMDs = *nTotalMDs_buf_h.data(); - mdsInGPU = new MiniDoublets(); - miniDoubletsBuffers = new MiniDoubletsBuffer(nTotalMDs, nLowerModules_, devAcc, queue); + mdsInGPU = MiniDoublets(); + miniDoubletsBuffers = MiniDoubletsBuffer(nTotalMDs, nLowerModules_, devAcc, queue); mdsInGPU->setData(*miniDoubletsBuffers); alpaka::memcpy(queue, miniDoubletsBuffers->nMemoryLocations_buf, nTotalMDs_buf_h); } - if (segmentsInGPU == nullptr) { + if (!segmentsInGPU) { // can be optimized here: because we didn't distinguish pixel segments and outer-tracker segments and call them both "segments", so they use the index continuously. // If we want to further study the memory footprint in detail, we can separate the two and allocate different memories to them @@ -298,9 +279,9 @@ void Event::addPixelSegmentToEvent(std::vector const& hitIndices0, nTotalSegments_ += n_max_pixel_segments_per_module; - segmentsInGPU = new Segments(); + segmentsInGPU = Segments(); segmentsBuffers = - new SegmentsBuffer(nTotalSegments_, nLowerModules_, n_max_pixel_segments_per_module, devAcc, queue); + SegmentsBuffer(nTotalSegments_, nLowerModules_, n_max_pixel_segments_per_module, devAcc, queue); segmentsInGPU->setData(*segmentsBuffers); alpaka::memcpy(queue, segmentsBuffers->nMemoryLocations_buf, nTotalSegments_view); @@ -396,9 +377,9 @@ void Event::createMiniDoublets() { *nTotalMDs_buf_h.data() += n_max_pixel_md_per_modules; unsigned int nTotalMDs = *nTotalMDs_buf_h.data(); - if (mdsInGPU == nullptr) { - mdsInGPU = new MiniDoublets(); - miniDoubletsBuffers = new MiniDoubletsBuffer(nTotalMDs, nLowerModules_, devAcc, queue); + if (!mdsInGPU) { + mdsInGPU = MiniDoublets(); + miniDoubletsBuffers = MiniDoubletsBuffer(nTotalMDs, nLowerModules_, devAcc, queue); mdsInGPU->setData(*miniDoubletsBuffers); } @@ -431,10 +412,10 @@ void Event::createMiniDoublets() { } void Event::createSegmentsWithModuleMap() { - if (segmentsInGPU == nullptr) { - segmentsInGPU = new Segments(); + if (!segmentsInGPU) { + segmentsInGPU = Segments(); segmentsBuffers = - new SegmentsBuffer(nTotalSegments_, nLowerModules_, n_max_pixel_segments_per_module, devAcc, queue); + SegmentsBuffer(nTotalSegments_, nLowerModules_, n_max_pixel_segments_per_module, devAcc, queue); segmentsInGPU->setData(*segmentsBuffers); } @@ -466,7 +447,7 @@ void Event::createSegmentsWithModuleMap() { } void Event::createTriplets() { - if (tripletsInGPU == nullptr) { + if (!tripletsInGPU) { WorkDiv1D const createTripletArrayRanges_workDiv = createWorkDiv({1}, {1024}, {1}); alpaka::exec(queue, @@ -482,8 +463,8 @@ void Event::createTriplets() { alpaka::memcpy(queue, maxTriplets_buf_h, rangesBuffers->device_nTotalTrips_buf); alpaka::wait(queue); // wait to get the value before using it - tripletsInGPU = new Triplets(); - tripletsBuffers = new TripletsBuffer(*maxTriplets_buf_h.data(), nLowerModules_, devAcc, queue); + tripletsInGPU = Triplets(); + tripletsBuffers = TripletsBuffer(*maxTriplets_buf_h.data(), nLowerModules_, devAcc, queue); tripletsInGPU->setData(*tripletsBuffers); alpaka::memcpy(queue, tripletsBuffers->nMemoryLocations_buf, maxTriplets_buf_h); @@ -555,10 +536,10 @@ void Event::createTriplets() { } void Event::createTrackCandidates(bool no_pls_dupclean, bool tc_pls_triplets) { - if (trackCandidatesInGPU == nullptr) { - trackCandidatesInGPU = new TrackCandidates(); - trackCandidatesBuffers = new TrackCandidatesBuffer( - n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devAcc, queue); + if (!trackCandidatesInGPU) { + trackCandidatesInGPU = TrackCandidates(); + trackCandidatesBuffers = + TrackCandidatesBuffer(n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devAcc, queue); trackCandidatesInGPU->setData(*trackCandidatesBuffers); } @@ -697,9 +678,9 @@ void Event::createTrackCandidates(bool no_pls_dupclean, bool tc_pls_triplets) { } void Event::createPixelTriplets() { - if (pixelTripletsInGPU == nullptr) { - pixelTripletsInGPU = new PixelTriplets(); - pixelTripletsBuffers = new PixelTripletsBuffer(n_max_pixel_triplets, devAcc, queue); + if (!pixelTripletsInGPU) { + pixelTripletsInGPU = PixelTriplets(); + pixelTripletsBuffers = PixelTripletsBuffer(n_max_pixel_triplets, devAcc, queue); pixelTripletsInGPU->setData(*pixelTripletsBuffers); } @@ -832,9 +813,9 @@ void Event::createQuintuplets() { auto nEligibleT5Modules = *nEligibleT5Modules_buf.data(); auto nTotalQuintuplets = *nTotalQuintuplets_buf.data(); - if (quintupletsInGPU == nullptr) { - quintupletsInGPU = new Quintuplets(); - quintupletsBuffers = new QuintupletsBuffer(nTotalQuintuplets, nLowerModules_, devAcc, queue); + if (!quintupletsInGPU) { + quintupletsInGPU = Quintuplets(); + quintupletsBuffers = QuintupletsBuffer(nTotalQuintuplets, nLowerModules_, devAcc, queue); quintupletsInGPU->setData(*quintupletsBuffers); alpaka::memcpy(queue, quintupletsBuffers->nMemoryLocations_buf, nTotalQuintuplets_buf); @@ -894,15 +875,15 @@ void Event::pixelLineSegmentCleaning(bool no_pls_dupclean) { } void Event::createPixelQuintuplets() { - if (pixelQuintupletsInGPU == nullptr) { - pixelQuintupletsInGPU = new PixelQuintuplets(); - pixelQuintupletsBuffers = new PixelQuintupletsBuffer(n_max_pixel_quintuplets, devAcc, queue); + if (!pixelQuintupletsInGPU) { + pixelQuintupletsInGPU = PixelQuintuplets(); + pixelQuintupletsBuffers = PixelQuintupletsBuffer(n_max_pixel_quintuplets, devAcc, queue); pixelQuintupletsInGPU->setData(*pixelQuintupletsBuffers); } - if (trackCandidatesInGPU == nullptr) { - trackCandidatesInGPU = new TrackCandidates(); - trackCandidatesBuffers = new TrackCandidatesBuffer( - n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devAcc, queue); + if (!trackCandidatesInGPU) { + trackCandidatesInGPU = TrackCandidates(); + trackCandidatesBuffers = + TrackCandidatesBuffer(n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devAcc, queue); trackCandidatesInGPU->setData(*trackCandidatesBuffers); } @@ -1343,15 +1324,15 @@ int Event::getNumberOfT5TrackCandidates() { return *nTrackCandidatesT5_buf_h.data(); } -HitsBuffer* Event::getHits(bool sync) //std::shared_ptr should take care of garbage collection +HitsBuffer& Event::getHits(bool sync) //std::shared_ptr should take care of garbage collection { - if (hitsInCPU == nullptr) { + if (!hitsInCPU) { auto nHits_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nHits_buf_h, hitsBuffers->nHits_buf); alpaka::wait(queue); // wait for the value before using auto const nHits = *nHits_buf_h.data(); - hitsInCPU = new HitsBuffer(nModules_, nHits, devHost, queue); + hitsInCPU = HitsBuffer(nModules_, nHits, devHost, queue); hitsInCPU->setData(*hitsInCPU); alpaka::memcpy(queue, hitsInCPU->nHits_buf, hitsBuffers->nHits_buf); @@ -1364,17 +1345,17 @@ HitsBuffer* Event::getHits(bool sync) //std::shared_ptr if (sync) alpaka::wait(queue); // host consumers expect filled data } - return hitsInCPU; + return hitsInCPU.value(); } -HitsBuffer* Event::getHitsInCMSSW(bool sync) { - if (hitsInCPU == nullptr) { +HitsBuffer& Event::getHitsInCMSSW(bool sync) { + if (!hitsInCPU) { auto nHits_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nHits_buf_h, hitsBuffers->nHits_buf); alpaka::wait(queue); // wait for the value before using auto const nHits = *nHits_buf_h.data(); - hitsInCPU = new HitsBuffer(nModules_, nHits, devHost, queue); + hitsInCPU = HitsBuffer(nModules_, nHits, devHost, queue); hitsInCPU->setData(*hitsInCPU); alpaka::memcpy(queue, hitsInCPU->nHits_buf, hitsBuffers->nHits_buf); @@ -1382,12 +1363,12 @@ HitsBuffer* Event::getHitsInCMSSW(bool sync) { if (sync) alpaka::wait(queue); // host consumers expect filled data } - return hitsInCPU; + return hitsInCPU.value(); } -ObjectRangesBuffer* Event::getRanges(bool sync) { - if (rangesInCPU == nullptr) { - rangesInCPU = new ObjectRangesBuffer(nModules_, nLowerModules_, devHost, queue); +ObjectRangesBuffer& Event::getRanges(bool sync) { + if (!rangesInCPU) { + rangesInCPU = ObjectRangesBuffer(nModules_, nLowerModules_, devHost, queue); rangesInCPU->setData(*rangesInCPU); alpaka::memcpy(queue, rangesInCPU->hitRanges_buf, rangesBuffers->hitRanges_buf); @@ -1398,18 +1379,18 @@ ObjectRangesBuffer* Event::getRanges(bool sync) { if (sync) alpaka::wait(queue); // wait to get completed host data } - return rangesInCPU; + return rangesInCPU.value(); } -MiniDoubletsBuffer* Event::getMiniDoublets(bool sync) { - if (mdsInCPU == nullptr) { +MiniDoubletsBuffer& Event::getMiniDoublets(bool sync) { + if (!mdsInCPU) { // Get nMemoryLocations parameter to initialize host based mdsInCPU auto nMemHost_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nMemHost_buf_h, miniDoubletsBuffers->nMemoryLocations_buf); alpaka::wait(queue); // wait for the value before using auto const nMemHost = *nMemHost_buf_h.data(); - mdsInCPU = new MiniDoubletsBuffer(nMemHost, nLowerModules_, devHost, queue); + mdsInCPU = MiniDoubletsBuffer(nMemHost, nLowerModules_, devHost, queue); mdsInCPU->setData(*mdsInCPU); alpaka::memcpy(queue, mdsInCPU->nMemoryLocations_buf, miniDoubletsBuffers->nMemoryLocations_buf); @@ -1421,19 +1402,18 @@ MiniDoubletsBuffer* Event::getMiniDoublets(bool sync) { if (sync) alpaka::wait(queue); // host consumers expect filled data } - return mdsInCPU; + return mdsInCPU.value(); } -SegmentsBuffer* Event::getSegments(bool sync) { - if (segmentsInCPU == nullptr) { +SegmentsBuffer& Event::getSegments(bool sync) { + if (!segmentsInCPU) { // Get nMemoryLocations parameter to initialize host based segmentsInCPU auto nMemHost_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nMemHost_buf_h, segmentsBuffers->nMemoryLocations_buf); alpaka::wait(queue); // wait for the value before using auto const nMemHost = *nMemHost_buf_h.data(); - segmentsInCPU = - new SegmentsBuffer(nMemHost, nLowerModules_, n_max_pixel_segments_per_module, devHost, queue); + segmentsInCPU = SegmentsBuffer(nMemHost, nLowerModules_, n_max_pixel_segments_per_module, devHost, queue); segmentsInCPU->setData(*segmentsInCPU); alpaka::memcpy(queue, segmentsInCPU->nMemoryLocations_buf, segmentsBuffers->nMemoryLocations_buf); @@ -1458,18 +1438,18 @@ SegmentsBuffer* Event::getSegments(bool sync) { if (sync) alpaka::wait(queue); // host consumers expect filled data } - return segmentsInCPU; + return segmentsInCPU.value(); } -TripletsBuffer* Event::getTriplets(bool sync) { - if (tripletsInCPU == nullptr) { +TripletsBuffer& Event::getTriplets(bool sync) { + if (!tripletsInCPU) { // Get nMemoryLocations parameter to initialize host based tripletsInCPU auto nMemHost_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nMemHost_buf_h, tripletsBuffers->nMemoryLocations_buf); alpaka::wait(queue); // wait for the value before using auto const nMemHost = *nMemHost_buf_h.data(); - tripletsInCPU = new TripletsBuffer(nMemHost, nLowerModules_, devHost, queue); + tripletsInCPU = TripletsBuffer(nMemHost, nLowerModules_, devHost, queue); tripletsInCPU->setData(*tripletsInCPU); alpaka::memcpy(queue, tripletsInCPU->nMemoryLocations_buf, tripletsBuffers->nMemoryLocations_buf); @@ -1495,18 +1475,18 @@ TripletsBuffer* Event::getTriplets(bool sync) { if (sync) alpaka::wait(queue); // host consumers expect filled data } - return tripletsInCPU; + return tripletsInCPU.value(); } -QuintupletsBuffer* Event::getQuintuplets(bool sync) { - if (quintupletsInCPU == nullptr) { +QuintupletsBuffer& Event::getQuintuplets(bool sync) { + if (!quintupletsInCPU) { // Get nMemoryLocations parameter to initialize host based quintupletsInCPU auto nMemHost_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nMemHost_buf_h, quintupletsBuffers->nMemoryLocations_buf); alpaka::wait(queue); // wait for the value before using auto const nMemHost = *nMemHost_buf_h.data(); - quintupletsInCPU = new QuintupletsBuffer(nMemHost, nLowerModules_, devHost, queue); + quintupletsInCPU = QuintupletsBuffer(nMemHost, nLowerModules_, devHost, queue); quintupletsInCPU->setData(*quintupletsInCPU); alpaka::memcpy(queue, quintupletsInCPU->nMemoryLocations_buf, quintupletsBuffers->nMemoryLocations_buf); @@ -1532,18 +1512,18 @@ QuintupletsBuffer* Event::getQuintuplets(bool sync) { if (sync) alpaka::wait(queue); // host consumers expect filled data } - return quintupletsInCPU; + return quintupletsInCPU.value(); } -PixelTripletsBuffer* Event::getPixelTriplets(bool sync) { - if (pixelTripletsInCPU == nullptr) { +PixelTripletsBuffer& Event::getPixelTriplets(bool sync) { + if (!pixelTripletsInCPU) { // Get nPixelTriplets parameter to initialize host based quintupletsInCPU auto nPixelTriplets_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nPixelTriplets_buf_h, pixelTripletsBuffers->nPixelTriplets_buf); alpaka::wait(queue); // wait for the value before using auto const nPixelTriplets = *nPixelTriplets_buf_h.data(); - pixelTripletsInCPU = new PixelTripletsBuffer(nPixelTriplets, devHost, queue); + pixelTripletsInCPU = PixelTripletsBuffer(nPixelTriplets, devHost, queue); pixelTripletsInCPU->setData(*pixelTripletsInCPU); alpaka::memcpy(queue, pixelTripletsInCPU->nPixelTriplets_buf, pixelTripletsBuffers->nPixelTriplets_buf); @@ -1572,18 +1552,18 @@ PixelTripletsBuffer* Event::getPixelTriplets(bool sync) if (sync) alpaka::wait(queue); // host consumers expect filled data } - return pixelTripletsInCPU; + return pixelTripletsInCPU.value(); } -PixelQuintupletsBuffer* Event::getPixelQuintuplets(bool sync) { - if (pixelQuintupletsInCPU == nullptr) { +PixelQuintupletsBuffer& Event::getPixelQuintuplets(bool sync) { + if (!pixelQuintupletsInCPU) { // Get nPixelQuintuplets parameter to initialize host based quintupletsInCPU auto nPixelQuintuplets_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nPixelQuintuplets_buf_h, pixelQuintupletsBuffers->nPixelQuintuplets_buf); alpaka::wait(queue); // wait for the value before using auto const nPixelQuintuplets = *nPixelQuintuplets_buf_h.data(); - pixelQuintupletsInCPU = new PixelQuintupletsBuffer(nPixelQuintuplets, devHost, queue); + pixelQuintupletsInCPU = PixelQuintupletsBuffer(nPixelQuintuplets, devHost, queue); pixelQuintupletsInCPU->setData(*pixelQuintupletsInCPU); alpaka::memcpy(queue, pixelQuintupletsInCPU->nPixelQuintuplets_buf, pixelQuintupletsBuffers->nPixelQuintuplets_buf); @@ -1609,16 +1589,16 @@ PixelQuintupletsBuffer* Event::getPixelQuintuplets(bool if (sync) alpaka::wait(queue); // host consumers expect filled data } - return pixelQuintupletsInCPU; + return pixelQuintupletsInCPU.value(); } -TrackCandidatesBuffer* Event::getTrackCandidates(bool sync) { - if (trackCandidatesInCPU == nullptr) { +TrackCandidatesBuffer& Event::getTrackCandidates(bool sync) { + if (!trackCandidatesInCPU) { // Get nTrackCanHost parameter to initialize host based trackCandidatesInCPU auto nTrackCanHost_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nTrackCanHost_buf_h, trackCandidatesBuffers->nTrackCandidates_buf); - trackCandidatesInCPU = new TrackCandidatesBuffer( - n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devHost, queue); + trackCandidatesInCPU = + TrackCandidatesBuffer(n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devHost, queue); trackCandidatesInCPU->setData(*trackCandidatesInCPU); alpaka::wait(queue); // wait here before we get nTrackCanHost and trackCandidatesInCPU becomes usable @@ -1648,16 +1628,16 @@ TrackCandidatesBuffer* Event::getTrackCandidates(bool sy if (sync) alpaka::wait(queue); // host consumers expect filled data } - return trackCandidatesInCPU; + return trackCandidatesInCPU.value(); } -TrackCandidatesBuffer* Event::getTrackCandidatesInCMSSW(bool sync) { - if (trackCandidatesInCPU == nullptr) { +TrackCandidatesBuffer& Event::getTrackCandidatesInCMSSW(bool sync) { + if (!trackCandidatesInCPU) { // Get nTrackCanHost parameter to initialize host based trackCandidatesInCPU auto nTrackCanHost_buf_h = cms::alpakatools::make_host_buffer(queue, 1u); alpaka::memcpy(queue, nTrackCanHost_buf_h, trackCandidatesBuffers->nTrackCandidates_buf); - trackCandidatesInCPU = new TrackCandidatesBuffer( - n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devHost, queue); + trackCandidatesInCPU = + TrackCandidatesBuffer(n_max_nonpixel_track_candidates + n_max_pixel_track_candidates, devHost, queue); trackCandidatesInCPU->setData(*trackCandidatesInCPU); alpaka::wait(queue); // wait for the value before using and trackCandidatesInCPU becomes usable @@ -1677,17 +1657,17 @@ TrackCandidatesBuffer* Event::getTrackCandidatesInCMSSW( if (sync) alpaka::wait(queue); // host consumers expect filled data } - return trackCandidatesInCPU; + return trackCandidatesInCPU.value(); } -ModulesBuffer* Event::getModules(bool isFull, bool sync) { - if (modulesInCPU == nullptr) { +ModulesBuffer& Event::getModules(bool isFull, bool sync) { + if (!modulesInCPU) { // The last input here is just a small placeholder for the allocation. - modulesInCPU = new ModulesBuffer(devHost, nModules_, nPixels_); + modulesInCPU = ModulesBuffer(devHost, nModules_, nPixels_); modulesInCPU->copyFromSrc(queue, modulesBuffers_, isFull); if (sync) alpaka::wait(queue); // host consumers expect filled data } - return modulesInCPU; + return modulesInCPU.value(); } diff --git a/RecoTracker/LSTCore/src/alpaka/Event.h b/RecoTracker/LSTCore/src/alpaka/Event.h index c794bd59062b5..d3f6525b0333a 100644 --- a/RecoTracker/LSTCore/src/alpaka/Event.h +++ b/RecoTracker/LSTCore/src/alpaka/Event.h @@ -1,6 +1,8 @@ #ifndef RecoTracker_LSTCore_src_alpaka_Event_h #define RecoTracker_LSTCore_src_alpaka_Event_h +#include + #include "RecoTracker/LSTCore/interface/alpaka/Constants.h" #include "RecoTracker/LSTCore/interface/alpaka/LST.h" #include "RecoTracker/LSTCore/interface/Module.h" @@ -47,36 +49,36 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { unsigned int nTotalSegments_; //Device stuff - ObjectRanges* rangesInGPU; - ObjectRangesBuffer* rangesBuffers; - Hits* hitsInGPU; - HitsBuffer* hitsBuffers; - MiniDoublets* mdsInGPU; - MiniDoubletsBuffer* miniDoubletsBuffers; - Segments* segmentsInGPU; - SegmentsBuffer* segmentsBuffers; - Triplets* tripletsInGPU; - TripletsBuffer* tripletsBuffers; - Quintuplets* quintupletsInGPU; - QuintupletsBuffer* quintupletsBuffers; - TrackCandidates* trackCandidatesInGPU; - TrackCandidatesBuffer* trackCandidatesBuffers; - PixelTriplets* pixelTripletsInGPU; - PixelTripletsBuffer* pixelTripletsBuffers; - PixelQuintuplets* pixelQuintupletsInGPU; - PixelQuintupletsBuffer* pixelQuintupletsBuffers; + std::optional rangesInGPU; + std::optional> rangesBuffers; + std::optional hitsInGPU; + std::optional> hitsBuffers; + std::optional mdsInGPU; + std::optional> miniDoubletsBuffers; + std::optional segmentsInGPU; + std::optional> segmentsBuffers; + std::optional tripletsInGPU; + std::optional> tripletsBuffers; + std::optional quintupletsInGPU; + std::optional> quintupletsBuffers; + std::optional trackCandidatesInGPU; + std::optional> trackCandidatesBuffers; + std::optional pixelTripletsInGPU; + std::optional> pixelTripletsBuffers; + std::optional pixelQuintupletsInGPU; + std::optional> pixelQuintupletsBuffers; //CPU interface stuff - ObjectRangesBuffer* rangesInCPU; - HitsBuffer* hitsInCPU; - MiniDoubletsBuffer* mdsInCPU; - SegmentsBuffer* segmentsInCPU; - TripletsBuffer* tripletsInCPU; - TrackCandidatesBuffer* trackCandidatesInCPU; - ModulesBuffer* modulesInCPU; - QuintupletsBuffer* quintupletsInCPU; - PixelTripletsBuffer* pixelTripletsInCPU; - PixelQuintupletsBuffer* pixelQuintupletsInCPU; + std::optional> rangesInCPU; + std::optional> hitsInCPU; + std::optional> mdsInCPU; + std::optional> segmentsInCPU; + std::optional> tripletsInCPU; + std::optional> trackCandidatesInCPU; + std::optional> modulesInCPU; + std::optional> quintupletsInCPU; + std::optional> pixelTripletsInCPU; + std::optional> pixelQuintupletsInCPU; void initSync(bool verbose); @@ -186,18 +188,18 @@ namespace ALPAKA_ACCELERATOR_NAMESPACE { // (has no effect on repeated calls) // set to false may allow faster operation with concurrent calls of get* // HANDLE WITH CARE - HitsBuffer* getHits(bool sync = true); - HitsBuffer* getHitsInCMSSW(bool sync = true); - ObjectRangesBuffer* getRanges(bool sync = true); - MiniDoubletsBuffer* getMiniDoublets(bool sync = true); - SegmentsBuffer* getSegments(bool sync = true); - TripletsBuffer* getTriplets(bool sync = true); - QuintupletsBuffer* getQuintuplets(bool sync = true); - PixelTripletsBuffer* getPixelTriplets(bool sync = true); - PixelQuintupletsBuffer* getPixelQuintuplets(bool sync = true); - TrackCandidatesBuffer* getTrackCandidates(bool sync = true); - TrackCandidatesBuffer* getTrackCandidatesInCMSSW(bool sync = true); - ModulesBuffer* getModules(bool isFull = false, bool sync = true); + HitsBuffer& getHits(bool sync = true); + HitsBuffer& getHitsInCMSSW(bool sync = true); + ObjectRangesBuffer& getRanges(bool sync = true); + MiniDoubletsBuffer& getMiniDoublets(bool sync = true); + SegmentsBuffer& getSegments(bool sync = true); + TripletsBuffer& getTriplets(bool sync = true); + QuintupletsBuffer& getQuintuplets(bool sync = true); + PixelTripletsBuffer& getPixelTriplets(bool sync = true); + PixelQuintupletsBuffer& getPixelQuintuplets(bool sync = true); + TrackCandidatesBuffer& getTrackCandidates(bool sync = true); + TrackCandidatesBuffer& getTrackCandidatesInCMSSW(bool sync = true); + ModulesBuffer& getModules(bool isFull = false, bool sync = true); }; } // namespace lst diff --git a/RecoTracker/LSTCore/src/alpaka/LST.dev.cc b/RecoTracker/LSTCore/src/alpaka/LST.dev.cc index 2599beeca520a..402d8ce62132e 100644 --- a/RecoTracker/LSTCore/src/alpaka/LST.dev.cc +++ b/RecoTracker/LSTCore/src/alpaka/LST.dev.cc @@ -253,8 +253,8 @@ void ALPAKA_ACCELERATOR_NAMESPACE::lst::LST::getOutput(ALPAKA_ACCELERATOR_NAMESP std::vector tc_seedIdx; std::vector tc_trackCandidateType; - HitsBuffer& hitsInGPU = (*event.getHitsInCMSSW(false)); // sync on next line - TrackCandidates const* trackCandidates = event.getTrackCandidatesInCMSSW()->data(); + HitsBuffer& hitsInGPU = event.getHitsInCMSSW(false); // sync on next line + TrackCandidates const* trackCandidates = event.getTrackCandidatesInCMSSW().data(); unsigned int nTrackCandidates = *trackCandidates->nTrackCandidates; diff --git a/RecoTracker/LSTCore/standalone/code/core/AccessHelper.cc b/RecoTracker/LSTCore/standalone/code/core/AccessHelper.cc index eb48917952a38..d27675221ed67 100644 --- a/RecoTracker/LSTCore/standalone/code/core/AccessHelper.cc +++ b/RecoTracker/LSTCore/standalone/code/core/AccessHelper.cc @@ -9,7 +9,7 @@ using namespace ALPAKA_ACCELERATOR_NAMESPACE::lst; //____________________________________________________________________________________________ std::tuple, std::vector> convertHitsToHitIdxsAndHitTypes( Event* event, std::vector hits) { - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); std::vector hitidxs; std::vector hittypes; for (auto& hit : hits) { @@ -28,10 +28,10 @@ std::tuple, std::vector> convertHitsToHi //____________________________________________________________________________________________ std::vector getPixelHitsFrompLS(Event* event, unsigned int pLS) { - Segments const* segments = event->getSegments()->data(); - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - ObjectRanges const* rangesEvt = event->getRanges()->data(); - ::lst::Modules const* modulesEvt = event->getModules()->data(); + Segments const* segments = event->getSegments().data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + ObjectRanges const* rangesEvt = event->getRanges().data(); + ::lst::Modules const* modulesEvt = event->getModules().data(); const unsigned int pLS_offset = rangesEvt->segmentModuleIndices[*(modulesEvt->nLowerModules)]; unsigned int MD_1 = segments->mdIndices[2 * (pLS + pLS_offset)]; unsigned int MD_2 = segments->mdIndices[2 * (pLS + pLS_offset) + 1]; @@ -47,7 +47,7 @@ std::vector getPixelHitsFrompLS(Event* event, unsigned int pLS) { //____________________________________________________________________________________________ std::vector getPixelHitIdxsFrompLS(Event* event, unsigned int pLS) { - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); std::vector hits = getPixelHitsFrompLS(event, pLS); std::vector hitidxs; for (auto& hit : hits) @@ -74,7 +74,7 @@ std::tuple, std::vector> getHitIdxsAndHi //____________________________________________________________________________________________ std::vector getHitsFromMD(Event* event, unsigned int MD) { - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); unsigned int hit_1 = miniDoublets->anchorHitIndices[MD]; unsigned int hit_2 = miniDoublets->outerHitIndices[MD]; return {hit_1, hit_2}; @@ -92,7 +92,7 @@ std::tuple, std::vector> getHitIdxsAndHi //____________________________________________________________________________________________ std::vector getMDsFromLS(Event* event, unsigned int LS) { - Segments const* segments = event->getSegments()->data(); + Segments const* segments = event->getSegments().data(); unsigned int MD_1 = segments->mdIndices[2 * LS]; unsigned int MD_2 = segments->mdIndices[2 * LS + 1]; return {MD_1, MD_2}; @@ -118,7 +118,7 @@ std::tuple, std::vector> getHitIdxsAndHi //____________________________________________________________________________________________ std::vector getLSsFromT3(Event* event, unsigned int T3) { - Triplets const* triplets = event->getTriplets()->data(); + Triplets const* triplets = event->getTriplets().data(); unsigned int LS_1 = triplets->segmentIndices[2 * T3]; unsigned int LS_2 = triplets->segmentIndices[2 * T3 + 1]; return {LS_1, LS_2}; @@ -153,7 +153,7 @@ std::tuple, std::vector> getHitIdxsAndHi //____________________________________________________________________________________________ std::vector getT3sFromT5(Event* event, unsigned int T5) { - Quintuplets const* quintuplets = event->getQuintuplets()->data(); + Quintuplets const* quintuplets = event->getQuintuplets().data(); unsigned int T3_1 = quintuplets->tripletIndices[2 * T5]; unsigned int T3_2 = quintuplets->tripletIndices[2 * T5 + 1]; return {T3_1, T3_2}; @@ -190,7 +190,7 @@ std::vector getHitsFromT5(Event* event, unsigned int T5) { //____________________________________________________________________________________________ std::vector getHitIdxsFromT5(Event* event, unsigned int T5) { - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); std::vector hits = getHitsFromT5(event, T5); std::vector hitidxs; for (auto& hit : hits) @@ -201,7 +201,7 @@ std::vector getHitIdxsFromT5(Event* event, unsigned int T5) { std::vector getModuleIdxsFromT5(Event* event, unsigned int T5) { std::vector hits = getHitsFromT5(event, T5); std::vector module_idxs; - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); for (auto& hitIdx : hits) { module_idxs.push_back(hitsEvt->moduleIndices[hitIdx]); } @@ -225,16 +225,16 @@ std::tuple, std::vector> getHitIdxsAndHi //____________________________________________________________________________________________ unsigned int getPixelLSFrompT3(Event* event, unsigned int pT3) { - PixelTriplets const* pixelTriplets = event->getPixelTriplets()->data(); - ObjectRanges const* rangesEvt = event->getRanges()->data(); - ::lst::Modules const* modulesEvt = event->getModules()->data(); + PixelTriplets const* pixelTriplets = event->getPixelTriplets().data(); + ObjectRanges const* rangesEvt = event->getRanges().data(); + ::lst::Modules const* modulesEvt = event->getModules().data(); const unsigned int pLS_offset = rangesEvt->segmentModuleIndices[*(modulesEvt->nLowerModules)]; return pixelTriplets->pixelSegmentIndices[pT3] - pLS_offset; } //____________________________________________________________________________________________ unsigned int getT3FrompT3(Event* event, unsigned int pT3) { - PixelTriplets const* pixelTriplets = event->getPixelTriplets()->data(); + PixelTriplets const* pixelTriplets = event->getPixelTriplets().data(); return pixelTriplets->tripletIndices[pT3]; } @@ -274,7 +274,7 @@ std::vector getHitsFrompT3(Event* event, unsigned int pT3) { //____________________________________________________________________________________________ std::vector getHitIdxsFrompT3(Event* event, unsigned int pT3) { - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); std::vector hits = getHitsFrompT3(event, pT3); std::vector hitidxs; for (auto& hit : hits) @@ -285,7 +285,7 @@ std::vector getHitIdxsFrompT3(Event* event, unsigned int pT3) { std::vector getModuleIdxsFrompT3(Event* event, unsigned int pT3) { std::vector hits = getOuterTrackerHitsFrompT3(event, pT3); std::vector module_idxs; - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); for (auto& hitIdx : hits) { module_idxs.push_back(hitsEvt->moduleIndices[hitIdx]); } @@ -314,16 +314,16 @@ std::tuple, std::vector> getHitIdxsAndHi //____________________________________________________________________________________________ unsigned int getPixelLSFrompT5(Event* event, unsigned int pT5) { - PixelQuintuplets const* pixelQuintuplets = event->getPixelQuintuplets()->data(); - ObjectRanges const* rangesEvt = event->getRanges()->data(); - ::lst::Modules const* modulesEvt = event->getModules()->data(); + PixelQuintuplets const* pixelQuintuplets = event->getPixelQuintuplets().data(); + ObjectRanges const* rangesEvt = event->getRanges().data(); + ::lst::Modules const* modulesEvt = event->getModules().data(); const unsigned int pLS_offset = rangesEvt->segmentModuleIndices[*(modulesEvt->nLowerModules)]; return pixelQuintuplets->pixelIndices[pT5] - pLS_offset; } //____________________________________________________________________________________________ unsigned int getT5FrompT5(Event* event, unsigned int pT5) { - PixelQuintuplets const* pixelQuintuplets = event->getPixelQuintuplets()->data(); + PixelQuintuplets const* pixelQuintuplets = event->getPixelQuintuplets().data(); return pixelQuintuplets->T5Indices[pT5]; } @@ -369,7 +369,7 @@ std::vector getHitsFrompT5(Event* event, unsigned int pT5) { //____________________________________________________________________________________________ std::vector getHitIdxsFrompT5(Event* event, unsigned int pT5) { - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); std::vector hits = getHitsFrompT5(event, pT5); std::vector hitidxs; for (auto& hit : hits) @@ -381,7 +381,7 @@ std::vector getHitIdxsFrompT5(Event* event, unsigned int pT5) { std::vector getModuleIdxsFrompT5(Event* event, unsigned int pT5) { std::vector hits = getOuterTrackerHitsFrompT5(event, pT5); std::vector module_idxs; - Hits const* hitsEvt = event->getHits()->data(); + Hits const* hitsEvt = event->getHits().data(); for (auto& hitIdx : hits) { module_idxs.push_back(hitsEvt->moduleIndices[hitIdx]); } @@ -412,7 +412,7 @@ std::tuple, std::vector> getHitIdxsAndHi //____________________________________________________________________________________________ std::vector getLSsFromTC(Event* event, unsigned int TC) { // Get the type of the track candidate - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); short type = trackCandidates->trackCandidateType[TC]; unsigned int objidx = trackCandidates->directObjectIndices[TC]; switch (type) { @@ -435,7 +435,7 @@ std::vector getLSsFromTC(Event* event, unsigned int TC) { std::tuple, std::vector> getHitIdxsAndHitTypesFromTC(Event* event, unsigned TC) { // Get the type of the track candidate - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); short type = trackCandidates->trackCandidateType[TC]; unsigned int objidx = trackCandidates->directObjectIndices[TC]; switch (type) { diff --git a/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc b/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc index 7c330a768a175..96a48481d1477 100644 --- a/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc +++ b/RecoTracker/LSTCore/standalone/code/core/write_lst_ntuple.cc @@ -226,7 +226,7 @@ void setOutputBranches(Event* event) { std::vector> tc_matched_simIdx; // ============ Track candidates ============= - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); unsigned int nTrackCandidates = *trackCandidates->nTrackCandidates; for (unsigned int idx = 0; idx < nTrackCandidates; idx++) { // Compute reco quantities of track candidate based on final object @@ -291,10 +291,10 @@ void setOptionalOutputBranches(Event* event) { //________________________________________________________________________________________________________________________________ void setPixelQuintupletOutputBranches(Event* event) { // ============ pT5 ============= - PixelQuintuplets const* pixelQuintuplets = event->getPixelQuintuplets()->data(); - Quintuplets const* quintuplets = event->getQuintuplets()->data(); - Segments const* segments = event->getSegments()->data(); - ::lst::Modules const* modules = event->getModules()->data(); + PixelQuintuplets const* pixelQuintuplets = event->getPixelQuintuplets().data(); + Quintuplets const* quintuplets = event->getQuintuplets().data(); + Segments const* segments = event->getSegments().data(); + ::lst::Modules const* modules = event->getModules().data(); int n_accepted_simtrk = ana.tx->getBranch>("sim_TC_matched").size(); unsigned int nPixelQuintuplets = @@ -366,9 +366,9 @@ void setPixelQuintupletOutputBranches(Event* event) { //________________________________________________________________________________________________________________________________ void setQuintupletOutputBranches(Event* event) { - Quintuplets const* quintuplets = event->getQuintuplets()->data(); - ObjectRanges const* ranges = event->getRanges()->data(); - ::lst::Modules const* modules = event->getModules()->data(); + Quintuplets const* quintuplets = event->getQuintuplets().data(); + ObjectRanges const* ranges = event->getRanges().data(); + ::lst::Modules const* modules = event->getModules().data(); int n_accepted_simtrk = ana.tx->getBranch>("sim_TC_matched").size(); std::vector sim_t5_matched(n_accepted_simtrk); @@ -437,9 +437,9 @@ void setQuintupletOutputBranches(Event* event) { //________________________________________________________________________________________________________________________________ void setPixelTripletOutputBranches(Event* event) { - PixelTriplets const* pixelTriplets = event->getPixelTriplets()->data(); - ::lst::Modules const* modules = event->getModules()->data(); - Segments const* segments = event->getSegments()->data(); + PixelTriplets const* pixelTriplets = event->getPixelTriplets().data(); + ::lst::Modules const* modules = event->getModules().data(); + Segments const* segments = event->getSegments().data(); int n_accepted_simtrk = ana.tx->getBranch>("sim_TC_matched").size(); unsigned int nPixelTriplets = *pixelTriplets->nPixelTriplets; @@ -501,12 +501,12 @@ void setPixelTripletOutputBranches(Event* event) { //________________________________________________________________________________________________________________________________ void setGnnNtupleBranches(Event* event) { // Get relevant information - Segments const* segments = event->getSegments()->data(); - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - Hits const* hitsEvt = event->getHits()->data(); - ::lst::Modules const* modules = event->getModules()->data(); - ObjectRanges const* ranges = event->getRanges()->data(); - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); + Segments const* segments = event->getSegments().data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + Hits const* hitsEvt = event->getHits().data(); + ::lst::Modules const* modules = event->getModules().data(); + ObjectRanges const* ranges = event->getRanges().data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); std::set mds_used_in_sg; std::map md_index_map; @@ -642,8 +642,8 @@ void setGnnNtupleBranches(Event* event) { //________________________________________________________________________________________________________________________________ void setGnnNtupleMiniDoublet(Event* event, unsigned int MD) { // Get relevant information - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - Hits const* hitsEvt = event->getHits()->data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + Hits const* hitsEvt = event->getHits().data(); // Get the hit indices unsigned int hit0 = miniDoublets->anchorHitIndices[MD]; @@ -710,7 +710,7 @@ void setGnnNtupleMiniDoublet(Event* event, unsigned int MD) { //________________________________________________________________________________________________________________________________ std::tuple> parseTrackCandidate(Event* event, unsigned int idx) { // Get the type of the track candidate - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); short type = trackCandidates->trackCandidateType[idx]; enum { pT5 = 7, pT3 = 5, T5 = 4, pLS = 8 }; @@ -744,9 +744,9 @@ std::tuple> parseTrackCandidate( std::tuple, std::vector> parsepT5(Event* event, unsigned int idx) { // Get relevant information - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); - Quintuplets const* quintuplets = event->getQuintuplets()->data(); - Segments const* segments = event->getSegments()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); + Quintuplets const* quintuplets = event->getQuintuplets().data(); + Segments const* segments = event->getSegments().data(); // // pictorial representation of a pT5 @@ -856,9 +856,9 @@ std::tuple, std::vector, std::vector> parsepT3(Event* event, unsigned int idx) { // Get relevant information - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); - Triplets const* triplets = event->getTriplets()->data(); - Segments const* segments = event->getSegments()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); + Triplets const* triplets = event->getTriplets().data(); + Segments const* segments = event->getSegments().data(); // // pictorial representation of a pT3 @@ -890,8 +890,8 @@ std::tuple, std::vector, std::vector> parseT5(Event* event, unsigned int idx) { - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); - Quintuplets const* quintuplets = event->getQuintuplets()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); + Quintuplets const* quintuplets = event->getQuintuplets().data(); unsigned int T5 = trackCandidates->directObjectIndices[idx]; std::vector hits = getHitsFromT5(event, T5); @@ -924,8 +924,8 @@ std::tuple, std::vector, std::vector> parsepLS(Event* event, unsigned int idx) { - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); - Segments const* segments = event->getSegments()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); + Segments const* segments = event->getSegments().data(); // Getting pLS index unsigned int pLS = trackCandidates->directObjectIndices[idx]; @@ -944,8 +944,8 @@ std::tuple, std::vectorgetModules()->data(); - ObjectRanges const* ranges = event->getRanges()->data(); + ::lst::Modules const* modules = event->getModules().data(); + ObjectRanges const* ranges = event->getRanges().data(); int nHits = 0; for (unsigned int idx = 0; idx <= *(modules->nLowerModules); @@ -959,8 +959,8 @@ void printHitMultiplicities(Event* event) { //________________________________________________________________________________________________________________________________ void printMiniDoubletMultiplicities(Event* event) { - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - ::lst::Modules const* modules = event->getModules()->data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + ::lst::Modules const* modules = event->getModules().data(); int nMiniDoublets = 0; int totOccupancyMiniDoublets = 0; @@ -986,10 +986,10 @@ void printAllObjects(Event* event) { //________________________________________________________________________________________________________________________________ void printMDs(Event* event) { - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - Hits const* hitsEvt = event->getHits()->data(); - ::lst::Modules const* modules = event->getModules()->data(); - ObjectRanges const* ranges = event->getRanges()->data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + Hits const* hitsEvt = event->getHits().data(); + ::lst::Modules const* modules = event->getModules().data(); + ObjectRanges const* ranges = event->getRanges().data(); // Then obtain the lower module index for (unsigned int idx = 0; idx <= *(modules->nLowerModules); ++idx) { @@ -1008,11 +1008,11 @@ void printMDs(Event* event) { //________________________________________________________________________________________________________________________________ void printLSs(Event* event) { - Segments const* segments = event->getSegments()->data(); - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - Hits const* hitsEvt = event->getHits()->data(); - ::lst::Modules const* modules = event->getModules()->data(); - ObjectRanges const* ranges = event->getRanges()->data(); + Segments const* segments = event->getSegments().data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + Hits const* hitsEvt = event->getHits().data(); + ::lst::Modules const* modules = event->getModules().data(); + ObjectRanges const* ranges = event->getRanges().data(); int nSegments = 0; for (unsigned int i = 0; i < *(modules->nLowerModules); ++i) { @@ -1040,11 +1040,11 @@ void printLSs(Event* event) { //________________________________________________________________________________________________________________________________ void printpLSs(Event* event) { - Segments const* segments = event->getSegments()->data(); - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - Hits const* hitsEvt = event->getHits()->data(); - ::lst::Modules const* modules = event->getModules()->data(); - ObjectRanges const* ranges = event->getRanges()->data(); + Segments const* segments = event->getSegments().data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + Hits const* hitsEvt = event->getHits().data(); + ::lst::Modules const* modules = event->getModules().data(); + ObjectRanges const* ranges = event->getRanges().data(); unsigned int i = *(modules->nLowerModules); unsigned int idx = i; //modules->lowerModuleIndices[i]; @@ -1070,11 +1070,11 @@ void printpLSs(Event* event) { //________________________________________________________________________________________________________________________________ void printT3s(Event* event) { - Triplets const* triplets = event->getTriplets()->data(); - Segments const* segments = event->getSegments()->data(); - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - Hits const* hitsEvt = event->getHits()->data(); - ::lst::Modules const* modules = event->getModules()->data(); + Triplets const* triplets = event->getTriplets().data(); + Segments const* segments = event->getSegments().data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + Hits const* hitsEvt = event->getHits().data(); + ::lst::Modules const* modules = event->getModules().data(); int nTriplets = 0; for (unsigned int i = 0; i < *(modules->nLowerModules); ++i) { // unsigned int idx = modules->lowerModuleIndices[i]; @@ -1112,12 +1112,12 @@ void printT3s(Event* event) { //________________________________________________________________________________________________________________________________ void debugPrintOutlierMultiplicities(Event* event) { - TrackCandidates const* trackCandidates = event->getTrackCandidates()->data(); - Triplets const* triplets = event->getTriplets()->data(); - Segments const* segments = event->getSegments()->data(); - MiniDoublets const* miniDoublets = event->getMiniDoublets()->data(); - ::lst::Modules const* modules = event->getModules()->data(); - ObjectRanges const* ranges = event->getRanges()->data(); + TrackCandidates const* trackCandidates = event->getTrackCandidates().data(); + Triplets const* triplets = event->getTriplets().data(); + Segments const* segments = event->getSegments().data(); + MiniDoublets const* miniDoublets = event->getMiniDoublets().data(); + ::lst::Modules const* modules = event->getModules().data(); + ObjectRanges const* ranges = event->getRanges().data(); //int nTrackCandidates = 0; for (unsigned int idx = 0; idx <= *(modules->nLowerModules); ++idx) { if (trackCandidates->nTrackCandidates[idx] > 50000) {