45 fInitialNElements =
pageSink.GetWriteOptions().GetInitialUnzippedPageSize() / fElement->GetSize();
46 if (fInitialNElements < 1) {
47 throw RException(
R__FAIL(
"initial page size is too small for at least one element"));
52 fHandleSink = fPageSink->AddColumn(
fieldId, *
this);
53 fOnDiskId = fPageSink->GetColumnId(fHandleSink);
54 fWritePage = fPageSink->ReservePage(fHandleSink, fInitialNElements);
55 if (fWritePage.IsNull())
62 fHandleSource = fPageSource->AddColumn(
fieldId, *
this);
63 fNElements = fPageSource->GetNElements(fHandleSource);
64 fOnDiskId = fPageSource->GetColumnId(fHandleSource);
67 fFirstElementIndex =
descriptorGuard->GetColumnDescriptor(fOnDiskId).GetFirstElementIndex();
73 if (fWritePage.GetNElements() == 0)
76 fPageSink->CommitPage(fHandleSink, fWritePage);
77 fWritePage = fPageSink->ReservePage(fHandleSink, fInitialNElements);
79 fWritePage.Reset(fNElements);
84 fPageSink->CommitSuppressedColumn(fHandleSink);
89 const auto nTeam = fTeam.size();
90 std::size_t
iTeam = 1;
92 fReadPageRef = fPageSource->LoadPage(fTeam.at(fLastGoodTeamIdx)->GetHandleSource(),
globalIndex);
93 if (!fReadPageRef.Get().IsNull())
95 fLastGoodTeamIdx = (fLastGoodTeamIdx + 1) %
nTeam;
104 const auto nTeam = fTeam.size();
105 std::size_t
iTeam = 1;
107 fReadPageRef = fPageSource->LoadPage(fTeam.at(fLastGoodTeamIdx)->GetHandleSource(),
localIndex);
108 if (!fReadPageRef.Get().IsNull())
110 fLastGoodTeamIdx = (fLastGoodTeamIdx + 1) %
nTeam;
114 return fReadPageRef.Get().Contains(
localIndex);
120 for (
auto *
c :
other.fTeam) {
121 if (std::find(fTeam.begin(), fTeam.end(),
c) == fTeam.end())
122 fTeam.emplace_back(
c);
125 for (
auto c : fTeam) {
#define R__FAIL(msg)
Short-hand to return an RResult<T> in an error state; the RError is implicitly converted into RResult...
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
The available trivial, native content types of a column.
Abstract interface to write data into an ntuple.
void DropColumn(ColumnHandle_t) final
Unregisters a column.
Abstract interface to read data from an ntuple.
void DropColumn(ColumnHandle_t columnHandle) override
Unregisters a column.
A column is a storage-backed array of a simple, fixed-size type, from which pages can be mapped into ...
RColumn(ROOT::ENTupleColumnType type, std::uint32_t columnIndex, std::uint16_t representationIndex)
void MergeTeams(RColumn &other)
ROOT::Experimental::Internal::RPageStorage::ColumnHandle_t fHandleSink
void ConnectPageSource(ROOT::DescriptorId_t fieldId, ROOT::Experimental::Internal::RPageSource &pageSource)
Connect the column to a page source.
ROOT::Experimental::Internal::RPageSink * fPageSink
ROOT::Experimental::Internal::RPageStorage::ColumnHandle_t fHandleSource
ROOT::Experimental::Internal::RPageSource * fPageSource
bool TryMapPage(ROOT::NTupleSize_t globalIndex)
void ConnectPageSink(ROOT::DescriptorId_t fieldId, ROOT::Experimental::Internal::RPageSink &pageSink, ROOT::NTupleSize_t firstElementIndex=0U)
Connect the column to a page sink.
Base class for all ROOT issued exceptions.
Addresses a column element or field item relative to a particular cluster, instead of a global NTuple...
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.