From 799e6d99964b369e7ceea86fe576b2eabc8e4df7 Mon Sep 17 00:00:00 2001 From: feisenhu Date: Wed, 15 Feb 2023 18:14:10 +0100 Subject: [PATCH 1/3] PWGEM: Add new cuts for 1/pt and eta study --- PWGDQ/Core/CutsLibrary.cxx | 98 ++++++++++++++++++++++++++++++++ PWGDQ/Core/HistogramsLibrary.cxx | 1 + PWGDQ/Core/VarManager.cxx | 2 + PWGDQ/Core/VarManager.h | 4 ++ 4 files changed, 105 insertions(+) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index 47b8314e8a3..62ca74a994b 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -681,6 +681,80 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } + if (!nameStr.compare("lmee_posNSigmaRun3_tight")) { + cut->AddCut(GetAnalysisCut("etaSel")); + cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); + cut->AddCut(GetAnalysisCut("standardPrimaryTrack")); + cut->AddCut(GetAnalysisCut("posTrack")); + + AnalysisCompositeCut* cut_tpc_nSigma = new AnalysisCompositeCut("pid_TPCnSigma", "pid_TPCnSigma", kTRUE); + cut_tpc_nSigma->AddCut(GetAnalysisCut("electronPID_TPCnsigma_tight")); + + AnalysisCompositeCut* cut_tof_nSigma = new AnalysisCompositeCut("pid_TOFnSigma", "pid_TOFnSigma", kTRUE); + cut_tof_nSigma->AddCut(GetAnalysisCut("electronPID_TOFnsigma_tight")); + + AnalysisCompositeCut* cut_pid_OR = new AnalysisCompositeCut("e_NSigma", "e_NSigma", kFALSE); + cut_pid_OR->AddCut(cut_tpc_nSigma); + cut_pid_OR->AddCut(cut_tof_nSigma); + cut->AddCut(cut_pid_OR); + return cut; + } + + if (!nameStr.compare("lmee_negNSigmaRun3_tight")) { + cut->AddCut(GetAnalysisCut("etaSel")); + cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); + cut->AddCut(GetAnalysisCut("standardPrimaryTrack")); + cut->AddCut(GetAnalysisCut("negTrack")); + + AnalysisCompositeCut* cut_tpc_nSigma = new AnalysisCompositeCut("pid_TPCnSigma", "pid_TPCnSigma", kTRUE); + cut_tpc_nSigma->AddCut(GetAnalysisCut("electronPID_TPCnsigma_tight")); + + AnalysisCompositeCut* cut_tof_nSigma = new AnalysisCompositeCut("pid_TOFnSigma", "pid_TOFnSigma", kTRUE); + cut_tof_nSigma->AddCut(GetAnalysisCut("electronPID_TOFnsigma_tight")); + + AnalysisCompositeCut* cut_pid_OR = new AnalysisCompositeCut("e_NSigma", "e_NSigma", kFALSE); + cut_pid_OR->AddCut(cut_tpc_nSigma); + cut_pid_OR->AddCut(cut_tof_nSigma); + cut->AddCut(cut_pid_OR); + return cut; + } + + if (!nameStr.compare("lmee_eNSigmaRun3_posEta_tight")) { + cut->AddCut(GetAnalysisCut("posEtaSel")); + cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); + cut->AddCut(GetAnalysisCut("standardPrimaryTrack")); + + AnalysisCompositeCut* cut_tpc_nSigma = new AnalysisCompositeCut("pid_TPCnSigma", "pid_TPCnSigma", kTRUE); + cut_tpc_nSigma->AddCut(GetAnalysisCut("electronPID_TPCnsigma_tight")); + + AnalysisCompositeCut* cut_tof_nSigma = new AnalysisCompositeCut("pid_TOFnSigma", "pid_TOFnSigma", kTRUE); + cut_tof_nSigma->AddCut(GetAnalysisCut("electronPID_TOFnsigma_tight")); + + AnalysisCompositeCut* cut_pid_OR = new AnalysisCompositeCut("e_NSigma", "e_NSigma", kFALSE); + cut_pid_OR->AddCut(cut_tpc_nSigma); + cut_pid_OR->AddCut(cut_tof_nSigma); + cut->AddCut(cut_pid_OR); + return cut; + } + + if (!nameStr.compare("lmee_eNSigmaRun3_negEta_tight")) { + cut->AddCut(GetAnalysisCut("posEtaSel")); + cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); + cut->AddCut(GetAnalysisCut("standardPrimaryTrack")); + + AnalysisCompositeCut* cut_tpc_nSigma = new AnalysisCompositeCut("pid_TPCnSigma", "pid_TPCnSigma", kTRUE); + cut_tpc_nSigma->AddCut(GetAnalysisCut("electronPID_TPCnsigma_tight")); + + AnalysisCompositeCut* cut_tof_nSigma = new AnalysisCompositeCut("pid_TOFnSigma", "pid_TOFnSigma", kTRUE); + cut_tof_nSigma->AddCut(GetAnalysisCut("electronPID_TOFnsigma_tight")); + + AnalysisCompositeCut* cut_pid_OR = new AnalysisCompositeCut("e_NSigma", "e_NSigma", kFALSE); + cut_pid_OR->AddCut(cut_tpc_nSigma); + cut_pid_OR->AddCut(cut_tof_nSigma); + cut->AddCut(cut_pid_OR); + return cut; + } + if (!nameStr.compare("lmee_GlobalTrackRun3")) { cut->AddCut(GetAnalysisCut("lmeeStandardKine")); cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); @@ -1081,6 +1155,30 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) // --------------------------------------------------- // Barrel track kine cuts + if (!nameStr.compare("negTrack")) { + cut->AddCut(VarManager::kCharge, -99.,0.); + return cut; + } + if (!nameStr.compare("posTrack")) { + cut->AddCut(VarManager::kCharge, 0.,99.); + return cut; + } + + if (!nameStr.compare("posEtaSel")) { + cut->AddCut(VarManager::kEta, 0., 0.8); + return cut; + } + + if (!nameStr.compare("negEtaSel")) { + cut->AddCut(VarManager::kEta, -0.8, 0.); + return cut; + } + + if (!nameStr.compare("etaSel")) { + cut->AddCut(VarManager::kEta, -0.8, 0.8); + return cut; + } + if (!nameStr.compare("lowMultTrackCut")) { cut->AddCut(VarManager::kPt, 0.15, 1000.0); cut->AddCut(VarManager::kTPCncls, 50.0, 159); diff --git a/PWGDQ/Core/HistogramsLibrary.cxx b/PWGDQ/Core/HistogramsLibrary.cxx index 9c4a122b7c1..16da6e5f87a 100644 --- a/PWGDQ/Core/HistogramsLibrary.cxx +++ b/PWGDQ/Core/HistogramsLibrary.cxx @@ -153,6 +153,7 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h hm->AddHistogram(histClass, "Px", "p_{x} distribution", false, 200, 0.0, 20.0, VarManager::kPx); hm->AddHistogram(histClass, "Py", "p_{y} distribution", false, 200, 0.0, 20.0, VarManager::kPy); hm->AddHistogram(histClass, "Pz", "p_{z} distribution", false, 200, 0.0, 20.0, VarManager::kPz); + hm->AddHistogram(histClass, "InvPt", "1/p_{T} distribution", false, 2000, 0.0, 20.0, VarManager::kInvPt); } if (subGroupStr.Contains("its")) { hm->AddHistogram(histClass, "ITSncls", "Number of cluster in ITS", false, 8, -0.5, 7.5, VarManager::kITSncls); diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index 6caefa9e065..2e8335d09d3 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -250,6 +250,8 @@ void VarManager::SetDefaultVarNames() fgVariableUnits[kMCEventImpParam] = "b"; fgVariableNames[kPt] = "p_{T}"; fgVariableUnits[kPt] = "GeV/c"; + fgVariableNames[kInvPt] = "1/p_{T}"; + fgVariableUnits[kInvPt] = "1/(GeV/c)"; fgVariableNames[kP] = "p"; fgVariableUnits[kP] = "GeV/c"; fgVariableNames[kPx] = "p_{x}"; diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index b1653e32e88..74a6f861bbe 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -191,6 +191,7 @@ class VarManager : public TObject // Basic track/muon/pair wise variables kPt, + kInvPt, kEta, kPhi, kP, @@ -819,6 +820,9 @@ void VarManager::FillTrack(T const& track, float* values) if (fgUsedVars[kPz]) { values[kPz] = track.pz(); } + if (fgUsedVars[kInvPt]) { + values[kInvPt] = 1. / track.pt(); + } values[kEta] = track.eta(); values[kPhi] = track.phi(); values[kCharge] = track.sign(); From 8789ef1c6271ba6455956bc176d2b6e71fe0274c Mon Sep 17 00:00:00 2001 From: feisenhu Date: Wed, 15 Feb 2023 18:40:15 +0100 Subject: [PATCH 2/3] Fix Clang error --- PWGDQ/Core/CutsLibrary.cxx | 5 +++-- PWGDQ/Core/VarManager.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index 62ca74a994b..e6f032aa687 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -1156,11 +1156,12 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) // --------------------------------------------------- // Barrel track kine cuts if (!nameStr.compare("negTrack")) { - cut->AddCut(VarManager::kCharge, -99.,0.); + cut->AddCut(VarManager::kCharge, -99., 0.); return cut; } + if (!nameStr.compare("posTrack")) { - cut->AddCut(VarManager::kCharge, 0.,99.); + cut->AddCut(VarManager::kCharge, 0., 99.); return cut; } diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 74a6f861bbe..b38a08dab62 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -524,7 +524,7 @@ class VarManager : public TObject static void ResetValues(int startValue = 0, int endValue = kNVars, float* values = nullptr); private: - static bool fgUsedVars[kNVars]; // holds flags for when the corresponding variable is needed (e.g., in the histogram manager, in cuts, mixing handler, etc.) + static bool fgUsedVars[kNVars]; // holds flags for when the corresponding variable is needed (e.g., in the histogram manager, in cuts, mixing handler, etc.) static bool fgUsedKF; static void SetVariableDependencies(); // toggle those variables on which other used variables might depend From b9c9b63a3bb22a4f83896fe4ac501fd546f4326c Mon Sep 17 00:00:00 2001 From: feisenhu Date: Thu, 16 Feb 2023 10:12:37 +0100 Subject: [PATCH 3/3] PWGEM: use 4 cuts to separate by charge and pseudo rapidity --- PWGDQ/Core/CutsLibrary.cxx | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index e6f032aa687..3a70a70ea6f 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -681,11 +681,11 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } - if (!nameStr.compare("lmee_posNSigmaRun3_tight")) { - cut->AddCut(GetAnalysisCut("etaSel")); + if (!nameStr.compare("lmee_posNSigmaRun3_posEta_tight")) { + cut->AddCut(GetAnalysisCut("posTrack")); + cut->AddCut(GetAnalysisCut("posEtaSel")); cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); cut->AddCut(GetAnalysisCut("standardPrimaryTrack")); - cut->AddCut(GetAnalysisCut("posTrack")); AnalysisCompositeCut* cut_tpc_nSigma = new AnalysisCompositeCut("pid_TPCnSigma", "pid_TPCnSigma", kTRUE); cut_tpc_nSigma->AddCut(GetAnalysisCut("electronPID_TPCnsigma_tight")); @@ -700,11 +700,11 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } - if (!nameStr.compare("lmee_negNSigmaRun3_tight")) { - cut->AddCut(GetAnalysisCut("etaSel")); + if (!nameStr.compare("lmee_negNSigmaRun3_posEta_tight")) { + cut->AddCut(GetAnalysisCut("negTrack")); + cut->AddCut(GetAnalysisCut("posEtaSel")); cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); cut->AddCut(GetAnalysisCut("standardPrimaryTrack")); - cut->AddCut(GetAnalysisCut("negTrack")); AnalysisCompositeCut* cut_tpc_nSigma = new AnalysisCompositeCut("pid_TPCnSigma", "pid_TPCnSigma", kTRUE); cut_tpc_nSigma->AddCut(GetAnalysisCut("electronPID_TPCnsigma_tight")); @@ -719,8 +719,9 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } - if (!nameStr.compare("lmee_eNSigmaRun3_posEta_tight")) { - cut->AddCut(GetAnalysisCut("posEtaSel")); + if (!nameStr.compare("lmee_posNSigmaRun3_negEta_tight")) { + cut->AddCut(GetAnalysisCut("posTrack")); + cut->AddCut(GetAnalysisCut("negEtaSel")); cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); cut->AddCut(GetAnalysisCut("standardPrimaryTrack")); @@ -737,8 +738,9 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } - if (!nameStr.compare("lmee_eNSigmaRun3_negEta_tight")) { - cut->AddCut(GetAnalysisCut("posEtaSel")); + if (!nameStr.compare("lmee_negNSigmaRun3_negEta_tight")) { + cut->AddCut(GetAnalysisCut("negTrack")); + cut->AddCut(GetAnalysisCut("negEtaSel")); cut->AddCut(GetAnalysisCut("TightGlobalTrackRun3")); cut->AddCut(GetAnalysisCut("standardPrimaryTrack"));