Skip to content

Commit f67ba3f

Browse files
iarseneIonut Cristian Arsenealibuild
authored
[PWGDQ] Added posibility to define multiple histogram classes for JSON histograms (#12855)
Co-authored-by: Ionut Cristian Arsene <iarsene@cern.ch> Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 3b67cb3 commit f67ba3f

File tree

3 files changed

+51
-27
lines changed

3 files changed

+51
-27
lines changed

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2008,6 +2008,18 @@ bool o2::aod::dqhistograms::ValidateJSONHistogram(T hist)
20082008
return false;
20092009
}
20102010

2011+
// check that the histClass field is an array of strings
2012+
if (!hist->FindMember("histClass")->value.IsArray()) {
2013+
LOG(fatal) << "histClass field should be an array of strings, e.g. [class1, class2]";
2014+
return false;
2015+
}
2016+
for (auto& v : hist->FindMember("histClass")->value.GetArray()) {
2017+
if (!v.IsString()) {
2018+
LOG(fatal) << "histClass field should be an array of strings, e.g. [class1, class2]";
2019+
return false;
2020+
}
2021+
}
2022+
20112023
TString histTypeStr = hist->FindMember("type")->value.GetString();
20122024
bool isTH1 = (histTypeStr.CompareTo("TH1") == 0);
20132025
bool isTH2 = (histTypeStr.CompareTo("TH2") == 0);
@@ -2218,7 +2230,11 @@ void o2::aod::dqhistograms::AddHistogramsFromJSON(HistogramManager* hm, const ch
22182230
isConstantBinning = false;
22192231
}
22202232

2221-
const char* histClass = hist.FindMember("histClass")->value.GetString();
2233+
// create an array of strings to store the different histogram classes
2234+
std::vector<const char*> histClasses;
2235+
for (auto& v : hist.FindMember("histClass")->value.GetArray()) {
2236+
histClasses.push_back(v.GetString());
2237+
}
22222238
const char* title = hist.FindMember("title")->value.GetString();
22232239

