Skip to content

Commit 7b498f0

Browse files
committed
Add tag radius and event selection for ITS acceptance in D-meson tag-and-probe
1 parent d20cdae commit 7b498f0

File tree

1 file changed

+78
-19
lines changed

1 file changed

+78
-19
lines changed

DPG/Tasks/AOTTrack/tagAndProbeDmesons.cxx

Lines changed: 78 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ DECLARE_SOA_COLUMN(TrackDcaXY1, trackDcaXY1, float); //!
114114
DECLARE_SOA_COLUMN(ProductTrackDcaXY, productTrackDcaXY, float); //! Product of DCAxy of the two tag tracks
115115
DECLARE_SOA_COLUMN(Cpa, cpa, float); //! Cosine pointing angle of the tag
116116
DECLARE_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
117118
DECLARE_SOA_COLUMN(DecChannel, decChannel, uint8_t); //! Flag the selected decay channel
118119
// MC info
119120
DECLARE_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);
131133
DECLARE_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>);
141144
DECLARE_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>);
152156
DECLARE_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>);
163168
DECLARE_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
11431152
struct 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

Comments
 (0)