From d9d5b59a0564dba960b06cb111f6614f0f1c9e67 Mon Sep 17 00:00:00 2001 From: Peter van Gemmeren <gemmeren@anl.gov> Date: Tue, 16 Oct 2018 15:33:36 -0500 Subject: [PATCH] Manually switch on TTreeCache in case ROOT fails to do so by default. Former-commit-id: 74f5adaa9764834181c913aea82bd54a76c0b6dc --- Database/APR/RootStorageSvc/src/RootDatabase.cpp | 11 +++++++++-- .../AthenaPoolCnvSvc/python/ReadAthenaPool.py | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Database/APR/RootStorageSvc/src/RootDatabase.cpp b/Database/APR/RootStorageSvc/src/RootDatabase.cpp index e1dc0f7ae30..62fbeedc0b4 100644 --- a/Database/APR/RootStorageSvc/src/RootDatabase.cpp +++ b/Database/APR/RootStorageSvc/src/RootDatabase.cpp @@ -45,7 +45,7 @@ RootDatabase::RootDatabase() : m_defBufferSize(16*1024), m_defWritePolicy(TObject::kOverwrite), // On write create new versions m_branchOffsetTabLen(0), - m_defTreeCacheLearnEvents(100), + m_defTreeCacheLearnEvents(-1), m_fileMgr(nullptr) { m_version = "1.1"; @@ -670,7 +670,14 @@ DbStatus RootDatabase::setOption(const DbOption& opt) { else log << DbPrintLvl::Debug << "Got tree " << tr->GetName() << " read entry " << tr->GetReadEntry() << DbPrint::endmsg; tr->SetCacheSize(cacheSize); - TTreeCache::SetLearnEntries(m_defTreeCacheLearnEvents); + if (m_defTreeCacheLearnEvents < 0) { + long long int autoFlush = tr->GetAutoFlush(); + if (autoFlush > 0) { // Tree was written flushing on number of events + TTreeCache::SetLearnEntries(-m_defTreeCacheLearnEvents * autoFlush); + } + } else { + TTreeCache::SetLearnEntries(m_defTreeCacheLearnEvents); + } TTreeCache* cache = (TTreeCache*)m_file->GetCacheRead(); if (cache) { cache->SetEntryRange(0, tr->GetEntries()); diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/ReadAthenaPool.py b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/ReadAthenaPool.py index 4d3640170db..c52cd8dd492 100644 --- a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/ReadAthenaPool.py +++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/ReadAthenaPool.py @@ -32,6 +32,9 @@ def _configureReadAthenaPool(): # Load the basic services import AthenaPoolCnvSvc.AthenaPool + # Switch on TTreeCache for CollectionTree + svcMgr.AthenaPoolCnvSvc.InputPoolAttributes += [ "DatabaseName = '*'; ContainerName = 'CollectionTree'; TREE_CACHE = '-1'" ] + # Load ProxyProviderSvc if not hasattr (svcMgr, 'ProxyProviderSvc'): svcMgr += CfgMgr.ProxyProviderSvc() -- GitLab