Skip to content

Commit c204da6

Browse files
authored
[PWGDQ] Add functionality of JSON formatted strings for cuts to AsymmetricPairing (AliceO2Group#9741)
1 parent a856c86 commit c204da6

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,6 +1991,7 @@ struct AnalysisAsymmetricPairing {
19911991
Configurable<uint32_t> fConfigLegCFilterMask{"cfgLegCFilterMask", 0, "Filter mask corresponding to cuts in track-selection"};
19921992
Configurable<string> fConfigCommonTrackCuts{"cfgCommonTrackCuts", "", "Comma separated list of cuts to be applied to all legs"};
19931993
Configurable<string> fConfigPairCuts{"cfgPairCuts", "", "Comma separated list of pair cuts"};
1994+
Configurable<string> fConfigPairCutsJSON{"cfgPairCutsJSON", "", "Additional list of pair cuts in JSON format"};
19941995
Configurable<bool> fConfigSkipAmbiguousIdCombinations{"cfgSkipAmbiguousIdCombinations", true, "Choose whether to skip pairs/triples which pass a stricter combination of cuts, e.g. KKPi triplets for D+ -> KPiPi"};
19951996

19961997
Configurable<std::string> fConfigHistogramSubgroups{"cfgAsymmetricPairingHistogramsSubgroups", "barrel,vertexing", "Comma separated list of asymmetric-pairing histogram subgroups"};
@@ -2013,7 +2014,7 @@ struct AnalysisAsymmetricPairing {
20132014
HistogramManager* fHistMan;
20142015

20152016
std::map<int, std::vector<TString>> fTrackHistNames;
2016-
std::vector<AnalysisCompositeCut> fPairCuts;
2017+
std::vector<AnalysisCompositeCut*> fPairCuts;
20172018

20182019
// Filter masks to find legs in BarrelTrackCuts table
20192020
uint32_t fLegAFilterMask;
@@ -2058,13 +2059,31 @@ struct AnalysisAsymmetricPairing {
20582059
if (!cutNamesStr.IsNull()) {
20592060
std::unique_ptr<TObjArray> objArray(cutNamesStr.Tokenize(","));
20602061
for (int icut = 0; icut < objArray->GetEntries(); ++icut) {
2061-
fPairCuts.push_back(*dqcuts::GetCompositeCut(objArray->At(icut)->GetName()));
2062+
fPairCuts.push_back(dqcuts::GetCompositeCut(objArray->At(icut)->GetName()));
2063+
}
2064+
}
2065+
// Extra pair cuts via JSON
2066+
TString addPairCutsStr = fConfigPairCutsJSON.value;
2067+
if (addPairCutsStr != "") {
2068+
std::vector<AnalysisCut*> addPairCuts = dqcuts::GetCutsFromJSON(addPairCutsStr.Data());
2069+
for (auto& t : addPairCuts) {
2070+
fPairCuts.push_back((AnalysisCompositeCut*)t);
2071+
cutNamesStr += Form(",%s", t->GetName());
20622072
}
20632073
}
20642074
// Get the barrel track selection cuts
20652075
string tempCuts;
20662076
getTaskOptionValue<string>(context, "analysis-track-selection", "cfgTrackCuts", tempCuts, false);
20672077
TString tempCutsStr = tempCuts;
2078+
// check also the cuts added via JSON and add them to the string of cuts
2079+
getTaskOptionValue<string>(context, "analysis-track-selection", "cfgBarrelTrackCutsJSON", tempCuts, false);
2080+
TString addTrackCutsStr = tempCuts;
2081+
if (addTrackCutsStr != "") {
2082+
std::vector<AnalysisCut*> addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data());
2083+
for (auto& t : addTrackCuts) {
2084+
tempCutsStr += Form(",%s", t->GetName());
2085+
}
2086+
}
20682087
std::unique_ptr<TObjArray> objArray(tempCutsStr.Tokenize(","));
20692088
// Get the common leg cuts
20702089
int commonCutIdx;
@@ -2164,7 +2183,6 @@ struct AnalysisAsymmetricPairing {
21642183
fTrackHistNames[fNLegCuts + icut * fNCommonTrackCuts + iCommonCut] = names;
21652184
}
21662185

2167-
TString cutNamesStr = fConfigPairCuts.value;
21682186
if (!cutNamesStr.IsNull()) { // if pair cuts
21692187
std::unique_ptr<TObjArray> objArrayPair(cutNamesStr.Tokenize(","));
21702188
fNPairCuts = objArrayPair->GetEntries();
@@ -2431,9 +2449,9 @@ struct AnalysisAsymmetricPairing {
24312449
}
24322450
}
24332451
} // end loop (common cuts)
2434-
for (unsigned int iPairCut = 0; iPairCut < fPairCuts.size(); iPairCut++) {
2435-
AnalysisCompositeCut cut = fPairCuts.at(iPairCut);
2436-
if (!(cut.IsSelected(VarManager::fgValues))) // apply pair cuts
2452+
int iPairCut = 0;
2453+
for (auto cut = fPairCuts.begin(); cut != fPairCuts.end(); cut++, iPairCut++) {
2454+
if (!((*cut)->IsSelected(VarManager::fgValues))) // apply pair cuts
24372455
continue;
24382456
pairFilter |= (static_cast<uint32_t>(1) << iPairCut);
24392457
// Histograms with pair cuts
@@ -2607,11 +2625,10 @@ struct AnalysisAsymmetricPairing {
26072625
fHistMan->FillHistClass(histNames[fNLegCuts + icut * fNCommonTrackCuts + iCommonCut][0].Data(), VarManager::fgValues);
26082626
}
26092627
} // end loop (common cuts)
2610-
for (unsigned int iPairCut = 0; iPairCut < fPairCuts.size(); iPairCut++) {
2611-
AnalysisCompositeCut cut = fPairCuts.at(iPairCut);
2612-
if (!(cut.IsSelected(VarManager::fgValues))) { // apply pair cuts
2628+
int iPairCut = 0;
2629+
for (auto cut = fPairCuts.begin(); cut != fPairCuts.end(); cut++, iPairCut++) {
2630+
if (!((*cut)->IsSelected(VarManager::fgValues))) // apply pair cuts
26132631
continue;
2614-
}
26152632
// Histograms with pair cuts
26162633
fHistMan->FillHistClass(histNames[fNLegCuts * (fNCommonTrackCuts + 1) + icut * fNPairCuts + iPairCut][0].Data(), VarManager::fgValues);
26172634
// Histograms with pair cuts and common track cuts

0 commit comments

Comments
 (0)