66 ATH_CHECK( rioContainer.
record (std::make_unique<TRT_DriftCircleContainer>(clusterContainercache.
ptr()) ));
74 const bool hasExternalCache = rdoContainer->hasExternalCache();
75 std::unique_ptr<DataPool<TRT_DriftCircle>> dataItemsPool =
nullptr;
76 if (!hasExternalCache) {
77 dataItemsPool = std::make_unique<DataPool<TRT_DriftCircle>>(ctx);
78 dataItemsPool->reserve(100000);
80 dataItemsPool = std::make_unique<DataPool<TRT_DriftCircle>>(ctx);
87 for(
const auto *
const rdoCollections : *rdoContainer) {
89 InDet::TRT_DriftCircleContainer::IDC_WriteHandle lock = rioContainer->getWriteHandle(currentCollection->
identifyHash());
90 if (lock.OnlineAndPresentInAnotherView()) {
93 std::unique_ptr<TRT_DriftCircleCollection> p_rio(
95 currentCollection, ctx, dataItemsPool.get(),
97 if (p_rio && !p_rio->empty()) {
98 ATH_CHECK(lock.addOrDelete(std::move(p_rio)));
104 std::vector<IdentifierHash> listOfTRTIds;
107 listOfTRTIds.clear();
109 for(
auto &
id : listOfTRTIds){
111 if (!RDO_Collection)
continue;
112 InDet::TRT_DriftCircleContainer::IDC_WriteHandle lock = rioContainer->getWriteHandle(
id);
113 if( lock.OnlineAndPresentInAnotherView() ) {
118 std::unique_ptr<TRT_DriftCircleCollection> p_rio(
120 RDO_Collection, ctx, dataItemsPool.get(),
122 if (p_rio && !p_rio->empty()) {
123 ATH_CHECK(lock.addOrDelete(std::move(p_rio)));
128 ATH_MSG_DEBUG(
"rioContainer->numberOfCollections() " << rioContainer->numberOfCollections());
130 return StatusCode::SUCCESS;