From e7809d1fbd9b72a16f3a01296c4decbe9a5aac17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Tiek=C3=B6tter?= Date: Tue, 20 Oct 2026 18:50:36 +0200 Subject: [PATCH 1/3] Added additional D0 topology cuts and variables --- PWGDQ/Core/CutsLibrary.cxx | 62 ++++++++++++++++++++++++++++++++++++++ PWGDQ/Core/VarManager.cxx | 6 ++++ PWGDQ/Core/VarManager.h | 20 ++++++++++++ 3 files changed, 88 insertions(+) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index 50fdb3b019b..d9e4831f361 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -3702,6 +3702,11 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (nameStr == "pairD0Topology") { + cut->AddCut(GetAnalysisCut("pairD0Topology")); + return cut; + } + if (nameStr == "pairD0HighPt1") { cut->AddCut(GetAnalysisCut("pairLxyzProjected3sigma")); cut->AddCut(GetAnalysisCut("pairPtLow5")); @@ -3923,6 +3928,24 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (nameStr == "alice3StandardTrackD0") { + cut->AddCut(GetAnalysisCut("alice3StandardKineD0")); + cut->AddCut(GetAnalysisCut("alice3TrackQuality")); + return cut; + } + + if (nameStr == "alice3StandardTrackTOFAcceptanceD0") { + cut->AddCut(GetAnalysisCut("alice3KineTOFAcceptanceD0")); + cut->AddCut(GetAnalysisCut("alice3TrackQuality")); + return cut; + } + + if (nameStr == "alice3StandardTrackRICHAcceptanceD0") { + cut->AddCut(GetAnalysisCut("alice3KineRICHAcceptanceD0")); + cut->AddCut(GetAnalysisCut("alice3TrackQuality")); + return cut; + } + if (nameStr == "alice3TightDCATrack") { cut->AddCut(GetAnalysisCut("alice3StandardKine")); cut->AddCut(GetAnalysisCut("alice3TrackQualityTightDCA")); @@ -4108,6 +4131,18 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (nameStr == "alice3TOFPIDPi") { + cut->AddCut(GetAnalysisCut("alice3iTOFPIDPi")); + cut->AddCut(GetAnalysisCut("alice3oTOFPIDPi")); + return cut; + } + + if (nameStr == "alice3TOFPIDKa") { + cut->AddCut(GetAnalysisCut("alice3iTOFPIDKa")); + cut->AddCut(GetAnalysisCut("alice3oTOFPIDKa")); + return cut; + } + delete cut; LOGF(fatal, Form("Did not find cut %s. Returning nullptr", cutName)); return nullptr; @@ -7083,6 +7118,15 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } + if (nameStr == "pairD0Topology") { + cut->AddCut(VarManager::kCosPointingAngle, 0.9, 1.0); + cut->AddCut(VarManager::kD0DcaDaughters, 0.0, 0.03); + cut->AddCut(VarManager::kD0ImpParProduct, -1000.0, 0.0); + cut->AddCut(VarManager::kDCAxy1, -0.1, 0.1); + cut->AddCut(VarManager::kDCAxy2, -0.1, 0.1); + return cut; + } + if (nameStr == "pairJpsi") { cut->AddCut(VarManager::kMass, 2.8, 3.3); return cut; @@ -7339,6 +7383,24 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } + if (nameStr == "alice3StandardKineD0") { + cut->AddCut(VarManager::kPt, 0.7, 1000.0); + cut->AddCut(VarManager::kEta, -2.5, 2.5); // Total tracker acceptance in v3b geomety + return cut; + } + + if (nameStr == "alice3KineTOFAcceptanceD0") { + cut->AddCut(VarManager::kPt, 0.7, 1000.0); + cut->AddCut(VarManager::kEta, -2.0, 2.0); // TOF acceptance in v3b geomety + return cut; + } + + if (nameStr == "alice3KineRICHAcceptanceD0") { + cut->AddCut(VarManager::kPt, 0.7, 1000.0); + cut->AddCut(VarManager::kEta, -0.8, 0.8); // TOF acceptance in v3b geomety + return cut; + } + if (nameStr == "alice3LambdaCKine") { cut->AddCut(VarManager::kPt, 0.2, 1000.0); cut->AddCut(VarManager::kEta, -2.0, 2.0); diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index d1b193ec12c..b0d5863bda9 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -1347,6 +1347,10 @@ void VarManager::SetDefaultVarNames() fgVariableUnits[kCosPointingAngle] = ""; fgVariableNames[kMCCosPointingAngle] = "MC cos(#theta_{pointing})"; fgVariableUnits[kMCCosPointingAngle] = ""; + fgVariableNames[kD0DcaDaughters] = "DCA of D0 daughters"; + fgVariableUnits[kD0DcaDaughters] = ""; + fgVariableNames[kD0ImpParProduct] = "D0 impact parameter product"; + fgVariableUnits[kD0ImpParProduct] = ""; fgVariableNames[kVertexingPz] = "Pz Pair"; fgVariableUnits[kVertexingPz] = "GeV/c"; fgVariableNames[kVertexingSV] = "Secondary Vertexing z"; @@ -2633,6 +2637,8 @@ void VarManager::SetDefaultVarNames() fgVarNamesMap["kSignQuadDCAsigXY"] = kSignQuadDCAsigXY; fgVarNamesMap["kCosPointingAngle"] = kCosPointingAngle; fgVarNamesMap["kMCCosPointingAngle"] = kMCCosPointingAngle; + fgVarNamesMap["kD0ImpParProduct"] = kD0ImpParProduct; + fgVarNamesMap["kD0DcaDaughters"] = kD0DcaDaughters; fgVarNamesMap["kImpParXYJpsi"] = kImpParXYJpsi; fgVarNamesMap["kImpParXYK"] = kImpParXYK; fgVarNamesMap["kDCATrackProd"] = kDCATrackProd; diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index ed09b758655..d119ce1621c 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -874,6 +874,8 @@ class VarManager : public TObject kQuadDCAsigXYZ, kSignQuadDCAsigXY, kCosPointingAngle, + kD0ImpParProduct, + kD0DcaDaughters, kImpParXYJpsi, kImpParXYK, kDCATrackProd, @@ -7688,6 +7690,14 @@ void VarManager::FillPairAlice3(T1 const& t1, T2 const& t2, float* values) if (fgUsedVars[kPairPhiv]) { values[kPairPhiv] = calculatePhiV(t1, t2); } + + if constexpr (pairType == kDecayToKPi) { + if constexpr ((fillMap & TrackDCA) > 0 || (fillMap & ReducedTrackBarrel) > 0) { + values[kDCAxy1] = t1.dcaXY(); + values[kDCAxy2] = t2.dcaXY(); + values[kD0ImpParProduct] = t1.dcaXY() * t2.dcaXY(); + } + } } template @@ -7792,7 +7802,17 @@ void VarManager::FillPairVertexingAlice3(C const& collision, T const& t1, T cons v1 = {trackParVar0.getPt(), trackParVar0.getEta(), trackParVar0.getPhi(), m1}; v2 = {trackParVar1.getPt(), trackParVar1.getEta(), trackParVar1.getPhi(), m2}; v12 = v1 + v2; + + const auto pos1 = trackParVar0.getXYZGlo(); + const auto pos2 = trackParVar1.getXYZGlo(); + + const double dx = pos1.X() - pos2.X(); + const double dy = pos1.Y() - pos2.Y(); + const double dz = pos1.Z() - pos2.Z(); + + values[kD0DcaDaughters] = std::sqrt(dx * dx + dy * dy + dz * dz); } + double phi = std::atan2(secondaryVertex[1] - collision.posY(), secondaryVertex[0] - collision.posX()); double theta = std::atan2(secondaryVertex[2] - collision.posZ(), std::sqrt((secondaryVertex[0] - collision.posX()) * (secondaryVertex[0] - collision.posX()) + From 2522c1c741cb03a3a2817917e0d2016a52599686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Tiek=C3=B6tter?= Date: Mon, 26 Oct 2026 11:48:49 +0100 Subject: [PATCH 2/3] Updated ALICE 3 concerned cuts for D0 --- PWGDQ/Core/CutsLibrary.cxx | 123 ++++++++++++++++++++++++++++--- PWGDQ/Core/HistogramsLibrary.cxx | 7 ++ PWGDQ/Core/MCSignalLibrary.cxx | 10 +++ 3 files changed, 129 insertions(+), 11 deletions(-) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index d9e4831f361..56dc8b0adbb 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -3707,6 +3707,11 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (nameStr == "pairD0TopologyTight") { + cut->AddCut(GetAnalysisCut("pairD0TopologyTight")); + return cut; + } + if (nameStr == "pairD0HighPt1") { cut->AddCut(GetAnalysisCut("pairLxyzProjected3sigma")); cut->AddCut(GetAnalysisCut("pairPtLow5")); @@ -3934,6 +3939,18 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (nameStr == "alice3TOFEtaD0") { + cut->AddCut(GetAnalysisCut("alice3TOFEta")); + cut->AddCut(GetAnalysisCut("alice3TrackQuality")); + return cut; + } + + if (nameStr == "alice3RICHEtaD0") { + cut->AddCut(GetAnalysisCut("alice3RICHEta")); + cut->AddCut(GetAnalysisCut("alice3TrackQuality")); + return cut; + } + if (nameStr == "alice3StandardTrackTOFAcceptanceD0") { cut->AddCut(GetAnalysisCut("alice3KineTOFAcceptanceD0")); cut->AddCut(GetAnalysisCut("alice3TrackQuality")); @@ -4028,6 +4045,32 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (nameStr == "alice3EitherTOFPIDPi") { + auto* pidCut = new AnalysisCompositeCut( + "alice3EitherTOFPIDPi", + "iTOF OR oTOF pion PID", + kFALSE); + + pidCut->AddCut(GetAnalysisCut("alice3iTOFPIDPi")); + pidCut->AddCut(GetAnalysisCut("alice3oTOFPIDPi")); + + delete cut; + return pidCut; + } + + if (nameStr == "alice3EitherTOFPIDKa") { + auto* pidCut = new AnalysisCompositeCut( + "alice3EitherTOFPIDKa", + "iTOF OR oTOF kaon PID", + kFALSE); + + pidCut->AddCut(GetAnalysisCut("alice3iTOFPIDKa")); + pidCut->AddCut(GetAnalysisCut("alice3oTOFPIDKa")); + + delete cut; + return pidCut; + } + if (nameStr == "alice3RICHPIDEl") { cut->AddCut(GetAnalysisCut("alice3RICHPIDEl")); return cut; @@ -4137,9 +4180,13 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } - if (nameStr == "alice3TOFPIDKa") { - cut->AddCut(GetAnalysisCut("alice3iTOFPIDKa")); - cut->AddCut(GetAnalysisCut("alice3oTOFPIDKa")); + if (nameStr == "alice3TOFPIDKaRej") { + cut->AddCut(GetAnalysisCut("alice3D0KaonTOFPID")); + return cut; + } + + if (nameStr == "alice3TOFPIDPiRej") { + cut->AddCut(GetAnalysisCut("alice3D0PionTOFPID")); return cut; } @@ -7127,6 +7174,26 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } + if (nameStr == "pairD0TopologyTight") { + cut->AddCut(VarManager::kCosPointingAngle, 0.8, 1.0, false, VarManager::kPt, 0.0, 1.0); + cut->AddCut(VarManager::kCosPointingAngle, 0.9, 1.0, false, VarManager::kPt, 1.0, 4.0); + cut->AddCut(VarManager::kCosPointingAngle, 0.85, 1.0, false, VarManager::kPt, 4.0, 50.0); + cut->AddCut(VarManager::kD0DcaDaughters, 0.035, 1000.0, false, VarManager::kPt, 0.0, 1.0); + cut->AddCut(VarManager::kD0DcaDaughters, 0.0, 0.03, false, VarManager::kPt, 1.0, 50.0); + cut->AddCut(VarManager::kD0ImpParProduct, -1000.0, 0.0); + cut->AddCut(VarManager::kDCAxy1, -0.1, 0.1); + cut->AddCut(VarManager::kDCAxy2, -0.1, 0.1); + cut->AddCut(VarManager::kPt1, 0.5, 100.0, false, VarManager::kPt, 0.0, 1.0); + cut->AddCut(VarManager::kPt1, 0.3, 100.0, false, VarManager::kPt, 1.0, 1.5); + cut->AddCut(VarManager::kPt1, 0.4, 100.0, false, VarManager::kPt, 1.5, 2.0); + cut->AddCut(VarManager::kPt1, 0.7, 100.0, false, VarManager::kPt, 2.0, 50.0); + cut->AddCut(VarManager::kPt2, 0.5, 100.0, false, VarManager::kPt, 0.0, 1.0); + cut->AddCut(VarManager::kPt2, 0.3, 100.0, false, VarManager::kPt, 1.0, 1.5); + cut->AddCut(VarManager::kPt2, 0.4, 100.0, false, VarManager::kPt, 1.5, 2.0); + cut->AddCut(VarManager::kPt2, 0.7, 100.0, false, VarManager::kPt, 2.0, 50.0); + return cut; + } + if (nameStr == "pairJpsi") { cut->AddCut(VarManager::kMass, 2.8, 3.3); return cut; @@ -7389,6 +7456,16 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } + if (nameStr == "alice3TOFEta") { + cut->AddCut(VarManager::kEta, -2.0, 2.0); // Total tracker acceptance in v3b geomety + return cut; + } + + if (nameStr == "alice3RICHEta") { + cut->AddCut(VarManager::kEta, -0.8, 0.8); // Total tracker acceptance in v3b geomety + return cut; + } + if (nameStr == "alice3KineTOFAcceptanceD0") { cut->AddCut(VarManager::kPt, 0.7, 1000.0); cut->AddCut(VarManager::kEta, -2.0, 2.0); // TOF acceptance in v3b geomety @@ -7460,42 +7537,66 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) } if (nameStr == "alice3iTOFPIDEl") { - cut->AddCut(VarManager::kInnerTOFnSigmaEl, -3.0, 3.0); + cut->AddCut(VarManager::kInnerTOFnSigmaEl, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); return cut; } if (nameStr == "alice3iTOFPIDPi") { - cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0); + cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); return cut; } if (nameStr == "alice3iTOFPIDKa") { - cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0); + cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); return cut; } if (nameStr == "alice3iTOFPIDPr") { - cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0); + cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); return cut; } if (nameStr == "alice3oTOFPIDEl") { - cut->AddCut(VarManager::kOuterTOFnSigmaEl, -3.0, 3.0); + cut->AddCut(VarManager::kOuterTOFnSigmaEl, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); return cut; } if (nameStr == "alice3oTOFPIDPi") { - cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0); + cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); return cut; } if (nameStr == "alice3oTOFPIDKa") { - cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0); + cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); return cut; } if (nameStr == "alice3oTOFPIDPr") { - cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0); + cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); + return cut; + } + + if (nameStr == "alice3D0KaonTOFPID") { + cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); + + cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + + cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); + cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); + return cut; + } + + if (nameStr == "alice3D0PionTOFPID") { + cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); + + cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + + cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); + cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); return cut; } diff --git a/PWGDQ/Core/HistogramsLibrary.cxx b/PWGDQ/Core/HistogramsLibrary.cxx index 662a89f514e..b6f472965c9 100644 --- a/PWGDQ/Core/HistogramsLibrary.cxx +++ b/PWGDQ/Core/HistogramsLibrary.cxx @@ -1403,6 +1403,13 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h } hm->AddHistogram(histClass, "Mass_PtLong", "", false, 500, alice3MassBins.data(), VarManager::kMass, 20, pTBins.data(), VarManager::kPt); } + if (subGroupStr.Contains("alice3pair")) { + hm->AddHistogram(histClass, "CosinePointingAngle", "cos(#theta_{p})", false, 2000.0, -1.0, 1.0, VarManager::kCosPointingAngle); + hm->AddHistogram(histClass, "DCADaughters", "DCA_{dau}", false, 2000.0, -10.0, 10.0, VarManager::kD0DcaDaughters); + hm->AddHistogram(histClass, "ImpParProduct", "d_{k} #times d_{#pi}", false, 2000.0, -100.0, 100.0, VarManager::kD0ImpParProduct); + hm->AddHistogram(histClass, "DCAxy1", "DCA_{xy, 1}", false, 2000.0, -10.0, 10.0, VarManager::kDCAxy1); + hm->AddHistogram(histClass, "DCAxy2", "DCA_{xy, 2}", false, 2000.0, -10.0, 10.0, VarManager::kDCAxy2); + } if (subGroupStr.Contains("alice3pbpb")) { hm->AddHistogram(histClass, "Mass_Cent", "", false, 125, 0.0, 5.0, VarManager::kMass, 20, 0.0, 100.0, VarManager::kCent); hm->AddHistogram(histClass, "Pt_CentFT0C", "", false, 100, 0.0, 10.0, VarManager::kPt, 20, 0.0, 100.0, VarManager::kCent); diff --git a/PWGDQ/Core/MCSignalLibrary.cxx b/PWGDQ/Core/MCSignalLibrary.cxx index af5677d07d7..e6eae07011b 100644 --- a/PWGDQ/Core/MCSignalLibrary.cxx +++ b/PWGDQ/Core/MCSignalLibrary.cxx @@ -1754,6 +1754,16 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) signal = new MCSignal(name, "Kaons from D+/- decays", {prong}, {-1}); return signal; } + if (nameStr == "KFromD0") { + MCProng prong(2, {321, Pdg::kD0}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + signal = new MCSignal(name, "Kaons from D0 decays", {prong}, {-1}); + return signal; + } + if (nameStr == "PiFromD0") { + MCProng prong(2, {211, Pdg::kD0}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + signal = new MCSignal(name, "Pions from D0 decays", {prong}, {-1}); + return signal; + } if (nameStr == "LambdaC") { MCProng prong(1, {Pdg::kLambdaCPlus}, {true}, {false}, {0}, {0}, {false}); signal = new MCSignal(name, "Lambda_c", {prong}, {-1}); From fe6881e2da7e3471e935561929c4e4caa32c1907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Tiek=C3=B6tter?= Date: Mon, 26 Oct 2026 13:43:01 +0100 Subject: [PATCH 3/3] Added RICH rejection --- PWGDQ/Core/CutsLibrary.cxx | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index 56dc8b0adbb..3527b285207 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -4190,6 +4190,16 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (nameStr == "alice3RICHTOFPIDPiRej") { + cut->AddCut(GetAnalysisCut("alice3D0PionRICHTOFPID")); + return cut; + } + + if (nameStr == "alice3RICHTOFPIDKaRej") { + cut->AddCut(GetAnalysisCut("alice3D0KaonRICHTOFPID")); + return cut; + } + delete cut; LOGF(fatal, Form("Did not find cut %s. Returning nullptr", cutName)); return nullptr; @@ -7457,6 +7467,7 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) } if (nameStr == "alice3TOFEta") { + cut->AddCut(VarManager::kPt, 0.7, 1000.0); cut->AddCut(VarManager::kEta, -2.0, 2.0); // Total tracker acceptance in v3b geomety return cut; } @@ -7600,6 +7611,38 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } + if (nameStr == "alice3D0KaonRICHTOFPID") { + cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); + cut->AddCut(VarManager::kRICHnSigmaKa, -3.0, 3.0, false, VarManager::kP, 2.0, 1000.0, false, VarManager::kHasRICHSigKa, 0.5, 1.5); + + cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + + cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); + cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); + + cut->AddCut(VarManager::kRICHnSigmaPi, -3.0, 3.0, true, VarManager::kP, 0.57, 1000.0, false, VarManager::kRICHnSigmaPi, 0.5, 1.5); + cut->AddCut(VarManager::kRICHnSigmaPr, -3.0, 3.0, true, VarManager::kP, 3.8, 1000.0, false, VarManager::kRICHnSigmaPr, 0.5, 1.5); + return cut; + } + + if (nameStr == "alice3D0PionRICHTOFPID") { + cut->AddCut(VarManager::kInnerTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kOuterTOFnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.0, 2.5); + cut->AddCut(VarManager::kRICHnSigmaPi, -3.0, 3.0, false, VarManager::kP, 0.57, 1000.0, false, VarManager::kHasRICHSigKa, 0.5, 1.5); + + cut->AddCut(VarManager::kInnerTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + cut->AddCut(VarManager::kInnerTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 1.5); + + cut->AddCut(VarManager::kOuterTOFnSigmaKa, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); + cut->AddCut(VarManager::kOuterTOFnSigmaPr, -3.0, 3.0, true, VarManager::kP, 0.0, 2.5); + + cut->AddCut(VarManager::kRICHnSigmaKa, -3.0, 3.0, true, VarManager::kP, 2.0, 1000.0, false, VarManager::kRICHnSigmaPi, 0.5, 1.5); + cut->AddCut(VarManager::kRICHnSigmaPr, -3.0, 3.0, true, VarManager::kP, 3.8, 1000.0, false, VarManager::kRICHnSigmaPr, 0.5, 1.5); + return cut; + } + if (nameStr == "alice3CharmoniumPID") { cut->AddCut(VarManager::kOuterTOFnSigmaEl, -2.0, 3.0, false, VarManager::kP, 0.0, 1.2); cut->AddCut(VarManager::kRICHnSigmaEl, -2.0, 3.0, false, VarManager::kHasRICHSigEl, 0.5, 1.5, false, VarManager::kP, 0.7, 1000.0);