@@ -114,6 +114,7 @@ DECLARE_SOA_COLUMN(TrackDcaXY1, trackDcaXY1, float); //!
114114DECLARE_SOA_COLUMN (ProductTrackDcaXY, productTrackDcaXY, float ); // ! Product of DCAxy of the two tag tracks
115115DECLARE_SOA_COLUMN (Cpa, cpa, float ); // ! Cosine pointing angle of the tag
116116DECLARE_SOA_COLUMN (CpaXY, cpaXY, float ); // ! Cosine of the pointing angle in XY of the tag
117+ DECLARE_SOA_COLUMN (Radius, radius, float ); // ! Radius of the tag
117118DECLARE_SOA_COLUMN (DecChannel, decChannel, uint8_t ); // ! Flag the selected decay channel
118119// MC info
119120DECLARE_SOA_COLUMN (IsSignal, isSignal, uint8_t ); // ! Flag for a signal
@@ -127,7 +128,8 @@ DECLARE_SOA_TABLE(PiPiFromDpTags, "AOD", "PIPIFROMDPTAG", //! Table for same sig
127128 aod::tagandprobe::CollisionId,
128129 aod::tagandprobe::Track0Id,
129130 aod::tagandprobe::Track1Id,
130- aod::tagandprobe::MlScores);
131+ aod::tagandprobe::MlScores,
132+ aod::tagandprobe::Radius);
131133DECLARE_SOA_TABLE (PiPiFromDpMcTags, " AOD" , " PIPIFROMDPMCTAG" , // ! Table with MC truth for same sign 2-pion vertices used as tags
132134 aod::tagandprobe::IsSignal,
133135 aod::tagandprobe::MotherId);
@@ -137,6 +139,7 @@ DECLARE_SOA_TABLE(KaKaFromDspTags, "AOD", "KAKAFROMDSPTAG", //! Table for opposi
137139 aod::tagandprobe::Track0Id,
138140 aod::tagandprobe::Track1Id,
139141 aod::tagandprobe::MlScores,
142+ aod::tagandprobe::Radius,
140143 soa::Marker<1 >);
141144DECLARE_SOA_TABLE (KaKaFromDsMcTags, " AOD" , " KAKAFROMDSMCTAG" , // ! Table with MC truth for opposite sign 2-kaon vertices used as tags
142145 aod::tagandprobe::IsSignal,
@@ -148,6 +151,7 @@ DECLARE_SOA_TABLE(PiKaFromDzTags, "AOD", "PIKAFROMDZTAG", //! Table for opposite
148151 aod::tagandprobe::Track0Id,
149152 aod::tagandprobe::Track1Id,
150153 aod::tagandprobe::MlScores,
154+ aod::tagandprobe::Radius,
151155 soa::Marker<2 >);
152156DECLARE_SOA_TABLE (PiKaFromDzMcTags, " AOD" , " PIKAFROMDZMCTAG" , // ! Table with MC truth for opposite sign pion(+)-kaon(-) vertices used as tags
153157 aod::tagandprobe::IsSignal,
@@ -159,6 +163,7 @@ DECLARE_SOA_TABLE(KaPiFromDzTags, "AOD", "KAPIFROMDZTAG", //! Table for opposite
159163 aod::tagandprobe::Track0Id,
160164 aod::tagandprobe::Track1Id,
161165 aod::tagandprobe::MlScores,
166+ aod::tagandprobe::Radius,
162167 soa::Marker<3 >);
163168DECLARE_SOA_TABLE (KaPiFromDzMcTags, " AOD" , " KAPIFROMDZMCTAG" , // ! Table with MC truth for opposite sign kaon(+)-pion(-) vertices used as tags
164169 aod::tagandprobe::IsSignal,
@@ -750,7 +755,8 @@ struct TagTwoProngDisplacedVertices {
750755 tagVarsTable (ptTag, invMass, topoVars[0 ], topoVars[1 ], topoVars[2 ], topoVars[3 ], trackDcaXy[0 ], trackDcaXy[1 ], topoVars[6 ], topoVars[7 ], topoVars[8 ], isSignal, channel);
751756 }
752757 } else {
753- tagPiPiTable (trackFirst.collisionId (), trackFirst.globalIndex (), trackSecond.globalIndex (), mlScoresTag);
758+ float radius = std::hypot (secVtx[0 ], secVtx[1 ]);
759+ tagPiPiTable (trackFirst.collisionId (), trackFirst.globalIndex (), trackSecond.globalIndex (), mlScoresTag, radius);
754760 if constexpr (doMc) {
755761 tagPiPiMcTable (isSignal, motherIdx);
756762 }
@@ -916,17 +922,20 @@ struct TagTwoProngDisplacedVertices {
916922 }
917923 } else {
918924 if (channel == aod::tagandprobe::TagChannels::DsOrDplusToKKPi) {
919- tagKaKaTable (trackPos.collisionId (), trackPos.globalIndex (), trackNeg.globalIndex (), mlScoresTag);
925+ float radius = std::hypot (secVtx[0 ], secVtx[1 ]);
926+ tagKaKaTable (trackPos.collisionId (), trackPos.globalIndex (), trackNeg.globalIndex (), mlScoresTag, radius);
920927 if constexpr (doMc) {
921928 tagKaKaMcTable (isSignal, motherIdx);
922929 }
923930 } else if (channel == aod::tagandprobe::TagChannels::DstarPlusToDzeroPi) {
924- tagPiKaTable (trackPos.collisionId (), trackPos.globalIndex (), trackNeg.globalIndex (), mlScoresTag);
931+ float radius = std::hypot (secVtx[0 ], secVtx[1 ]);
932+ tagPiKaTable (trackPos.collisionId (), trackPos.globalIndex (), trackNeg.globalIndex (), mlScoresTag, radius);
925933 if constexpr (doMc) {
926934 tagPiKaMcTable (isSignal, motherIdx);
927935 }
928936 } else if (channel == aod::tagandprobe::TagChannels::DstarMinusToDzeroBarPi) {
929- tagKaPiTable (trackPos.collisionId (), trackPos.globalIndex (), trackNeg.globalIndex (), mlScoresTag);
937+ float radius = std::hypot (secVtx[0 ], secVtx[1 ]);
938+ tagKaPiTable (trackPos.collisionId (), trackPos.globalIndex (), trackNeg.globalIndex (), mlScoresTag, radius);
930939 if constexpr (doMc) {
931940 tagKaPiMcTable (isSignal, motherIdx);
932941 }
@@ -1142,6 +1151,14 @@ struct TagTwoProngDisplacedVertices {
11421151// / Probe third track reconstruction efficiency with different selections
11431152struct ProbeThirdTrack {
11441153
1154+ enum EvSelITSLayers : uint8_t {
1155+ None = 0 ,
1156+ GoodITSLayer3,
1157+ GoodITSLayer0123,
1158+ GoodITSLayersAll,
1159+ NEvSelITSLayers
1160+ };
1161+
11451162 // ML models for triggers
11461163 struct : ConfigurableGroup {
11471164 std::string prefix = " ML" ;
@@ -1159,6 +1176,7 @@ struct ProbeThirdTrack {
11591176 } mlConfig;
11601177 Configurable<float > ptCandMin{" ptCandMin" , 0 .f , " Minimum candidate pt for THnSparse filling" };
11611178 Configurable<bool > fillTpcOnlyCase{" fillTpcOnlyCase" , true , " Fill output for TPC only case (not needed for thinned data or Pb-Pb)" };
1179+ Configurable<uint8_t > requireCollisionsGoodITS{" requireCollisionsGoodITS" , 0u , " Event selection for ITS full acceptance (0: none, 1: layer 3, 2: layers 0-1-2-3, 3: all layers)" };
11621180
11631181 ConfigurableAxis axisPtProbe{" axisPtProbe" , {VARIABLE_WIDTH, 0 .05f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .2f , 1 .5f , 2 .0f , 2 .5f , 3 .0f , 3 .5f , 4 .0f , 4 .5f , 5 .0f , 6 .0f , 7 .0f , 8 .0f , 9 .0f , 10 .f , 12 .f , 15 .f , 20 .f , 25 .f , 30 .f }, " Axis for pt Probe" };
11641182 ConfigurableAxis axisPtTag{" axisPtTag" , {VARIABLE_WIDTH, 0 .05f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .2f , 1 .5f , 2 .0f , 2 .5f , 3 .0f , 3 .5f , 4 .0f , 4 .5f , 5 .0f , 6 .0f , 7 .0f , 8 .0f , 9 .0f , 10 .f , 12 .f , 15 .f , 20 .f , 25 .f , 30 .f }, " Axis for pt Tag" };
@@ -1170,11 +1188,13 @@ struct ProbeThirdTrack {
11701188 ConfigurableAxis axisNumCluIts{" axisNumCluIts" , {5 , 2 .5f , 7 .5f }, " Axis for Number of Cluster ITS" };
11711189 ConfigurableAxis axisPtMinTagdaught{" axisPtMinTagdaught" , {10 , 0 .f , 1 .f }, " Axis for Pt Min of Tag daughter" };
11721190 ConfigurableAxis axisAbsEtaMaxTagdaught{" axisAbsEtaMaxTagdaught" , {10 , 0 .f , 1 .f }, " Axis for AbsEtaMax for Tag daughter" };
1191+ ConfigurableAxis axisRadiusTag{" axisRadiusTag" , {100 , 0 .f , 0 .5f }, " Axis for Tag Radius (cm)" };
11731192
11741193 Filter tagMcFilter = aod::tagandprobe::isSignal > static_cast <uint8_t >(0 );
11751194
11761195 using TracksWithDca = soa::Join<aod::Tracks, aod::TracksDCA, aod::TracksExtra>;
11771196 using TracksWithDcaMc = soa::Join<TracksWithDca, aod::McTrackLabels>;
1197+ using CollisionsWithEvSel = soa::Join<aod::Collisions, aod::EvSels>;
11781198 using FilteredPiPiFromDpMcTags = soa::Filtered<soa::Join<aod::PiPiFromDpTags, aod::PiPiFromDpMcTags>>;
11791199 using FilteredKaKaFromDspMcTags = soa::Filtered<soa::Join<aod::KaKaFromDspTags, aod::KaKaFromDsMcTags>>;
11801200 using FilteredPiKaFromDzMcTags = soa::Filtered<soa::Join<aod::PiKaFromDzTags, aod::PiKaFromDzMcTags>>;
@@ -1263,15 +1283,15 @@ struct ProbeThirdTrack {
12631283 continue ;
12641284 }
12651285 histos[iChannel][iTrackType] = registry.add <THnSparse>(Form (" h%sVsPtProbeTag_%s" , tagChannels[iChannel].data (), trackTypes[iTrackType].data ()),
1266- " ; #it{p}_{T}(D) (GeV/#it{c}); #it{p}_{T}(tag) (GeV/#it{c}); #it{p}_{T}(probe) (GeV/#it{c}); #it{p}_{T}^{TPC in}(probe) (GeV/#it{c}); #it{M}(D) (GeV/#it{c}^{2}); #it{M}(tag) (GeV/#it{c}^{2}); #it{#eta}(probe); #it{N}_{cross rows}^{TPC}(probe); #chi^{2}/#it{N}_{clusters}^{TPC}(probe); #it{N}_{clusters}^{ITS}(probe);" ,
1267- HistType::kTHnSparseF , {axisPtD, axisPtTag, axisPtProbe, axisPtProbe, axisMass[iChannel], axisMassTag[iChannel], axisEtaProbe, axisNumCrossRowTpc, axisTpcChi2PerClus, axisNumCluIts});
1286+ " ; #it{p}_{T}(D) (GeV/#it{c}); #it{p}_{T}(tag) (GeV/#it{c}); #it{p}_{T}(probe) (GeV/#it{c}); #it{p}_{T}^{TPC in}(probe) (GeV/#it{c}); #it{M}(D) (GeV/#it{c}^{2}); #it{M}(tag) (GeV/#it{c}^{2}); #it{#eta}(probe); #it{N}_{cross rows}^{TPC}(probe); #chi^{2}/#it{N}_{clusters}^{TPC}(probe); #it{N}_{clusters}^{ITS}(probe); radius(tag) (cm) " ,
1287+ HistType::kTHnSparseF , {axisPtD, axisPtTag, axisPtProbe, axisPtProbe, axisMass[iChannel], axisMassTag[iChannel], axisEtaProbe, axisNumCrossRowTpc, axisTpcChi2PerClus, axisNumCluIts, axisRadiusTag });
12681288 auto invMassBins = axisMass[iChannel].binEdges ;
12691289 minInvMass[iChannel] = invMassBins.front ();
12701290 maxInvMass[iChannel] = invMassBins.back ();
12711291 }
12721292 }
12731293 for (int iChannel{0 }; iChannel < aod::tagandprobe::TagChannels::NTagChannels; ++iChannel) {
1274- histosGen[iChannel] = registry.add <THnSparse>(Form (" hGen%s" , tagChannels[iChannel].data ()), " ;#it{p}_{T}(D_{parent}) (GeV/#it{c}); #it{y}(D_{parent});#it{p}_{T}(tag) (GeV/#it{c}); #it{y}(tag);#it{p}_{T}(probe) (GeV/#it{c}); #it{#eta}(probe);#it{p}_{T}^{min}(tag daughters);#it{#eta}_{max}(tag daughters)" , HistType::kTHnSparseF , {axisPtD, axisYD, axisPtTag, axisYD, axisPtProbe, axisEtaProbe, axisPtMinTagdaught, axisAbsEtaMaxTagdaught});
1294+ histosGen[iChannel] = registry.add <THnSparse>(Form (" hGen%s" , tagChannels[iChannel].data ()), " ;#it{p}_{T}(D_{parent}) (GeV/#it{c}); #it{y}(D_{parent});#it{p}_{T}(tag) (GeV/#it{c}); #it{y}(tag);#it{p}_{T}(probe) (GeV/#it{c}); #it{#eta}(probe);#it{p}_{T}^{min}(tag daughters);#it{#eta}_{max}(tag daughters); radius(tag) (cm) " , HistType::kTHnSparseF , {axisPtD, axisYD, axisPtTag, axisYD, axisPtProbe, axisEtaProbe, axisPtMinTagdaught, axisAbsEtaMaxTagdaught,axisRadiusTag });
12751295 }
12761296 applyMl = {mlConfig.applyMlPiPiFromDplus , mlConfig.applyMlKaKaFromDsOrDplus , mlConfig.applyMlDzeroFromDstar };
12771297 }
@@ -1296,7 +1316,7 @@ struct ProbeThirdTrack {
12961316 }
12971317
12981318 template <uint8_t channel, bool doMc, typename TTrackIndices, typename TTrack, typename TTracks, typename PParticles>
1299- void loopOverThirdTrack (TTrackIndices const & groupedTrackThirdIndices, TTracks const & /* tracks*/ , TTrack const & trackFirst, TTrack const & trackSecond, PParticles const mcParticles, const int motherIdxTag)
1319+ void loopOverThirdTrack (TTrackIndices const & groupedTrackThirdIndices, TTracks const & /* tracks*/ , TTrack const & trackFirst, TTrack const & trackSecond, PParticles const mcParticles, const int motherIdxTag, const float radius )
13001320 {
13011321 for (const auto & trackIndex : groupedTrackThirdIndices) {
13021322 auto trackThird = trackIndex.template track_as <TTracks>();
@@ -1362,12 +1382,33 @@ struct ProbeThirdTrack {
13621382 continue ;
13631383 }
13641384 if (trackSelector[iTrackType].IsSelected (trackThird)) {
1365- histos[channel][iTrackType]->Fill (ptD, ptTag, ptTrackThird, ptTpcInnerTrackThird, invMass, invMassTag, etaTrackThird, numTpcCrossRowTrackThird, numTpcChi2NumCluTrackThird, numItsCluTrackThird);
1385+ histos[channel][iTrackType]->Fill (ptD, ptTag, ptTrackThird, ptTpcInnerTrackThird, invMass, invMassTag, etaTrackThird, numTpcCrossRowTrackThird, numTpcChi2NumCluTrackThird, numItsCluTrackThird, radius );
13661386 }
13671387 }
13681388 }
13691389 }
13701390
1391+ bool isCollisionSelected (CollisionsWithEvSel::iterator const & collision)
1392+ {
1393+ switch (requireCollisionsGoodITS.value ) {
1394+ case None:
1395+ return true ;
1396+ break ;
1397+ case GoodITSLayer3:
1398+ return collision.selection_bit (o2::aod::evsel::kIsGoodITSLayer3 );
1399+ break ;
1400+ case GoodITSLayer0123:
1401+ return collision.selection_bit (o2::aod::evsel::kIsGoodITSLayer0123 );
1402+ break ;
1403+ case GoodITSLayersAll:
1404+ return collision.selection_bit (o2::aod::evsel::kIsGoodITSLayersAll );
1405+ break ;
1406+ default :
1407+ LOGP (fatal, " Event selection flag for ITS acceptance {} not properly set." , requireCollisionsGoodITS.value );
1408+ break ;
1409+ }
1410+ }
1411+
13711412 template <uint8_t channel, bool doMc, typename TTags, typename TTrackIndices, typename TTracks, typename PParticles>
13721413 void runCombinatorialThirdTrack (TTags const & groupedTags,
13731414 TTrackIndices const & groupedTrackIndices,
@@ -1390,16 +1431,19 @@ struct ProbeThirdTrack {
13901431 if constexpr (doMc) {
13911432 motherIdxTag = tag.motherId ();
13921433 }
1393- loopOverThirdTrack<channel, doMc>(groupedTrackIndices, tracks, trackFirst, trackSecond, mcParticles, motherIdxTag);
1434+ loopOverThirdTrack<channel, doMc>(groupedTrackIndices, tracks, trackFirst, trackSecond, mcParticles, motherIdxTag, tag. radius () );
13941435 }
13951436 }
13961437
1397- void processCombinatorialDplusToKaPiPi (aod::Collisions const & collisions,
1438+ void processCombinatorialDplusToKaPiPi (CollisionsWithEvSel const & collisions,
13981439 aod::PiPiFromDpTags const & tagsPiPi,
13991440 aod::TrackAssoc const & trackIndices,
14001441 TracksWithDca const & tracks)
14011442 {
14021443 for (const auto & collision : collisions) {
1444+ if (!isCollisionSelected (collision)) {
1445+ continue ;
1446+ }
14031447 auto thisCollId = collision.globalIndex ();
14041448 auto groupedTrackIndices = trackIndices.sliceBy (trackIndicesPerCollision, thisCollId);
14051449 // D+ -> pi+pi+K- and c.c.
@@ -1409,13 +1453,16 @@ struct ProbeThirdTrack {
14091453 }
14101454 PROCESS_SWITCH (ProbeThirdTrack, processCombinatorialDplusToKaPiPi, " Process combinatorial of tagged 2-pion vertices with additional track" , true );
14111455
1412- void processCombinatorialDplusToKaPiPiMc (aod::Collisions const & collisions,
1456+ void processCombinatorialDplusToKaPiPiMc (CollisionsWithEvSel const & collisions,
14131457 FilteredPiPiFromDpMcTags const & tagsPiPi,
14141458 aod::TrackAssoc const & trackIndices,
14151459 TracksWithDcaMc const & tracks,
14161460 aod::McParticles const & mcParticles)
14171461 {
14181462 for (const auto & collision : collisions) {
1463+ if (!isCollisionSelected (collision)) {
1464+ continue ;
1465+ }
14191466 auto thisCollId = collision.globalIndex ();
14201467 auto groupedTrackIndices = trackIndices.sliceBy (trackIndicesPerCollision, thisCollId);
14211468 // D+ -> pi+pi+K- and c.c.
@@ -1425,44 +1472,53 @@ struct ProbeThirdTrack {
14251472 }
14261473 PROCESS_SWITCH (ProbeThirdTrack, processCombinatorialDplusToKaPiPiMc, " Process combinatorial of tagged 2-pion vertices with additional track using MC truth" , false );
14271474
1428- void processCombinatorialDsToPhiPi (aod::Collisions const & collisions,
1475+ void processCombinatorialDsToPhiPi (CollisionsWithEvSel const & collisions,
14291476 aod::KaKaFromDspTags const & tagsKaKa,
14301477 aod::TrackAssoc const & trackIndices,
14311478 TracksWithDca const & tracks)
14321479 {
14331480 for (const auto & collision : collisions) {
1434- // Ds+/D+ -> phi(->K+K-)pi+ and c.c.
1481+ if (!isCollisionSelected (collision)) {
1482+ continue ;
1483+ }
14351484 auto thisCollId = collision.globalIndex ();
1485+ // Ds+/D+ -> phi(->K+K-)pi+ and c.c.
14361486 auto groupedTrackIndices = trackIndices.sliceBy (trackIndicesPerCollision, thisCollId);
14371487 auto groupedTagsKaKa = tagsKaKa.sliceBy (tagsKaKaPerCollision, thisCollId);
14381488 runCombinatorialThirdTrack<aod::tagandprobe::TagChannels::DsOrDplusToKKPi, false >(groupedTagsKaKa, groupedTrackIndices, tracks, tracks);
14391489 }
14401490 }
14411491 PROCESS_SWITCH (ProbeThirdTrack, processCombinatorialDsToPhiPi, " Process combinatorial of tagged 2-kaon (phi) vertices with additional track" , true );
14421492
1443- void processCombinatorialDsToPhiPiMc (aod::Collisions const & collisions,
1493+ void processCombinatorialDsToPhiPiMc (CollisionsWithEvSel const & collisions,
14441494 FilteredKaKaFromDspMcTags const & tagsKaKa,
14451495 aod::TrackAssoc const & trackIndices,
14461496 TracksWithDcaMc const & tracks,
14471497 aod::McParticles const & mcParticles)
14481498 {
14491499 for (const auto & collision : collisions) {
1450- // Ds+/D+ -> phi(->K+K-)pi+ and c.c.
1500+ if (!isCollisionSelected (collision)) {
1501+ continue ;
1502+ }
14511503 auto thisCollId = collision.globalIndex ();
1504+ // Ds+/D+ -> phi(->K+K-)pi+ and c.c.
14521505 auto groupedTrackIndices = trackIndices.sliceBy (trackIndicesPerCollision, thisCollId);
14531506 auto groupedTagsKaKa = tagsKaKa.sliceBy (tagsKaKaMcPerCollision, thisCollId);
14541507 runCombinatorialThirdTrack<aod::tagandprobe::TagChannels::DsOrDplusToKKPi, true >(groupedTagsKaKa, groupedTrackIndices, tracks, mcParticles);
14551508 }
14561509 }
14571510 PROCESS_SWITCH (ProbeThirdTrack, processCombinatorialDsToPhiPiMc, " Process combinatorial of tagged 2-kaon (phi) vertices with additional track using MC truth" , false );
14581511
1459- void processCombinatorialDstarToDzeroPi (aod::Collisions const & collisions,
1512+ void processCombinatorialDstarToDzeroPi (CollisionsWithEvSel const & collisions,
14601513 aod::PiKaFromDzTags const & tagsPiKa,
14611514 aod::KaPiFromDzTags const & tagsKaPi,
14621515 aod::TrackAssoc const & trackIndices,
14631516 TracksWithDca const & tracks)
14641517 {
14651518 for (const auto & collision : collisions) {
1519+ if (!isCollisionSelected (collision)) {
1520+ continue ;
1521+ }
14661522 auto thisCollId = collision.globalIndex ();
14671523 auto groupedTrackIndices = trackIndices.sliceBy (trackIndicesPerCollision, thisCollId);
14681524 // D*+ -> D0(->pi+K-)pi+
@@ -1475,14 +1531,17 @@ struct ProbeThirdTrack {
14751531 }
14761532 PROCESS_SWITCH (ProbeThirdTrack, processCombinatorialDstarToDzeroPi, " Process combinatorial of tagged pion-kaon (D0) vertices with additional track" , true );
14771533
1478- void processCombinatorialDstarToDzeroPiMc (aod::Collisions const & collisions,
1534+ void processCombinatorialDstarToDzeroPiMc (CollisionsWithEvSel const & collisions,
14791535 FilteredPiKaFromDzMcTags const & tagsPiKa,
14801536 FilteredKaPiFromDzMcTags const & tagsKaPi,
14811537 aod::TrackAssoc const & trackIndices,
14821538 TracksWithDcaMc const & tracks,
14831539 aod::McParticles const & mcParticles)
14841540 {
14851541 for (const auto & collision : collisions) {
1542+ if (!isCollisionSelected (collision)) {
1543+ continue ;
1544+ }
14861545 auto thisCollId = collision.globalIndex ();
14871546 auto groupedTrackIndices = trackIndices.sliceBy (trackIndicesPerCollision, thisCollId);
14881547 // D*+ -> D0(->pi+K-)pi+
0 commit comments