Skip to content

Commit 2734520

Browse files
Update taskCharmHadronsFemtoDream.cxx
1 parent c6fec91 commit 2734520

File tree

1 file changed

+107
-29
lines changed

1 file changed

+107
-29
lines changed

PWGHF/HFC/Tasks/taskCharmHadronsFemtoDream.cxx

Lines changed: 107 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,16 @@ struct HfTaskCharmHadronsFemtoDream {
6565
NegativeCharge = -1
6666
};
6767

68+
enum PairSign {
69+
PairNotDefined = 0,
70+
LikeSignPair = 1,
71+
UnLikeSignPair = 2
72+
};
73+
6874
constexpr static int OriginRecPrompt = 1;
6975
constexpr static int OriginRecFD = 2;
7076

77+
Produces<o2::aod::FDResultsHF> rowFemtoResultPairs;
7178
Produces<o2::aod::FDHfCharm> rowFemtoResultCharm;
7279
Produces<o2::aod::FDHfTrk> rowFemtoResultTrk;
7380
Produces<o2::aod::FDHfColl> rowFemtoResultColl;
@@ -131,7 +138,7 @@ struct HfTaskCharmHadronsFemtoDream {
131138
using FilteredCharmMcCands = soa::Filtered<soa::Join<aod::FDHfCand, aod::FDHfCandMC>>;
132139
using FilteredCharmMcCand = FilteredCharmMcCands::iterator;
133140

134-
using FilteredColisions = soa::Filtered<soa::Join<FDCollisions, FDColMasks>>;
141+
using FilteredColisions = soa::Filtered<soa::Join<FDCollisions, FDColMasks, aod::Collisions>>;
135142
using FilteredColision = FilteredColisions::iterator;
136143

137144
using FilteredMcColisions = soa::Filtered<soa::Join<aod::FDCollisions, FDColMasks, aod::FDMCCollLabels>>;
@@ -294,7 +301,7 @@ struct HfTaskCharmHadronsFemtoDream {
294301
void doSameEvent(PartitionType& sliceTrk1, CandType& sliceCharmHad, TableTracks const& parts, Collision const& col)
295302
{
296303
fillCollision(col);
297-
304+
processType = 1; // for same event
298305
for (auto const& [p1, p2] : combinations(CombinationsFullIndexPolicy(sliceTrk1, sliceCharmHad))) {
299306

300307
if (p1.trackId() == p2.prong0Id() || p1.trackId() == p2.prong1Id() || p1.trackId() == p2.prong2Id())
@@ -318,6 +325,12 @@ struct HfTaskCharmHadronsFemtoDream {
318325
} else {
319326
chargeTrack = NegativeCharge;
320327
}
328+
int pairSign = 0;
329+
if (chargeTrack == p2.charge()) {
330+
pairSign = LikeSignPair;
331+
} else {
332+
pairSign = UnLikeSignPair;
333+
}
321334

322335
float kstar = FemtoDreamMath::getkstar(p1, massOne, p2, massTwo);
323336
if (kstar > highkstarCut) {
@@ -343,47 +356,32 @@ struct HfTaskCharmHadronsFemtoDream {
343356
originType = p2.originMcRec();
344357
}
345358

346-
rowFemtoResultCharm(
347-
col.globalIndex(),
348-
p2.timeStamp(),
359+
rowFemtoResultPairs(
349360
invMass,
350361
p2.pt(),
351-
p2.eta(),
352-
p2.phi(),
353-
p2.charge(),
362+
p1.pt(),
354363
p2.bdtBkg(),
355364
p2.bdtPrompt(),
356365
p2.bdtFD(),
366+
kstar,
367+
FemtoDreamMath::getkT(p1, massOne, p2, massTwo),
368+
FemtoDreamMath::getmT(p1, massOne, p2, massTwo),
369+
col.multNtr(),
370+
col.multV0M(),
371+
p2.charge(),
372+
pairSign,
373+
processType,
357374
charmHadMc,
358375
originType);
359376

360-
rowFemtoResultTrk(
361-
col.globalIndex(),
362-
p2.timeStamp(),
363-
p1.pt(),
364-
p1.eta(),
365-
p1.phi(),
366-
chargeTrack,
367-
p1.tpcNClsFound(),
368-
p1.tpcNClsFindable(),
369-
p1.tpcNClsCrossedRows(),
370-
p1.tpcNSigmaPr(),
371-
p1.tofNSigmaPr());
372-
373-
rowFemtoResultColl(
374-
col.globalIndex(),
375-
p2.timeStamp(),
376-
col.posZ(),
377-
col.multNtr());
378-
379377
sameEventCont.setPair<isMc, true>(p1, p2, col.multNtr(), col.multV0M(), use4D, extendedPlots, smearingByOrigin);
380378
}
381379
}
382380

383381
template <bool isMc, typename CollisionType, typename PartType, typename PartitionType1, typename PartitionType2, typename BinningType>
384382
void doMixedEvent(CollisionType const& cols, PartType const& parts, PartitionType1& part1, PartitionType2& part2, BinningType policy)
385383
{
386-
384+
processType = 2; // for mixed event
387385
// Mixed events that contain the pair of interest
388386
Partition<CollisionType> partitionMaskedCol1 = (aod::femtodreamcollision::bitmaskTrackOne & bitMask) == bitMask;
389387
partitionMaskedCol1.bindTable(cols);
@@ -427,8 +425,44 @@ struct HfTaskCharmHadronsFemtoDream {
427425
if (p2.pt() < charmHadMinPt || p2.pt() > charmHadMaxPt) {
428426
continue;
429427
}
428+
float chargeTrack = 0.;
429+
if ((p1.cut() & 2) == 2) {
430+
chargeTrack = PositiveCharge;
431+
} else {
432+
chargeTrack = NegativeCharge;
433+
}
434+
435+
int pairSign = 0;
436+
if (chargeTrack == p2.charge()) {
437+
pairSign = LikeSignPair;
438+
} else {
439+
pairSign = UnLikeSignPair;
440+
}
441+
442+
int charmHadMc = 0;
443+
int originType = 0;
444+
if constexpr (isMc) {
445+
charmHadMc = p2.flagMc();
446+
originType = p2.originMcRec();
447+
}
448+
rowFemtoResultPairs(
449+
invMass,
450+
p2.pt(),
451+
p1.pt(),
452+
p2.bdtBkg(),
453+
p2.bdtPrompt(),
454+
p2.bdtFD(),
455+
kstar,
456+
FemtoDreamMath::getkT(p1, massOne, p2, massTwo),
457+
FemtoDreamMath::getmT(p1, massOne, p2, massTwo),
458+
collision1.multNtr(),
459+
collision1.multV0M(),
460+
p2.charge(),
461+
pairSign,
462+
processType,
463+
charmHadMc,
464+
originType);
430465

431-
// if constexpr (!isMc) mixedEventCont.setPair<isMc, true>(p1, p2, collision1.multNtr(), collision1.multV0M(), use4D, extendedPlots, smearingByOrigin);
432466
mixedEventCont.setPair<isMc, true>(p1, p2, collision1.multNtr(), collision1.multV0M(), use4D, extendedPlots, smearingByOrigin);
433467
}
434468
}
@@ -441,15 +475,59 @@ struct HfTaskCharmHadronsFemtoDream {
441475
eventHisto.fillQA(col);
442476
auto sliceTrk1 = partitionTrk1->sliceByCached(aod::femtodreamparticle::fdCollisionId, col.globalIndex(), cache);
443477
auto sliceCharmHad = partitionCharmHadron->sliceByCached(aod::femtodreamparticle::fdCollisionId, col.globalIndex(), cache);
478+
auto bc = col.template bc_as<aod::BCsWithTimestamps>();
479+
int64_t timeStamp = bc.timestamp();
480+
444481
/// Filling QA histograms of the all tracks and all charm hadrons before pairing
445482
for (auto const& part : sliceTrk1) {
446483
allTrackHisto.fillQA<false, true>(part, static_cast<aod::femtodreamparticle::MomentumType>(confTempFitVarMomentum.value), col.multNtr(), col.multV0M());
484+
485+
float chargeTrack = 0.;
486+
if ((part.cut() & 2) == 2) {
487+
chargeTrack = PositiveCharge;
488+
} else {
489+
chargeTrack = NegativeCharge;
490+
}
491+
492+
rowFemtoResultTrk(
493+
col.globalIndex(),
494+
timeStamp,
495+
part.pt(),
496+
part.eta(),
497+
part.phi(),
498+
part.trackId(),
499+
chargeTrack,
500+
part.tpcNClsFound(),
501+
part.tpcNClsFindable(),
502+
part.tpcNClsCrossedRows(),
503+
part.tpcNSigmaPr(),
504+
part.tofNSigmaPr());
447505
}
448506
for (auto const& part : sliceCharmHad) {
449507
float invMass = getCharmHadronMass(part);
450508
registryCharmHadronQa.fill(HIST("CharmHadronQA/hPtVsMass"), part.pt(), invMass);
509+
rowFemtoResultCharm(
510+
col.globalIndex(),
511+
timeStamp,
512+
invMass,
513+
part.pt(),
514+
part.eta(),
515+
part.phi(),
516+
part.prong0Id(),
517+
part.prong1Id(),
518+
part.prong2Id(),
519+
part.charge(),
520+
part.bdtBkg(),
521+
part.bdtPrompt(),
522+
part.bdtFD());
451523
}
452524

525+
rowFemtoResultColl(
526+
col.globalIndex(),
527+
timeStamp,
528+
col.posZ(),
529+
col.multNtr());
530+
453531
if ((col.bitmaskTrackOne() & bitMask) != bitMask || (col.bitmaskTrackTwo() & bitMask) != bitMask) {
454532
return;
455533
}

0 commit comments

Comments
 (0)