From 47077a15948f8d2d7c2a70be9f171c90da82fbaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Tiek=C3=B6tter?= Date: Thu, 12 Nov 2026 14:16:01 +0100 Subject: [PATCH 1/4] Change type if cut lists from AnalysisCompositeCut to AnalysisCut to prevent a necessary cast. --- PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx | 8 ++++---- PWGDQ/TableProducer/tableMaker_withAssoc.cxx | 12 ++++++------ PWGDQ/Tasks/dqEfficiency_withAssoc.cxx | 4 ++-- PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx | 4 ++-- PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx | 8 ++++---- PWGDQ/Tasks/tableReader_withAssoc.h | 8 ++++---- PWGDQ/Tasks/tableReader_withAssoc_direct.cxx | 8 ++++---- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx index 838d7e79af3..3c52e043349 100644 --- a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx @@ -265,8 +265,8 @@ struct TableMakerMC { o2::parameters::GRPMagField* fGrpMag = nullptr; // for run 3, we access GRPMagField from GLO/Config/GRPMagField AnalysisCompositeCut* fEventCut = nullptr; //! Event selection cut - std::vector fTrackCuts; //! Barrel track cuts - std::vector fMuonCuts; //! Muon track cuts + std::vector fTrackCuts; //! Barrel track cuts + std::vector fMuonCuts; //! Muon track cuts bool fDoDetailedQA = false; // Bool to set detailed QA true, if QA is set true int fCurrentRun = -1; // needed to detect if the run changed and trigger update of calibrations etc. @@ -495,7 +495,7 @@ struct TableMakerMC { if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); for (const auto& t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + fTrackCuts.push_back(t); } } @@ -512,7 +512,7 @@ struct TableMakerMC { if (addMuonCutsStr != "") { std::vector addMuonCuts = dqcuts::GetCutsFromJSON(addMuonCutsStr.Data()); for (const auto& t : addMuonCuts) { - fMuonCuts.push_back(dynamic_cast(t)); + fMuonCuts.push_back(t); } } diff --git a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx index a49d29cb830..1abe6b7eb94 100644 --- a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx @@ -340,9 +340,9 @@ struct TableMaker { o2::parameters::GRPMagField* fGrpMag = nullptr; // for run 3, we access GRPMagField from GLO/Config/GRPMagField AnalysisCompositeCut* fEventCut = nullptr; //! Event selection cut - std::vector fTrackCuts; //! Barrel track cuts - std::vector fMuonCuts; //! Muon track cuts - std::vector fEMCalCuts; //! EMCal cluster cuts + std::vector fTrackCuts; //! Barrel track cuts + std::vector fMuonCuts; //! Muon track cuts + std::vector fEMCalCuts; //! EMCal cluster cuts bool fDoDetailedQA = false; // Bool to set detailed QA true, if QA is set true int fCurrentRun = -1; // needed to detect if the run changed and trigger update of calibrations etc. @@ -614,7 +614,7 @@ struct TableMaker { if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); for (const auto& t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + fTrackCuts.push_back(t); } } @@ -623,7 +623,7 @@ struct TableMaker { if (addEMCalCutsStr != "") { std::vector addEMCalCuts = dqcuts::GetCutsFromJSON(addEMCalCutsStr.Data()); for (const auto& t : addEMCalCuts) { - fEMCalCuts.push_back(dynamic_cast(t)); + fEMCalCuts.push_back(t); } } @@ -640,7 +640,7 @@ struct TableMaker { if (addMuonCutsStr != "") { std::vector addMuonCuts = dqcuts::GetCutsFromJSON(addMuonCutsStr.Data()); for (const auto& t : addMuonCuts) { - fMuonCuts.push_back(dynamic_cast(t)); + fMuonCuts.push_back(t); } } diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index f638e5be9d5..243f9f40bea 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -676,7 +676,7 @@ struct AnalysisTrackSelection { Service fCCDB{}; HistogramManager* fHistMan = nullptr; - std::vector fTrackCuts; + std::vector fTrackCuts; std::vector fMCSignals; // list of signals to be checked std::vector fHistNamesReco; std::vector fHistNamesMCMatched; @@ -706,7 +706,7 @@ struct AnalysisTrackSelection { if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); for (auto const& t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + fTrackCuts.push_back(t); } } VarManager::SetUseVars(AnalysisCut::fgUsedVars); // provide the list of required variables so that VarManager knows what to fill diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx index 7aa37f540c2..99b2945b5b5 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx @@ -609,7 +609,7 @@ struct AnalysisTrackSelection { Service fTofResponse{}; HistogramManager* fHistMan = nullptr; - std::vector fTrackCuts; + std::vector fTrackCuts; std::vector fMCSignals; // list of signals to be checked std::vector fHistNamesReco; std::vector fHistNamesMCMatched; @@ -640,7 +640,7 @@ struct AnalysisTrackSelection { if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); for (const auto& t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + fTrackCuts.push_back(t); } } VarManager::SetUseVars(AnalysisCut::fgUsedVars); // provide the list of required variables so that VarManager knows what to fill diff --git a/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx b/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx index 7bcc2b70076..0ef951c5752 100644 --- a/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx +++ b/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx @@ -155,8 +155,8 @@ struct AnalysisEnergyCorrelator { MixingHandler* fMixHandler = nullptr; AnalysisCompositeCut* fEventCut = nullptr; - std::vector fTrackCuts; // Electron cuts - std::vector fHadronCuts; // Hadron cuts + std::vector fTrackCuts; // Electron cuts + std::vector fHadronCuts; // Hadron cuts std::vector fTrackCutNames; std::vector fHadronCutNames; @@ -240,7 +240,7 @@ struct AnalysisEnergyCorrelator { if (trackCutsJSON != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(trackCutsJSON.Data()); for (auto& t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + fTrackCuts.push_back(t); fTrackCutNames.push_back(t->GetName()); trackCutStr += Form(",%s", t->GetName()); } @@ -313,7 +313,7 @@ struct AnalysisEnergyCorrelator { if (hadronCutsJSON != "") { std::vector addHadronCuts = dqcuts::GetCutsFromJSON(hadronCutsJSON.Data()); for (auto& t : addHadronCuts) { - fHadronCuts.push_back(dynamic_cast(t)); + fHadronCuts.push_back(t); fHadronCutNames.push_back(t->GetName()); hadronCutStr += Form(",%s", t->GetName()); } diff --git a/PWGDQ/Tasks/tableReader_withAssoc.h b/PWGDQ/Tasks/tableReader_withAssoc.h index bdef445bbc6..f9e6a6f2502 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc.h +++ b/PWGDQ/Tasks/tableReader_withAssoc.h @@ -803,7 +803,7 @@ struct AnalysisTrackSelection { o2::ccdb::CcdbApi fCCDBApi; HistogramManager* fHistMan = nullptr; - std::vector fTrackCuts; + std::vector fTrackCuts; int fCurrentRun = 0; // current run kept to detect run changes and trigger loading params from CCDB @@ -831,7 +831,7 @@ struct AnalysisTrackSelection { if (addTrackCutsStr != "") { std::vector addTrackCuts = o2::aod::dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); for (auto const& t : addTrackCuts) { - fTrackCuts.push_back(reinterpret_cast(t)); + fTrackCuts.push_back(t); } } @@ -1085,7 +1085,7 @@ struct AnalysisMuonSelection { o2::framework::Service fCCDB{}; HistogramManager* fHistMan = nullptr; - std::vector fMuonCuts; + std::vector fMuonCuts; int fCurrentRun = 0; // current run kept to detect run changes and trigger loading params from CCDB @@ -1112,7 +1112,7 @@ struct AnalysisMuonSelection { if (addCutsStr != "") { std::vector addCuts = o2::aod::dqcuts::GetCutsFromJSON(addCutsStr.Data()); for (auto const& t : addCuts) { - fMuonCuts.push_back(dynamic_cast(t)); + fMuonCuts.push_back(t); } } diff --git a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx index 405047e8fa5..90e7baaec3d 100644 --- a/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/tableReader_withAssoc_direct.cxx @@ -675,7 +675,7 @@ struct AnalysisTrackSelection { Service fTofResponse{}; HistogramManager* fHistMan = nullptr; - std::vector fTrackCuts; + std::vector fTrackCuts; std::vector fHistNamesReco; int fCurrentRun = 0; // current run (needed to detect run changes for loading CCDB parameters) @@ -706,7 +706,7 @@ struct AnalysisTrackSelection { if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); for (auto& t : addTrackCuts) { - fTrackCuts.push_back(dynamic_cast(t)); + fTrackCuts.push_back(t); } } @@ -1119,7 +1119,7 @@ struct AnalysisMuonSelection { Service fCCDB{}; HistogramManager* fHistMan = nullptr; - std::vector fMuonCuts; + std::vector fMuonCuts; int fCurrentRun = 0; @@ -1146,7 +1146,7 @@ struct AnalysisMuonSelection { if (addCutsStr != "") { std::vector addCuts = dqcuts::GetCutsFromJSON(addCutsStr.Data()); for (auto& t : addCuts) { - fMuonCuts.push_back(dynamic_cast(t)); + fMuonCuts.push_back(t); } } From 0c764a6c6eabf8291253c138205735040078b787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Tiek=C3=B6tter?= Date: Thu, 12 Nov 2026 14:36:44 +0100 Subject: [PATCH 2/4] Apply clang-format --- PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx | 6 +++--- PWGDQ/TableProducer/tableMaker_withAssoc.cxx | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx index 3c52e043349..d4c9f5bec3e 100644 --- a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx @@ -264,9 +264,9 @@ struct TableMakerMC { o2::parameters::GRPObject* fGrpMagRun2 = nullptr; // for run 2, we access the GRPObject from GLO/GRP/GRP o2::parameters::GRPMagField* fGrpMag = nullptr; // for run 3, we access GRPMagField from GLO/Config/GRPMagField - AnalysisCompositeCut* fEventCut = nullptr; //! Event selection cut - std::vector fTrackCuts; //! Barrel track cuts - std::vector fMuonCuts; //! Muon track cuts + AnalysisCompositeCut* fEventCut = nullptr; //! Event selection cut + std::vector fTrackCuts; //! Barrel track cuts + std::vector fMuonCuts; //! Muon track cuts bool fDoDetailedQA = false; // Bool to set detailed QA true, if QA is set true int fCurrentRun = -1; // needed to detect if the run changed and trigger update of calibrations etc. diff --git a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx index 1abe6b7eb94..a5fb3e58c34 100644 --- a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx @@ -339,10 +339,10 @@ struct TableMaker { o2::parameters::GRPObject* fGrpMagRun2 = nullptr; // for run 2, we access the GRPObject from GLO/GRP/GRP o2::parameters::GRPMagField* fGrpMag = nullptr; // for run 3, we access GRPMagField from GLO/Config/GRPMagField - AnalysisCompositeCut* fEventCut = nullptr; //! Event selection cut - std::vector fTrackCuts; //! Barrel track cuts - std::vector fMuonCuts; //! Muon track cuts - std::vector fEMCalCuts; //! EMCal cluster cuts + AnalysisCompositeCut* fEventCut = nullptr; //! Event selection cut + std::vector fTrackCuts; //! Barrel track cuts + std::vector fMuonCuts; //! Muon track cuts + std::vector fEMCalCuts; //! EMCal cluster cuts bool fDoDetailedQA = false; // Bool to set detailed QA true, if QA is set true int fCurrentRun = -1; // needed to detect if the run changed and trigger update of calibrations etc. From 0848657aaa2544ab3c21f125ed1079ec537d6738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Tiek=C3=B6tter?= Date: Thu, 12 Nov 2026 15:18:30 +0100 Subject: [PATCH 3/4] Fix MegaLinter error in dqEnergyCorrelator_cirect --- PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx | 34 +++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx b/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx index 0ef951c5752..77440bbe029 100644 --- a/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx +++ b/PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx @@ -182,12 +182,12 @@ struct AnalysisEnergyCorrelator { using MixingBinning = ColumnBinningPolicy; std::unique_ptr fMixingBinning; - TH2F* hAcceptance_rec; - TH2F* hAcceptance_gen; - TH2F* hEfficiency_dilepton; - TH2F* hEfficiency_hadron; - TH1F* hMasswindow; - TH2F* hReweighthadron; + TH2F* hAcceptance_rec = nullptr; + TH2F* hAcceptance_gen = nullptr; + TH2F* hEfficiency_dilepton = nullptr; + TH2F* hEfficiency_hadron = nullptr; + TH1F* hMasswindow = nullptr; + TH2F* hReweighthadron = nullptr; void init(o2::framework::InitContext& context) { @@ -651,26 +651,26 @@ struct AnalysisEnergyCorrelator { VarManager::FillPair(t1, t2); VarManager::FillPairVertexing(event, t1, t2, VarManager::fgValues); - if (sign1 * sign2 < 0) { // +- pairs - fHistMan->FillHistClass(histNames[iEleCut][0].Data(), VarManager::fgValues); // reconstructed, unmatched - for (size_t isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals - if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(histNamesMC[iEleCut * fRecMCSignals.size() + isig][0].Data(), VarManager::fgValues); // matched signal + if (sign1 * sign2 < 0) { // +- pairs + fHistMan->FillHistClass(histNames[iEleCut][0].Data(), VarManager::fgValues); // reconstructed, unmatched + for (size_t mcRecSignal = 0; mcRecSignal < fRecMCSignals.size(); mcRecSignal++) { // loop over MC signals + if (mcDecision & (static_cast(1) << mcRecSignal)) { + fHistMan->FillHistClass(histNamesMC[iEleCut * fRecMCSignals.size() + mcRecSignal][0].Data(), VarManager::fgValues); // matched signal } } } else { if (sign1 > 0) { // ++ pairs fHistMan->FillHistClass(histNames[iEleCut][1].Data(), VarManager::fgValues); - for (size_t isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals - if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(histNamesMC[iEleCut * fRecMCSignals.size() + isig][1].Data(), VarManager::fgValues); + for (size_t mcRecSignal = 0; mcRecSignal < fRecMCSignals.size(); mcRecSignal++) { // loop over MC signals + if (mcDecision & (static_cast(1) << mcRecSignal)) { + fHistMan->FillHistClass(histNamesMC[iEleCut * fRecMCSignals.size() + mcRecSignal][1].Data(), VarManager::fgValues); } } } else { // -- pairs fHistMan->FillHistClass(histNames[iEleCut][2].Data(), VarManager::fgValues); - for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals - if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(histNamesMC[iEleCut * fRecMCSignals.size() + isig][2].Data(), VarManager::fgValues); + for (unsigned int mcRecSignal = 0; mcRecSignal < fRecMCSignals.size(); mcRecSignal++) { // loop over MC signals + if (mcDecision & (static_cast(1) << mcRecSignal)) { + fHistMan->FillHistClass(histNamesMC[iEleCut * fRecMCSignals.size() + mcRecSignal][2].Data(), VarManager::fgValues); } } } From ee224a7cbdad79c72653397700aeda0f40f78b32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Tiek=C3=B6tter?= Date: Thu, 12 Nov 2026 15:24:36 +0100 Subject: [PATCH 4/4] Change missing muon cut --- PWGDQ/Tasks/dqEfficiency_withAssoc.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx index 243f9f40bea..51a9611bc31 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx @@ -1011,7 +1011,7 @@ struct AnalysisMuonSelection { Service fCCDB{}; HistogramManager* fHistMan = nullptr; - std::vector fMuonCuts; + std::vector fMuonCuts; std::vector fHistNamesReco; std::vector fHistNamesMCMatched; std::vector fMCSignals; // list of signals to be checked @@ -1041,7 +1041,7 @@ struct AnalysisMuonSelection { if (addCutsStr != "") { std::vector addCuts = dqcuts::GetCutsFromJSON(addCutsStr.Data()); for (auto const& t : addCuts) { - fMuonCuts.push_back(dynamic_cast(t)); + fMuonCuts.push_back(t); } } VarManager::SetUseVars(AnalysisCut::fgUsedVars); // provide the list of required variables so that VarManager knows what to fill