22242240
if (isTHn) {
@@ -2282,9 +2298,13 @@ void o2::aod::dqhistograms::AddHistogramsFromJSON(HistogramManager* hm, const ch
22822298
bool isDouble = (hist.HasMember("isDouble") ? hist.FindMember("isDouble")->value.GetBool() : false);
22832299

22842300
if (isConstantBinning) {
2285-
hm->AddHistogram(histClass, histName, title, nDimensions, vars, nBins, xmin, xmax, axLabels, varW, useSparse, isDouble);
2301+
for (auto histClass : histClasses) {
2302+
hm->AddHistogram(histClass, histName, title, nDimensions, vars, nBins, xmin, xmax, axLabels, varW, useSparse, isDouble);
2303+
}
22862304
} else {
2287-
hm->AddHistogram(histClass, histName, title, nDimensions, vars, binLimits, axLabels, varW, useSparse, isDouble);
2305+
for (auto histClass : histClasses) {
2306+
hm->AddHistogram(histClass, histName, title, nDimensions, vars, binLimits, axLabels, varW, useSparse, isDouble);
2307+
}
22882308
}
22892309

22902310
} else { // TH1, TH2 or TH3
@@ -2379,12 +2399,14 @@ void o2::aod::dqhistograms::AddHistogramsFromJSON(HistogramManager* hm, const ch
23792399
LOG(debug) << "isFillLabelx: " << isFillLabelx;
23802400

23812401
if (isConstantBinning) {
2382-
hm->AddHistogram(histClass, histName, title, isProfile,
2383-
nXbins, xmin, xmax, VarManager::fgVarNamesMap[varX],
2384-
nYbins, ymin, ymax, VarManager::fgVarNamesMap[varY],
2385-
nZbins, zmin, zmax, VarManager::fgVarNamesMap[varZ],
2386-
xLabels, yLabels, zLabels,
2387-
VarManager::fgVarNamesMap[varT], VarManager::fgVarNamesMap[varW], isdouble, isFillLabelx);
2402+
for (auto histClass : histClasses) {
2403+
hm->AddHistogram(histClass, histName, title, isProfile,
2404+
nXbins, xmin, xmax, VarManager::fgVarNamesMap[varX],
2405+
nYbins, ymin, ymax, VarManager::fgVarNamesMap[varY],
2406+
nZbins, zmin, zmax, VarManager::fgVarNamesMap[varZ],
2407+
xLabels, yLabels, zLabels,
2408+
VarManager::fgVarNamesMap[varT], VarManager::fgVarNamesMap[varW], isdouble, isFillLabelx);
2409+
}
23882410
} else {
23892411
int xBinsSize = xbinsVec.size();
23902412
if (xBinsSize != (nXbins + 1)) {
@@ -2413,12 +2435,14 @@ void o2::aod::dqhistograms::AddHistogramsFromJSON(HistogramManager* hm, const ch
24132435
zbins = new double[zbinsVec.size()];
24142436
std::copy(zbinsVec.begin(), zbinsVec.end(), zbins);
24152437
}
2416-
hm->AddHistogram(histClass, histName, title, isProfile,
2417-
nXbins, xbins, VarManager::fgVarNamesMap[varX],
2418-
nYbins, ybins, VarManager::fgVarNamesMap[varY],
2419-
nZbins, zbins, VarManager::fgVarNamesMap[varZ],
2420-
xLabels, yLabels, zLabels,
2421-
VarManager::fgVarNamesMap[varT], VarManager::fgVarNamesMap[varW], isdouble, isFillLabelx);
2438+
for (auto histClass : histClasses) {
2439+
hm->AddHistogram(histClass, histName, title, isProfile,
2440+
nXbins, xbins, VarManager::fgVarNamesMap[varX],
2441+
nYbins, ybins, VarManager::fgVarNamesMap[varY],
2442+
nZbins, zbins, VarManager::fgVarNamesMap[varZ],
2443+
xLabels, yLabels, zLabels,
2444+
VarManager::fgVarNamesMap[varT], VarManager::fgVarNamesMap[varW], isdouble, isFillLabelx);
2445+
}
24222446
} // end if (!isTHn)
24232447
}
24242448
}

PWGDQ/Tasks/dqEfficiency_withAssoc.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ struct AnalysisEventSelection {
431431
}
432432

433433
PROCESS_SWITCH(AnalysisEventSelection, processSkimmed, "Run event selection on DQ skimmed events", false);
434-
PROCESS_SWITCH(AnalysisEventSelection, processDummy, "Dummy function", false);
434+
PROCESS_SWITCH(AnalysisEventSelection, processDummy, "Dummy function", true);
435435
};
436436

437437
// Produces a table with barrel track decisions (joinable to the ReducedTracksAssociations)
@@ -756,7 +756,7 @@ struct AnalysisTrackSelection {
756756

757757
PROCESS_SWITCH(AnalysisTrackSelection, processSkimmed, "Run barrel track selection on DQ skimmed track associations", false);
758758
PROCESS_SWITCH(AnalysisTrackSelection, processSkimmedWithCov, "Run barrel track selection on DQ skimmed tracks w/ cov matrix associations", false);
759-
PROCESS_SWITCH(AnalysisTrackSelection, processDummy, "Dummy function", false);
759+
PROCESS_SWITCH(AnalysisTrackSelection, processDummy, "Dummy function", true);
760760
};
761761

762762
// Produces a table with muon decisions (joinable to the ReducedMuonsAssociations)
@@ -1060,7 +1060,7 @@ struct AnalysisMuonSelection {
10601060

10611061
PROCESS_SWITCH(AnalysisMuonSelection, processSkimmed, "Run muon selection on DQ skimmed muons", false);
10621062
PROCESS_SWITCH(AnalysisMuonSelection, processSkimmedWithCov, "Run muon selection on DQ skimmed muons, with event and track covariances", false);
1063-
PROCESS_SWITCH(AnalysisMuonSelection, processDummy, "Dummy function", false);
1063+
PROCESS_SWITCH(AnalysisMuonSelection, processDummy, "Dummy function", true);
10641064
};
10651065

10661066
// Run the prefilter selection (e.g. electron prefiltering for photon conversions)
@@ -1247,7 +1247,7 @@ struct AnalysisPrefilterSelection {
12471247
}
12481248

12491249
PROCESS_SWITCH(AnalysisPrefilterSelection, processBarrelSkimmed, "Run Prefilter selection on reduced tracks", false);
1250-
PROCESS_SWITCH(AnalysisPrefilterSelection, processDummy, "Do nothing", false);
1250+
PROCESS_SWITCH(AnalysisPrefilterSelection, processDummy, "Do nothing", true);
12511251
};
12521252

12531253
// Run the same-event pairing
@@ -2302,7 +2302,7 @@ struct AnalysisSameEventPairing {
23022302
PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithCollSkimmed, "Run barrel only pairing, with skimmed tracks and with collision information", false);
23032303
PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmed, "Run muon only pairing, with skimmed tracks", false);
23042304
PROCESS_SWITCH(AnalysisSameEventPairing, processMCGen, "Loop over MC particle stack and fill generator level histograms", false);
2305-
PROCESS_SWITCH(AnalysisSameEventPairing, processDummy, "Dummy function, enabled only if none of the others are enabled", false);
2305+
PROCESS_SWITCH(AnalysisSameEventPairing, processDummy, "Dummy function, enabled only if none of the others are enabled", true);
23062306
};
23072307

23082308
// Run pairing for resonance with legs fulfilling separate cuts (asymmetric decay channel)
@@ -4113,7 +4113,7 @@ struct AnalysisDileptonTrack {
41134113
PROCESS_SWITCH(AnalysisDileptonTrack, processMuonSkimmed, "Run muon dilepton-track pairing, using skimmed data", false);
41144114
PROCESS_SWITCH(AnalysisDileptonTrack, processMCGen, "Loop over MC particle stack and fill generator level histograms", false);
41154115
PROCESS_SWITCH(AnalysisDileptonTrack, processMCGenWithEventSelection, "Loop over MC particle stack and fill generator level histograms", false);
4116-
PROCESS_SWITCH(AnalysisDileptonTrack, processDummy, "Dummy function", false);
4116+
PROCESS_SWITCH(AnalysisDileptonTrack, processDummy, "Dummy function", true);
41174117
};
41184118

