|
40 | 40 | #include <Framework/HistogramRegistry.h> |
41 | 41 | #include <Framework/HistogramSpec.h> |
42 | 42 | #include <Framework/InitContext.h> |
| 43 | +#include <Framework/Logger.h> |
43 | 44 | #include <Framework/OutputObjHeader.h> |
44 | 45 | #include <Framework/runDataProcessing.h> |
45 | 46 |
|
46 | | -#include <Math/Vector4Dfwd.h> |
| 47 | +#include <Math/Vector4D.h> |
47 | 48 | #include <TH1.h> |
48 | 49 |
|
49 | 50 | #include <cmath> |
@@ -85,12 +86,6 @@ struct HResonanceCorrelationFilter { |
85 | 86 | Configurable<float> cfgTPCNsigmaKaon{"cfgTPCNsigmaKaon", 3.0f, "TPC Kaon PID"}; |
86 | 87 | Configurable<float> cfgTOFNsigmaKaon{"cfgTOFNsigmaKaon", 3.0f, "TOF Kaon PID"}; |
87 | 88 |
|
88 | | - Configurable<float> cfgMinMass{"cfgMinMass", 1.005f, "Minimum KK mass"}; |
89 | | - Configurable<float> cfgMaxMass{"cfgMaxMass", 1.035f, "Maximum KK mass"}; |
90 | | - |
91 | | - Configurable<float> cfgMinMassKstar{"cfgMinMassKstar", 0.796f, "Minimum K#pi mass"}; |
92 | | - Configurable<float> cfgMaxMassKstar{"cfgMaxMassKstar", 0.996f, "Maximum K#pi mass"}; |
93 | | - |
94 | 89 | Configurable<float> cfgRapidity{"cfgRapidity", 0.5f, "Rapidity cut"}; |
95 | 90 |
|
96 | 91 | // used for event selections in Pb-Pb |
@@ -223,7 +218,38 @@ struct HResonanceCorrelationFilter { |
223 | 218 | Configurable<std::string> parameterCCDBPath{"parameterCCDBPath", "Users/k/kcui/LHC25b4a/parameter", "Path of the mean and sigma"}; |
224 | 219 |
|
225 | 220 | // must include windows for background and peak |
226 | | - Configurable<float> maxMassNSigma{"maxMassNSigma", 12.0f, "max mass region to be considered for further analysis"}; |
| 221 | + // |
| 222 | + // This filter-level cut is an acceptance pre-cut only -- it decides what |
| 223 | + // ever reaches AssocPhis/AssocKstars, not what counts as signal. It must |
| 224 | + // stay wider than whatever signal+background region hResonanceCorrelation.cxx |
| 225 | + // wants downstream (its massWindowConfigurationsPhi/Kstar go out to |
| 226 | + // maxBgNSigma=6 by default), or that background region gets silently |
| 227 | + // truncated before it ever reaches the analysis task. peakMass/sigma here |
| 228 | + // mirror the analysis task's own massWindowConfigurationsPhi/Kstar |
| 229 | + // (sigma = PDG Gamma/2.355 placeholder -- refit from your own peak and |
| 230 | + // update both files together, they must agree on what "sigma" means). |
| 231 | + Configurable<float> maxMassNSigma{"maxMassNSigma", 12.0f, "max mass region to be considered for further analysis, in units of sigma"}; |
| 232 | + |
| 233 | + struct : ConfigurableGroup { |
| 234 | + std::string prefix = "massWindowConfigurationsPhi"; |
| 235 | + Configurable<float> peakMass{"peakMass", 1.019455f, "Phi(1020) PDG mass (GeV)"}; |
| 236 | + Configurable<float> sigma{"sigma", 0.0018f, "effective width (GeV) for the maxMassNSigma pre-cut -- keep in sync with hResonanceCorrelation.cxx's massWindowConfigurationsPhi.sigma"}; |
| 237 | + } massWindowConfigurationsPhi; |
| 238 | + |
| 239 | + struct : ConfigurableGroup { |
| 240 | + std::string prefix = "massWindowConfigurationsKstar"; |
| 241 | + Configurable<float> peakMass{"peakMass", 0.89555f, "K*0(892) PDG mass (GeV)"}; |
| 242 | + Configurable<float> sigma{"sigma", 0.0201f, "effective width (GeV) for the maxMassNSigma pre-cut -- keep in sync with hResonanceCorrelation.cxx's massWindowConfigurationsKstar.sigma"}; |
| 243 | + } massWindowConfigurationsKstar; |
| 244 | + |
| 245 | + // Derived acceptance-window bounds, computed once in init() from the |
| 246 | + // Configurables above (peakMass +/- maxMassNSigma * sigma) rather than |
| 247 | + // hand-entered GeV numbers, so there is exactly one place to widen the |
| 248 | + // pre-cut instead of four independent literals that can drift apart. |
| 249 | + float mMinMassPhi = 0.f; |
| 250 | + float mMaxMassPhi = 0.f; |
| 251 | + float mMinMassKstar = 0.f; |
| 252 | + float mMaxMassKstar = 0.f; |
227 | 253 |
|
228 | 254 | // For extracting strangeness mass QA plots |
229 | 255 | struct : ConfigurableGroup { |
@@ -292,6 +318,13 @@ struct HResonanceCorrelationFilter { |
292 | 318 |
|
293 | 319 | zorroSummary.setObject(zorro.getZorroSummary()); |
294 | 320 | mRunNumber = -1; |
| 321 | + |
| 322 | + mMinMassPhi = massWindowConfigurationsPhi.peakMass - maxMassNSigma * massWindowConfigurationsPhi.sigma; |
| 323 | + mMaxMassPhi = massWindowConfigurationsPhi.peakMass + maxMassNSigma * massWindowConfigurationsPhi.sigma; |
| 324 | + mMinMassKstar = massWindowConfigurationsKstar.peakMass - maxMassNSigma * massWindowConfigurationsKstar.sigma; |
| 325 | + mMaxMassKstar = massWindowConfigurationsKstar.peakMass + maxMassNSigma * massWindowConfigurationsKstar.sigma; |
| 326 | + LOGF(info, "Assoc mass pre-cut windows: Phi [%.4f, %.4f] GeV, K*0 [%.4f, %.4f] GeV", |
| 327 | + mMinMassPhi, mMaxMassPhi, mMinMassKstar, mMaxMassKstar); |
295 | 328 | } |
296 | 329 |
|
297 | 330 | void initCCDB(aod::BCsWithTimestamps::iterator const& bc) |
@@ -1095,7 +1128,7 @@ struct HResonanceCorrelationFilter { |
1095 | 1128 | } |
1096 | 1129 |
|
1097 | 1130 | // optional mass window |
1098 | | - if (invMass < cfgMinMass || invMass > cfgMaxMass) { |
| 1131 | + if (invMass < mMinMassPhi || invMass > mMaxMassPhi) { |
1099 | 1132 | continue; |
1100 | 1133 | } |
1101 | 1134 |
|
@@ -1181,7 +1214,7 @@ struct HResonanceCorrelationFilter { |
1181 | 1214 | } |
1182 | 1215 |
|
1183 | 1216 | // optional mass window |
1184 | | - if (invMass < cfgMinMass || invMass > cfgMaxMass) { |
| 1217 | + if (invMass < mMinMassPhi || invMass > mMaxMassPhi) { |
1185 | 1218 | continue; |
1186 | 1219 | } |
1187 | 1220 |
|
@@ -1294,7 +1327,7 @@ struct HResonanceCorrelationFilter { |
1294 | 1327 | } |
1295 | 1328 |
|
1296 | 1329 | // mass window |
1297 | | - if (invMass < cfgMinMassKstar || invMass > cfgMaxMassKstar) { |
| 1330 | + if (invMass < mMinMassKstar || invMass > mMaxMassKstar) { |
1298 | 1331 | continue; |
1299 | 1332 | } |
1300 | 1333 |
|
@@ -1375,7 +1408,7 @@ struct HResonanceCorrelationFilter { |
1375 | 1408 | } |
1376 | 1409 |
|
1377 | 1410 | // mass window |
1378 | | - if (invMass < cfgMinMassKstar || invMass > cfgMaxMassKstar) { |
| 1411 | + if (invMass < mMinMassKstar || invMass > mMaxMassKstar) { |
1379 | 1412 | continue; |
1380 | 1413 | } |
1381 | 1414 |
|
|
0 commit comments