@@ -314,15 +314,13 @@ struct HfTaskDplus {
314314 // / \param centrality collision centrality
315315 // / \param occupancy collision occupancy
316316 // / \param numPvContributors contributors to the PV
317- // / \param gapType UPC gap type (-1 for non-UPC)
318317 template <bool IsMc, bool IsMatched, typename T1>
319318 void fillSparseML (const T1& candidate,
320319 float ptbhad,
321320 int flagBHad,
322321 float centrality,
323322 float occupancy,
324- float numPvContributors,
325- int gapType = -1 )
323+ float numPvContributors)
326324 {
327325 std::vector<float > outputMl = {-999 ., -999 ., -999 .};
328326 for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
@@ -387,30 +385,16 @@ struct HfTaskDplus {
387385 }
388386 }
389387 } else { // Data
390- if (gapType >= 0 ) {
391- // UPC mode: always include gap type
392- if (storeCentrality && storeOccupancy) {
393- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], centrality, occupancy, static_cast <float >(gapType));
394- } else if (storeCentrality && !storeOccupancy) {
395- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], centrality, static_cast <float >(gapType));
396- } else if (!storeCentrality && storeOccupancy) {
397- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], occupancy, static_cast <float >(gapType));
398- } else {
399- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], static_cast <float >(gapType));
400- }
388+ if (storeCentrality && storeOccupancy) {
389+ registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], centrality, occupancy);
390+ } else if (storeCentrality && !storeOccupancy) {
391+ registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], centrality);
392+ } else if (!storeCentrality && storeOccupancy) {
393+ registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], occupancy);
394+ } else if (!storeCentrality && !storeOccupancy && storePvContributors) {
395+ registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], numPvContributors);
401396 } else {
402- // Non-UPC mode: original behavior
403- if (storeCentrality && storeOccupancy) {
404- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], centrality, occupancy);
405- } else if (storeCentrality && !storeOccupancy) {
406- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], centrality);
407- } else if (!storeCentrality && storeOccupancy) {
408- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], occupancy);
409- } else if (!storeCentrality && !storeOccupancy && storePvContributors) {
410- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ], numPvContributors);
411- } else {
412- registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ]);
413- }
397+ registry.fill (HIST (" hSparseMass" ), hfHelper.invMassDplusToPiKPi (candidate), candidate.pt (), outputMl[0 ], outputMl[1 ], outputMl[2 ]);
414398 }
415399 }
416400 }
@@ -732,8 +716,6 @@ struct HfTaskDplus {
732716 float cent{-1 .f };
733717 float occ{-1 .f };
734718 float numPvContr{-1 .f };
735- float ptBhad{-1 .f };
736- int const flagBHad{-1 };
737719 int const gapTypeInt = hf_upc::gapTypeToInt (gap);
738720
739721 for (const auto & candidate : groupedDplusCandidates) {
@@ -742,7 +724,21 @@ struct HfTaskDplus {
742724 }
743725 fillHisto (candidate);
744726 if constexpr (fillMl) {
745- fillSparseML<false , false >(candidate, ptBhad, flagBHad, cent, occ, numPvContr, gapTypeInt);
727+ // Fill THn with gap type using lambda function similar to taskLc
728+ std::vector<float > outputMl = {-999 ., -999 ., -999 .};
729+ for (unsigned int iclass = 0 ; iclass < classMl->size (); iclass++) {
730+ outputMl[iclass] = candidate.mlProbDplusToPiKPi ()[classMl->at (iclass)];
731+ }
732+
733+ std::vector<double > valuesToFill{hfHelper.invMassDplusToPiKPi (candidate), static_cast <double >(candidate.pt ()), outputMl[0 ], outputMl[1 ], outputMl[2 ]};
734+ if (storeCentrality) {
735+ valuesToFill.push_back (cent);
736+ }
737+ if (storeOccupancy) {
738+ valuesToFill.push_back (occ);
739+ }
740+ valuesToFill.push_back (static_cast <double >(gapTypeInt));
741+ registry.get <THnSparse>(HIST (" hSparseMass" ))->Fill (valuesToFill.data ());
746742 }
747743 }
748744 }
0 commit comments