41194119
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ struct AnalysisEventSelection {
542542
PROCESS_SWITCH(AnalysisEventSelection, processSkimmedWithMultExtra, "Run event selection on DQ skimmed events, with mult extra", false);
543543
PROCESS_SWITCH(AnalysisEventSelection, processSkimmedWithMultExtraZdc, "Run event selection on DQ skimmed events, with mult extra and ZDC", false);
544544
PROCESS_SWITCH(AnalysisEventSelection, processSkimmedWithQvectorCentr, "Run event selection on DQ skimmed events, with Q-vector", false);
545-
PROCESS_SWITCH(AnalysisEventSelection, processDummy, "Dummy function", false);
545+
PROCESS_SWITCH(AnalysisEventSelection, processDummy, "Dummy function", true);
546546
};
547547

548548
// Produces a table with barrel track decisions (joinable to the ReducedTracksAssociations)
@@ -802,7 +802,7 @@ struct AnalysisTrackSelection {
802802
PROCESS_SWITCH(AnalysisTrackSelection, processSkimmed, "Run barrel track selection on DQ skimmed track associations", false);
803803
PROCESS_SWITCH(AnalysisTrackSelection, processSkimmedWithMultExtra, "Run barrel track selection on DQ skimmed track associations, with extra multiplicity tables", false);
804804
PROCESS_SWITCH(AnalysisTrackSelection, processSkimmedWithCov, "Run barrel track selection on DQ skimmed tracks w/ cov matrix associations", false);
805-
PROCESS_SWITCH(AnalysisTrackSelection, processDummy, "Dummy function", false);
805+
PROCESS_SWITCH(AnalysisTrackSelection, processDummy, "Dummy function", true);
806806
};
807807

808808
// Produces a table with muon decisions (joinable to the ReducedMuonsAssociations)
@@ -1013,7 +1013,7 @@ struct AnalysisMuonSelection {
10131013
}
10141014

10151015
PROCESS_SWITCH(AnalysisMuonSelection, processSkimmed, "Run muon selection on DQ skimmed muons", false);
1016-
PROCESS_SWITCH(AnalysisMuonSelection, processDummy, "Dummy function", false);
1016+
PROCESS_SWITCH(AnalysisMuonSelection, processDummy, "Dummy function", true);
10171017
};
10181018

10191019
// Run the prefilter selection (e.g. electron prefiltering for photon conversions)
@@ -1197,7 +1197,7 @@ struct AnalysisPrefilterSelection {
11971197
}
11981198

11991199
PROCESS_SWITCH(AnalysisPrefilterSelection, processBarrelSkimmed, "Run Prefilter selection on reduced tracks", false);
1200-
PROCESS_SWITCH(AnalysisPrefilterSelection, processDummy, "Do nothing", false);
1200+
PROCESS_SWITCH(AnalysisPrefilterSelection, processDummy, "Do nothing", true);
12011201
};
12021202

12031203
// Run the same-event pairing
@@ -2342,7 +2342,7 @@ struct AnalysisSameEventPairing {
23422342
PROCESS_SWITCH(AnalysisSameEventPairing, processMixingBarrelSkimmedFlow, "Run barrel type mixing pairing, with flow, with skimmed tracks", false);
23432343
PROCESS_SWITCH(AnalysisSameEventPairing, processMixingBarrelWithQvectorCentrSkimmedNoCov, "Run barrel type mixing pairing, with skimmed tracks and with Qvector from central framework", false);
23442344
PROCESS_SWITCH(AnalysisSameEventPairing, processMixingMuonSkimmed, "Run muon type mixing pairing, with skimmed muons", false);
2345-
PROCESS_SWITCH(AnalysisSameEventPairing, processDummy, "Dummy function, enabled only if none of the others are enabled", false);
2345+
PROCESS_SWITCH(AnalysisSameEventPairing, processDummy, "Dummy function, enabled only if none of the others are enabled", true);
23462346
};
23472347

23482348
// Run pairing for resonance with legs fulfilling separate cuts (asymmetric decay channel)
@@ -3722,7 +3722,7 @@ struct AnalysisDileptonTrack {
37223722
PROCESS_SWITCH(AnalysisDileptonTrack, processMuonSkimmed, "Run muon dilepton-track pairing, using skimmed data", false);
37233723
PROCESS_SWITCH(AnalysisDileptonTrack, processBarrelMixedEvent, "Run barrel dilepton-hadron mixed event pairing", false);
37243724
PROCESS_SWITCH(AnalysisDileptonTrack, processMuonMixedEvent, "Run muon dilepton-hadron mixed event pairing", false);
3725-
PROCESS_SWITCH(AnalysisDileptonTrack, processDummy, "Dummy function", false);
3725+
PROCESS_SWITCH(AnalysisDileptonTrack, processDummy, "Dummy function", true);
37263726
};
37273727

37283728
struct AnalysisDileptonTrackTrack {

0 commit comments

Comments
 (0)