Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
308 changes: 114 additions & 194 deletions PWGDQ/Core/VarManager.h

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1427,6 +1427,8 @@ struct TableMakerMC {
if constexpr (static_cast<bool>(TMFTFillMap & VarManager::ObjTypes::MFTCov)) {
if (fConfigVariousOptions.fUseML.value) {
skimBestMuonMatchesML(muons, mftTracks, mftCovs, collision);
} else {
skimBestMuonMatches(muons);
}
} else {
skimBestMuonMatches(muons);
Expand Down
70 changes: 34 additions & 36 deletions PWGDQ/Tasks/dqEfficiency.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ struct AnalysisEventSelection {
Configurable<std::string> fConfigEventCuts{"cfgEventCuts", "eventStandard", "Event selection"};
Configurable<bool> fConfigQA{"cfgQA", false, "If true, fill QA histograms"};

HistogramManager* fHistMan;
AnalysisCompositeCut* fEventCut;
HistogramManager* fHistMan = nullptr;
AnalysisCompositeCut* fEventCut = nullptr;

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

HistogramManager* fHistMan;
HistogramManager* fHistMan = nullptr;
std::vector<AnalysisCompositeCut> fTrackCuts;
std::vector<MCSignal> fMCSignals; // list of signals to be checked
std::vector<TString> fHistNamesReco;
Expand Down Expand Up @@ -305,13 +305,13 @@ struct AnalysisTrackSelection {
}

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

HistogramManager* fHistMan;
HistogramManager* fHistMan = nullptr;
std::vector<AnalysisCompositeCut> fTrackCuts;
std::vector<MCSignal> fMCSignals; // list of signals to be checked
std::vector<TString> fHistNamesReco;
Expand Down Expand Up @@ -478,13 +478,13 @@ struct AnalysisMuonSelection {
}

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

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

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

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

dileptonFilterMap = twoTrackFilter;
dileptonMcDecision = mcDecision;
if (!fConfigSkimSignalOnly || (fConfigSkimSignalOnly && mcDecision > 0)) {
if (!fConfigSkimSignalOnly || mcDecision > 0) {
if constexpr (TPairType == VarManager::kDecayToEE) {
dielectronList(event, VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), dileptonFilterMap, dileptonMcDecision);
if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackCollInfo) > 0) {
Expand Down Expand Up @@ -882,11 +882,11 @@ struct AnalysisSameEventPairing {
if (fConfigAmbiguousHist && !(t1.isAmbiguous() || t2.isAmbiguous())) {
fHistMan->FillHistClass(Form("%s_unambiguous", histNames[icut][0].Data()), VarManager::fgValues);
}
for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) {
if (mcDecision & (static_cast<uint32_t>(1) << isig)) {
fHistMan->FillHistClass(histNamesMCmatched[icut][isig].Data(), VarManager::fgValues);
for (unsigned int iSig = 0; iSig < fRecMCSignals.size(); iSig++) {
if (mcDecision & (static_cast<uint32_t>(1) << iSig)) {
fHistMan->FillHistClass(histNamesMCmatched[icut][iSig].Data(), VarManager::fgValues);
if (fConfigAmbiguousHist && !(t1.isAmbiguous() || t2.isAmbiguous())) {
fHistMan->FillHistClass(Form("%s_unambiguous", histNamesMCmatched[icut][isig].Data()), VarManager::fgValues);
fHistMan->FillHistClass(Form("%s_unambiguous", histNamesMCmatched[icut][iSig].Data()), VarManager::fgValues);
}
}
}
Expand Down Expand Up @@ -1071,12 +1071,10 @@ struct AnalysisDileptonTrack {
constexpr static uint32_t fgDileptonFillMap = VarManager::ObjTypes::ReducedTrack | VarManager::ObjTypes::Pair; // fill map

// use two values array to avoid mixing up the quantities
float* fValuesDilepton;
float* fValuesTrack;
HistogramManager* fHistMan;
float* fValuesDilepton = nullptr;
float* fValuesTrack = nullptr;
HistogramManager* fHistMan = nullptr;

std::vector<std::vector<TString>> fMuonHistNames;
std::vector<std::vector<TString>> fMuonHistNamesMCmatched;
std::vector<TString> fRecMCSignalsNames;

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

void init(o2::framework::InitContext& context)
{
Expand Down Expand Up @@ -1242,9 +1240,9 @@ struct AnalysisDileptonTrack {
}
} // end loop over MC signals

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

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

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

Produces<aod::DileptonTrackTrackCandidates> DileptonTrackTrackTable;
HistogramManager* fHistMan;
HistogramManager* fHistMan = nullptr;

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

float* fValuesQuadruplet;
float* fValuesQuadruplet = nullptr;

std::vector<TString> fQuadrupletCutNames;
AnalysisCompositeCut fDileptonCut;
Expand Down Expand Up @@ -1585,9 +1583,9 @@ struct AnalysisDileptonTrackTrack {
mcDecision |= (static_cast<uint32_t>(1) << isig);
}
}
for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) {
if (mcDecision & (static_cast<uint32_t>(1) << isig)) {
fHistMan->FillHistClass(Form("MCTruthRecQuad_%s_%s", fQuadrupletCutNames[iCut].Data(), fRecMCSignalsNames[isig].Data()), fValuesQuadruplet);
for (unsigned int iSig = 0; iSig < fRecMCSignals.size(); iSig++) {
if (mcDecision & (static_cast<uint32_t>(1) << iSig)) {
fHistMan->FillHistClass(Form("MCTruthRecQuad_%s_%s", fQuadrupletCutNames[iCut].Data(), fRecMCSignalsNames[iSig].Data()), fValuesQuadruplet);
}
}
}
Expand Down
Loading
Loading