Skip to content

Commit f3c4a5e

Browse files
author
Shirajum Monira
committed
added MC truth process function for cascade-cascade pairs
1 parent fc08776 commit f3c4a5e

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackCascadeExtended.cxx

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ struct femtoUniversePairTaskTrackCascadeExtended {
790790
}
791791
PROCESS_SWITCH(femtoUniversePairTaskTrackCascadeExtended, processMixedEventCascBitmask, "Enable processing mixed event for cascade - cascade using bitmask for PID", false);
792792

793-
// MC truth
793+
// MC truth for track - cascade
794794
void processSameEventMCgen(const FilteredFDCollision& col, [[maybe_unused]] const aod::FDParticles& parts)
795795
{
796796
const int multCol = confUseCent ? col.multV0M() : col.multNtr();
@@ -835,6 +835,44 @@ struct femtoUniversePairTaskTrackCascadeExtended {
835835
}
836836
PROCESS_SWITCH(femtoUniversePairTaskTrackCascadeExtended, processSameEventMCgen, "Enable processing same event MC truth for track - cascade", false);
837837

838+
// MC truth for cascade - cascade
839+
void processSameEventCascMCgen(const FilteredFDCollision& col, [[maybe_unused]] const aod::FDParticles& parts)
840+
{
841+
const int multCol = confUseCent ? col.multV0M() : col.multNtr();
842+
843+
auto groupPartsTwo = partsTwoMCgenBasic->sliceByCached(aod::femtouniverseparticle::fdCollisionId, col.globalIndex(), cache);
844+
845+
eventHisto.fillQA(col);
846+
847+
for (const auto& part : groupPartsTwo) {
848+
int pdgCode = static_cast<int>(part.pidCut());
849+
if ((confCascType1 == 0 && pdgCode != kOmegaMinus) || (confCascType1 == 2 && pdgCode != kOmegaPlusBar) || (confCascType1 == 1 && pdgCode != kXiMinus) || (confCascType1 == 3 && pdgCode != kXiPlusBar))
850+
continue;
851+
852+
cascQAHistos.fillQA<false, false>(part);
853+
854+
auto pairProcessFunc = [&](auto& p1, auto& p2) -> void {
855+
int pdgCodeCasc1 = static_cast<int>(p1.pidCut());
856+
if ((confCascType1 == 0 && pdgCodeCasc1 != kOmegaMinus) || (confCascType1 == 2 && pdgCodeCasc1 != kOmegaPlusBar) || (confCascType1 == 1 && pdgCodeCasc1 != kXiMinus) || (confCascType1 == 3 && pdgCodeCasc1 != kXiPlusBar))
857+
return;
858+
int pdgCodeCasc2 = static_cast<int>(p2.pidCut());
859+
if ((confCascType2 == 0 && pdgCodeCasc2 != kOmegaMinus) || (confCascType2 == 2 && pdgCodeCasc2 != kOmegaPlusBar) || (confCascType2 == 1 && pdgCodeCasc2 != kXiMinus) || (confCascType2 == 3 && pdgCodeCasc2 != kXiPlusBar))
860+
return;
861+
sameEventCont.setPair<false>(p1, p2, multCol, confUse3D, 1.0f);
862+
};
863+
864+
if (confCascType1 == confCascType2) {
865+
for (const auto& [p1, p2] : combinations(CombinationsStrictlyUpperIndexPolicy(groupPartsTwo, groupPartsTwo)))
866+
pairProcessFunc(p1, p2);
867+
} else {
868+
for (const auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsTwo, groupPartsTwo)))
869+
pairProcessFunc(p1, p2);
870+
}
871+
}
872+
}
873+
PROCESS_SWITCH(femtoUniversePairTaskTrackCascadeExtended, processSameEventCascMCgen, "Enable processing same event MC truth for cascade - cascade", false);
874+
875+
// MC truth for track - cascade
838876
void processMixedEventMCgen(const FilteredFDCollisions& cols, [[maybe_unused]] const aod::FDParticles& parts)
839877
{
840878
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{confVtxBins, confMultBins}, true};
@@ -863,6 +901,36 @@ struct femtoUniversePairTaskTrackCascadeExtended {
863901
}
864902
PROCESS_SWITCH(femtoUniversePairTaskTrackCascadeExtended, processMixedEventMCgen, "Enable processing mixed event MC truth for track - cascade", false);
865903

904+
// MC truth for cascade - cascade
905+
void processMixedEventCascMCgen(const FilteredFDCollisions& cols, [[maybe_unused]] const aod::FDParticles& parts)
906+
{
907+
ColumnBinningPolicy<aod::collision::PosZ, aod::femtouniversecollision::MultNtr> colBinning{{confVtxBins, confMultBins}, true};
908+
909+
for (const auto& [collision1, collision2] : soa::selfCombinations(colBinning, 5, -1, cols, cols)) {
910+
const int multCol = confUseCent ? collision1.multV0M() : collision1.multNtr();
911+
912+
auto groupPartsOne = partsTwoMCgenBasic->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision1.globalIndex(), cache);
913+
auto groupPartsTwo = partsTwoMCgenBasic->sliceByCached(aod::femtouniverseparticle::fdCollisionId, collision2.globalIndex(), cache);
914+
915+
const auto& magFieldTesla1 = collision1.magField();
916+
const auto& magFieldTesla2 = collision2.magField();
917+
918+
if (magFieldTesla1 != magFieldTesla2) {
919+
continue;
920+
}
921+
for (const auto& [p1, p2] : combinations(CombinationsFullIndexPolicy(groupPartsOne, groupPartsTwo))) {
922+
int pdgCodeCasc1 = static_cast<int>(p1.pidCut());
923+
if ((confCascType1 == 0 && pdgCodeCasc1 != kOmegaMinus) || (confCascType1 == 2 && pdgCodeCasc1 != kOmegaPlusBar) || (confCascType1 == 1 && pdgCodeCasc1 != kXiMinus) || (confCascType1 == 3 && pdgCodeCasc1 != kXiPlusBar))
924+
continue;
925+
int pdgCodeCasc2 = static_cast<int>(p2.pidCut());
926+
if ((confCascType2 == 0 && pdgCodeCasc2 != kOmegaMinus) || (confCascType2 == 2 && pdgCodeCasc2 != kOmegaPlusBar) || (confCascType2 == 1 && pdgCodeCasc2 != kXiMinus) || (confCascType2 == 3 && pdgCodeCasc2 != kXiPlusBar))
927+
continue;
928+
mixedEventCont.setPair<false>(p1, p2, multCol, confUse3D, 1.0f);
929+
}
930+
}
931+
}
932+
PROCESS_SWITCH(femtoUniversePairTaskTrackCascadeExtended, processMixedEventCascMCgen, "Enable processing mixed event MC truth for cascade - cascade", false);
933+
866934
/// This function fills MC truth particles from derived MC table
867935
void processMCgen(aod::FDParticles const& parts)
868936
{

0 commit comments

Comments
 (0)