From 73fdf52dab35e2c7429e102ba12d4632e16abf14 Mon Sep 17 00:00:00 2001 From: Maja Kabus Date: Mon, 20 Jun 2022 17:32:20 +0200 Subject: [PATCH 1/8] Add example for lambda binning --- Tutorials/src/eventMixing.cxx | 64 +++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/Tutorials/src/eventMixing.cxx b/Tutorials/src/eventMixing.cxx index d684b119b99..fe8bb4110ea 100644 --- a/Tutorials/src/eventMixing.cxx +++ b/Tutorials/src/eventMixing.cxx @@ -400,19 +400,61 @@ struct MixedEventsPartitionedTracks { } }; +// TODO: Test also with constant binning (expandConstantBinning()) +struct MixedEventsLambdaBinning { + ConfigurableAxis axisVertex{"axisVertex", {14, -7, 7}, "vertex axis for histograms"}; + ConfigurableAxis axisMultiplicity{"axisMultiplicity", {VARIABLE_WIDTH, 0.0, 2.750, 5.250, 7.750, 12.750, 17.750, 22.750, 27.750, 32.750, 37.750, 42.750, 47.750, 52.750, 57.750, 62.750, 67.750, 72.750, 77.750, 82.750, 87.750, 92.750, 97.750, 250.1}, "multiplicity axis for histograms"}; + using BinningType = LambdaBinningPolicy>; + + void process(aod::Collisions const& collisions, aod::Tracks& tracks) + { + LOGF(info, "Input data Collisions %d, Tracks %d ", collisions.size(), tracks.size()); + + auto getBinTracksSize = + [&tracks, this](std::tuple::type> const& data) { + float posZ = std::get<0>(data); + int32_t colIndex = std::get<1>(data); + // TODO: Does it slice only once, is it cached properly when used inside lambda? + auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, colIndex); + return binning_helpers::getBin({axisVertex, axisMultiplicity}, std::make_tuple(posZ, tracks.size()), true); // true is for 'ignore overflows' (true by default) + }; + + BinningType binningWithLambda{getBinTracksSize}; + SameKindPair pair{binningWithLambda, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored + + int count = 0; + for (auto& [c1, tracks1, c2, tracks2] : pair) { + LOGF(info, "Mixed event collisions: (%d, %d)", c1.globalIndex(), c2.globalIndex()); + count++; + if (count == 100) + break; + + // Example of using tracks from mixed events -- iterate over all track pairs from the two collisions + int trackCount = 0; + for (auto& [t1, t2] : combinations(CombinationsFullIndexPolicy(tracks1, tracks2))) { + LOGF(info, "Mixed event tracks pair: (%d, %d) from events (%d, %d), track event: (%d, %d)", t1.index(), t2.index(), c1.index(), c2.index(), t1.collision().index(), t2.collision().index()); + trackCount++; + if (trackCount == 10) + break; + } + } + } +}; + WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), - adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + // adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), }; } From a06ae9444b2da97b03bf94b6c00e5afc6f4b4f32 Mon Sep 17 00:00:00 2001 From: Maja Kabus Date: Mon, 20 Jun 2022 17:59:38 +0200 Subject: [PATCH 2/8] Corrected a bit the definitions --- Tutorials/src/.eventMixing.cxx.swp | Bin 0 -> 40960 bytes Tutorials/src/eventMixing.cxx | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 Tutorials/src/.eventMixing.cxx.swp diff --git a/Tutorials/src/.eventMixing.cxx.swp b/Tutorials/src/.eventMixing.cxx.swp new file mode 100644 index 0000000000000000000000000000000000000000..36f318acfc1b235f73f0d92d0d3f676ed8908a15 GIT binary patch literal 40960 zcmeI5d2l3GdBDfUH(-M~%wa0evMokfJDM4J56@~vwAxE}ceU}#UfXMD)0$~X?Hx@| zrhBw23v{Re#=npHZ3F z!_H(gkORm5IaROhmfc3p*RgaB{3a9OfDS(}Ufee`A9&?pV4@lN4bQ0t13{xa;Lf?V zaF2J?t4-(1M~`-mEj^G*AeF$1CD06~)@^!WX0TYu%Q;u}T%lfa>5VHsJq?&jAeBHW zfm8yi1X2m45=bSGN+6ZM=`Vq>enIBV+{W4VRu0(ZS&NqE+3j6+dGn&<=Px?`p+(0p zu-jYh@}CwRztC<+@xIO`AWFwM_W0Fy`L;#J&$at6x68*C9eUJai`t{;aF!2KX{z85JRMT<7rSjM?(0RJQClYoXe*MHTXWcDLSj%{5V| z-QzoVWWCyy->-VGop38kn^CB;U#)t9=huRg%3fXRS65g1diqtlkejahlTLN4R&kGJ z``A-#-_vJep7I+i>tLVJs}7b6{VHrY<--9hYD!-Y> z!*9Pc>t65GD*FgGUG`!O+JcZYSn3zKHgcx|5_c%j@( zzgpj~)=4rFv6!??H0xFOuFYy-Kyf{y1nT70md}YDG=DYF3NNsZ~@H zK{N*ZIkz!Y^^d6RxdjD9oX}CNo9BV_D|73tDtR{XE#(65PFEg|iPLWCCnJ)c^Sz3yH~g|21ldJ0 z?M+0}Cf{BgS)ZgYA!@Z$$O{Wc34pBUWpS4zqiH28Ysw3hWRKSx0jWrK!D|&l;P~Xc zs<=~5vl>dKZ3aBlwkvLlw)XiL5Y3xx5#N2O#M8dnroDadEyI#IwczL6GPXlQ6~8%I zCA;X9F5EP7!`R5y-P;cx7~3|ni;R-b4HolenJ3f8cAjk(gJyB9S*$mU4f(seT|i5u z(*^PyuGJCeH}GO`f&2y?SAN3=xlVq=CcW5bc5WGJht^4U^;a>(?qc)KtTt zjb5UtG_kqU>~4i6BZq|?Z=fk&!eVQk!YAHOu@kQoK7P*GzQq1wr~S5oQaTStMN}w7 zlrE6U{wz7#(WOOpG_kRxSv94e$#wR9mGgA@Q|#-D$}uELNtTqT6lWrMC8f*uqs}ZZ zyz-}P-nKH+LNW!5E`tNLZk_T%w?RpyUlQe1t0r14U)~}SYdGVo@Q9yyZ%qjzS8IFF ziziBqNJ|b%5xPZy5zBCeq{Kx&|h4u z9FIa@m-AAd)Mz3Fb*D@rQ7o0H&oh~A+edeg+_3%7{_&AR6H=pPcR9g~OO@O+GQN!> zwrAJK{#`6**j*~|@F^AVYL83~wM8^KzWc^Kd$R=Ymn_mRr5vX%WLgQ(=OlN;DKfQq zE2JClqhr5MoG;4A5cYvN0`fzS=B8b*gH-G40g6J9U*Sv5nP~Q?FO&rP&wG z&{z~J@mk=j(d{?vRTZCRdCd>i5yzXO=A-tjH@rEo>P~Y&TIAmBY_mpl-wlXOBHV4y zpBq%!o%?pHn-Dt>M-58%#jks$oa9WBfLZdij&h3l$T8#lZW-IVvqvPNCL}3=KNTKv z8oCWz@o0&8lTEpE-3u^PvD=sp7NuN+jPEw)+={;Ze%DnqVOS4J1I7-1onOoyaVK+PKc6el3~(p&I!fKJskouz zRpW%T4$k;hIxK;Xb2L7sm@iznu9z?8jgUo*OHPrS8reNIx?PPIa~bLX|A>D2X8QBe z|Bv+JpQq1%KimSZf*)}F6EF{3VGGDPB}jj%1X2m45=bSGN+6X$DuGl2sRU99q!LIa za7If&R1#W4p_Ef`>fuOYsADLh*4XXLPF5T{GC73kGiv9R zNBwGZw$@6f^#6~d+s=xCKmGr!ZI*o=eg3oI?ey<^L3I7EfQ#Wg5M90tqMv^^+zXxJa231|zKLG`x8N}3 z;0@6JTS=yUgYVVc3UaoJ_fqfZS|nh zKDQgVNQGqrS^JixjxbSev_&+$(A(`$sWk0|)Vrqcl(I{Sxq(?(!+%?ai)BuvTx=zI zA$hI+7_QJX$e4@RMuKeE@&&z-?xwo^dN#s~szq z^wCl&e$B_Q?O|g~tRUhST{n9s#1-C>*&SA2MrU) zj?B0^1j{Skau^p4E>)n>r1JWCT$K8vCvIuC?XPtw@8zoD~H^O;{>vQ49^6gTqlh zp%aE8RPIAdesNw>TTEU$MU4j9jH)^rI<>vA-OZiI%SkC|GbdBAHX9BGP9wY#OJ0kG zp2aT;3gIOtO4uOvt72}Wm^iJ^6=ku}Y!&R@g556K?V{ZtwA+Jr`&zqwt=(R4x7XY4 z4R(8j-QH-oH`?t@c6*cEzRqr6XSYdPuE4wAGn>%s>buq&F*0H3qp6$?dUUzcQ9h;! zF_JOsB9nrcXl>-iC3aMWlrr7oU22@w_6W(VqDs^+@q`=pS`>H!-ZN!4Lihk(CNS@|NMoiugO@tV~v{eSrliLRUe|1Q0i$^069{smBQkbeGlcrCmfE`|%> z95@Ry@O8!jeh1zRZ-Uprr|IV(hQFtezX8_6GmJHS2Ofa?VIH=_GuQ)s4L%1?!XLmG z48Y%F8}J?M0saPlAASQKg!jNZ;Q_cGrr{;P2r1CWEKum^Y?_QE~LCV(4Z8)#V(z0Sq)%-kheI-QY=(||P$)0(lh(|1Ph zY3iaOIRJX1C*+PsHDa*BiMZAez}C?~G|m$qQzb*DUk6r$*e5UJ;$rTWCh{Q^{qr<}hBG=#+|e8%v<4}D!Bm!CRLJ|Ivs zGPBVt4eeU$7b5iw(XMVi(bZ7W3sGc?($e?!tJ(Ppt>=r5nU+b%$|f0A>%=p*u1Tw! z4o-$v?+$`ii>ZF&oMx+;$PU<4H6|Bob0BlT=%4NS7E|Ns%!#K3+)J6Fx>Kza#cT8R zDOl&EK88-Jk0I&*AEGb&0s6Jc{{K(t_y0Tm5T1oE!Q0>*O2 zU{3PnndflLOy4;bTi$6Ycv4G2a<}=N?qkxrT_&b!MX@2rPmk`5-jv4$rWg>5?-$va zbgO=CT6^Y6c$~wjC(b_GoO6~+#&ezDFr!*={Doxvwlxu7LN`UaU!}0zRXTYPUG4Cc z+~(C4F}91xnqpHqlfHO!E+5!+Z7{h&Za9{2&8RofinwijDLQN}Vh>4b?4&5J)+fVN zD{zGxJ-jov8=+siv@da7`Vvcrn38iv(@HMkiZp(6TMF6ORQfsEn47mgRbI4vlcp3t zvHqo3TRW_vUg%mEjK&qp3Y8bSxPK1XiL&2l*iJx)iGe3ZEs?n9!h-G$Fsj9b9O)Lc zTtS;gQ@8&ov0!KBl&&l#iKUXv8r;FiyBR%c+c(lF;OKDIeo%DJOD9z6M^TVjRUm$( z#fh}ct19GW0#mmhQ-_X~83H2xt(>)5b%We-XFWsvy#FQDfb{?O(~mu3`~O>QpH_VT z{}KKBPlFGK;Zk@p{5O65Pr>yt1Xsb!;HB^gef@i(2Y!bB{e>Vp|F6K8;jiEe@Ok(g zJOo4VRr>a#^WOs>p@089`t;AhJ#aU?5?%r4!o&3MUk`srU;e$&3zxzF(4YSSd>`Hn zF8mk$_n**b{|ERpcoIGeABNwA55dFm0BnSBA&1YxpMc0@4o<*N+l`Gn)pD~cZlT5D zs-E3Oiyfz<;!#sgIx^D}|CU8N15{jLYR{Osr1TmxzYO<}85)ueztY4Byvgn2$HEPU zb(Aj7R@?jSdR|uKC*Al(N5P{Vq8Fl-JS*BYx>;Upx7XWc2k+=MR^uF9J3qhHM20u? zXvLh3KXe@{4$;kWqurl$i5|J)Sdv+l{v{`8we{Cdh`|NEL2>aB&-Bq>Q0Sxt(+BJ{ zokh;jqpvP>n^_kQww#@JQ-YNfVOHlToiq)u(t*01B42e_vlI1by3*iD^`>qf6~0(o z4%KHG_*;#edneEMEPCWCnd!x&ZTlF9ZHguvqTN2dLAz=&mbE-FBZ6qkUff$Bd=9;J zyzQ=VOduU|IMv4-%z$SX`-KUu>ue2J*tKZ4ZGnpShhdw~7N~<{GV{_ev;5!N&GakX z(pqU-)l@Bs|0l8W+Qpd0%0Di>(h>VGFd6ui8`v<#ZrVs#)t6S{iYsj-v^M~jj+RJ0 z-yY`pH4=`)VEc0!O-UNgL__3pkr!FhnK~#sY{uByMpaf+v7PBP*jlPA>Hj}W2UosT zC;I=JZD;q_>Hoh6-VO&~2W*E+;9151J_+xG+h8B;fGgoeAaeuG2ALc1uZ#(N8@>TD zN8lsyVURfjMOkN@K)wn10NexbfV-grSHX`NKiDaD0&oGG15Yqs@Ho5|CgB1QyMb@R z)9_`O1{q6uma&A}UBo{Ft!QGO7TsfsU4jlpCR4*LXD*DI>8^?{AW9|tZirtS z7R`F3PCnN8g*BcZ-C2jzhve#bSUJ|^qq|=A^p*4olOJQu$OAl?Bjd}J<kdF|5uitxuGLMpI_Q#>; void process(aod::Collisions const& collisions, aod::Tracks& tracks) { LOGF(info, "Input data Collisions %d, Tracks %d ", collisions.size(), tracks.size()); auto getBinTracksSize = - [&tracks, this](std::tuple::type> const& data) { - float posZ = std::get<0>(data); - int32_t colIndex = std::get<1>(data); - // TODO: Does it slice only once, is it cached properly when used inside lambda? - auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, colIndex); - return binning_helpers::getBin({axisVertex, axisMultiplicity}, std::make_tuple(posZ, tracks.size()), true); // true is for 'ignore overflows' (true by default) - }; - + [&tracks, this](std::tuple::type> const& data) -> int { + float posZ = std::get<0>(data); + int32_t colIndex = std::get<1>(data); + // TODO: Does it slice only once, is it cached properly when used inside lambda? + auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, colIndex); + return binning_helpers::getBin({axisVertex, axisMultiplicity}, std::make_tuple(posZ, tracks.size()), true); // true is for 'ignore overflows' (true by default) + }; + + using BinningType = LambdaBinningPolicy>; BinningType binningWithLambda{getBinTracksSize}; - SameKindPair pair{binningWithLambda, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored + SameKindPair pair{binningWithLambda, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored int count = 0; for (auto& [c1, tracks1, c2, tracks2] : pair) { From 6da25b1a436dd26364367681bfced027851a6374 Mon Sep 17 00:00:00 2001 From: Maja Kabus Date: Wed, 22 Jun 2022 10:05:52 +0200 Subject: [PATCH 3/8] Delete accidentaly saved .swp --- Tutorials/src/.eventMixing.cxx.swp | Bin 40960 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Tutorials/src/.eventMixing.cxx.swp diff --git a/Tutorials/src/.eventMixing.cxx.swp b/Tutorials/src/.eventMixing.cxx.swp deleted file mode 100644 index 36f318acfc1b235f73f0d92d0d3f676ed8908a15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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 Date: Wed, 22 Jun 2022 15:50:53 +0200 Subject: [PATCH 4/8] Cleanup of the tutorial, everything working --- Tutorials/src/eventMixing.cxx | 36 ++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/Tutorials/src/eventMixing.cxx b/Tutorials/src/eventMixing.cxx index f6f0cdc9dad..13b937f24a2 100644 --- a/Tutorials/src/eventMixing.cxx +++ b/Tutorials/src/eventMixing.cxx @@ -405,26 +405,28 @@ struct MixedEventsLambdaBinning { ConfigurableAxis axisVertex{"axisVertex", {14, -7, 7}, "vertex axis for histograms"}; ConfigurableAxis axisMultiplicity{"axisMultiplicity", {VARIABLE_WIDTH, 0.0, 2.750, 5.250, 7.750, 12.750, 17.750, 22.750, 27.750, 32.750, 37.750, 42.750, 47.750, 52.750, 57.750, 62.750, 67.750, 72.750, 77.750, 82.750, 87.750, 92.750, 97.750, 250.1}, "multiplicity axis for histograms"}; - void process(aod::Collisions const& collisions, aod::Tracks& tracks) + void process(aod::Collisions& collisions, aod::Tracks& tracks) { LOGF(info, "Input data Collisions %d, Tracks %d ", collisions.size(), tracks.size()); + std::vector axisVertexExpanded; + binning_helpers::expandConstantBinning(axisVertex, axisVertexExpanded); auto getBinTracksSize = [&tracks, this](std::tuple::type> const& data) -> int { float posZ = std::get<0>(data); int32_t colIndex = std::get<1>(data); - // TODO: Does it slice only once, is it cached properly when used inside lambda? - auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, colIndex); - return binning_helpers::getBin({axisVertex, axisMultiplicity}, std::make_tuple(posZ, tracks.size()), true); // true is for 'ignore overflows' (true by default) + auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, colIndex); // it's cached, so slicing/grouping happens only once + return binning_helpers::getBin({axisVertexExpanded, axisMultiplicity}, std::make_tuple(posZ, associatedTracks.size()), true); // true is for 'ignore overflows' (true by default) }; using BinningType = LambdaBinningPolicy>; BinningType binningWithLambda{getBinTracksSize}; - SameKindPair pair{binningWithLambda, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored + auto tracksTuple = std::make_tuple(tracks); + SameKindPair pair{binningWithLambda, 5, -1, collisions, tracksTuple}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored int count = 0; for (auto& [c1, tracks1, c2, tracks2] : pair) { - LOGF(info, "Mixed event collisions: (%d, %d)", c1.globalIndex(), c2.globalIndex()); + LOGF(info, "Mixed event collisions: (%d, %d) z: (%.3f, %.3f), tracks size (%d, %d)", c1.globalIndex(), c2.globalIndex(), c1.posZ(), c2.posZ(), tracks1.size(), tracks2.size()); count++; if (count == 100) break; @@ -444,17 +446,17 @@ struct MixedEventsLambdaBinning { WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{ - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), - // adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), + adaptAnalysisTask(cfgc), adaptAnalysisTask(cfgc), }; } From 70fe8829ba157401a2a88a36da97cda8a954ec5e Mon Sep 17 00:00:00 2001 From: Maja Kabus Date: Thu, 30 Jun 2022 14:51:25 +0200 Subject: [PATCH 5/8] Adjust to new binning interface, add lambda example to mixing tutorial --- .../femtoDreamPairTaskTrackTrack.cxx | 2 +- .../FemtoDream/femtoDreamPairTaskTrackV0.cxx | 2 +- PWGCF/Tasks/correlations.cxx | 2 +- Tutorials/src/eventMixing.cxx | 41 ++++++++----------- Tutorials/src/eventMixingValidation.cxx | 6 +-- Tutorials/src/tracksCombinations.cxx | 4 +- 6 files changed, 26 insertions(+), 31 deletions(-) diff --git a/PWGCF/FemtoDream/femtoDreamPairTaskTrackTrack.cxx b/PWGCF/FemtoDream/femtoDreamPairTaskTrackTrack.cxx index 3170e6fa53b..e717a2b5e5c 100644 --- a/PWGCF/FemtoDream/femtoDreamPairTaskTrackTrack.cxx +++ b/PWGCF/FemtoDream/femtoDreamPairTaskTrackTrack.cxx @@ -94,7 +94,7 @@ struct femtoDreamPairTaskTrackTrack { ConfigurableAxis CfgMultBins{"CfgMultBins", {VARIABLE_WIDTH, 0.0f, 20.0f, 40.0f, 60.0f, 80.0f, 100.0f, 200.0f, 99999.f}, "Mixing bins - multiplicity"}; ConfigurableAxis CfgVtxBins{"CfgVtxBins", {VARIABLE_WIDTH, -10.0f, -8.f, -6.f, -4.f, -2.f, 0.f, 2.f, 4.f, 6.f, 8.f, 10.f}, "Mixing bins - z-vertex"}; - BinningPolicy colBinning{{CfgVtxBins, CfgMultBins}, true}; + ColumnBinningPolicy colBinning{{CfgVtxBins, CfgMultBins}, true}; ConfigurableAxis CfgkstarBins{"CfgkstarBins", {1500, 0., 6.}, "binning kstar"}; ConfigurableAxis CfgkTBins{"CfgkTBins", {150, 0., 9.}, "binning kT"}; diff --git a/PWGCF/FemtoDream/femtoDreamPairTaskTrackV0.cxx b/PWGCF/FemtoDream/femtoDreamPairTaskTrackV0.cxx index 06932b46273..3acde27db2c 100644 --- a/PWGCF/FemtoDream/femtoDreamPairTaskTrackV0.cxx +++ b/PWGCF/FemtoDream/femtoDreamPairTaskTrackV0.cxx @@ -186,7 +186,7 @@ struct femtoDreamPairTaskTrackV0 { void processMixedEvent(o2::aod::FemtoDreamCollisions& cols, o2::aod::FemtoDreamParticles& parts) { - BinningPolicy colBinning{{CfgVtxBins, CfgMultBins}, true}; + ColumnBinningPolicy colBinning{{CfgVtxBins, CfgMultBins}, true}; for (auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) { diff --git a/PWGCF/Tasks/correlations.cxx b/PWGCF/Tasks/correlations.cxx index 2e6a6c60593..7ea1195848e 100644 --- a/PWGCF/Tasks/correlations.cxx +++ b/PWGCF/Tasks/correlations.cxx @@ -115,7 +115,7 @@ struct CorrelationTask { using aodCollisions = soa::Filtered>; using derivedCollisions = soa::Filtered; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; void init(o2::framework::InitContext&) { diff --git a/Tutorials/src/eventMixing.cxx b/Tutorials/src/eventMixing.cxx index 13b937f24a2..a1fb47b8967 100644 --- a/Tutorials/src/eventMixing.cxx +++ b/Tutorials/src/eventMixing.cxx @@ -38,7 +38,7 @@ DECLARE_SOA_TABLE(Hashes, "AOD", "HASH", hash::Bin); struct MixedEvents { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) SameKindPair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -68,7 +68,7 @@ struct MixedEvents { struct MixedEventsInsideProcess { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) void process(aod::Collisions& collisions, aod::Tracks& tracks) @@ -103,7 +103,7 @@ struct MixedEventsFilteredTracks { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) SameKindPair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -134,7 +134,7 @@ struct MixedEventsJoinedCollisions { using aodCollisions = soa::Join; std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) SameKindPair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -165,7 +165,7 @@ struct MixedEventsDynamicColumns { using aodCollisions = soa::Join; std::vector zBins{7, -7, 7}; std::vector multBins{VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 100.1}; - using BinningType = BinningPolicy>; + using BinningType = ColumnBinningPolicy>; BinningType corrBinning{{zBins, multBins}, true}; // true is for 'ignore overflows' (true by default) SameKindPair pair{corrBinning, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -195,7 +195,7 @@ struct MixedEventsDynamicColumns { struct MixedEventsVariousKinds { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) Pair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -228,7 +228,7 @@ struct MixedEventsTriple { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; std::vector zBins{7, -7, 7}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins, zBins}, true}; // true is for 'ignore overflows' (true by default) SameKindTriple triple{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -259,7 +259,7 @@ struct MixedEventsTripleVariousKinds { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; std::vector zBins{7, -7, 7}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins, zBins}, true}; // true is for 'ignore overflows' (true by default) Triple triple{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -356,7 +356,6 @@ struct MixedEventsWithHashTask { }; struct MixedEventsPartitionedTracks { - Filter trackFilter = (aod::track::x > -0.8f) && (aod::track::x < 0.8f) && (aod::track::y > 1.0f); using myTracks = soa::Filtered; @@ -365,7 +364,7 @@ struct MixedEventsPartitionedTracks { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) SameKindPair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -408,19 +407,15 @@ struct MixedEventsLambdaBinning { void process(aod::Collisions& collisions, aod::Tracks& tracks) { LOGF(info, "Input data Collisions %d, Tracks %d ", collisions.size(), tracks.size()); - std::vector axisVertexExpanded; - binning_helpers::expandConstantBinning(axisVertex, axisVertexExpanded); - - auto getBinTracksSize = - [&tracks, this](std::tuple::type> const& data) -> int { - float posZ = std::get<0>(data); - int32_t colIndex = std::get<1>(data); - auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, colIndex); // it's cached, so slicing/grouping happens only once - return binning_helpers::getBin({axisVertexExpanded, axisMultiplicity}, std::make_tuple(posZ, associatedTracks.size()), true); // true is for 'ignore overflows' (true by default) - }; - - using BinningType = LambdaBinningPolicy>; - BinningType binningWithLambda{getBinTracksSize}; + + auto getTracksSize = + [&tracks](aod::Collision& col) { + auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, col.globalIndex()); // it's cached, so slicing/grouping happens only once + return associatedTracks.size(); + }; + + using BinningType = FlexibleBinningPolicy, aod::collision::PosZ, decltype(getTracksSize)>; + BinningType binningWithLambda{{getTracksSize}, {axisMultiplicity, axisVertex}, true}; auto tracksTuple = std::make_tuple(tracks); SameKindPair pair{binningWithLambda, 5, -1, collisions, tracksTuple}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored diff --git a/Tutorials/src/eventMixingValidation.cxx b/Tutorials/src/eventMixingValidation.cxx index 06d7d5ae054..4260b67a508 100644 --- a/Tutorials/src/eventMixingValidation.cxx +++ b/Tutorials/src/eventMixingValidation.cxx @@ -32,7 +32,7 @@ struct MixedEventsEmptyTables { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) SameKindPair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -62,7 +62,7 @@ struct MixedEventsEmptyTables { struct MixedEventsJoinedTracks { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - using BinningType = BinningPolicy; + using BinningType = ColumnBinningPolicy; BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) SameKindPair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored @@ -93,7 +93,7 @@ struct MixedEventsJoinedTracks { // struct MixedEventsBadSubscription { // std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; // std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; -// using BinningType = BinningPolicy; +// using BinningType = ColumnBinningPolicy; // BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default) // SameKindPair pair{binningOnPositions, 5, -1}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored // diff --git a/Tutorials/src/tracksCombinations.cxx b/Tutorials/src/tracksCombinations.cxx index fc1d04ca26d..67ed35d2307 100644 --- a/Tutorials/src/tracksCombinations.cxx +++ b/Tutorials/src/tracksCombinations.cxx @@ -51,7 +51,7 @@ struct TrackCombinations { struct BinnedTrackCombinations { std::vector xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072}; std::vector yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360}; - BinningPolicy trackBinning{{xBins, yBins}, true}; + ColumnBinningPolicy trackBinning{{xBins, yBins}, true}; void process(aod::Tracks const& tracks) { @@ -73,7 +73,7 @@ struct ConfigurableBinnedCollisionCombinations { void process(soa::Join const& collisions) { - using BinningType = BinningPolicy>; + using BinningType = ColumnBinningPolicy>; BinningType colBinning{{axisVertex, axisMultiplicity}, true}; int count = 0; From 9620aa8949fd80e78e5aded662a9b4b3f2971738 Mon Sep 17 00:00:00 2001 From: Maja Kabus Date: Thu, 30 Jun 2022 14:57:40 +0200 Subject: [PATCH 6/8] nitpick --- Tutorials/src/eventMixing.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tutorials/src/eventMixing.cxx b/Tutorials/src/eventMixing.cxx index a1fb47b8967..2aabe8d79cf 100644 --- a/Tutorials/src/eventMixing.cxx +++ b/Tutorials/src/eventMixing.cxx @@ -409,7 +409,7 @@ struct MixedEventsLambdaBinning { LOGF(info, "Input data Collisions %d, Tracks %d ", collisions.size(), tracks.size()); auto getTracksSize = - [&tracks](aod::Collision& col) { + [&tracks](aod::Collision const& col) { auto associatedTracks = tracks.sliceByCached(o2::aod::track::collisionId, col.globalIndex()); // it's cached, so slicing/grouping happens only once return associatedTracks.size(); }; From f0419b19be28cb6eaaade506fde479b4af1670a1 Mon Sep 17 00:00:00 2001 From: Maja Kabus Date: Wed, 6 Jul 2022 18:35:24 +0200 Subject: [PATCH 7/8] Fix order of mixing axes in tutorial example --- Tutorials/src/eventMixing.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tutorials/src/eventMixing.cxx b/Tutorials/src/eventMixing.cxx index 2aabe8d79cf..1db82dd2b41 100644 --- a/Tutorials/src/eventMixing.cxx +++ b/Tutorials/src/eventMixing.cxx @@ -415,7 +415,8 @@ struct MixedEventsLambdaBinning { }; using BinningType = FlexibleBinningPolicy, aod::collision::PosZ, decltype(getTracksSize)>; - BinningType binningWithLambda{{getTracksSize}, {axisMultiplicity, axisVertex}, true}; + BinningType binningWithLambda{{getTracksSize}, {axisVertex, axisMultiplicity}, true}; + auto tracksTuple = std::make_tuple(tracks); SameKindPair pair{binningWithLambda, 5, -1, collisions, tracksTuple}; // indicates that 5 events should be mixed and under/overflow (-1) to be ignored From 8da7255db5c988c6f6a305c1e36a99693015deb1 Mon Sep 17 00:00:00 2001 From: Maja Kabus Date: Sat, 9 Jul 2022 20:35:09 +0200 Subject: [PATCH 8/8] Remove leftover TODO --- Tutorials/src/eventMixing.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/Tutorials/src/eventMixing.cxx b/Tutorials/src/eventMixing.cxx index 1db82dd2b41..5eaed191c00 100644 --- a/Tutorials/src/eventMixing.cxx +++ b/Tutorials/src/eventMixing.cxx @@ -399,7 +399,6 @@ struct MixedEventsPartitionedTracks { } }; -// TODO: Test also with constant binning (expandConstantBinning()) struct MixedEventsLambdaBinning { ConfigurableAxis axisVertex{"axisVertex", {14, -7, 7}, "vertex axis for histograms"}; ConfigurableAxis axisMultiplicity{"axisMultiplicity", {VARIABLE_WIDTH, 0.0, 2.750, 5.250, 7.750, 12.750, 17.750, 22.750, 27.750, 32.750, 37.750, 42.750, 47.750, 52.750, 57.750, 62.750, 67.750, 72.750, 77.750, 82.750, 87.750, 92.750, 97.750, 250.1}, "multiplicity axis for histograms"};