@@ -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