From 702ccfef13a77c79b981c6899d2a45706901f7dc Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Mon, 29 Sep 2025 12:49:16 +0200 Subject: [PATCH] [ntuple] enforce correct subfield name in untyped collection Collection items must have "_0" as item field name, which can be violated in RVectorField::CreateUntyped(). (cherry picked from commit 2f8d30d048dd9cfc2393241b54e50fce685273f0) --- tree/ntuple/src/RFieldSequenceContainer.cxx | 2 +- tree/ntupleutil/v7/src/RNTupleImporter.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/ntuple/src/RFieldSequenceContainer.cxx b/tree/ntuple/src/RFieldSequenceContainer.cxx index ab1009624ec25..4d02594088618 100644 --- a/tree/ntuple/src/RFieldSequenceContainer.cxx +++ b/tree/ntuple/src/RFieldSequenceContainer.cxx @@ -488,7 +488,7 @@ ROOT::RVectorField::RVectorField(std::string_view fieldName, std::unique_ptr ROOT::RVectorField::CreateUntyped(std::string_view fieldName, std::unique_ptr itemField) { - return std::unique_ptr(new RVectorField(fieldName, std::move(itemField), true)); + return std::unique_ptr(new RVectorField(fieldName, itemField->Clone("_0"), true)); } std::unique_ptr ROOT::RVectorField::CloneImpl(std::string_view newName) const diff --git a/tree/ntupleutil/v7/src/RNTupleImporter.cxx b/tree/ntupleutil/v7/src/RNTupleImporter.cxx index c9867a266b1ea..5df0a585424e4 100644 --- a/tree/ntupleutil/v7/src/RNTupleImporter.cxx +++ b/tree/ntupleutil/v7/src/RNTupleImporter.cxx @@ -318,8 +318,8 @@ ROOT::RResult ROOT::Experimental::RNTupleImporter::PrepareSchema() c.fFieldName = "_collection" + std::to_string(iLeafCountCollection); auto recordField = std::make_unique("_0", std::move(c.fLeafFields)); - c.fRecordField = recordField.get(); auto collectionField = ROOT::RVectorField::CreateUntyped(c.fFieldName, std::move(recordField)); + c.fRecordField = static_cast(collectionField->GetMutableSubfields()[0]); fModel->AddField(std::move(collectionField)); // Add projected fields for all leaf count arrays