From cb8db5ec2304738bda57898e8208d3408f159a66 Mon Sep 17 00:00:00 2001 From: Somadutta Bhatta Date: Fri, 16 Oct 2026 00:25:38 +0200 Subject: [PATCH 1/3] [PWGCF] radialFlowDecorr: add pT-dependent efficiency systematic, drop EtaBinning --- .../EbyEFluctuations/Tasks/radialFlowDecorr.cxx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx b/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx index 2b87e7d5ad6..20622be1f30 100644 --- a/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx +++ b/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx @@ -112,23 +112,24 @@ struct RadialFlowDecorr { // Systematic-variation selector for DATA. Base is the main measurement; each // variation reads its own DataMean object (systSuffix) for the correlation step. - // kSystEtaBinning additionally changes the eta bin width via cfgEtaBinWidth. + // kSystEff and kSystEffPtDep scale the efficiency by cfgEffVarPercent; kSystEffPtDep + // always uses the pT-dependent shape. enum ESystType { kSystBase = 0, kSystDCA, kSystEff, + kSystEffPtDep, kSystFlat, kSystNITS, kSystNTPC, kSystPileup, kSystVz, - kSystEtaBinning, kNSystType }; // Suffix appended to the DataMean CCDB path per systematic (Base -> no suffix). inline static const std::vector systSuffix = { - "", "_systDCA", "_systEff", "_systFlat", - "_systNITS", "_systNTPC", "_systPileup", "_systVz", "_systEtaBinning"}; + "", "_systDCA", "_systEff", "_systEffpTDep", "_systFlat", + "_systNITS", "_systNTPC", "_systPileup", "_systVz"}; static constexpr float KinvalidCentrality = -1.0f; @@ -181,7 +182,7 @@ struct RadialFlowDecorr { Configurable cfgNchOMax{"cfgNchOMax", 800, "Max Nch range for OO collisions"}; Configurable cfgSys{"cfgSys", 1, "Which collision system? 1-->PbPb, 2-->NeNe, 3-->OO, 4-->pp"}; - Configurable cfgSystType{"cfgSystType", 0, "Systematic variation: 0=Base,1=systDCA,2=systEff,3=systFlat,4=systNITS,5=systNTPC,6=systPileup,7=systVz,8=systEtaBinning"}; + Configurable cfgSystType{"cfgSystType", 0, "Systematic variation: 0=Base,1=systDCA,2=systEff,3=systEffpTDep,4=systFlat,5=systNITS,6=systNTPC,7=systPileup,8=systVz"}; Configurable cfgNBootstrap{"cfgNBootstrap", 16, "Number of Poisson bootstrap samples (base data run only)"}; Configurable cfgBootstrapSeed{"cfgBootstrapSeed", 0, "TRandom3 seed for bootstrap (0 = machine-random per job)"}; @@ -490,11 +491,12 @@ struct RadialFlowDecorr { float efficiencyVariationFactor(float pt) const { - if (cfgSystType.value != kSystEff) { + if (cfgSystType.value != kSystEff && cfgSystType.value != kSystEffPtDep) { return 1.f; } // Empirical shape: full variation at cfgPtMin, zero at cfgPtMax. - const float shape = cfgEffVarPtDep.value ? (cfgPtMax.value - pt) / (cfgPtMax.value - cfgPtMin.value) : 1.f; + const bool ptDep = cfgEffVarPtDep.value || cfgSystType.value == kSystEffPtDep; + const float shape = ptDep ? (cfgPtMax.value - pt) / (cfgPtMax.value - cfgPtMin.value) : 1.f; return 1.f + 0.01f * cfgEffVarPercent.value * shape; } From 96c6eed1cbb21efd9eb340553c169b07f774efb6 Mon Sep 17 00:00:00 2001 From: Somadutta Bhatta Date: Fri, 16 Oct 2026 04:47:32 +0200 Subject: [PATCH 2/3] [PWGCF] radialFlowDecorr: add centrality-estimator systematic, alphabetical systematic order --- PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx b/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx index 20622be1f30..63e530fb533 100644 --- a/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx +++ b/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx @@ -113,9 +113,11 @@ struct RadialFlowDecorr { // Systematic-variation selector for DATA. Base is the main measurement; each // variation reads its own DataMean object (systSuffix) for the correlation step. // kSystEff and kSystEffPtDep scale the efficiency by cfgEffVarPercent; kSystEffPtDep - // always uses the pT-dependent shape. + // always uses the pT-dependent shape. kSystCent is run with a different + // cfgCentralityChoice than the base (base FT0C, variation FT0M). enum ESystType { kSystBase = 0, + kSystCent, kSystDCA, kSystEff, kSystEffPtDep, @@ -128,7 +130,7 @@ struct RadialFlowDecorr { }; // Suffix appended to the DataMean CCDB path per systematic (Base -> no suffix). inline static const std::vector systSuffix = { - "", "_systDCA", "_systEff", "_systEffpTDep", "_systFlat", + "", "_systCent", "_systDCA", "_systEff", "_systEffpTDep", "_systFlat", "_systNITS", "_systNTPC", "_systPileup", "_systVz"}; static constexpr float KinvalidCentrality = -1.0f; @@ -182,7 +184,7 @@ struct RadialFlowDecorr { Configurable cfgNchOMax{"cfgNchOMax", 800, "Max Nch range for OO collisions"}; Configurable cfgSys{"cfgSys", 1, "Which collision system? 1-->PbPb, 2-->NeNe, 3-->OO, 4-->pp"}; - Configurable cfgSystType{"cfgSystType", 0, "Systematic variation: 0=Base,1=systDCA,2=systEff,3=systEffpTDep,4=systFlat,5=systNITS,6=systNTPC,7=systPileup,8=systVz"}; + Configurable cfgSystType{"cfgSystType", 0, "Systematic variation: 0=Base,1=systCent,2=systDCA,3=systEff,4=systEffpTDep,5=systFlat,6=systNITS,7=systNTPC,8=systPileup,9=systVz"}; Configurable cfgNBootstrap{"cfgNBootstrap", 16, "Number of Poisson bootstrap samples (base data run only)"}; Configurable cfgBootstrapSeed{"cfgBootstrapSeed", 0, "TRandom3 seed for bootstrap (0 = machine-random per job)"}; @@ -1031,6 +1033,9 @@ struct RadialFlowDecorr { void init(InitContext&) { TH1::SetDefaultSumw2(true); + if (cfgSystType == kSystCent && cfgCentralityChoice == kCentFT0C) { + LOGF(warning, "cfgSystType=systCent but cfgCentralityChoice is still FT0C (the base estimator)."); + } // Nch axes by system if (cfgSys == kPbPb) { nChAxis = {cfgNchPbMax / 2, KBinOffset, cfgNchPbMax + KBinOffset, "Nch", "PV-contributor track multiplicity"}; From f00936f7caac1aaaa8ed0cf4224d9d8f6a3f2f92 Mon Sep 17 00:00:00 2001 From: Somadutta Bhatta Date: Fri, 16 Oct 2026 04:54:18 +0200 Subject: [PATCH 3/3] [PWGCF] radialFlowDecorr: default to 20 bootstrap samples --- PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx b/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx index 63e530fb533..e917af7fb09 100644 --- a/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx +++ b/PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx @@ -185,7 +185,7 @@ struct RadialFlowDecorr { Configurable cfgSys{"cfgSys", 1, "Which collision system? 1-->PbPb, 2-->NeNe, 3-->OO, 4-->pp"}; Configurable cfgSystType{"cfgSystType", 0, "Systematic variation: 0=Base,1=systCent,2=systDCA,3=systEff,4=systEffpTDep,5=systFlat,6=systNITS,7=systNTPC,8=systPileup,9=systVz"}; - Configurable cfgNBootstrap{"cfgNBootstrap", 16, "Number of Poisson bootstrap samples (base data run only)"}; + Configurable cfgNBootstrap{"cfgNBootstrap", 20, "Number of Poisson bootstrap samples (base data run only)"}; Configurable cfgBootstrapSeed{"cfgBootstrapSeed", 0, "TRandom3 seed for bootstrap (0 = machine-random per job)"}; Configurable cfgFlat{"cfgFlat", false, "Whether to use flattening weights"};