Skip to content

Commit 02b7f9f

Browse files
authored
[PWGCF] radialFlowDecorr: add pT-dependent efficiency systematic check. (#18319)
1 parent b0d17e0 commit 02b7f9f

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

‎PWGCF/EbyEFluctuations/Tasks/radialFlowDecorr.cxx‎

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,23 +112,26 @@ struct RadialFlowDecorr {
112112

113113
// Systematic-variation selector for DATA. Base is the main measurement; each
114114
// variation reads its own DataMean object (systSuffix) for the correlation step.
115-
// kSystEtaBinning additionally changes the eta bin width via cfgEtaBinWidth.
115+
// kSystEff and kSystEffPtDep scale the efficiency by cfgEffVarPercent; kSystEffPtDep
116+
// always uses the pT-dependent shape. kSystCent is run with a different
117+
// cfgCentralityChoice than the base (base FT0C, variation FT0M).
116118
enum ESystType {
117119
kSystBase = 0,
120+
kSystCent,
118121
kSystDCA,
119122
kSystEff,
123+
kSystEffPtDep,
120124
kSystFlat,
121125
kSystNITS,
122126
kSystNTPC,
123127
kSystPileup,
124128
kSystVz,
125-
kSystEtaBinning,
126129
kNSystType
127130
};
128131
// Suffix appended to the DataMean CCDB path per systematic (Base -> no suffix).
129132
inline static const std::vector<std::string> systSuffix = {
130-
"", "_systDCA", "_systEff", "_systFlat",
131-
"_systNITS", "_systNTPC", "_systPileup", "_systVz", "_systEtaBinning"};
133+
"", "_systCent", "_systDCA", "_systEff", "_systEffpTDep", "_systFlat",
134+
"_systNITS", "_systNTPC", "_systPileup", "_systVz"};
132135

133136
static constexpr float KinvalidCentrality = -1.0f;
134137

@@ -181,8 +184,8 @@ struct RadialFlowDecorr {
181184
Configurable<int> cfgNchOMax{"cfgNchOMax", 800, "Max Nch range for OO collisions"};
182185

183186
Configurable<int> cfgSys{"cfgSys", 1, "Which collision system? 1-->PbPb, 2-->NeNe, 3-->OO, 4-->pp"};
184-
Configurable<int> cfgSystType{"cfgSystType", 0, "Systematic variation: 0=Base,1=systDCA,2=systEff,3=systFlat,4=systNITS,5=systNTPC,6=systPileup,7=systVz,8=systEtaBinning"};
185-
Configurable<int> cfgNBootstrap{"cfgNBootstrap", 16, "Number of Poisson bootstrap samples (base data run only)"};
187+
Configurable<int> 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"};
188+
Configurable<int> cfgNBootstrap{"cfgNBootstrap", 20, "Number of Poisson bootstrap samples (base data run only)"};
186189
Configurable<int> cfgBootstrapSeed{"cfgBootstrapSeed", 0, "TRandom3 seed for bootstrap (0 = machine-random per job)"};
187190

188191
Configurable<bool> cfgFlat{"cfgFlat", false, "Whether to use flattening weights"};
@@ -490,11 +493,12 @@ struct RadialFlowDecorr {
490493

491494
float efficiencyVariationFactor(float pt) const
492495
{
493-
if (cfgSystType.value != kSystEff) {
496+
if (cfgSystType.value != kSystEff && cfgSystType.value != kSystEffPtDep) {
494497
return 1.f;
495498
}
496499
// Empirical shape: full variation at cfgPtMin, zero at cfgPtMax.
497-
const float shape = cfgEffVarPtDep.value ? (cfgPtMax.value - pt) / (cfgPtMax.value - cfgPtMin.value) : 1.f;
500+
const bool ptDep = cfgEffVarPtDep.value || cfgSystType.value == kSystEffPtDep;
501+
const float shape = ptDep ? (cfgPtMax.value - pt) / (cfgPtMax.value - cfgPtMin.value) : 1.f;
498502
return 1.f + 0.01f * cfgEffVarPercent.value * shape;
499503
}
500504

@@ -1029,6 +1033,9 @@ struct RadialFlowDecorr {
10291033
void init(InitContext&)
10301034
{
10311035
TH1::SetDefaultSumw2(true);
1036+
if (cfgSystType == kSystCent && cfgCentralityChoice == kCentFT0C) {
1037+
LOGF(warning, "cfgSystType=systCent but cfgCentralityChoice is still FT0C (the base estimator).");
1038+
}
10321039
// Nch axes by system
10331040
if (cfgSys == kPbPb) {
10341041
nChAxis = {cfgNchPbMax / 2, KBinOffset, cfgNchPbMax + KBinOffset, "Nch", "PV-contributor track multiplicity"};

0 commit comments

Comments
 (0)