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
+49Lines changed: 49 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,12 @@
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>
31
+
#include<string>
27
32
28
33
// #include "CCDB/BasicCCDBManager.h"
29
34
@@ -56,6 +61,7 @@ struct jflucAnalysisTask {
56
61
O2_DEFINE_CONFIGURABLE(ptmax, float, 5.0, "Maximum pt for tracks");
57
62
O2_DEFINE_CONFIGURABLE(cfgCentBinsForMC, int, 0, "0 = OFF and 1 = ON for data like multiplicity/centrality bins for MC process");
58
63
O2_DEFINE_CONFIGURABLE(cfgMultCorrelationsMask, uint16_t, 0, "Selection bitmask for the multiplicity correlations. This should match the filter selection cfgEstimatorBitMask.")
64
+
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
117
+
for (uint i = 0, n = multCutFormula->GetNpar(); i < n; ++i) {
118
+
auto m = std::find(pars.begin(), pars.end(), multCutFormula->GetParName(i));
119
+
if (m == pars.end()) {
120
+
121
+
LOGF(warning, "Unknown parameter in cfgMultCutFormula: %s", multCutFormula->GetParName(i));
122
+
continue;
123
+
}
124
+
if ((cfgMultCorrelationsMask.value & (1u << i)) == 0) {
125
+
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
213
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());
214
+
if (!passOutlier(collision))
215
+
return;
169
216
analyze(collision, tracks);
170
217
}
171
218
PROCESS_SWITCH(jflucAnalysisTask, processCFDerivedMultSet, "Process CF derived data with multiplicity sets", false);
@@ -174,6 +221,8 @@ struct jflucAnalysisTask {
174
221
{
175
222
if (std::popcount(cfgMultCorrelationsMask.value) != static_cast<int>(collision.multiplicities().size()))
176
223
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());
224
+
if (!passOutlier(collision))
225
+
return;
177
226
analyze(collision, tracks);
178
227
}
179
228
PROCESS_SWITCH(jflucAnalysisTask, processCFDerivedMultSetCorrected, "Process CF derived data with corrections and multiplicity sets", false);
0 commit comments