From 10e80287e9c51ac3147e0001b652ca445660270d Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Mon, 30 Mar 2026 14:48:52 +0200 Subject: [PATCH 1/3] feature_flag: Run clang-format write.C macro --- structure/feature_flag/write.C | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/structure/feature_flag/write.C b/structure/feature_flag/write.C index 907451a..8d1ca50 100644 --- a/structure/feature_flag/write.C +++ b/structure/feature_flag/write.C @@ -17,28 +17,35 @@ using ROOT::Experimental::Internal::RNTupleFileWriter; using ROOT::Experimental::Internal::RNTupleSerializer; void write(std::string_view filename = "structure.feature_flag.root") { - // Note that we are writing a file with a so-far unused feature flag. This cannot use the regular - // production API but we have to use the internal, low-level classes to create the file. + // Note that we are writing a file with a so-far unused feature flag. This + // cannot use the regular production API but we have to use the internal, + // low-level classes to create the file. RNTupleDescriptorBuilder descBuilder; // The following line will be required as of ROOT v6.36 // descBuilder.SetVersionForWriting(); descBuilder.SetNTuple("ntpl", ""); descBuilder.SetFeature(RNTupleDescriptor::kFeatureFlagTest); - descBuilder.AddField(RFieldDescriptorBuilder::FromField(RFieldZero()).FieldId(0).MakeDescriptor().Unwrap()); + descBuilder.AddField(RFieldDescriptorBuilder::FromField(RFieldZero()) + .FieldId(0) + .MakeDescriptor() + .Unwrap()); RNTupleWriteOptions options; - auto writer = - RNTupleFileWriter::Recreate("ntpl", filename, RNTupleFileWriter::EContainerFormat::kTFile, RNTupleWriteOptions()); + auto writer = RNTupleFileWriter::Recreate( + "ntpl", filename, RNTupleFileWriter::EContainerFormat::kTFile, + RNTupleWriteOptions()); RNTupleSerializer serializer; auto ctx = serializer.SerializeHeader(nullptr, descBuilder.GetDescriptor()); auto buffer = std::make_unique(ctx.GetHeaderSize()); ctx = serializer.SerializeHeader(buffer.get(), descBuilder.GetDescriptor()); - writer->WriteNTupleHeader(buffer.get(), ctx.GetHeaderSize(), ctx.GetHeaderSize()); + writer->WriteNTupleHeader(buffer.get(), ctx.GetHeaderSize(), + ctx.GetHeaderSize()); - auto szFooter = serializer.SerializeFooter(nullptr, descBuilder.GetDescriptor(), ctx); + auto szFooter = + serializer.SerializeFooter(nullptr, descBuilder.GetDescriptor(), ctx); buffer = std::make_unique(szFooter); serializer.SerializeFooter(buffer.get(), descBuilder.GetDescriptor(), ctx); writer->WriteNTupleFooter(buffer.get(), szFooter, szFooter); From fc6e531c2a73765507d8c0dc73ab63966ca5211c Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Mon, 30 Mar 2026 14:50:53 +0200 Subject: [PATCH 2/3] feature_flag: Disable compression in write.C This was only visible in the TFile metadata, the contents were already uncompressed and do not change. --- structure/feature_flag/write.C | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/structure/feature_flag/write.C b/structure/feature_flag/write.C index 8d1ca50..37ca855 100644 --- a/structure/feature_flag/write.C +++ b/structure/feature_flag/write.C @@ -32,9 +32,10 @@ void write(std::string_view filename = "structure.feature_flag.root") { .Unwrap()); RNTupleWriteOptions options; + options.SetCompression(0); auto writer = RNTupleFileWriter::Recreate( "ntpl", filename, RNTupleFileWriter::EContainerFormat::kTFile, - RNTupleWriteOptions()); + options); RNTupleSerializer serializer; From 516ab9624563264ec46bd3a4bb75fd20d0a3a105 Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Mon, 30 Mar 2026 15:26:39 +0200 Subject: [PATCH 3/3] feature_flag: Call RNTupleDescriptorBuilder::MoveDescriptor This includes some validity checks that will become (more) important for future ROOT versions. --- structure/feature_flag/write.C | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/structure/feature_flag/write.C b/structure/feature_flag/write.C index 37ca855..efcdf1e 100644 --- a/structure/feature_flag/write.C +++ b/structure/feature_flag/write.C @@ -30,6 +30,7 @@ void write(std::string_view filename = "structure.feature_flag.root") { .FieldId(0) .MakeDescriptor() .Unwrap()); + auto descriptor = descBuilder.MoveDescriptor(); RNTupleWriteOptions options; options.SetCompression(0); @@ -39,16 +40,15 @@ void write(std::string_view filename = "structure.feature_flag.root") { RNTupleSerializer serializer; - auto ctx = serializer.SerializeHeader(nullptr, descBuilder.GetDescriptor()); + auto ctx = serializer.SerializeHeader(nullptr, descriptor); auto buffer = std::make_unique(ctx.GetHeaderSize()); - ctx = serializer.SerializeHeader(buffer.get(), descBuilder.GetDescriptor()); + ctx = serializer.SerializeHeader(buffer.get(), descriptor); writer->WriteNTupleHeader(buffer.get(), ctx.GetHeaderSize(), ctx.GetHeaderSize()); - auto szFooter = - serializer.SerializeFooter(nullptr, descBuilder.GetDescriptor(), ctx); + auto szFooter = serializer.SerializeFooter(nullptr, descriptor, ctx); buffer = std::make_unique(szFooter); - serializer.SerializeFooter(buffer.get(), descBuilder.GetDescriptor(), ctx); + serializer.SerializeFooter(buffer.get(), descriptor, ctx); writer->WriteNTupleFooter(buffer.get(), szFooter, szFooter); writer->Commit();