From b26c6f3b091c9d0b1257939936b1d1ba21ffb415 Mon Sep 17 00:00:00 2001 From: Andres Rios Tascon Date: Fri, 3 Jan 2025 10:30:13 -0500 Subject: [PATCH 1/2] Added RNTuple with multiple cluster groups --- .../rntuple_multiple_cluster_groups.C | 31 ++++++++++++++++++ ...tiple_cluster_groups_rntuple_v1-0-0-0.root | Bin 0 -> 6908 bytes 2 files changed, 31 insertions(+) create mode 100644 dev/make-root/rntuple_multiple_cluster_groups.C create mode 100644 src/skhep_testdata/data/test_multiple_cluster_groups_rntuple_v1-0-0-0.root diff --git a/dev/make-root/rntuple_multiple_cluster_groups.C b/dev/make-root/rntuple_multiple_cluster_groups.C new file mode 100644 index 0000000..a76bef9 --- /dev/null +++ b/dev/make-root/rntuple_multiple_cluster_groups.C @@ -0,0 +1,31 @@ +/* https://root.cern/doc/master/ntpl001__staff_8C.html */ +/* this file tests when we have multiple pages, each page stores 65536 bytes, + * thus we need to make it longer */ +/* https://github.com/scikit-hep/uproot5/pull/630 */ + +R__LOAD_LIBRARY(ROOTNTuple) +#include +#include +#include +#include +#include + +using RNTupleModel = ROOT::Experimental::RNTupleModel; +using RNTupleWriter = ROOT::Experimental::RNTupleWriter; + +void rntuple_multiple_cluster_groups() { + std::string rootFileName{"test_multiple_cluster_groups_rntuple_v1-0-0-0.root"}; + auto model = RNTupleModel::Create(); + auto int_field = model->MakeField("one"); + auto int_vector = model->MakeField>("int_vector"); + auto ntuple = + RNTupleWriter::Recreate(std::move(model), "ntuple", rootFileName); + for(auto i=0; i<1000; i++){ + if (i && i%100==0){ + ntuple->CommitCluster(/*commitClusterGroup*/ i%300==0); + } + *int_field = i; + *int_vector = {static_cast(i), static_cast(i+1)}; + ntuple->Fill(); + } +} diff --git a/src/skhep_testdata/data/test_multiple_cluster_groups_rntuple_v1-0-0-0.root b/src/skhep_testdata/data/test_multiple_cluster_groups_rntuple_v1-0-0-0.root new file mode 100644 index 0000000000000000000000000000000000000000..cfb82a196fe114110bdab0263f290a316b3533d1 GIT binary patch literal 6908 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 literal 0 HcmV?d00001 From 815e95bba69f8411ab883cf3d3c355481cd6f7ea Mon Sep 17 00:00:00 2001 From: Andres Rios Tascon Date: Thu, 9 Jan 2025 13:09:20 -0500 Subject: [PATCH 2/2] Small tweaks --- .../rntuple_multiple_cluster_groups.C | 7 +++++-- ...tiple_cluster_groups_rntuple_v1-0-0-0.root | Bin 6908 -> 7162 bytes 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dev/make-root/rntuple_multiple_cluster_groups.C b/dev/make-root/rntuple_multiple_cluster_groups.C index a76bef9..b4f6975 100644 --- a/dev/make-root/rntuple_multiple_cluster_groups.C +++ b/dev/make-root/rntuple_multiple_cluster_groups.C @@ -21,8 +21,11 @@ void rntuple_multiple_cluster_groups() { auto ntuple = RNTupleWriter::Recreate(std::move(model), "ntuple", rootFileName); for(auto i=0; i<1000; i++){ - if (i && i%100==0){ - ntuple->CommitCluster(/*commitClusterGroup*/ i%300==0); + if (i && i%100==0) { + ntuple->CommitCluster(); + } + if (i == 450 || i == 750) { // to add a bit of unevenness + ntuple->CommitCluster(/*commitClusterGroup*/ true); } *int_field = i; *int_vector = {static_cast(i), static_cast(i+1)}; diff --git a/src/skhep_testdata/data/test_multiple_cluster_groups_rntuple_v1-0-0-0.root b/src/skhep_testdata/data/test_multiple_cluster_groups_rntuple_v1-0-0-0.root index cfb82a196fe114110bdab0263f290a316b3533d1..4e5b61b599d6f5a86508216c1b8970ec762eaaa3 100644 GIT binary patch delta 1970 zcmbtV3s6%>6y5h;UIHYL1cOOH1P2jgrF@Eri1M*0*lLx}h*XhJ+8IZFf(i)bS3t#R zi4PTuN`zRo{(wlu43j^ zShg1vo6oV*q#LL)u_NsyteLOOU~oZp!^PAy(FEZlgqjeVUhVMOy6ImGeM(SaM$StJ zgd?PmR3MRJ&rr?HwU=E&1F?yK4r4;Y3(!{xNpKv(LcPp<5x4*Tc`*`xFM+U4qcX-2 zD2Po7xpEnSAzMFhk!#ZPgY2wW*e}e8LFF+PmC?ofv9H`{bN-7+vvatAOgnAyC2;K=~XK8MJI=`JtY*bQ8dz@{D_ zH*x1b1}lPJ!Acce8x$myoQRB9@ioOyET*d>Wahuxp0s>gCXM3!v_KeA!gk(Y)fm^t zW1lGF&8MPGT01rdyC+v$b5Ea1Yj$Vl>@3-8pYm5__Ez4iw$z%ix{q6C+&VNc?~hgK zd6KIYKSJ5F#=8eha{&U~M&MUG zB=zx*^pQnAwV8UR(3#`~w+OEk;dsixCo-qPVZ)-d;o#eT-V-zziNNnluT2zjGRn>x zs7rtE*UoP5&Mn?^IMeOM7Tw06tR22hHacwUi$mJ6 z#YsGv;$VxlZ*FldY_SVesvXg*n^q^M_2~$Tg}VoC*84E3jT~pvI#%JgU_2&#GRUd} zBTamG)2kat*LzMfwGPj&sv?rwBM$7{A-nfcRHC70UgEUv>C!Gm6~9Q{clQ*lA$gbO zNdaaK3-cIwOBr}>Zyy=SV~QnN>>>FY0_c{lpJ=cMdC>#;Y{Q-l^#ZUcCV~DvSn)Q2 vG?vPje9oue$I(fC^)p2KrJGIBtM3cMv`TrfCM$S!RN_lYO79$EQ+Df=6WMuLmn6t@2x}Mk5LD z4sQ{kuA=4Xn(UFmD=+Qee#Q{;bdllm%v#_6!r41zTCMa<)<+vE1+qIU(UK!myC?~=Q*&FXD&-&KXwyirbP654-Sh*fbNoJPcTGj2*KvwSb+ zuyny_$;%{3je#mo$R-8wSVT)uM)s$%cqMJiIq}-jUv)-Ez;bSY@#E?R$2glv5yxXG z#B0nHM=N+2E2Nvh44$7`42)l#Wz7FHBw=cyB=|$qImI&x$2^np7lV}SVs&3YX}?j> zo~2JR@s-$>i5GlHCP=-P^%|K&lE5V^m+a+L!GFHrG)a)iKaFjAGbA+UVU76-Q>D0O zo8~IyVwNpjMyYG1V_PSCc6-&#(6#x~lCYLP)qS?={`QKA;dx$U=j(+%F+;XGohb%x zzF=`Loq!{Vkh@uq2Xta%GvNSPAMcVt6A1$G3#sJ`w0dAK-= z-LdYuXnh8(KTg15<>TO_DKJCC6Wl(8l-Tt!DN!wr^59hhhZ|nfJ;$>QEQv=d@;otA z7koST@jXV+Hc@I+rlO|yn?aZNo9BeOH518Z-w%hx z=8n<{HNR?gm#W@yH}2qkM>8uU*FWgwa-$P&lKaJx&cX~4ttfZXro80j+>Lo}>38j9 z%l3fcLgnfdX|XE;5zaucl6=!(jG4dQ{Cs<=515>D^AzXi`R>hSdhU>Xy)Sw1Jr3lq j%VV6rOn01|wgd-NW2f`c;-Dk2c$F6*53;|V_yPJ42{O^b