You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PWGCF/JCorran/Tasks/jflucAnalysisTask.cxx
+48Lines changed: 48 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,11 @@
23
23
#include"Framework/RunningWorkflowInfo.h"
24
24
#include"ReconstructionDataFormats/V0.h"
25
25
26
+
#include<TFormula.h>
27
+
28
+
#include<array>
26
29
#include<deque>
30
+
#include<memory>
27
31
28
32
// #include "CCDB/BasicCCDBManager.h"
29
33
@@ -56,6 +60,7 @@ struct jflucAnalysisTask {
56
60
O2_DEFINE_CONFIGURABLE(ptmax, float, 5.0, "Maximum pt for tracks");
57
61
O2_DEFINE_CONFIGURABLE(cfgCentBinsForMC, int, 0, "0 = OFF and 1 = ON for data like multiplicity/centrality bins for MC process");
58
62
O2_DEFINE_CONFIGURABLE(cfgMultCorrelationsMask, uint16_t, 0, "Selection bitmask for the multiplicity correlations. This should match the filter selection cfgEstimatorBitMask.")
63
+
O2_DEFINE_CONFIGURABLE(cfgMultCutFormula, std::string, "", "Multiplicity correlations cut formula. A result greater than zero results in accepted event. Parameters: [cFT0C] FT0C centrality, [mFV0A] V0A multiplicity, [mGlob] global track multiplicity, [mPV] PV track multiplicity")
std::array<std::string, 4> pars = {"cFT0C", "mFV0A", "mPV", "mGlob"}; // must correspond the order of MultiplicityEstimators
116
+
for (uint i = 0, n = multCutFormula->GetNpar(); i < n; ++i) {
117
+
auto m = std::find(pars.begin(), pars.end(), multCutFormula->GetParName(i));
118
+
if (m == pars.end()) {
119
+
120
+
LOGF(warning, "Unknown parameter in cfgMultCutFormula: %s", multCutFormula->GetParName(i));
121
+
continue;
122
+
}
123
+
if ((cfgMultCorrelationsMask.value & (1u << i)) == 0) {
124
+
LOGF(warning, "The centrality/multiplicity estimator %s is not available to be used in cfgMultCutFormula. Ensure cfgMultCorrelationsMask is correct and matches the CFMultSets in derived data.");
if (std::popcount(cfgMultCorrelationsMask.value) != static_cast<int>(collision.multiplicities().size()))
168
212
LOGF(fatal, "Multiplicity selections (cfgMultCorrelationsMask = 0x%x) do not match the size of the table column (%ld). The histogram filling relies on the preservation of order.", cfgMultCorrelationsMask.value, collision.multiplicities().size());
213
+
if (!passOutlier(collision))
214
+
return;
169
215
analyze(collision, tracks);
170
216
}
171
217
PROCESS_SWITCH(jflucAnalysisTask, processCFDerivedMultSet, "Process CF derived data with multiplicity sets", false);
@@ -174,6 +220,8 @@ struct jflucAnalysisTask {
174
220
{
175
221
if (std::popcount(cfgMultCorrelationsMask.value) != static_cast<int>(collision.multiplicities().size()))
176
222
LOGF(fatal, "Multiplicity selections (cfgMultCorrelationsMask = 0x%x) do not match the size of the table column (%ld). The histogram filling relies on the preservation of order.", cfgMultCorrelationsMask.value, collision.multiplicities().size());
223
+
if (!passOutlier(collision))
224
+
return;
177
225
analyze(collision, tracks);
178
226
}
179
227
PROCESS_SWITCH(jflucAnalysisTask, processCFDerivedMultSetCorrected, "Process CF derived data with corrections and multiplicity sets", false);
0 commit comments