-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Labels
Description
Explain what you would like to see improved and how.
In pull request #11644 a redirection was implemented to allow ROOT to bypass FUSE access to EOS and instead open the file via XRootD, which has better performance. Unfortunately, this redirection does not work for RNTuple, as the way it opens TFiles bypasses the place where the hook was created to perform this redirection. It would be nice to create a similar redirection that worked also for RNTuple. The place this has to be done is likely around here:
root/tree/ntuple/src/RPageStorageFile.cxx
Lines 281 to 306 in a460d3f
| std::unique_ptr<ROOT::Internal::RPageSourceFile> | |
| ROOT::Internal::RPageSourceFile::CreateFromAnchor(const RNTuple &anchor, const ROOT::RNTupleReadOptions &options) | |
| { | |
| if (!anchor.fFile) | |
| throw RException(R__FAIL("This RNTuple object was not streamed from a ROOT file (TFile or descendant)")); | |
| std::unique_ptr<ROOT::Internal::RRawFile> rawFile; | |
| // For local TFiles, TDavixFile, and TNetXNGFile, we want to open a new RRawFile to take advantage of the faster | |
| // reading. We check the exact class name to avoid classes inheriting in ROOT (for example TMemFile) or in | |
| // experiment frameworks. | |
| std::string className = anchor.fFile->IsA()->GetName(); | |
| auto url = anchor.fFile->GetEndpointUrl(); | |
| auto protocol = std::string(url->GetProtocol()); | |
| if (className == "TFile") { | |
| rawFile = ROOT::Internal::RRawFile::Create(url->GetFile()); | |
| } else if (className == "TDavixFile" || className == "TNetXNGFile") { | |
| rawFile = ROOT::Internal::RRawFile::Create(url->GetUrl()); | |
| } else { | |
| rawFile.reset(new ROOT::Internal::RRawFileTFile(anchor.fFile)); | |
| } | |
| auto pageSource = std::make_unique<RPageSourceFile>("", std::move(rawFile), options); | |
| pageSource->fAnchor = anchor; | |
| // NOTE: fNTupleName gets set only upon Attach(). | |
| return pageSource; | |
| } |
ROOT version
ROOT 6.36.04
Installation method
emerge
Operating system
Gentoo Linux
Additional context
See also https://root.cern/doc/v628/release-notes.html#faster-reading-from-eos
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status