Skip to content

Commit bb5d50f

Browse files
zchochulZuzanna Chochulska
andauthored
PWGCF: FemtoUniverse -- Changing configurables for Phi meson reconstruction (#7430)
* Changing configurables for Phi meson reconstruction * fix clang * adding new line at the end * Fixing PID rejection * fix clang * fixing exclusion PID + isSelectedMinimal for kaons added * fixing filters * fix the logic --------- Co-authored-by: Zuzanna Chochulska <zuzanna.chochulska.dokt@pw.edu.pl>
1 parent e670581 commit bb5d50f

2 files changed

Lines changed: 29 additions & 65 deletions

File tree

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,12 @@ struct femtoUniverseProducerTask {
206206
} ConfFilterCuts;
207207

208208
Filter GlobalCutFilter = requireGlobalTrackWoDCAInFilter();
209-
210209
Filter CustomTrackFilter = (aod::track::pt > ConfFilterCuts.ConfPtLowFilterCut) &&
211210
(aod::track::pt < ConfFilterCuts.ConfPtHighFilterCut) &&
212211
(nabs(aod::track::eta) < ConfFilterCuts.ConfEtaFilterCut) &&
213-
(!ConfFilterCuts.ConfDxaXYCustom0Cut || (aod::track::dcaXY < ConfFilterCuts.ConfDcaXYFilterCut)) &&
212+
(!ConfFilterCuts.ConfDxaXYCustom0Cut || (aod::track::dcaXY < ConfFilterCuts.ConfDcaXYFilterCut)) && // true if configurable set to false or if configurable is true and it passes the selection
214213
(aod::track::dcaZ < ConfFilterCuts.ConfDcaZFilterCut) &&
215-
(!ConfFilterCuts.ConfDcaXYCustom1Cut || (nabs(aod::track::dcaXY) < ConfFilterCuts.ConfDcaXYCustom11FilterCut + ConfFilterCuts.ConfDcaXYCustom12FilterCut / aod::track::pt));
214+
(!ConfFilterCuts.ConfDcaXYCustom1Cut || (nabs(aod::track::dcaXY) < ConfFilterCuts.ConfDcaXYCustom11FilterCut + ConfFilterCuts.ConfDcaXYCustom12FilterCut / aod::track::pt)); // same logic here
216215

217216
// CASCADE
218217
FemtoUniverseCascadeSelection cascadeCuts;
@@ -263,10 +262,11 @@ struct femtoUniverseProducerTask {
263262
Configurable<float> ConfLooseTOFNSigmaValue{"ConfLooseTOFNSigmaValue", 10, "Value for the loose TOF N Sigma for Kaon PID."};
264263
Configurable<float> ConfInvMassLowLimitPhi{"ConfInvMassLowLimitPhi", 1.011, "Lower limit of the Phi invariant mass"}; // change that to do invariant mass cut
265264
Configurable<float> ConfInvMassUpLimitPhi{"ConfInvMassUpLimitPhi", 1.027, "Upper limit of the Phi invariant mass"};
266-
Configurable<int> ConfPDGCodePartOne{"ConfPDGCodePartOne", 321, "Particle 1 - PDG code"};
267-
Configurable<int> ConfPDGCodePartTwo{"ConfPDGCodePartTwo", 321, "Particle 2 - PDG code"};
268265
} ConfPhiSelection;
269266

267+
Configurable<int> ConfPDGCodePartOne{"ConfPDGCodePartOne", 321, "Particle 1 - PDG code"};
268+
Configurable<int> ConfPDGCodePartTwo{"ConfPDGCodePartTwo", 321, "Particle 2 - PDG code"};
269+
270270
// D0/D0bar mesons
271271
struct : o2::framework::ConfigurableGroup {
272272
Configurable<float> ConfD0D0barCandMaxY{"ConfD0D0barCandMaxY", -1., "max. cand. rapidity"};
@@ -641,7 +641,7 @@ struct femtoUniverseProducerTask {
641641
int particleOrigin = 99;
642642
auto motherparticlesMC = particleMC.template mothers_as<aod::McParticles>();
643643

644-
if (abs(pdgCode) == abs(ConfPhiSelection.ConfPDGCodePartOne.value) || abs(pdgCode) == abs(ConfPhiSelection.ConfPDGCodePartTwo.value)) {
644+
if (abs(pdgCode) == abs(ConfPDGCodePartOne.value) || abs(pdgCode) == abs(ConfPDGCodePartTwo.value)) {
645645
if (particleMC.isPhysicalPrimary()) {
646646
particleOrigin = aod::femtouniverseMCparticle::ParticleOriginMCTruth::kPrimary;
647647
} else if (!motherparticlesMC.empty()) {
@@ -1156,6 +1156,9 @@ struct femtoUniverseProducerTask {
11561156
std::vector<int> tmpIDtrack; // this vector keeps track of the matching of the primary track table row <-> aod::track table global index
11571157
// lorentz vectors and filling the tables
11581158
for (auto& [p1, p2] : combinations(soa::CombinationsFullIndexPolicy(tracks, tracks))) {
1159+
if (!trackCuts.isSelectedMinimal(p1) || !trackCuts.isSelectedMinimal(p1)) {
1160+
continue;
1161+
}
11591162
// implementing PID cuts for phi children
11601163
if (ConfPhiSelection.ConfLooseTPCNSigma) {
11611164
if (!(IsKaonNSigmaTPCLoose(p1.pt(), trackCuts.getNsigmaTPC(p1, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(p1, o2::track::PID::Kaon)))) {
@@ -1187,8 +1190,8 @@ struct femtoUniverseProducerTask {
11871190
TLorentzVector part1Vec;
11881191
TLorentzVector part2Vec;
11891192

1190-
float mMassOne = TDatabasePDG::Instance()->GetParticle(ConfPhiSelection.ConfPDGCodePartOne)->Mass(); // FIXME: Get from the PDG service of the common header
1191-
float mMassTwo = TDatabasePDG::Instance()->GetParticle(ConfPhiSelection.ConfPDGCodePartTwo)->Mass(); // FIXME: Get from the PDG service of the common header
1193+
float mMassOne = TDatabasePDG::Instance()->GetParticle(321)->Mass(); // FIXME: Get from the PDG service of the common header
1194+
float mMassTwo = TDatabasePDG::Instance()->GetParticle(-321)->Mass(); // FIXME: Get from the PDG service of the common header
11921195

11931196
part1Vec.SetPtEtaPhiM(p1.pt(), p1.eta(), p1.phi(), mMassOne);
11941197
part2Vec.SetPtEtaPhiM(p2.pt(), p2.eta(), p2.phi(), mMassTwo);
@@ -1218,7 +1221,7 @@ struct femtoUniverseProducerTask {
12181221
continue;
12191222
}
12201223

1221-
phiCuts.fillQA<aod::femtouniverseparticle::ParticleType::kPhi, aod::femtouniverseparticle::ParticleType::kPhiChild>(col, p1, p1, p2, ConfPhiSelection.ConfPDGCodePartOne, ConfPhiSelection.ConfPDGCodePartTwo); ///\todo fill QA also for daughters
1224+
phiCuts.fillQA<aod::femtouniverseparticle::ParticleType::kPhi, aod::femtouniverseparticle::ParticleType::kPhiChild>(col, p1, p1, p2, 321, -321); ///\todo fill QA also for daughters
12221225

12231226
int postrackID = p1.globalIndex();
12241227
int rowInPrimaryTrackTablePos = -1; // does it do anything?

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackPhi.cxx

Lines changed: 17 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ struct femtoUniversePairTaskTrackPhi {
182182

183183
bool IsProtonRejected(float mom, float nsigmaTPCPi, float nsigmaTOFPi, float nsigmaTPCK, float nsigmaTOFK)
184184
{
185+
if (mom < 0.5) {
186+
return true;
187+
}
185188
if (mom > 0.5) {
186189
if (TMath::Hypot(nsigmaTOFPi, nsigmaTPCPi) < ConfBothTracks.ConfNsigmaRejectPion) {
187190
return true;
@@ -236,6 +239,13 @@ struct femtoUniversePairTaskTrackPhi {
236239

237240
bool IsKaonRejected(float mom, float nsigmaTPCPr, float nsigmaTOFPr, float nsigmaTPCPi, float nsigmaTOFPi)
238241
{
242+
if (mom < 0.5) {
243+
if (TMath::Abs(nsigmaTPCPi) < ConfBothTracks.ConfNsigmaRejectPion) {
244+
return true;
245+
} else if (TMath::Abs(nsigmaTPCPr) < ConfBothTracks.ConfNsigmaRejectProton) {
246+
return true;
247+
}
248+
}
239249
if (mom > 0.5) {
240250
if (TMath::Hypot(nsigmaTOFPi, nsigmaTPCPi) < ConfBothTracks.ConfNsigmaRejectPion) {
241251
return true;
@@ -271,6 +281,13 @@ struct femtoUniversePairTaskTrackPhi {
271281

272282
bool IsPionRejected(float mom, float nsigmaTPCPr, float nsigmaTOFPr, float nsigmaTPCK, float nsigmaTOFK)
273283
{
284+
if (mom < 0.5) {
285+
if (TMath::Abs(nsigmaTPCK) < ConfBothTracks.ConfNsigmaRejectKaon) {
286+
return true;
287+
} else if (TMath::Abs(nsigmaTPCPr) < ConfBothTracks.ConfNsigmaRejectProton) {
288+
return true;
289+
}
290+
}
274291
if (mom > 0.5) {
275292
if (TMath::Hypot(nsigmaTOFK, nsigmaTPCK) < ConfBothTracks.ConfNsigmaRejectKaon) {
276293
return true;
@@ -430,20 +447,6 @@ struct femtoUniversePairTaskTrackPhi {
430447
float tpcNSigmaPr, tofNSigmaPr, tpcNSigmaPi, tofNSigmaPi, tpcNSigmaKa, tofNSigmaKa;
431448
if (!ConfTrack.ConfIsSame) {
432449
for (auto& track : groupPartsTrack) {
433-
// if (track.p() > ConfBothTracks.ConfCutTable->get("Track", "MaxP") || track.pt() > ConfBothTracks.ConfCutTable->get("Track", "MaxPt")) {
434-
// continue;
435-
// }
436-
// if (!isFullPIDSelected(track.pidcut(),
437-
// track.p(),
438-
// ConfBothTracks.ConfCutTable->get("Track", "PIDthr"),
439-
// vPIDTrack,
440-
// ConfBothTracks.ConfNspecies,
441-
// kNsigma,
442-
// ConfBothTracks.ConfCutTable->get("Track", "nSigmaTPC"),
443-
// ConfBothTracks.ConfCutTable->get("Track", "nSigmaTPCTOF"))) {
444-
// continue;
445-
// }
446-
447450
tpcNSigmaPi = trackCuts.getNsigmaTPC(track, o2::track::PID::Pion);
448451
tofNSigmaPi = trackCuts.getNsigmaTOF(track, o2::track::PID::Pion);
449452
tpcNSigmaKa = trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon);
@@ -475,27 +478,6 @@ struct femtoUniversePairTaskTrackPhi {
475478
}
476479
/// Now build the combinations
477480
for (auto& [track, phicandidate] : combinations(CombinationsFullIndexPolicy(groupPartsTrack, groupPartsPhi))) {
478-
// if (track.p() > ConfBothTracks.ConfCutTable->get("PhiCandidate", "MaxP") || track.pt() > ConfBothTracks.ConfCutTable->get("PhiCandidate", "MaxPt") || phicandidate.p() > ConfBothTracks.ConfCutTable->get("Track", "MaxP") || phicandidate.pt() > ConfBothTracks.ConfCutTable->get("Track", "MaxPt")) {
479-
// continue;
480-
// }
481-
// if (!isFullPIDSelected(track.pidcut(),
482-
// track.p(),
483-
// ConfBothTracks.ConfCutTable->get("PhiCandidate", "PIDthr"),
484-
// vPIDPhiCandidate,
485-
// ConfBothTracks.ConfNspecies,
486-
// kNsigma,
487-
// ConfBothTracks.ConfCutTable->get("PhiCandidate", "nSigmaTPC"),
488-
// ConfBothTracks.ConfCutTable->get("PhiCandidate", "nSigmaTPCTOF")) ||
489-
// !isFullPIDSelected(phicandidate.pidcut(),
490-
// phicandidate.p(),
491-
// ConfBothTracks.ConfCutTable->get("Track", "PIDthr"),
492-
// vPIDTrack,
493-
// ConfBothTracks.ConfNspecies,
494-
// kNsigma,
495-
// ConfBothTracks.ConfCutTable->get("Track", "nSigmaTPC"),
496-
// ConfBothTracks.ConfCutTable->get("Track", "nSigmaTPCTOF"))) {
497-
// continue;
498-
// }
499481
if (ConfTrack.ConfIsTrackIdentified) {
500482
if (!IsParticleNSigmaAccepted(track.p(), trackCuts.getNsigmaTPC(track, o2::track::PID::Proton), trackCuts.getNsigmaTOF(track, o2::track::PID::Proton), trackCuts.getNsigmaTPC(track, o2::track::PID::Pion), trackCuts.getNsigmaTOF(track, o2::track::PID::Pion), trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(track, o2::track::PID::Kaon))) {
501483
continue;
@@ -573,27 +555,6 @@ struct femtoUniversePairTaskTrackPhi {
573555
{
574556

575557
for (auto& [track, phicandidate] : combinations(CombinationsFullIndexPolicy(groupPartsTrack, groupPartsPhi))) {
576-
// if (track.p() > ConfBothTracks.ConfCutTable->get("PhiCandidate", "MaxP") || track.pt() > ConfBothTracks.ConfCutTable->get("PhiCandidate", "MaxPt") || phicandidate.p() > ConfBothTracks.ConfCutTable->get("Track", "MaxP") || phicandidate.pt() > ConfBothTracks.ConfCutTable->get("Track", "MaxPt")) {
577-
// continue;
578-
// }
579-
// if (!isFullPIDSelected(track.pidcut(),
580-
// track.p(),
581-
// ConfBothTracks.ConfCutTable->get("PhiCandidate", "PIDthr"),
582-
// vPIDPhiCandidate,
583-
// ConfBothTracks.ConfNspecies,
584-
// kNsigma,
585-
// ConfBothTracks.ConfCutTable->get("PhiCandidate", "nSigmaTPC"),
586-
// ConfBothTracks.ConfCutTable->get("PhiCandidate", "nSigmaTPCTOF")) ||
587-
// !isFullPIDSelected(phicandidate.pidcut(),
588-
// phicandidate.p(),
589-
// ConfBothTracks.ConfCutTable->get("Track", "PIDthr"),
590-
// vPIDTrack,
591-
// ConfBothTracks.ConfNspecies,
592-
// kNsigma,
593-
// ConfBothTracks.ConfCutTable->get("Track", "nSigmaTPC"),
594-
// ConfBothTracks.ConfCutTable->get("Track", "nSigmaTPCTOF"))) {
595-
// continue;
596-
// }
597558
if (ConfTrack.ConfIsTrackIdentified) {
598559
if (!IsParticleNSigmaAccepted(track.p(), trackCuts.getNsigmaTPC(track, o2::track::PID::Proton), trackCuts.getNsigmaTOF(track, o2::track::PID::Proton), trackCuts.getNsigmaTPC(track, o2::track::PID::Pion), trackCuts.getNsigmaTOF(track, o2::track::PID::Pion), trackCuts.getNsigmaTPC(track, o2::track::PID::Kaon), trackCuts.getNsigmaTOF(track, o2::track::PID::Kaon))) {
599560
continue;

0 commit comments

Comments
 (0)