Skip to content

Commit 6037ae9

Browse files
mcoquet642alibuild
andauthored
[PWGDQ] Improvements tableReader_withAssoc and dqEfficiency_withAssoc, and simplifying FillPairVertexing (#17999)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent e128232 commit 6037ae9

8 files changed

Lines changed: 637 additions & 791 deletions

‎PWGDQ/Core/VarManager.h‎

Lines changed: 114 additions & 194 deletions
Large diffs are not rendered by default.

‎PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,6 +1427,8 @@ struct TableMakerMC {
14271427
if constexpr (static_cast<bool>(TMFTFillMap & VarManager::ObjTypes::MFTCov)) {
14281428
if (fConfigVariousOptions.fUseML.value) {
14291429
skimBestMuonMatchesML(muons, mftTracks, mftCovs, collision);
1430+
} else {
1431+
skimBestMuonMatches(muons);
14301432
}
14311433
} else {
14321434
skimBestMuonMatches(muons);

‎PWGDQ/Tasks/dqEfficiency.cxx‎

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ struct AnalysisEventSelection {
103103
Configurable<std::string> fConfigEventCuts{"cfgEventCuts", "eventStandard", "Event selection"};
104104
Configurable<bool> fConfigQA{"cfgQA", false, "If true, fill QA histograms"};
105105

106-
HistogramManager* fHistMan;
107-
AnalysisCompositeCut* fEventCut;
106+
HistogramManager* fHistMan = nullptr;
107+
AnalysisCompositeCut* fEventCut = nullptr;
108108

109109
void init(o2::framework::InitContext& context)
110110
{
@@ -174,7 +174,7 @@ struct AnalysisTrackSelection {
174174
Configurable<std::string> fConfigMCSignals{"cfgTrackMCSignals", "", "Comma separated list of MC signals"};
175175
Configurable<bool> fConfigQA{"cfgQA", false, "If true, fill QA histograms"};
176176

177-
HistogramManager* fHistMan;
177+
HistogramManager* fHistMan = nullptr;
178178
std::vector<AnalysisCompositeCut> fTrackCuts;
179179
std::vector<MCSignal> fMCSignals; // list of signals to be checked
180180
std::vector<TString> fHistNamesReco;
@@ -305,13 +305,13 @@ struct AnalysisTrackSelection {
305305
}
306306

307307
// fill histograms
308-
for (unsigned int i = 0; i < fMCSignals.size(); i++) {
309-
if (!(mcDecision & (static_cast<uint32_t>(1) << i))) {
308+
for (unsigned int iMC = 0; iMC < fMCSignals.size(); iMC++) {
309+
if (!(mcDecision & (static_cast<uint32_t>(1) << iMC))) {
310310
continue;
311311
}
312312
for (unsigned int j = 0; j < fTrackCuts.size(); j++) {
313313
if (filterMap & (uint8_t(1) << j)) {
314-
fHistMan->FillHistClass(fHistNamesMCMatched[j][i].Data(), VarManager::fgValues);
314+
fHistMan->FillHistClass(fHistNamesMCMatched[j][iMC].Data(), VarManager::fgValues);
315315
}
316316
} // end loop over cuts
317317
} // end loop over MC signals
@@ -343,7 +343,7 @@ struct AnalysisMuonSelection {
343343
Configurable<std::string> fConfigMCSignals{"cfgMuonMCSignals", "", "Comma separated list of MC signals"};
344344
Configurable<bool> fConfigQA{"cfgQA", false, "If true, fill QA histograms"};
345345

346-
HistogramManager* fHistMan;
346+
HistogramManager* fHistMan = nullptr;
347347
std::vector<AnalysisCompositeCut> fTrackCuts;
348348
std::vector<MCSignal> fMCSignals; // list of signals to be checked
349349
std::vector<TString> fHistNamesReco;
@@ -478,13 +478,13 @@ struct AnalysisMuonSelection {
478478
}
479479

480480
// fill histograms
481-
for (unsigned int i = 0; i < fMCSignals.size(); i++) {
482-
if (!(mcDecision & (static_cast<uint32_t>(1) << i))) {
481+
for (unsigned int iMC = 0; iMC < fMCSignals.size(); iMC++) {
482+
if (!(mcDecision & (static_cast<uint32_t>(1) << iMC))) {
483483
continue;
484484
}
485485
for (unsigned int j = 0; j < fTrackCuts.size(); j++) {
486486
if (filterMap & (uint8_t(1) << j)) {
487-
fHistMan->FillHistClass(fHistNamesMCMatched[j][i].Data(), VarManager::fgValues);
487+
fHistMan->FillHistClass(fHistNamesMCMatched[j][iMC].Data(), VarManager::fgValues);
488488
}
489489
} // end loop over cuts
490490
} // end loop over MC signals
@@ -516,7 +516,7 @@ struct AnalysisSameEventPairing {
516516
float mMagField = 0.0;
517517
o2::parameters::GRPMagField* grpmag = nullptr;
518518
o2::base::MatLayerCylSet* lut = nullptr;
519-
int fCurrentRun; // needed to detect if the run changed and trigger update of calibrations etc.
519+
int fCurrentRun = -1; // needed to detect if the run changed and trigger update of calibrations etc.
520520

521521
OutputObj<THashList> fOutputList{"output"};
522522
Filter filterEventSelected = aod::dqanalysisflags::isEventSelected == 1;
@@ -546,7 +546,7 @@ struct AnalysisSameEventPairing {
546546
// TODO: special AnalysisCuts to be prepared in this direction
547547
// TODO: cuts on the MC truth information to be added if needed
548548

549-
HistogramManager* fHistMan;
549+
HistogramManager* fHistMan = nullptr;
550550
std::vector<std::vector<TString>> fBarrelHistNames;
551551
std::vector<std::vector<TString>> fBarrelHistNamesMCmatched;
552552
std::vector<std::vector<TString>> fMuonHistNames;
@@ -795,7 +795,7 @@ struct AnalysisSameEventPairing {
795795
VarManager::FillPair<TPairType, TTrackFillMap>(t1, t2);
796796
// secondary vertexing is not implemented for e-mu pairs so we need to hide this function from the e-mu analysis for now
797797
if constexpr ((TPairType == VarManager::kDecayToEE) || (TPairType == VarManager::kDecayToMuMu)) {
798-
VarManager::FillPairVertexing<TPairType, TEventFillMap, TTrackFillMap>(event, t1, t2, fPropToPCA, VarManager::fgValues);
798+
VarManager::FillPairVertexing<TPairType, TEventFillMap, TTrackFillMap>(event, t1, t2, VarManager::fgValues);
799799
}
800800

801801
// run MC matching for this pair
@@ -816,7 +816,7 @@ struct AnalysisSameEventPairing {
816816

817817
dileptonFilterMap = twoTrackFilter;
818818
dileptonMcDecision = mcDecision;
819-
if (!fConfigSkimSignalOnly || (fConfigSkimSignalOnly && mcDecision > 0)) {
819+
if (!fConfigSkimSignalOnly || mcDecision > 0) {
820820
if constexpr (TPairType == VarManager::kDecayToEE) {
821821
dielectronList(event, VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), dileptonFilterMap, dileptonMcDecision);
822822
if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackCollInfo) > 0) {
@@ -882,11 +882,11 @@ struct AnalysisSameEventPairing {
882882
if (fConfigAmbiguousHist && !(t1.isAmbiguous() || t2.isAmbiguous())) {
883883
fHistMan->FillHistClass(Form("%s_unambiguous", histNames[icut][0].Data()), VarManager::fgValues);
884884
}
885-
for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) {
886-
if (mcDecision & (static_cast<uint32_t>(1) << isig)) {
887-
fHistMan->FillHistClass(histNamesMCmatched[icut][isig].Data(), VarManager::fgValues);
885+
for (unsigned int iSig = 0; iSig < fRecMCSignals.size(); iSig++) {
886+
if (mcDecision & (static_cast<uint32_t>(1) << iSig)) {
887+
fHistMan->FillHistClass(histNamesMCmatched[icut][iSig].Data(), VarManager::fgValues);
888888
if (fConfigAmbiguousHist && !(t1.isAmbiguous() || t2.isAmbiguous())) {
889-
fHistMan->FillHistClass(Form("%s_unambiguous", histNamesMCmatched[icut][isig].Data()), VarManager::fgValues);
889+
fHistMan->FillHistClass(Form("%s_unambiguous", histNamesMCmatched[icut][iSig].Data()), VarManager::fgValues);
890890
}
891891
}
892892
}
@@ -1071,12 +1071,10 @@ struct AnalysisDileptonTrack {
10711071
constexpr static uint32_t fgDileptonFillMap = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::Pair; // fill map
10721072

10731073
// use two values array to avoid mixing up the quantities
1074-
float* fValuesDilepton;
1075-
float* fValuesTrack;
1076-
HistogramManager* fHistMan;
1074+
float* fValuesDilepton = nullptr;
1075+
float* fValuesTrack = nullptr;
1076+
HistogramManager* fHistMan = nullptr;
10771077

1078-
std::vector<std::vector<TString>> fMuonHistNames;
1079-
std::vector<std::vector<TString>> fMuonHistNamesMCmatched;
10801078
std::vector<TString> fRecMCSignalsNames;
10811079

10821080
std::vector<MCSignal> fRecMCSignals;
@@ -1085,7 +1083,7 @@ struct AnalysisDileptonTrack {
10851083
// NOTE: the barrel track filter is shared between the filters for dilepton electron candidates (first n-bits)
10861084
// and the associated hadrons (n+1 bit) --> see the barrel track selection task
10871085
// The current condition should be replaced when bitwise operators will become available in Filter expressions
1088-
int fNHadronCutBit;
1086+
int fNHadronCutBit = 0;
10891087

10901088
void init(o2::framework::InitContext& context)
10911089
{
@@ -1242,9 +1240,9 @@ struct AnalysisDileptonTrack {
12421240
}
12431241
} // end loop over MC signals
12441242

1245-
for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) {
1246-
if (mcDecision & (static_cast<uint32_t>(1) << isig)) {
1247-
fHistMan->FillHistClass(Form("DileptonsSelected_matchedMC_%s", fRecMCSignalsNames[isig].Data()), fValuesDilepton);
1243+
for (unsigned int iSig = 0; iSig < fRecMCSignals.size(); iSig++) {
1244+
if (mcDecision & (static_cast<uint32_t>(1) << iSig)) {
1245+
fHistMan->FillHistClass(Form("DileptonsSelected_matchedMC_%s", fRecMCSignalsNames[iSig].Data()), fValuesDilepton);
12481246
}
12491247
}
12501248

@@ -1267,7 +1265,7 @@ struct AnalysisDileptonTrack {
12671265
mcDecision = 0;
12681266
isig = 0;
12691267
for (auto sig = fRecMCSignals.begin(); sig != fRecMCSignals.end(); sig++, isig++) {
1270-
if constexpr (TTrackFillMap & VarManager::ObjTypes::ReducedTrack || TTrackFillMap & VarManager::ObjTypes::ReducedMuon || TTrackFillMap & VarManager::ObjTypes::ReducedMuon) { // for skimmed DQ model
1268+
if constexpr (TTrackFillMap & VarManager::ObjTypes::ReducedTrack || TTrackFillMap & VarManager::ObjTypes::ReducedMuon) { // for skimmed DQ model
12711269
if ((*sig).CheckSignal(false, lepton1MC, lepton2MC, trackMC)) {
12721270
mcDecision |= (static_cast<uint32_t>(1) << isig);
12731271
}
@@ -1278,9 +1276,9 @@ struct AnalysisDileptonTrack {
12781276
dileptontrackcandidatesList(mcDecision, fValuesTrack[VarManager::kPairMass], fValuesTrack[VarManager::kPairPt], fValuesTrack[VarManager::kPairEta], fValuesTrack[VarManager::kVertexingTauz], fValuesTrack[VarManager::kVertexingTauxy], fValuesTrack[VarManager::kVertexingLz], fValuesTrack[VarManager::kVertexingLxy]);
12791277
}
12801278

1281-
for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) {
1282-
if (mcDecision & (static_cast<uint32_t>(1) << isig)) {
1283-
fHistMan->FillHistClass(Form("DileptonTrackInvMass_matchedMC_%s", fRecMCSignalsNames[isig].Data()), fValuesTrack);
1279+
for (unsigned int iSig = 0; iSig < fRecMCSignals.size(); iSig++) {
1280+
if (mcDecision & (static_cast<uint32_t>(1) << iSig)) {
1281+
fHistMan->FillHistClass(Form("DileptonTrackInvMass_matchedMC_%s", fRecMCSignalsNames[iSig].Data()), fValuesTrack);
12841282
}
12851283
}
12861284
}
@@ -1357,7 +1355,7 @@ struct AnalysisDileptonTrackTrack {
13571355
Configurable<bool> fConfigUseDCAVertexing{"cfgUseDCAVertexing", false, "Use DCA for secondary vertex reconstruction (DCAFitter is used by default)"};
13581356

13591357
Produces<aod::DileptonTrackTrackCandidates> DileptonTrackTrackTable;
1360-
HistogramManager* fHistMan;
1358+
HistogramManager* fHistMan = nullptr;
13611359

13621360
std::vector<TString> fRecMCSignalsNames;
13631361
std::vector<MCSignal> fRecMCSignals;
@@ -1368,7 +1366,7 @@ struct AnalysisDileptonTrackTrack {
13681366
Filter dileptonFilter = aod::reducedpair::sign == 0;
13691367
Filter filterBarrelTrackSelected = aod::dqanalysisflags::isBarrelSelected > 0;
13701368

1371-
float* fValuesQuadruplet;
1369+
float* fValuesQuadruplet = nullptr;
13721370

13731371
std::vector<TString> fQuadrupletCutNames;
13741372
AnalysisCompositeCut fDileptonCut;
@@ -1585,9 +1583,9 @@ struct AnalysisDileptonTrackTrack {
15851583
mcDecision |= (static_cast<uint32_t>(1) << isig);
15861584
}
15871585
}
1588-
for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) {
1589-
if (mcDecision & (static_cast<uint32_t>(1) << isig)) {
1590-
fHistMan->FillHistClass(Form("MCTruthRecQuad_%s_%s", fQuadrupletCutNames[iCut].Data(), fRecMCSignalsNames[isig].Data()), fValuesQuadruplet);
1586+
for (unsigned int iSig = 0; iSig < fRecMCSignals.size(); iSig++) {
1587+
if (mcDecision & (static_cast<uint32_t>(1) << iSig)) {
1588+
fHistMan->FillHistClass(Form("MCTruthRecQuad_%s_%s", fQuadrupletCutNames[iCut].Data(), fRecMCSignalsNames[iSig].Data()), fValuesQuadruplet);
15911589
}
15921590
}
15931591
}

0 commit comments

Comments
 (0)