diff --git a/PWGDQ/Core/CutsLibrary.cxx b/PWGDQ/Core/CutsLibrary.cxx index 187a1ec1700..13588d9af4a 100644 --- a/PWGDQ/Core/CutsLibrary.cxx +++ b/PWGDQ/Core/CutsLibrary.cxx @@ -541,13 +541,6 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName) return cut; } - if (nameStr == "JpsiPWGSkimmedCuts1") { // please do not remove or modify, this is used for the common Skimmed tree production, (Xiaozhi Bai) - cut->AddCut(GetAnalysisCut("jpsiKineSkimmed")); - cut->AddCut(GetAnalysisCut("electronTrackQualitySkimmed")); - cut->AddCut(GetAnalysisCut("electronPIDLooseSkimmed")); - return cut; - } - if (nameStr == "JpsiPWGSkimmedCuts2") { cut->AddCut(GetAnalysisCut("jpsiKineSkimmed")); cut->AddCut(GetAnalysisCut("electronTrackQualitySkimmed")); @@ -4278,7 +4271,7 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } - if (nameStr == "eventStandardSel8PbPbQualityTightTrackOccupancyCollInTime") { + if (nameStr == "eventStandardSel8PbPbQualityTightTrackOccupancyCollInTime2") { cut->AddCut(VarManager::kVtxZ, -10.0, 10.0); cut->AddCut(VarManager::kIsSel8, 0.5, 1.5); cut->AddCut(VarManager::kIsNoTFBorder, 0.5, 1.5); @@ -4672,12 +4665,6 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) return cut; } - if (nameStr == "jpsiKineSkimmed") { - cut->AddCut(VarManager::kPt, 0.7, 1000.0); - cut->AddCut(VarManager::kEta, -0.9, 0.9); - return cut; - } - if (nameStr == "lmeePrefilterKine") { cut->AddCut(VarManager::kPt, 0., 20.0); cut->AddCut(VarManager::kEta, -1.2, 1.2); @@ -5471,7 +5458,7 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) for (int i = 1; i <= 8; i++) { // o2-linter: disable=magic-number (number of cuts) if (nameStr == Form("dalitzLeg%d", i)) { - cut->AddCut(VarManager::kIsDalitzLeg + i - 1, 0.5, 1.5); + cut->AddCut(VarManager::kIsDalitzLeg + i - 1, -0.5, 0.5, true); return cut; } @@ -5482,17 +5469,17 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName) } if (nameStr == "pidcalib_ele") { - cut->AddCut(VarManager::kIsLegFromGamma, 0.5, 1.5, false); + cut->AddCut(VarManager::kIsLegFromGamma, -0.5, 0.5, true); return cut; } if (nameStr == "pidcalib_pion") { - cut->AddCut(VarManager::kIsLegFromK0S, 0.5, 1.5, false); + cut->AddCut(VarManager::kIsLegFromK0S, -0.5, 0.5, true); return cut; } if (nameStr == "pidcalib_proton") { - cut->AddCut(VarManager::kIsProtonFromLambdaAndAntiLambda, 0.5, 1.5, false); + cut->AddCut(VarManager::kIsProtonFromLambdaAndAntiLambda, -0.5, 0.5, true); return cut; } @@ -7937,9 +7924,7 @@ o2::aod::dqmlcuts::BdtScoreConfig o2::aod::dqmlcuts::GetBdtScoreCutsAndConfigFro } } - if (!cutDirsFilled) { - cutDirsFilled = true; - } + cutDirsFilled = true; centBins.emplace_back(centMin, centMax); ptBins.emplace_back(ptMin, ptMax); @@ -7988,9 +7973,10 @@ o2::aod::dqmlcuts::BdtScoreConfig o2::aod::dqmlcuts::GetBdtScoreCutsAndConfigFro binaryCfg.cutsMl = makeLabeledCutsMl(cutsMl, labelsFlatBin, labelsClass); return binaryCfg; + } - // MultiClass - } else if (typeStr == "MultiClass") { + // MultiClass + if (typeStr == "MultiClass") { dqmlcuts::MultiClassBdtScoreConfig multiCfg; multiCfg.inputFeatures = namesInputFeatures; multiCfg.onnxFiles = onnxFileNames; diff --git a/PWGDQ/Core/MCSignalLibrary.cxx b/PWGDQ/Core/MCSignalLibrary.cxx index bdd86156c7d..af5677d07d7 100644 --- a/PWGDQ/Core/MCSignalLibrary.cxx +++ b/PWGDQ/Core/MCSignalLibrary.cxx @@ -522,6 +522,18 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) signal = new MCSignal(name, "Electrons from pi0 decays", {prong}, {-1}); return signal; } + if (nameStr == "ePrimaryFromPi0") { + MCProng prong(2, {11, 111}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + prong.SetSourceBit(0, MCProng::kPhysicalPrimary); + signal = new MCSignal(name, "Electrons from primary pi0 decays", {prong}, {-1}); + return signal; + } + if (nameStr == "eSecondaryFromPi0") { + MCProng prong(2, {11, 111}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + prong.SetSourceBit(0, MCProng::kPhysicalPrimary, true); + signal = new MCSignal(name, "Electrons from secondary pi0 decays", {prong}, {-1}); + return signal; + } if (nameStr == "ePrimaryFromPromptPi0") { MCProng prong(2, {11, 111}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}, false, {502, 402}, {true, true}); prong.SetSourceBit(0, MCProng::kPhysicalPrimary); @@ -533,6 +545,18 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) signal = new MCSignal(name, "Electrons from eta decays", {prong}, {-1}); return signal; } + if (nameStr == "ePrimaryFromEta") { + MCProng prong(2, {11, 221}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + prong.SetSourceBit(0, MCProng::kPhysicalPrimary); + signal = new MCSignal(name, "Electrons from primary eta decays", {prong}, {-1}); + return signal; + } + if (nameStr == "eSecondaryFromEta") { + MCProng prong(2, {11, 221}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + prong.SetSourceBit(0, MCProng::kPhysicalPrimary, true); + signal = new MCSignal(name, "Electrons from secondary eta decays", {prong}, {-1}); + return signal; + } if (nameStr == "eFromEtaPrime") { MCProng prong(2, {11, 331}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); signal = new MCSignal(name, "Electrons from eta' decays", {prong}, {-1}); @@ -885,6 +909,12 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) //_________________________________________________________________________________________________________________________ // LMEE pair signals for LF, same mother + if (nameStr == "eeDuplicated") { // check whether we have two tracks pointing to the same MC particle + MCProng prong(1, {11}, {true}, {false}, {0}, {0}, {false}); + prong.SetSourceBit(0, MCProng::kPhysicalPrimary); + signal = new MCSignal(name, "duplicated electron", {prong, prong}, {0, 0}); // signal at pair level + return signal; + } if (nameStr == "eeFromAnything") { MCProng prong(2, {11, MCProng::kPDGCodeNotAssigned}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); prong.SetSourceBit(0, MCProng::kPhysicalPrimary); @@ -897,6 +927,12 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) signal = new MCSignal(name, "ee pairs from pi0 decays", {prong, prong}, {1, 1}); // signal at pair level return signal; } + if (nameStr == "eeSecondaryFromPi0") { + MCProng prong(2, {11, 111}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + prong.SetSourceBit(0, MCProng::kPhysicalPrimary, true); + signal = new MCSignal(name, "ee secondary pairs from pi0 decays", {prong, prong}, {1, 1}); // signal at pair level + return signal; + } if (nameStr == "eePrimaryFromPromptPi0") { MCProng prong(2, {11, 111}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}, false, {502, 402}, {true, true}); prong.SetSourceBit(0, MCProng::kPhysicalPrimary); @@ -909,6 +945,12 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) signal = new MCSignal(name, "ee pairs from eta decays", {prong, prong}, {1, 1}); // signal at pair level return signal; } + if (nameStr == "eeSecondaryFromEta") { + MCProng prong(2, {11, 221}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); + prong.SetSourceBit(0, MCProng::kPhysicalPrimary, true); + signal = new MCSignal(name, "ee pairs from eta decays", {prong, prong}, {1, 1}); // signal at pair level + return signal; + } if (nameStr == "eeFromEtaprime") { MCProng prong(2, {11, 331}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); prong.SetSourceBit(0, MCProng::kPhysicalPrimary); @@ -1769,7 +1811,7 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) signal = new MCSignal(name, "Jpsi from Chic2 decays", {prong}, {1}); return signal; } - if (nameStr == "JpsiFromChic2") { + if (nameStr == "JpsiFromChic") { MCProng prong(2, {443, 904}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}); prong.SetSourceBit(0, MCProng::kPhysicalPrimary); signal = new MCSignal(name, "Jpsi from Chic0, Chic1 or Chic2 decays", {prong}, {1}); @@ -2038,6 +2080,8 @@ MCSignal* o2::aod::dqmcsignals::GetMCSignal(const char* name) signal = new MCSignal(name, "anyprimary and electron pair from non-prompt jpsi", {pronge, pronge, prongPrimary}, {1, 1, -1}); return signal; } + + LOGF(warn, "Did not find MC signal %s", nameStr); return nullptr; } @@ -2080,10 +2124,10 @@ std::vector o2::aod::dqmcsignals::GetMCSignalsFromJSON(const char* js if (!ValidateJSONMCSignal(&signal, sigName)) { LOG(fatal) << "MCSignal JSON not properly defined for " << sigName << ". Skipping"; continue; - } else { - LOG(debug) << "MCSignal validated"; } + LOG(debug) << "MCSignal validated"; + // Get the signal title const char* title = (signal.HasMember("title") ? signal.FindMember("title")->value.GetString() : ""); LOG(info) << "Title is: " << title; @@ -2121,7 +2165,7 @@ std::vector o2::aod::dqmcsignals::GetMCSignalsFromJSON(const char* js // Get the common ancestors array std::vector commonAncestors; if (signal.HasMember("commonAncestors")) { - for (auto& v : signal.FindMember("commonAncestors")->value.GetArray()) { + for (const auto& v : signal.FindMember("commonAncestors")->value.GetArray()) { commonAncestors.push_back(v.GetInt()); LOG(debug) << "common ancestor " << v.GetInt(); } @@ -2131,7 +2175,7 @@ std::vector o2::aod::dqmcsignals::GetMCSignalsFromJSON(const char* js } } - if (prongs.size() == 0) { + if (prongs.empty()) { LOG(fatal) << "No prongs were defined for this MCSignal!"; return signals; } @@ -2196,13 +2240,13 @@ bool o2::aod::dqmcsignals::ValidateJSONMCProng(T prongJSON, const char* prongNam return false; } std::vector nSourceBits; - for (auto& ii : prongJSON->FindMember("sourceBits")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("sourceBits")->value.GetArray()) { if (!ii.IsArray()) { LOG(fatal) << "The sourceBits field should be an array of arrays of MCProng::Source"; return false; } nSourceBits.push_back(ii.GetArray().Size()); - for (auto& iii : ii.GetArray()) { + for (const auto& iii : ii.GetArray()) { if (MCProng::fgSourceNames.find(iii.GetString()) == MCProng::fgSourceNames.end()) { LOG(fatal) << "Source " << iii.GetString() << " not implemented in MCProng"; return false; @@ -2215,7 +2259,7 @@ bool o2::aod::dqmcsignals::ValidateJSONMCProng(T prongJSON, const char* prongNam return false; } int iElem = 0; - for (auto& ii : prongJSON->FindMember("excludeSource")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("excludeSource")->value.GetArray()) { if (!ii.IsArray()) { LOG(fatal) << "The excludeSource field should be an array of arrays of bool"; return false; @@ -2293,13 +2337,13 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa LOG(debug) << "n: " << n; // Get the array of PDG codes std::vector pdgs; - for (auto& pdg : prongJSON->FindMember("pdgs")->value.GetArray()) { + for (const auto& pdg : prongJSON->FindMember("pdgs")->value.GetArray()) { pdgs.push_back(pdg.GetInt()); LOG(debug) << "pdgs: " << pdg.GetInt(); } // get the array of booleans for check both charges option std::vector checkBothCharges; - for (auto& ii : prongJSON->FindMember("checkBothCharges")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("checkBothCharges")->value.GetArray()) { checkBothCharges.push_back(ii.GetBool()); LOG(debug) << "check both charges " << ii.GetBool(); } @@ -2307,7 +2351,7 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa // get the array of booleans for the excludePDG option, defaults to false std::vector excludePDG; if (prongJSON->HasMember("excludePDG")) { - for (auto& ii : prongJSON->FindMember("excludePDG")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("excludePDG")->value.GetArray()) { excludePDG.push_back(ii.GetBool()); LOG(debug) << "exclude pdg " << ii.GetBool(); } @@ -2320,9 +2364,9 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa // get the source bits, and transform from string to int std::vector> sourceBitsVec; if (prongJSON->HasMember("sourceBits")) { - for (auto& ii : prongJSON->FindMember("sourceBits")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("sourceBits")->value.GetArray()) { std::vector sourceBits; - for (auto& iii : ii.GetArray()) { + for (const auto& iii : ii.GetArray()) { sourceBits.push_back(MCProng::fgSourceNames[iii.GetString()]); LOG(debug) << "source bit " << iii.GetString(); } @@ -2332,9 +2376,9 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa // prepare the exclusion source options if specified std::vector> excludeSourceVec; if (prongJSON->HasMember("excludeSource")) { - for (auto& ii : prongJSON->FindMember("excludeSource")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("excludeSource")->value.GetArray()) { std::vector excludeSource; - for (auto& iii : ii.GetArray()) { + for (const auto& iii : ii.GetArray()) { excludeSource.push_back(iii.GetBool()); LOG(debug) << "exclude source bit " << iii.GetBool(); } @@ -2345,7 +2389,7 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa // prepare the useANDonSourceBitMap vector, defaults to true for each generation std::vector useANDonSourceBitMap; if (prongJSON->HasMember("useANDonSourceBitMap")) { - for (auto& ii : prongJSON->FindMember("useANDonSourceBitMap")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("useANDonSourceBitMap")->value.GetArray()) { useANDonSourceBitMap.push_back(ii.GetBool()); LOG(debug) << "use AND on source map " << ii.GetBool(); } @@ -2360,12 +2404,12 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa int igen = 0; std::vector sBitsVec; std::vector sBitsExcludeVec; - for (auto& itgen : sourceBitsVec) { + for (const auto& itgen : sourceBitsVec) { int is = 0; uint64_t sBits = 0; uint64_t sBitsExclude = 0; auto excludeVec = (hasExclude ? excludeSourceVec[igen] : std::vector{}); - for (auto& s : itgen) { + for (const auto& s : itgen) { bool exclude = (hasExclude ? excludeVec[is] : false); if (s != MCProng::kNothing) { sBits |= (static_cast(1) << s); @@ -2414,7 +2458,7 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa std::vector checkIfPDGInHistory = {}; if (prongJSON->HasMember("checkIfPDGInHistory")) { - for (auto& ii : prongJSON->FindMember("checkIfPDGInHistory")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("checkIfPDGInHistory")->value.GetArray()) { checkIfPDGInHistory.push_back(ii.GetInt()); LOG(debug) << "checkIfPDGInHistory: " << ii.GetInt(); } @@ -2422,7 +2466,7 @@ MCProng* o2::aod::dqmcsignals::ParseJSONMCProng(T prongJSON, const char* prongNa std::vector excludePDGInHistory = {}; if (prongJSON->HasMember("excludePDGInHistory")) { - for (auto& ii : prongJSON->FindMember("excludePDGInHistory")->value.GetArray()) { + for (const auto& ii : prongJSON->FindMember("excludePDGInHistory")->value.GetArray()) { excludePDGInHistory.push_back(ii.GetBool()); LOG(debug) << "excludePDGInHistory: " << ii.GetBool(); } diff --git a/PWGDQ/Tasks/DalitzSelection.cxx b/PWGDQ/Tasks/DalitzSelection.cxx index 4c3a6a7e581..e0452279ab2 100644 --- a/PWGDQ/Tasks/DalitzSelection.cxx +++ b/PWGDQ/Tasks/DalitzSelection.cxx @@ -129,6 +129,7 @@ struct DalitzSelection { Configurable fUseRemoteField{"cfgUseRemoteField", true, "Chose whether to fetch the magnetic field from ccdb or set it manually"}; Configurable fConfigMagField{"cfgMagField", 5.0f, "Manually set magnetic field"}; Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; + Configurable fConfigBitsToPropagate{"cfgBitsToPropagate", 0, "bits to propagate for further analysis (e.g. MC true analysis): 0 = only probe bits (checking selected signals), 1 = tag and probe bits (checking pairs), 2 = tag and probe bits selected from like-sign (checking LS pairs)"}; } fConfigOptions; Service fCCDB{}; @@ -142,6 +143,7 @@ struct DalitzSelection { std::map fTrackmapProbe; // whether it is selected with probe cut std::map fDalitzmap; // whether it is selected as dalitz decay daughter with symmetric or tag cut std::map fDalitzmapProbe; // whether it is selected as dalitz decay daughter with probe cut + std::map fDalitzmapLS; // whether it is selected as decay daughter of a LS pair // maps to remove ambiguities std::map fDalitzmapAmbiguity; @@ -578,6 +580,10 @@ struct DalitzSelection { } else { if (fConfigOptions.fQA && !isPairAlreadySelected) { fHistMan->FillHistClass(fIsTagAndProbe ? Form("PairLS_%s_%s_%s", (*trackCut).GetName(), fTrackCutsProbe.at(icut).GetName(), (*pairCut).GetName()) : Form("PairLS_%s_%s", (*trackCut).GetName(), (*pairCut).GetName()), static_cast(VarManager::fgValues)); + if (fConfigOptions.fConfigBitsToPropagate == 2) { + fDalitzmapLS[trackIdx1] |= (uint8_t(1) << icut); + fDalitzmapLS[trackIdx2] |= (uint8_t(1) << icut); + } } } // end if like-sign } // end if isSelected @@ -673,7 +679,7 @@ struct DalitzSelection { uint32_t bitMask = (static_cast(1) << 8); fMixingEvent->ClearFilteringMask(bitMask); - for (auto& poolEvent : pool.events) { + for (auto& poolEvent : pool.events) { // o2-linter: disable=const-ref-in-for-loop (false positive, it cannot be made const since it is modified within the loop) if ((poolEvent.filteringMask & static_cast(255)) == 0) { // all other bits have been erased, so we can also mark bit 8 for deletion poolEvent.filteringMask |= bitMask; @@ -730,6 +736,8 @@ struct DalitzSelection { VarManager::fgValues[VarManager::kPt2] = t2.pt; VarManager::fgValues[VarManager::kEta2] = t2.eta; VarManager::fgValues[VarManager::kPhi2] = t2.phi; + VarManager::fgValues[VarManager::kDeltaEtaPair2] = t1.eta - t2.eta; + VarManager::fgValues[VarManager::kDeltaPhiPair] = t1.phi - t2.phi; } bool isLS = (t1.filteringFlags & (static_cast(1) << 8)) == (t2.filteringFlags & (static_cast(1) << 8)); for (uint32_t icut = 0; icut < fPairCuts.size(); icut++) { @@ -801,6 +809,7 @@ struct DalitzSelection { const int pairType = VarManager::kDecayToEE; fDalitzmap.clear(); fDalitzmapProbe.clear(); + fDalitzmapLS.clear(); bool initDFDone = false; // some quantities might need to be updated for each dataframe @@ -847,8 +856,20 @@ struct DalitzSelection { } if (fIsOutputRequested) { - for (const auto& track : tracks) { // Fill dalitz bits - dalitzbits(fIsTagAndProbe ? fDalitzmapProbe[track.globalIndex()] : fDalitzmap[track.globalIndex()]); + if (fConfigOptions.fConfigBitsToPropagate == 0) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fIsTagAndProbe ? fDalitzmapProbe[track.globalIndex()] : fDalitzmap[track.globalIndex()]); + } + } + if (fConfigOptions.fConfigBitsToPropagate == 1) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fDalitzmapProbe[track.globalIndex()] | fDalitzmap[track.globalIndex()]); + } + } + if (fConfigOptions.fConfigBitsToPropagate == 2) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fDalitzmapLS[track.globalIndex()]); + } } } } @@ -859,6 +880,7 @@ struct DalitzSelection { const int pairType = VarManager::kDecayToEE; fDalitzmap.clear(); fDalitzmapProbe.clear(); + fDalitzmapLS.clear(); fDalitzmapAmbiguity.clear(); fDalitzmapProbeAmbiguity.clear(); fAmbiguousPairs.clear(); @@ -909,8 +931,20 @@ struct DalitzSelection { } if (fIsOutputRequested) { - for (const auto& track : tracks) { // Fill dalitz bits - dalitzbits(fIsTagAndProbe ? fDalitzmapProbe[track.globalIndex()] : fDalitzmap[track.globalIndex()]); + if (fConfigOptions.fConfigBitsToPropagate == 0) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fIsTagAndProbe ? fDalitzmapProbe[track.globalIndex()] : fDalitzmap[track.globalIndex()]); + } + } + if (fConfigOptions.fConfigBitsToPropagate == 1) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fDalitzmapProbe[track.globalIndex()] | fDalitzmap[track.globalIndex()]); + } + } + if (fConfigOptions.fConfigBitsToPropagate == 2) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fDalitzmapLS[track.globalIndex()]); + } } } } @@ -921,6 +955,7 @@ struct DalitzSelection { const int pairType = VarManager::kDecayToEE; fDalitzmap.clear(); fDalitzmapProbe.clear(); + fDalitzmapLS.clear(); fDalitzmapAmbiguity.clear(); fDalitzmapProbeAmbiguity.clear(); fAmbiguousPairs.clear(); @@ -971,8 +1006,20 @@ struct DalitzSelection { } if (fIsOutputRequested) { - for (const auto& track : tracks) { // Fill dalitz bits - dalitzbits(fIsTagAndProbe ? fDalitzmapProbe[track.globalIndex()] : fDalitzmap[track.globalIndex()]); + if (fConfigOptions.fConfigBitsToPropagate == 0) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fIsTagAndProbe ? fDalitzmapProbe[track.globalIndex()] : fDalitzmap[track.globalIndex()]); + } + } + if (fConfigOptions.fConfigBitsToPropagate == 1) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fDalitzmapProbe[track.globalIndex()] | fDalitzmap[track.globalIndex()]); + } + } + if (fConfigOptions.fConfigBitsToPropagate == 2) { + for (const auto& track : tracks) { // Fill dalitz bits + dalitzbits(fDalitzmapLS[track.globalIndex()]); + } } } } diff --git a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx index d61bf37ea71..d3a968e28a8 100644 --- a/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx +++ b/PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx @@ -54,7 +54,6 @@ #include #include -#include #include #include @@ -62,11 +61,11 @@ #include #include +#include #include #include #include #include -#include #include #include #include @@ -74,8 +73,6 @@ #include #include -using std::cout; -using std::endl; using std::string; using namespace o2; @@ -279,6 +276,10 @@ using MyBarrelTracksWithCovNoTOF = soa::Join; +using MyBarrelTracksWithDalitzBits = soa::Join; using MyBarrelTracksWithCovWithAmbiguities = soa::Join void PrintBitMap(TMap map, int nbits) { + std::string msg = ""; for (int i = 0; i < nbits; i++) { - cout << ((map & (TMap(1) << i)) > 0 ? "1" : "0"); + msg += ((map & (TMap(1) << i)) > 0 ? "1" : "0"); } + LOG(info) << msg; } // Analysis task that produces event decisions and the Hash table used in event mixing @@ -333,7 +337,7 @@ struct AnalysisEventSelection { AnalysisCompositeCut* fEventCut = nullptr; - Service fCCDB; + Service fCCDB{}; o2::ccdb::CcdbApi fCCDBApi; std::map fSelMap; // key: reduced event global index, value: event selection decision @@ -342,7 +346,7 @@ struct AnalysisEventSelection { void init(o2::framework::InitContext& context) { - cout << "AnalysisEventSelection::init() called" << endl; + LOG(info) << "AnalysisEventSelection::init() called"; if (context.mOptions.get("processDummy")) { return; } @@ -360,7 +364,7 @@ struct AnalysisEventSelection { TString eventCutJSONStr = fConfigEventCutsJSON.value; if (eventCutJSONStr != "") { std::vector jsonCuts = dqcuts::GetCutsFromJSON(eventCutJSONStr.Data()); - for (auto& cutIt : jsonCuts) { + for (const auto& cutIt : jsonCuts) { fEventCut->AddCut(cutIt); } } @@ -370,7 +374,7 @@ struct AnalysisEventSelection { if (fConfigQA) { fHistMan = new HistogramManager("analysisHistos", "", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(true); - fHistMan->SetDefaultVarNames(VarManager::fgVariableNames, VarManager::fgVariableUnits); + fHistMan->SetDefaultVarNames(static_cast(VarManager::fgVariableNames), static_cast(VarManager::fgVariableUnits)); DefineHistograms(fHistMan, "TimeFrameStats;Event_BeforeCuts;Event_AfterCuts;", fConfigAddEventHistogram.value.data()); if (fConfigCheckSplitCollisions) { DefineHistograms(fHistMan, "OutOfBunchCorrelations;SameBunchCorrelations;", ""); @@ -387,13 +391,13 @@ struct AnalysisEventSelection { fCCDB->setLocalObjectValidityChecking(); fCCDB->setCreatedNotAfter(fConfigNoLaterThan.value); fCCDBApi.init(fConfigCcdbUrl.value); - cout << "AnalysisEventSelection::init() completed" << endl; + LOG(info) << "AnalysisEventSelection::init() completed"; } template void runEventSelection(TEvents const& events, BCsWithTimestamps const& bcs, TEventsMC const& mcEvents) { - cout << "AnalysisEventSelection::runEventSelection() called with " << events.size() << " events and " << bcs.size() << " BCs" << endl; + LOG(info) << "AnalysisEventSelection::runEventSelection() called with " << events.size() << " events and " << bcs.size() << " BCs"; if (bcs.size() > 0 && bcs.begin().runNumber() != fCurrentRun) { std::map metadataRCT, header; header = fCCDBApi.retrieveHeaders(Form("RCT/Info/RunInformation/%i", bcs.begin().runNumber()), metadataRCT, -1); @@ -402,21 +406,21 @@ struct AnalysisEventSelection { VarManager::SetSORandEOR(sor, eor); } - cout << "Filling TimeFrame statistics histograms" << endl; + // cout << "Filling TimeFrame statistics histograms" << endl; VarManager::ResetValues(0, VarManager::kNEventWiseVariables); VarManager::FillTimeFrame(bcs); VarManager::FillTimeFrame(events); VarManager::FillTimeFrame(mcEvents); if (fConfigQA) { - fHistMan->FillHistClass("TimeFrameStats", VarManager::fgValues); + fHistMan->FillHistClass("TimeFrameStats", static_cast(VarManager::fgValues)); } fSelMap.clear(); fBCCollMap.clear(); // int iEvent = 0; - cout << "Starting event loop for event selection" << endl; - for (auto& event : events) { + // cout << "Starting event loop for event selection" << endl; + for (const auto& event : events) { auto bc = event.template bc_as(); // check if there is a mismatch between the collision associated BC and the recomputed one in event selection @@ -436,11 +440,11 @@ struct AnalysisEventSelection { bool decision = false; // if QA is requested fill histograms before event selections if (fConfigQA) { - fHistMan->FillHistClass("Event_BeforeCuts", VarManager::fgValues); // automatically fill all the histograms in the class Event + fHistMan->FillHistClass("Event_BeforeCuts", static_cast(VarManager::fgValues)); // automatically fill all the histograms in the class Event } - if (fEventCut->IsSelected(VarManager::fgValues)) { + if (fEventCut->IsSelected(static_cast(VarManager::fgValues))) { if (fConfigQA) { - fHistMan->FillHistClass("Event_AfterCuts", VarManager::fgValues); + fHistMan->FillHistClass("Event_AfterCuts", static_cast(VarManager::fgValues)); } decision = true; } @@ -454,22 +458,22 @@ struct AnalysisEventSelection { } } - for (auto& event : mcEvents) { + for (const auto& event : mcEvents) { // Reset the fValues array and fill event observables VarManager::ResetValues(0, VarManager::kNEventWiseVariables); VarManager::FillEvent(event); if (fConfigQA) { - fHistMan->FillHistClass("EventsMC", VarManager::fgValues); + fHistMan->FillHistClass("EventsMC", static_cast(VarManager::fgValues)); } } - cout << "AnalysisEventSelection::runEventSelection() completed" << endl; + // cout << "AnalysisEventSelection::runEventSelection() completed" << endl; } template void publishSelections(TEvents const& events) { - cout << "AnalysisEventSelection::publishSelections() called" << endl; + // cout << "AnalysisEventSelection::publishSelections() called" << endl; std::map collisionSplittingMap; // key: event global index, value: whether pileup event is a possible splitting // Reset the fValues array and fill event observables @@ -487,12 +491,12 @@ struct AnalysisEventSelection { auto ev2 = events.rawIteratorAt(*ev2It); // compute 2-event quantities and mark the candidate split collisions VarManager::FillTwoEvents(ev1, ev2); - if (TMath::Abs(VarManager::fgValues[VarManager::kTwoEvDeltaZ]) < fConfigSplitCollisionsDeltaZ) { // this is a possible collision split + if (std::fabs(VarManager::fgValues[VarManager::kTwoEvDeltaZ]) < fConfigSplitCollisionsDeltaZ) { // this is a possible collision split collisionSplittingMap[*ev1It] = true; collisionSplittingMap[*ev2It] = true; } if (fConfigQA) { - fHistMan->FillHistClass("SameBunchCorrelations", VarManager::fgValues); + fHistMan->FillHistClass("SameBunchCorrelations", static_cast(VarManager::fgValues)); } } // end second event loop } // end first event loop @@ -507,19 +511,19 @@ struct AnalysisEventSelection { auto const& bc2Events = bc2It->second; // loop over events in the first BC - for (auto ev1It : bc1Events) { + for (const auto ev1It : bc1Events) { auto ev1 = events.rawIteratorAt(ev1It); // loop over events in the second BC - for (auto ev2It : bc2Events) { + for (const auto ev2It : bc2Events) { auto ev2 = events.rawIteratorAt(ev2It); // compute 2-event quantities and mark the candidate split collisions VarManager::FillTwoEvents(ev1, ev2); - if (TMath::Abs(VarManager::fgValues[VarManager::kTwoEvDeltaZ]) < fConfigSplitCollisionsDeltaZ) { // this is a possible collision split + if (std::fabs(VarManager::fgValues[VarManager::kTwoEvDeltaZ]) < fConfigSplitCollisionsDeltaZ) { // this is a possible collision split collisionSplittingMap[ev1It] = true; collisionSplittingMap[ev2It] = true; } if (fConfigQA) { - fHistMan->FillHistClass("OutOfBunchCorrelations", VarManager::fgValues); + fHistMan->FillHistClass("OutOfBunchCorrelations", static_cast(VarManager::fgValues)); } } } @@ -527,8 +531,8 @@ struct AnalysisEventSelection { } // publish the table - uint32_t evSel = static_cast(0); - for (auto& event : events) { + auto evSel = static_cast(0); + for (const auto& event : events) { evSel = 0; if (fSelMap[event.globalIndex()]) { // event passed the user cuts evSel |= (static_cast(1) << 0); @@ -543,26 +547,26 @@ struct AnalysisEventSelection { } eventSel(evSel); } - cout << "AnalysisEventSelection::publishSelections() completed" << endl; + // cout << "AnalysisEventSelection::publishSelections() completed" << endl; } void processDirect(MyEvents const& events, BCsWithTimestamps const& bcs, soa::Join const& mcEvents) { - cout << "AnalysisEventSelection::processDirect() called" << endl; + // cout << "AnalysisEventSelection::processDirect() called" << endl; runEventSelection(events, bcs, mcEvents); publishSelections(events); - cout << "AnalysisEventSelection::processDirect() completed" << endl; + // cout << "AnalysisEventSelection::processDirect() completed" << endl; } void processPbPbDirect(MyEventsWithCentAndMults const& events, BCsWithTimestamps const& bcs, soa::Join const& mcEvents) { - cout << "AnalysisEventSelection::processPbPbDirect() called" << endl; + // cout << "AnalysisEventSelection::processPbPbDirect() called" << endl; runEventSelection(events, bcs, mcEvents); publishSelections(events); - cout << "AnalysisEventSelection::processPbPbDirect() completed" << endl; + // cout << "AnalysisEventSelection::processPbPbDirect() completed" << endl; } - void processDummy(aod::Collisions&) + void processDummy(const aod::Collisions&) { // do nothing } @@ -592,8 +596,8 @@ struct AnalysisTrackSelection { Configurable fConfigMCSignals{"cfgTrackMCSignals", "", "Comma separated list of MC signals"}; Configurable fConfigMCSignalsJSON{"cfgTrackMCsignalsJSON", "", "Additional list of MC signals via JSON"}; - Service fCCDB; - Service fTofResponse; + Service fCCDB{}; + Service fTofResponse{}; HistogramManager* fHistMan = nullptr; std::vector fTrackCuts; @@ -608,7 +612,7 @@ struct AnalysisTrackSelection { void init(o2::framework::InitContext& context) { - cout << "AnalysisTrackSelection::init() called" << endl; + LOG(info) << "AnalysisTrackSelection::init() called"; if (context.mOptions.get("processDummy")) { return; } @@ -626,7 +630,7 @@ struct AnalysisTrackSelection { TString addTrackCutsStr = fConfigCutsJSON.value; if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto& t : addTrackCuts) { + for (const auto& t : addTrackCuts) { fTrackCuts.push_back(reinterpret_cast(t)); } } @@ -648,7 +652,7 @@ struct AnalysisTrackSelection { TString addMCSignalsStr = fConfigMCSignalsJSON.value; if (addMCSignalsStr != "") { std::vector addMCSignals = dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto& mcIt : addMCSignals) { + for (const auto& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 1) { // NOTE: only 1 prong signals continue; } @@ -659,16 +663,16 @@ struct AnalysisTrackSelection { if (fConfigQA) { fHistMan = new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(kTRUE); - fHistMan->SetDefaultVarNames(VarManager::fgVariableNames, VarManager::fgVariableUnits); + fHistMan->SetDefaultVarNames(static_cast(VarManager::fgVariableNames), static_cast(VarManager::fgVariableUnits)); // Configure histogram classes for each track cut; // Add histogram classes for each track cut and for each requested MC signal (reconstructed tracks with MC truth) TString histClasses = "TimeFrameStats;AssocsBarrel_BeforeCuts;"; - for (auto& cut : fTrackCuts) { + for (const auto& cut : fTrackCuts) { TString nameStr = Form("AssocsBarrel_%s", cut->GetName()); fHistNamesReco.push_back(nameStr); histClasses += Form("%s;", nameStr.Data()); - for (auto& sig : fMCSignals) { + for (const auto& sig : fMCSignals) { TString nameStr2 = Form("AssocsCorrectBarrel_%s_%s", cut->GetName(), sig->GetName()); fHistNamesMCMatched.push_back(nameStr2); histClasses += Form("%s;", nameStr2.Data()); @@ -692,14 +696,17 @@ struct AnalysisTrackSelection { fCCDB->setLocalObjectValidityChecking(); fCCDB->setCreatedNotAfter(fConfigNoLaterThan.value); - fTofResponse->initSetup(fCCDB, context); - cout << "AnalysisTrackSelection::init() completed" << endl; + if (!context.mOptions.get("processWithDalitzBits")) { + fTofResponse->initSetup(fCCDB, context); + } + + LOG(info) << "AnalysisTrackSelection::init() completed"; } template void runTrackSelection(TrackAssoc const& assocs, BCsWithTimestamps const& bcs, TEvents const& events, TTracks const& tracks, McCollisions const& /*eventsMC*/, McParticles const& tracksMC) { - cout << "AnalysisTrackSelection::runTrackSelection() called with " << events.size() << " events, " << tracks.size() << " tracks and " << assocs.size() << " associations" << endl; + LOG(info) << "AnalysisTrackSelection::runTrackSelection() called with " << events.size() << " events, " << tracks.size() << " tracks and " << assocs.size() << " associations"; // determine if TEvents table contains aod::Collisions // bool hasCollisions = std::is_same::value; @@ -710,11 +717,11 @@ struct AnalysisTrackSelection { VarManager::FillTimeFrame(events); VarManager::FillTimeFrame(tracks); if (fConfigQA) { - fHistMan->FillHistClass("TimeFrameStats", VarManager::fgValues); + fHistMan->FillHistClass("TimeFrameStats", static_cast(VarManager::fgValues)); } - cout << "After filling TimeFrame statistics" << endl; - // TODO: Check if postcalibration needed for MC + // cout << "After filling TimeFrame statistics" << endl; + // TODO: Check if postcalibration needed for MC if (bcs.size() > 0 && fCurrentRun != bcs.begin().runNumber()) { if (fConfigComputeTPCpostCalib) { auto calibList = fCCDB->getForTimeStamp(fConfigCcdbPathTPC.value, bcs.begin().timestamp()); @@ -726,7 +733,7 @@ struct AnalysisTrackSelection { VarManager::SetCalibrationObject(VarManager::kTPCProtonSigma, calibList->FindObject("sigma_map_proton")); } - o2::parameters::GRPMagField* grpmag = fCCDB->getForTimeStamp(grpmagPath, bcs.begin().timestamp()); + auto grpmag = fCCDB->getForTimeStamp(grpmagPath, bcs.begin().timestamp()); if (grpmag != nullptr) { VarManager::SetMagneticField(grpmag->getNominalL3Field()); } else { @@ -736,13 +743,13 @@ struct AnalysisTrackSelection { fCurrentRun = bcs.begin().runNumber(); } - cout << "Starting loop over track associations" << endl; + // cout << "Starting loop over track associations" << endl; trackSel.reserve(assocs.size()); trackAmbiguities.reserve(tracks.size()); // Loop over associations - for (auto& assoc : assocs) { + for (const auto& assoc : assocs) { auto event = assoc.template collision_as(); if (!event.isEventSelected_bit(0)) { trackSel(0); @@ -767,9 +774,10 @@ struct AnalysisTrackSelection { VarManager::FillTrack(track); // compute quantities which depend on the associated collision, such as DCA - if (track.collisionId() != event.globalIndex()) + if (track.collisionId() != event.globalIndex()) { VarManager::FillTrackCollision(track, event); // cout << "Filled track observables for association" << endl; + } bool isCorrectAssoc = false; if (track.has_mcParticle()) { @@ -783,17 +791,17 @@ struct AnalysisTrackSelection { // cout << "Filled MC observables for association" << endl; if (fConfigQA) { - fHistMan->FillHistClass("AssocsBarrel_BeforeCuts", VarManager::fgValues); + fHistMan->FillHistClass("AssocsBarrel_BeforeCuts", static_cast(VarManager::fgValues)); } // cout << "Filled AssocsBarrel_BeforeCuts histograms" << endl; int iCut = 0; - uint32_t filterMap = static_cast(0); + auto filterMap = static_cast(0); for (auto cut = fTrackCuts.begin(); cut != fTrackCuts.end(); cut++, iCut++) { - if ((*cut)->IsSelected(VarManager::fgValues)) { + if ((*cut)->IsSelected(static_cast(VarManager::fgValues))) { filterMap |= (static_cast(1) << iCut); if (fConfigQA) { - fHistMan->FillHistClass(fHistNamesReco[iCut], VarManager::fgValues); + fHistMan->FillHistClass(fHistNamesReco[iCut], static_cast(VarManager::fgValues)); } } } // end loop over cuts @@ -862,7 +870,7 @@ struct AnalysisTrackSelection { // So one could QA these tracks separately if (fConfigPublishAmbiguity) { if (fConfigQA) { - for (auto& [trackIdx, evIndices] : fNAssocsInBunch) { + for (const auto& [trackIdx, evIndices] : fNAssocsInBunch) { if (evIndices.size() == 1) { continue; } @@ -870,10 +878,10 @@ struct AnalysisTrackSelection { VarManager::ResetValues(0, VarManager::kNBarrelTrackVariables); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kBarrelNAssocsInBunch] = static_cast(evIndices.size()); - fHistMan->FillHistClass("TrackBarrel_AmbiguityInBunch", VarManager::fgValues); + fHistMan->FillHistClass("TrackBarrel_AmbiguityInBunch", static_cast(VarManager::fgValues)); } // end loop over in-bunch ambiguous tracks - for (auto& [trackIdx, evIndices] : fNAssocsOutOfBunch) { + for (const auto& [trackIdx, evIndices] : fNAssocsOutOfBunch) { if (evIndices.size() == 1) { continue; } @@ -881,12 +889,12 @@ struct AnalysisTrackSelection { VarManager::ResetValues(0, VarManager::kNBarrelTrackVariables); VarManager::FillTrack(track); VarManager::fgValues[VarManager::kBarrelNAssocsOutOfBunch] = static_cast(evIndices.size()); - fHistMan->FillHistClass("TrackBarrel_AmbiguityOutOfBunch", VarManager::fgValues); + fHistMan->FillHistClass("TrackBarrel_AmbiguityOutOfBunch", static_cast(VarManager::fgValues)); } // end loop over out-of-bunch ambiguous tracks } // publish the ambiguity table - for (auto& track : tracks) { + for (const auto& track : tracks) { int8_t nInBunch = 0; if (fNAssocsInBunch.find(track.globalIndex()) != fNAssocsInBunch.end()) { nInBunch = fNAssocsInBunch[track.globalIndex()].size(); @@ -898,32 +906,38 @@ struct AnalysisTrackSelection { trackAmbiguities(nInBunch, nOutOfBunch); } } - cout << "AnalysisTrackSelection::runTrackSelection() completed" << endl; + // cout << "AnalysisTrackSelection::runTrackSelection() completed" << endl; } // end runTrackSelection() void processWithCov(TrackAssoc const& assocs, BCsWithTimestamps const& bcs, MyEventsSelected const& events, MyBarrelTracksWithCov const& tracks, McCollisions const& eventsMC, McParticles const& tracksMC) { - cout << "AnalysisTrackSelection::processWithCov() called" << endl; + // cout << "AnalysisTrackSelection::processWithCov() called" << endl; runTrackSelection(assocs, bcs, events, tracks, eventsMC, tracksMC); - cout << "AnalysisTrackSelection::processWithCov() completed" << endl; + // cout << "AnalysisTrackSelection::processWithCov() completed" << endl; } void processWithCovTOFService(TrackAssoc const& assocs, BCsWithTimestamps const& bcs, MyEventsSelected const& events, MyBarrelTracksWithCovNoTOF const& tracks, McCollisions const& eventsMC, McParticles const& tracksMC) { - cout << "AnalysisTrackSelection::processWithCov() called" << endl; + // cout << "AnalysisTrackSelection::processWithCov() called" << endl; fTofResponse->processSetup(bcs.iteratorAt(0)); auto tracksWithTOFservice = soa::Attach(tracks); runTrackSelection(assocs, bcs, events, tracksWithTOFservice, eventsMC, tracksMC); - cout << "AnalysisTrackSelection::processWithCov() completed" << endl; + // cout << "AnalysisTrackSelection::processWithCov() completed" << endl; + } + void processWithDalitzBits(TrackAssoc const& assocs, BCsWithTimestamps const& bcs, MyEventsSelected const& events, MyBarrelTracksWithDalitzBits const& tracks, + McCollisions const& eventsMC, McParticles const& tracksMC) + { + runTrackSelection(assocs, bcs, events, tracks, eventsMC, tracksMC); } - void processDummy(MyEvents&) + void processDummy(const MyEvents&) { // do nothing } PROCESS_SWITCH(AnalysisTrackSelection, processWithCov, "Run barrel track selection on DQ skimmed tracks w/ cov matrix associations", false); PROCESS_SWITCH(AnalysisTrackSelection, processWithCovTOFService, "Run barrel track selection on DQ skimmed tracks w/ cov matrix associations, with TOF service", false); + PROCESS_SWITCH(AnalysisTrackSelection, processWithDalitzBits, "Run barrel track selection on DQ skimmed tracks w/ dalitz bits obtained from DalitzSelection task", false); PROCESS_SWITCH(AnalysisTrackSelection, processDummy, "Dummy function", true); }; @@ -946,7 +960,7 @@ struct AnalysisPrefilterSelection { void init(o2::framework::InitContext& context) { - cout << "AnalysisPrefilterSelection::init() called" << endl; + LOG(info) << "AnalysisPrefilterSelection::init() called"; if (context.mOptions.get("processDummy")) { return; } @@ -984,7 +998,7 @@ struct AnalysisPrefilterSelection { TString addTrackCutsStr = trackCuts; if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto& t : addTrackCuts) { + for (const auto& t : addTrackCuts) { allTrackCutsStr += Form(",%s", t->GetName()); } } @@ -1021,7 +1035,7 @@ struct AnalysisPrefilterSelection { VarManager::SetupTwoProngDCAFitter(5.0f, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, true); // TODO: get these parameters from Configurables VarManager::SetupTwoProngFwdDCAFitter(5.0f, true, 200.0f, 1.0e-3f, 0.9f, true); - cout << "AnalysisPrefilterSelection::init() completed" << endl; + LOG(info) << "AnalysisPrefilterSelection::init() completed"; } template @@ -1032,7 +1046,7 @@ struct AnalysisPrefilterSelection { return; } - for (auto& [assoc1, assoc2] : o2::soa::combinations(assocs, assocs)) { + for (const auto& [assoc1, assoc2] : o2::soa::combinations(assocs, assocs)) { auto track1 = assoc1.template track_as(); auto track2 = assoc2.template track_as(); @@ -1058,7 +1072,7 @@ struct AnalysisPrefilterSelection { VarManager::FillPairCollision(event, track1, track2); } // if the pair fullfils the criteria, add an entry into the prefilter map for the two tracks - if (fPairCut->IsSelected(VarManager::fgValues)) { + if (fPairCut->IsSelected(static_cast(VarManager::fgValues))) { if (fPrefilterMap.find(track1.globalIndex()) == fPrefilterMap.end() && track1Candidate > 0) { fPrefilterMap[track1.globalIndex()] = track1Candidate; } @@ -1070,12 +1084,12 @@ struct AnalysisPrefilterSelection { // cout << "AnalysisPrefilterSelection::runPrefilter() completed for event " << event.globalIndex() << endl; } - void processBarrel(MyEvents const& events, soa::Join const& assocs, MyBarrelTracksWithCov const& tracks) + void processBarrel(MyEvents const& events, soa::Join const& assocs, MyBarrelTracksWithCovNoTOF const& tracks) { - cout << "AnalysisPrefilterSelection::processBarrel() called" << endl; + // cout << "AnalysisPrefilterSelection::processBarrel() called" << endl; fPrefilterMap.clear(); - for (auto& event : events) { + for (const auto& event : events) { auto groupedAssocs = assocs.sliceBy(trackAssocsPerCollision, event.globalIndex()); groupedAssocs.bindInternalIndicesTo(&assocs); @@ -1091,7 +1105,7 @@ struct AnalysisPrefilterSelection { prefilter(mymap); } } else { - for (auto& assoc : assocs) { + for (const auto& assoc : assocs) { // TODO: just use the index from the assoc (no need to cast the whole track) // auto track = assoc.template track_as(); mymap = -1; @@ -1106,10 +1120,10 @@ struct AnalysisPrefilterSelection { } } } - cout << "AnalysisPrefilterSelection::processBarrel() completed" << endl; + // cout << "AnalysisPrefilterSelection::processBarrel() completed" << endl; } - void processDummy(MyEvents&) + void processDummy(const MyEvents&) { // do nothing } @@ -1131,7 +1145,7 @@ struct AnalysisSameEventPairing { Produces MCTruthTableEffi; o2::base::MatLayerCylSet* fLUT = nullptr; - int fCurrentRun; // needed to detect if the run changed and trigger update of calibrations etc. + int fCurrentRun = 0; // needed to detect if the run changed and trigger update of calibrations etc. OutputObj fOutputList{"output"}; @@ -1182,11 +1196,11 @@ struct AnalysisSameEventPairing { Configurable geoPath{"geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; } fConfigCCDB; - Service fCCDB; + Service fCCDB{}; // PDG database - Service pdgDB; + Service pdgDB{}; - HistogramManager* fHistMan; + HistogramManager* fHistMan = nullptr; // vectors needed for PV recomputation std::vector pvContribGlobIDs; @@ -1196,8 +1210,8 @@ struct AnalysisSameEventPairing { // keep histogram class names in maps, so we don't have to buld their names in the pair loops std::map> fTrackHistNames; std::map> fBarrelHistNamesMCmatched; - std::map> fMuonHistNames; - std::map> fMuonHistNamesMCmatched; + // std::map> fMuonHistNames; + // std::map> fMuonHistNamesMCmatched; std::vector fRecMCSignals; std::vector fGenMCSignals; MCSignal* fEFromJpsiSignal = nullptr; @@ -1221,7 +1235,7 @@ struct AnalysisSameEventPairing { void init(o2::framework::InitContext& context) { - cout << "AnalysisSameEventPairing::init() called" << endl; + LOG(info) << "AnalysisSameEventPairing::init() called"; if (context.mOptions.get("processDummy")) { return; } @@ -1270,7 +1284,7 @@ struct AnalysisSameEventPairing { TString addMCSignalsStr = fConfigMC.recSignalsJSON.value; if (addMCSignalsStr != "") { std::vector addMCSignals = dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto& mcIt : addMCSignals) { + for (const auto& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 2) { // NOTE: only 2 prong signals continue; } @@ -1289,7 +1303,7 @@ struct AnalysisSameEventPairing { TString addTrackCutsStr = tempCuts; if (addTrackCutsStr != "") { std::vector addTrackCuts = dqcuts::GetCutsFromJSON(addTrackCutsStr.Data()); - for (auto& t : addTrackCuts) { + for (const auto& t : addTrackCuts) { tempCutsStr += Form(",%s", t->GetName()); } } @@ -1334,7 +1348,7 @@ struct AnalysisSameEventPairing { names.push_back(Form("PairsBarrelSEPP_ambiguousOutOfBunch_%s", objArray->At(icut)->GetName())); names.push_back(Form("PairsBarrelSEMM_ambiguousOutOfBunch_%s", objArray->At(icut)->GetName())); } - for (auto& n : names) { + for (const auto& n : names) { histNames += Form("%s;", n.Data()); } fTrackHistNames[icut] = names; @@ -1342,7 +1356,7 @@ struct AnalysisSameEventPairing { // if there are pair cuts specified, assign hist directories for each barrel cut - pair cut combination // NOTE: This could possibly lead to large histogram outputs. It is strongly advised to use pair cuts only // if you know what you are doing. - TString cutNamesStr = fConfigOptions.pair.value; + // TString cutNamesStr = fConfigOptions.pair.value; if (!cutNamesStr.IsNull()) { // if pair cuts std::unique_ptr objArrayPair(cutNamesStr.Tokenize(",")); fNPairCuts = objArrayPair->GetEntries(); @@ -1375,7 +1389,7 @@ struct AnalysisSameEventPairing { names.push_back(Form("PairsBarrelSEPM_ambiguousOutOfBunchCorrectAssoc_%s_%s", objArray->At(icut)->GetName(), sig->GetName())); names.push_back(Form("PairsBarrelSEPM_ambiguousOutOfBunchIncorrectAssoc_%s_%s", objArray->At(icut)->GetName(), sig->GetName())); } - for (auto& n : names) { + for (const auto& n : names) { histNames += Form("%s;", n.Data()); } fBarrelHistNamesMCmatched.try_emplace(icut * fRecMCSignals.size() + isig, names); @@ -1492,7 +1506,7 @@ struct AnalysisSameEventPairing { TString addMCSignalsGenStr = fConfigMC.genSignalsJSON.value; if (addMCSignalsGenStr != "") { std::vector addMCSignals = dqmcsignals::GetMCSignalsFromJSON(addMCSignalsGenStr.Data()); - for (auto& mcIt : addMCSignals) { + for (const auto& mcIt : addMCSignals) { if (mcIt->GetNProngs() > 2) { // NOTE: only 2 prong signals continue; } @@ -1500,7 +1514,7 @@ struct AnalysisSameEventPairing { } } - for (auto& sig : fGenMCSignals) { + for (const auto& sig : fGenMCSignals) { if (sig->GetNProngs() == 1) { histNames += Form("MCTruthGen_%s;", sig->GetName()); // TODO: Add these names to a std::vector to avoid using Form in the process function histNames += Form("MCTruthGenSel_%s;", sig->GetName()); @@ -1527,7 +1541,7 @@ struct AnalysisSameEventPairing { } // for these pair level signals, also add histograms for each MCgenAcc cut if specified if (fUseMCGenAccCut) { - for (auto& cut : fMCGenAccCuts) { + for (const auto& cut : fMCGenAccCuts) { if (fConfigOptions.fConfigMCtruthQA.value) { histNames += Form("MCTruthGenPairSel_%s_%s;", sig->GetName(), cut->GetName()); // after event selection and MCgenAcc cut } @@ -1569,7 +1583,7 @@ struct AnalysisSameEventPairing { fHistMan = new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(kTRUE); - fHistMan->SetDefaultVarNames(VarManager::fgVariableNames, VarManager::fgVariableUnits); + fHistMan->SetDefaultVarNames(static_cast(VarManager::fgVariableNames), static_cast(VarManager::fgVariableUnits)); VarManager::SetCollisionSystem((TString)fConfigOptions.collisionSystem, fConfigOptions.centerMassEnergy); // set collision system and center of mass energy @@ -1578,14 +1592,14 @@ struct AnalysisSameEventPairing { VarManager::SetUseVars(fHistMan->GetUsedVars()); // provide the list of required variables so that VarManager knows what to fill fOutputList.setObject(fHistMan->GetMainHistogramList()); - cout << "AnalysisSameEventPairing::init() completed" << endl; + LOG(info) << "AnalysisSameEventPairing::init() completed"; } void initParamsFromCCDB(uint64_t timestamp, bool withTwoProngFitter = true) { - cout << "AnalysisSameEventPairing::initParamsFromCCDB() called for timestamp " << timestamp << endl; + LOG(info) << "AnalysisSameEventPairing::initParamsFromCCDB() called for timestamp " << timestamp; if (fConfigOptions.useRemoteField.value) { - o2::parameters::GRPMagField* grpmag = fCCDB->getForTimeStamp(fConfigCCDB.grpMagPath, timestamp); + auto grpmag = fCCDB->getForTimeStamp(fConfigCCDB.grpMagPath, timestamp); o2::base::MatLayerCylSet* lut = o2::base::MatLayerCylSet::rectifyPtrFromFile(fCCDB->get(fConfigCCDB.lutPath)); float magField = 0.0; if (grpmag != nullptr) { @@ -1617,7 +1631,7 @@ struct AnalysisSameEventPairing { VarManager::SetupTwoProngDCAFitter(fConfigOptions.magField.value, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, fConfigOptions.useAbsDCA.value); // needed because take in varmanager Bz from fgFitterTwoProngBarrel for PhiV calculations } } - cout << "AnalysisSameEventPairing::initParamsFromCCDB() completed" << endl; + LOG(info) << "AnalysisSameEventPairing::initParamsFromCCDB() completed"; } template @@ -1629,15 +1643,18 @@ struct AnalysisSameEventPairing { // int nMyPVContrib = 0; int nMyPVContribOrig = 0; for (auto const& trk : tracks) { // check if it is PV contributor - if (!trk.isPVContributor()) + if (!trk.isPVContributor()) { continue; + } // check if it contributes to the vtx of this collision - if (trk.collisionId() != collision.globalIndex()) + if (trk.collisionId() != collision.globalIndex()) { continue; + } // nMyPVContribOrig++; // --- remove t1 and t2 if they are PV contributors --- - if (trk.globalIndex() == t1.globalIndex() || trk.globalIndex() == t2.globalIndex()) + if (trk.globalIndex() == t1.globalIndex() || trk.globalIndex() == t2.globalIndex()) { continue; + } // add tracks and parameters to the list pvContribGlobIDs.push_back(trk.globalIndex()); pvContribTrackPars.push_back(getTrackParCov(trk)); @@ -1662,8 +1679,9 @@ struct AnalysisSameEventPairing { vertexer.init(); bool PVrefit_doable = vertexer.prepareVertexRefit(pvContribTrackPars, Pvtx); - if (!PVrefit_doable) + if (!PVrefit_doable) { return false; + } // --- do the refit --- pvRefitted = vertexer.refitVertex(vec_useTrk_PVrefit, Pvtx); @@ -1675,7 +1693,7 @@ struct AnalysisSameEventPairing { template void runSameEventPairing(TEvents const& events, BCsWithTimestamps const& bcs, Preslice>& preslice, soa::Join const& assocs, TTracks const& tracks, TEventsMC const& mcEvents, McParticles const& mcTracks) { - cout << "AnalysisSameEventPairing::runSameEventPairing() called" << endl; + // cout << "AnalysisSameEventPairing::runSameEventPairing() called" << endl; if (events.size() == 0) { LOG(warning) << "No events in this TF, going to the next one ..."; return; @@ -1696,17 +1714,17 @@ struct AnalysisSameEventPairing { ncuts = fNCutsMuon; }*/ - uint32_t twoTrackFilter = static_cast(0); + auto twoTrackFilter = static_cast(0); int sign1 = 0; int sign2 = 0; - uint32_t mcDecision = static_cast(0); + auto mcDecision = static_cast(0); bool isCorrectAssoc_leg1 = false; bool isCorrectAssoc_leg2 = false; // estimate reserved size int64_t reserveSize = 0; int64_t reserveSizeGen = mcTracks.size(); - for (auto& event : events) { + for (const auto& event : events) { if (event.isEventSelected_bit(0)) { auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); size_t nGood = 0; @@ -1741,20 +1759,20 @@ struct AnalysisSameEventPairing { constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0); constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0); - for (auto& event : events) { + for (const auto& event : events) { if (!event.isEventSelected_bit(0)) { continue; } // uint8_t evSel = event.isEventSelected_raw(); // Reset the fValues array VarManager::ResetValues(0, VarManager::kNVars); - VarManager::FillEvent(event, VarManager::fgValues); + VarManager::FillEvent(event, static_cast(VarManager::fgValues)); // if (event.has_mcCollision()) { - // VarManager::FillEvent(event.mcCollision(), VarManager::fgValues); + // VarManager::FillEvent(event.mcCollision(), static_cast(VarManager::fgValues)); // } if (event.has_mcCollision()) { auto mcEvent = mcEvents.rawIteratorAt(event.mcCollisionId()); - VarManager::FillEvent(mcEvent, VarManager::fgValues); + VarManager::FillEvent(mcEvent, static_cast(VarManager::fgValues)); } auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex()); @@ -1762,7 +1780,7 @@ struct AnalysisSameEventPairing { continue; } - for (auto& [a1, a2] : o2::soa::combinations(groupedAssocs, groupedAssocs)) { + for (const auto& [a1, a2] : o2::soa::combinations(groupedAssocs, groupedAssocs)) { if constexpr (TPairType == VarManager::kDecayToEE) { twoTrackFilter = a1.isBarrelSelected_raw() & a2.isBarrelSelected_raw() & a1.isBarrelSelectedPrefilter_raw() & a2.isBarrelSelectedPrefilter_raw() & fTrackFilterMask; @@ -1818,15 +1836,16 @@ struct AnalysisSameEventPairing { // cout << "primary vertex (before): x -> " << event.posX() << " y -> " << event.posY() << " z -> " << event.posZ() << endl; o2::dataformats::VertexBase pvRefit; bool ok = refitPVWithPVertexer(event, tracks, t1, t2, pvRefit); - if (ok) + if (ok) { VarManager::FillPairVertexingRecomputePV(event, t1, t2, pvRefit); + } // cout << "primary vertex (after): ok -> " << ok << " x -> " << pvRefit.getX() << " y -> " << pvRefit.getY() << " z -> " << pvRefit.getZ() << endl; } } if constexpr (eventHasQvector) { VarManager::FillPairVn(t1, t2); } - if (!fConfigMC.skimSignalOnly || (fConfigMC.skimSignalOnly && mcDecision > 0)) { + if (!fConfigMC.skimSignalOnly || (mcDecision > 0)) { dielectronList(event.globalIndex(), VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], t1.sign() + t2.sign(), twoTrackFilter, mcDecision); @@ -1949,15 +1968,16 @@ struct AnalysisSameEventPairing { bool isAmbiInBunch = false; bool isAmbiOutOfBunch = false; bool isCorrect_pair = false; - if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) + if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) { isCorrect_pair = true; + } for (int icut = 0; icut < ncuts; icut++) { if (twoTrackFilter & (static_cast(1) << icut)) { isAmbiInBunch = (twoTrackFilter & (static_cast(1) << 28)) || (twoTrackFilter & (static_cast(1) << 29)); isAmbiOutOfBunch = (twoTrackFilter & (static_cast(1) << 30)) || (twoTrackFilter & (static_cast(1) << 31)); if (sign1 * sign2 < 0) { // +- pairs - fHistMan->FillHistClass(histNames[icut][0].Data(), VarManager::fgValues); // reconstructed, unmatched + fHistMan->FillHistClass(histNames[icut][0].Data(), static_cast(VarManager::fgValues)); // reconstructed, unmatched for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { PromptNonPromptSepTable(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kRap], VarManager::fgValues[VarManager::kPhi], @@ -1999,81 +2019,82 @@ struct AnalysisSameEventPairing { }*/ if (fConfigOptions.fConfigQA) { if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) { // correct track-collision association - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][3].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][3].Data(), static_cast(VarManager::fgValues)); } else { // incorrect track-collision association - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][4].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][4].Data(), static_cast(VarManager::fgValues)); } if (isAmbiInBunch) { // ambiguous in bunch - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][5].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][5].Data(), static_cast(VarManager::fgValues)); if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) { - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][6].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][6].Data(), static_cast(VarManager::fgValues)); } else { - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][7].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][7].Data(), static_cast(VarManager::fgValues)); } } if (isAmbiOutOfBunch) { // ambiguous out of bunch - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][8].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][8].Data(), static_cast(VarManager::fgValues)); if (isCorrectAssoc_leg1 && isCorrectAssoc_leg2) { - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][9].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][9].Data(), static_cast(VarManager::fgValues)); } else { - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][10].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][10].Data(), static_cast(VarManager::fgValues)); } } } } if (fConfigOptions.fConfigQA) { if (isAmbiInBunch) { - fHistMan->FillHistClass(histNames[icut][3].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][3].Data(), static_cast(VarManager::fgValues)); } if (isAmbiOutOfBunch) { - fHistMan->FillHistClass(histNames[icut][3 + 3].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][3 + 3].Data(), static_cast(VarManager::fgValues)); } } } } else { if (sign1 > 0) { // ++ pairs - fHistMan->FillHistClass(histNames[icut][1].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][1].Data(), static_cast(VarManager::fgValues)); for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][1].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][1].Data(), static_cast(VarManager::fgValues)); } } if (fConfigOptions.fConfigQA) { if (isAmbiInBunch) { - fHistMan->FillHistClass(histNames[icut][4].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][4].Data(), static_cast(VarManager::fgValues)); } if (isAmbiOutOfBunch) { - fHistMan->FillHistClass(histNames[icut][4 + 3].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][4 + 3].Data(), static_cast(VarManager::fgValues)); } } } else { // -- pairs - fHistMan->FillHistClass(histNames[icut][2].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][2].Data(), static_cast(VarManager::fgValues)); for (unsigned int isig = 0; isig < fRecMCSignals.size(); isig++) { // loop over MC signals if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][2].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNamesMC[icut * fRecMCSignals.size() + isig][2].Data(), static_cast(VarManager::fgValues)); } } if (fConfigOptions.fConfigQA) { if (isAmbiInBunch) { - fHistMan->FillHistClass(histNames[icut][5].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][5].Data(), static_cast(VarManager::fgValues)); } if (isAmbiOutOfBunch) { - fHistMan->FillHistClass(histNames[icut][5 + 3].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[icut][5 + 3].Data(), static_cast(VarManager::fgValues)); } } } } for (unsigned int iPairCut = 0; iPairCut < fPairCuts.size(); iPairCut++) { AnalysisCompositeCut cut = fPairCuts.at(iPairCut); - if (!(cut.IsSelected(VarManager::fgValues))) // apply pair cuts + if (!(cut.IsSelected(static_cast(VarManager::fgValues)))) { // apply pair cuts continue; + } if (sign1 * sign2 < 0) { - fHistMan->FillHistClass(histNames[ncuts + icut * fPairCuts.size() + iPairCut][0].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[ncuts + icut * fPairCuts.size() + iPairCut][0].Data(), static_cast(VarManager::fgValues)); } else { if (sign1 > 0) { - fHistMan->FillHistClass(histNames[ncuts + icut * fPairCuts.size() + iPairCut][1].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[ncuts + icut * fPairCuts.size() + iPairCut][1].Data(), static_cast(VarManager::fgValues)); } else { - fHistMan->FillHistClass(histNames[ncuts + icut * fPairCuts.size() + iPairCut][2].Data(), VarManager::fgValues); + fHistMan->FillHistClass(histNames[ncuts + icut * fPairCuts.size() + iPairCut][2].Data(), static_cast(VarManager::fgValues)); } } } // end loop (pair cuts) @@ -2082,7 +2103,7 @@ struct AnalysisSameEventPairing { } // end loop over pairs of track associations } // end loop over events - cout << "AnalysisSameEventPairing::runSameEventPairing() completed" << endl; + // cout << "AnalysisSameEventPairing::runSameEventPairing() completed" << endl; } PresliceUnsorted perReducedMcEvent = aod::mcparticle::mcCollisionId; @@ -2091,19 +2112,19 @@ struct AnalysisSameEventPairing { template void runMCGen(TEvents const& events, TEventsMC const& mcEvents, McParticles const& mcTracks) { - cout << "AnalysisSameEventPairing::runMCGen() called" << endl; + // cout << "AnalysisSameEventPairing::runMCGen() called" << endl; uint32_t mcDecision = 0; int isig = 0; // Loop over all MC single particles to fill generator level histograms, disregarding of whether they belong to selected reconstructed events or not - for (auto& mctrack : mcTracks) { - for (auto& sig : fGenMCSignals) { + for (const auto& mctrack : mcTracks) { + for (const auto& sig : fGenMCSignals) { if (sig->CheckSignal(true, mctrack)) { VarManager::FillTrackMC(mcTracks, mctrack); - // if (fUseMCGenAccCut && !fMCGenAccCut.IsSelected(VarManager::fgValues)) { + // if (fUseMCGenAccCut && !fMCGenAccCut.IsSelected(static_cast(VarManager::fgValues))) { // continue; // } - fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), static_cast(VarManager::fgValues)); } } } @@ -2113,7 +2134,7 @@ struct AnalysisSameEventPairing { std::vector eFromJpsiMcParticleIndices; // Now loop over reconstructed events to select only MC particles belonging to the same MC collision as the reconstructed event - for (auto& event : events) { + for (const auto& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -2133,29 +2154,29 @@ struct AnalysisSameEventPairing { auto groupedMCTracks = mcTracks.sliceBy(perReducedMcEvent, mcCollisionGlobalIndex); groupedMCTracks.bindInternalIndicesTo(&mcTracks); - for (auto& track : groupedMCTracks) { + for (const auto& track : groupedMCTracks) { auto track_raw = mcTracks.rawIteratorAt(track.globalIndex()); mcDecision = 0; isig = 0; - for (auto& sig : fGenMCSignals) { + for (const auto& sig : fGenMCSignals) { if (sig->CheckSignal(true, track_raw)) { // check that the mc track belongs to the same mc collision as the reconstructed event if (track.mcCollisionId() != mcCollisionGlobalIndex) { continue; } VarManager::FillTrackMC(mcTracks, track); - // if (fUseMCGenAccCut && !fMCGenAccCut.IsSelected(VarManager::fgValues)) { + // if (fUseMCGenAccCut && !fMCGenAccCut.IsSelected(static_cast(VarManager::fgValues))) { // // cout << "Applying MC gen acceptance cut." << endl; // continue; // } mcDecision |= (static_cast(1) << isig); - fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), static_cast(VarManager::fgValues)); MCTruthTableEffi(VarManager::fgValues[VarManager::kMCPt], VarManager::fgValues[VarManager::kMCEta], VarManager::fgValues[VarManager::kMCY], VarManager::fgValues[VarManager::kMCPhi], VarManager::fgValues[VarManager::kMCVz], VarManager::fgValues[VarManager::kMCVtxZ], VarManager::fgValues[VarManager::kMultFT0A], VarManager::fgValues[VarManager::kMultFT0C], VarManager::fgValues[VarManager::kCentFT0M], VarManager::fgValues[VarManager::kVtxNcontribReal]); if (fConfigOptions.fConfigMiniTree) { - auto mcEvent = mcEvents.rawIteratorAt(track_raw.mcCollisionId()); - dileptonMiniTreeGen(mcDecision, mcEvent.impactParameter(), track_raw.pt(), track_raw.eta(), track_raw.phi(), -999, -999, -999); + auto mcEventFromTrack = mcEvents.rawIteratorAt(track_raw.mcCollisionId()); + dileptonMiniTreeGen(mcDecision, mcEventFromTrack.impactParameter(), track_raw.pt(), track_raw.eta(), track_raw.phi(), -999, -999, -999); } } isig++; @@ -2168,9 +2189,9 @@ struct AnalysisSameEventPairing { if (fHasTwoProngGenMCsignals) { // loop over combinations of the selected mc particles to fill generator level pair histograms - for (auto& t1 : eFromJpsiMcParticleIndices) { + for (const auto& t1 : eFromJpsiMcParticleIndices) { auto t1_raw = mcTracks.rawIteratorAt(t1); - for (auto& t2 : eFromJpsiMcParticleIndices) { + for (const auto& t2 : eFromJpsiMcParticleIndices) { if (t2 <= t1) { continue; // avoid double counting and self-pairing } @@ -2180,7 +2201,7 @@ struct AnalysisSameEventPairing { mcDecision = 0; isig = 0; - for (auto& sig : fGenMCSignals) { + for (const auto& sig : fGenMCSignals) { if (sig->GetNProngs() != 2) { // NOTE: 2-prong signals required here continue; } @@ -2195,51 +2216,51 @@ struct AnalysisSameEventPairing { auto motherMCParticle_t1 = t1_raw.template mothers_first_as(); auto motherMCParticle_t2 = t2_raw.template mothers_first_as(); if (motherMCParticle_t1 == motherMCParticle_t2) { - auto mcEvent = mcEvents.rawIteratorAt(motherMCParticle_t1.mcCollisionId()); - std::array collVtxPos = {mcEvent.posX(), mcEvent.posY(), mcEvent.posZ()}; + auto mcEventFromTrack = mcEvents.rawIteratorAt(motherMCParticle_t1.mcCollisionId()); + std::array collVtxPos = {mcEventFromTrack.posX(), mcEventFromTrack.posY(), mcEventFromTrack.posZ()}; VarManager::FillTrackCollisionMC(motherMCParticle_t1, collVtxPos, pdgDB->Mass(motherMCParticle_t1.pdgCode())); } } if (fConfigOptions.fConfigMCtruthQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPairSel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPairSel_%s", sig->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigPseudoHEQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairHESel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairHESel_%s", sig->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigPseudoCSQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairCSSel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairCSSel_%s", sig->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigPseudoRMQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairRMSel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairRMSel_%s", sig->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigTruthPbPbMIDYHE.value) { - fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairHESel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairHESel_%s", sig->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigTruthPbPbMIDYCS.value) { - fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairCSSel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairCSSel_%s", sig->GetName()), static_cast(VarManager::fgValues)); } if (fUseMCGenAccCut) { - for (auto& cut : fMCGenAccCuts) { - if (cut->IsSelected(VarManager::fgValues)) { + for (const auto& cut : fMCGenAccCuts) { + if (cut->IsSelected(static_cast(VarManager::fgValues))) { if (fConfigOptions.fConfigMCtruthQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPairSel_%s_%s", sig->GetName(), cut->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPairSel_%s_%s", sig->GetName(), cut->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigPseudoHEQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairHESel_%s_%s", sig->GetName(), cut->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairHESel_%s_%s", sig->GetName(), cut->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigPseudoCSQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairCSSel_%s_%s", sig->GetName(), cut->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairCSSel_%s_%s", sig->GetName(), cut->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigPseudoRMQA.value) { - fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairRMSel_%s_%s", sig->GetName(), cut->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPseudoPolPairRMSel_%s_%s", sig->GetName(), cut->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigTruthPbPbMIDYHE.value) { - fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairHESel_%s_%s", sig->GetName(), cut->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairHESel_%s_%s", sig->GetName(), cut->GetName()), static_cast(VarManager::fgValues)); } if (fConfigOptions.fConfigTruthPbPbMIDYCS.value) { - fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairCSSel_%s_%s", sig->GetName(), cut->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenPoldielectronPbPbPairCSSel_%s_%s", sig->GetName(), cut->GetName()), static_cast(VarManager::fgValues)); } } } @@ -2257,30 +2278,30 @@ struct AnalysisSameEventPairing { } // end loop over reconstructed events - cout << "AnalysisSameEventPairing::runMCGen() completed" << endl; + // cout << "AnalysisSameEventPairing::runMCGen() completed" << endl; } void processBarrelOnly(MyEventsSelected const& events, BCsWithTimestamps const& bcs, soa::Join const& barrelAssocs, MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, McCollisions const& mcEvents, McParticles const& mcTracks) { - cout << "AnalysisSameEventPairing::processBarrelOnly() called" << endl; + // cout << "AnalysisSameEventPairing::processBarrelOnly() called" << endl; runSameEventPairing(events, bcs, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, mcTracks); runMCGen(events, mcEvents, mcTracks); - cout << "AnalysisSameEventPairing::processBarrelOnly() completed" << endl; + // cout << "AnalysisSameEventPairing::processBarrelOnly() completed" << endl; } void processBarrelPbPbOnly(MyEventsSelectedWithCentAndMults const& events, BCsWithTimestamps const& bcs, soa::Join const& barrelAssocs, MyBarrelTracksWithCovWithAmbiguities const& barrelTracks, soa::Join const& mcEvents, McParticles const& mcTracks) { - cout << "AnalysisSameEventPairing::processBarrelPbPbOnly() called" << endl; + // cout << "AnalysisSameEventPairing::processBarrelPbPbOnly() called" << endl; runSameEventPairing(events, bcs, trackAssocsPerCollision, barrelAssocs, barrelTracks, mcEvents, mcTracks); runMCGen(events, mcEvents, mcTracks); - cout << "AnalysisSameEventPairing::processBarrelPbPbOnly() completed" << endl; + // cout << "AnalysisSameEventPairing::processBarrelPbPbOnly() completed" << endl; } - void processDummy(MyEvents&) + void processDummy(const MyEvents&) { // do nothing } @@ -2371,7 +2392,7 @@ struct AnalysisDileptonTrack { void init(o2::framework::InitContext& context) { - cout << "AnalysisDileptonTrack::init() called" << endl; + LOG(info) << "AnalysisDileptonTrack::init() called"; bool isBarrel = context.mOptions.get("processBarrel"); // bool isBarrelAsymmetric = context.mOptions.get("processDstarToD0Pi"); // bool isMuon = context.mOptions.get("processMuonSkimmed"); @@ -2380,9 +2401,9 @@ struct AnalysisDileptonTrack { if (isDummy) { if (isBarrel || isMCGen) { - LOG(fatal) << "Dummy function is enabled even if there are normal process functions running! Fix your config!" << endl; + LOG(fatal) << "Dummy function is enabled even if there are normal process functions running! Fix your config!"; } else { - LOG(info) << "Dummy function is enabled. Skipping the rest of the init function" << endl; + LOG(info) << "Dummy function is enabled. Skipping the rest of the init function"; return; } } @@ -2403,7 +2424,7 @@ struct AnalysisDileptonTrack { VarManager::SetDefaultVarNames(); fHistMan = new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(true); - fHistMan->SetDefaultVarNames(VarManager::fgVariableNames, VarManager::fgVariableUnits); + fHistMan->SetDefaultVarNames(static_cast(VarManager::fgVariableNames), static_cast(VarManager::fgVariableUnits)); TString sigNamesStr = fConfigMCOptions.fConfigMCRecSignals.value; std::unique_ptr objRecSigArray(sigNamesStr.Tokenize(",")); @@ -2425,7 +2446,7 @@ struct AnalysisDileptonTrack { TString addMCSignalsStr = fConfigMCOptions.fConfigMCRecSignalsJSON.value; if (addMCSignalsStr != "") { std::vector addMCSignals = dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto& mcIt : addMCSignals) { + for (const auto& mcIt : addMCSignals) { if (mcIt->GetNProngs() != 3) { LOG(fatal) << "Signal at reconstructed level requested (" << mcIt->GetName() << ") " << "does not have 3 prongs! Fix it"; } @@ -2465,7 +2486,7 @@ struct AnalysisDileptonTrack { addMCSignalsStr = fConfigMCOptions.fConfigMCGenSignalsJSON.value; if (addMCSignalsStr != "") { std::vector addMCSignals = dqmcsignals::GetMCSignalsFromJSON(addMCSignalsStr.Data()); - for (auto& mcIt : addMCSignals) { + for (const auto& mcIt : addMCSignals) { if (mcIt->GetNProngs() == 1) { fGenMCSignals.push_back(mcIt); } @@ -2499,8 +2520,8 @@ struct AnalysisDileptonTrack { cfgTrackSelection_objArrayTrackCuts = new TObjArray(); } std::vector addTrackCuts = dqcuts::GetCutsFromJSON(cfgTrackSelection_TrackCuts.data()); - for (auto& t : addTrackCuts) { - TObjString* tempObjStr = new TObjString(t->GetName()); + for (const auto& t : addTrackCuts) { + auto tempObjStr = new TObjString(t->GetName()); cfgTrackSelection_objArrayTrackCuts->Add(tempObjStr); } } @@ -2540,7 +2561,7 @@ struct AnalysisDileptonTrack { // but this is only used for histograms, not for the produced dilepton tables string cfgPairing_TrackCuts; string cfgPairing_PairCuts; - string cfgPairing_PairCutsJSON; + // string cfgPairing_PairCutsJSON; string cfgPairing_CommonTrackCuts; if (isBarrel) { getTaskOptionValue(context, "analysis-same-event-pairing", "cfgTrackCuts", cfgPairing_TrackCuts, false); @@ -2608,15 +2629,15 @@ struct AnalysisDileptonTrack { TString pairLegCutName; // here we check that this cut is one of those used for building the dileptons - if (isBarrel) { - if (!cfgPairing_objArrayTrackCuts->FindObject(fTrackCutNames[icut].Data())) { - continue; - } - pairLegCutName = fTrackCutNames[icut].Data(); - } else { - // For asymmetric pairs we access the leg cuts instead - pairLegCutName = static_cast(cfgPairing_objArrayTrackCuts->At(icut))->GetString(); + // if (isBarrel) { + if (!cfgPairing_objArrayTrackCuts->FindObject(fTrackCutNames[icut].Data())) { + continue; } + pairLegCutName = fTrackCutNames[icut].Data(); + // } else { + // // For asymmetric pairs we access the leg cuts instead + // pairLegCutName = static_cast(cfgPairing_objArrayTrackCuts->At(icut))->GetString(); + // } fLegCutNames.push_back(pairLegCutName); @@ -2632,7 +2653,7 @@ struct AnalysisDileptonTrack { } DefineHistograms(fHistMan, Form("DileptonTrack_%s_%s", pairLegCutName.Data(), fTrackCutNames[iCutTrack].Data()), fConfigOptions.fConfigHistogramSubgroups.value.data()); - for (auto& sig : fRecMCSignals) { + for (const auto& sig : fRecMCSignals) { DefineHistograms(fHistMan, Form("DileptonTrackMCMatched_%s_%s_%s", pairLegCutName.Data(), fTrackCutNames[iCutTrack].Data(), sig->GetName()), fConfigOptions.fConfigHistogramSubgroups.value.data()); } @@ -2641,7 +2662,7 @@ struct AnalysisDileptonTrack { for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { DefineHistograms(fHistMan, Form("DileptonsSelected_%s_%s", pairLegCutName.Data(), fCommonPairCutNames[iCommonCut].Data()), "barrel,vertexing"); DefineHistograms(fHistMan, Form("DileptonTrack_%s_%s_%s", pairLegCutName.Data(), fCommonPairCutNames[iCommonCut].Data(), fTrackCutNames[iCutTrack].Data()), fConfigOptions.fConfigHistogramSubgroups.value.data()); - for (auto& sig : fRecMCSignals) { + for (const auto& sig : fRecMCSignals) { DefineHistograms(fHistMan, Form("DileptonTrackMCMatched_%s_%s_%s_%s", pairLegCutName.Data(), fCommonPairCutNames[iCommonCut].Data(), fTrackCutNames[iCutTrack].Data(), sig->GetName()), fConfigOptions.fConfigHistogramSubgroups.value.data()); } } @@ -2652,7 +2673,7 @@ struct AnalysisDileptonTrack { for (int iPairCut = 0; iPairCut < fNPairCuts; ++iPairCut) { DefineHistograms(fHistMan, Form("DileptonsSelected_%s_%s", pairLegCutName.Data(), fPairCutNames[iPairCut].Data()), "barrel,vertexing"); DefineHistograms(fHistMan, Form("DileptonTrack_%s_%s_%s", pairLegCutName.Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iCutTrack].Data()), fConfigOptions.fConfigHistogramSubgroups.value.data()); - for (auto& sig : fRecMCSignals) { + for (const auto& sig : fRecMCSignals) { DefineHistograms(fHistMan, Form("DileptonTrackMCMatched_%s_%s_%s_%s", pairLegCutName.Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iCutTrack].Data(), sig->GetName()), fConfigOptions.fConfigHistogramSubgroups.value.data()); } @@ -2661,7 +2682,7 @@ struct AnalysisDileptonTrack { for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; ++iCommonCut) { DefineHistograms(fHistMan, Form("DileptonsSelected_%s_%s_%s", pairLegCutName.Data(), fCommonPairCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data()), "barrel,vertexing"); DefineHistograms(fHistMan, Form("DileptonTrack_%s_%s_%s_%s", pairLegCutName.Data(), fCommonPairCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iCutTrack].Data()), fConfigOptions.fConfigHistogramSubgroups.value.data()); - for (auto& sig : fRecMCSignals) { + for (const auto& sig : fRecMCSignals) { DefineHistograms(fHistMan, Form("DileptonTrack_%s_%s_%s_%s_%s", pairLegCutName.Data(), fCommonPairCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iCutTrack].Data(), sig->GetName()), fConfigOptions.fConfigHistogramSubgroups.value.data()); } } @@ -2673,11 +2694,11 @@ struct AnalysisDileptonTrack { } // end if (isBarrel || isBarrelAsymmetric || isMuon) if (isMCGen) { - for (auto& sig : fGenMCSignals) { + for (const auto& sig : fGenMCSignals) { DefineHistograms(fHistMan, Form("MCTruthGen_%s", sig->GetName()), ""); DefineHistograms(fHistMan, Form("MCTruthGenSel_%s", sig->GetName()), ""); } - for (auto& sig : fRecMCSignals) { + for (const auto& sig : fRecMCSignals) { DefineHistograms(fHistMan, Form("MCTruthGenSelBR_%s", sig->GetName()), ""); DefineHistograms(fHistMan, Form("MCTruthGenSelBRAccepted_%s", sig->GetName()), ""); } @@ -2689,15 +2710,15 @@ struct AnalysisDileptonTrack { } VarManager::SetUseVars(fHistMan->GetUsedVars()); fOutputList.setObject(fHistMan->GetMainHistogramList()); - cout << "AnalysisDileptonTrack::init() completed" << endl; + LOG(info) << "AnalysisDileptonTrack::init() completed"; } // init parameters from CCDB void initParamsFromCCDB(uint64_t timestamp) { - cout << "AnalysisDileptonTrack::initParamsFromCCDB() called for timestamp=" << timestamp << endl; + LOG(info) << "AnalysisDileptonTrack::initParamsFromCCDB() called for timestamp=" << timestamp; if (fConfigCCDBOptions.fConfigUseRemoteField.value) { - o2::parameters::GRPMagField* grpmag = fCCDB->getForTimeStamp(fConfigCCDBOptions.fConfigGRPmagPath.value, timestamp); + auto grpmag = fCCDB->getForTimeStamp(fConfigCCDBOptions.fConfigGRPmagPath.value, timestamp); float magField = 0.0; if (grpmag != nullptr) { magField = grpmag->getNominalL3Field(); @@ -2716,7 +2737,7 @@ struct AnalysisDileptonTrack { VarManager::SetupThreeProngDCAFitter(fConfigCCDBOptions.fConfigMagField.value, true, 200.0f, 4.0f, 1.0e-3f, 0.9f, false); // TODO: get these parameters from Configurables } } - cout << "AnalysisDileptonTrack::initParamsFromCCDB() completed" << endl; + LOG(info) << "AnalysisDileptonTrack::initParamsFromCCDB() completed"; } // Template function to run pair - hadron combinations @@ -2732,12 +2753,12 @@ struct AnalysisDileptonTrack { VarManager::FillEvent(event.mcCollision(), fValuesDilepton); } - uint32_t mcDecision = static_cast(0); + auto mcDecision = static_cast(0); size_t isig = 0; auto bc = event.template bc_as(); - for (auto dilepton : dileptons) { + for (const auto& dilepton : dileptons) { // get full track info of tracks based on the index auto lepton1 = tracks.rawIteratorAt(dilepton.index0Id()); auto lepton2 = tracks.rawIteratorAt(dilepton.index1Id()); @@ -2783,7 +2804,7 @@ struct AnalysisDileptonTrack { } // loop over track associations - for (auto& assoc : assocs) { + for (const auto& assoc : assocs) { VarManager::ResetValues(0, VarManager::kNVars, fValuesHadron); // VarManager::ResetValues(0, VarManager::kNVars, fValuesDilepton); @@ -2943,9 +2964,9 @@ struct AnalysisDileptonTrack { } fHistMan->FillHistClass(Form("DileptonTrack_%s_%s", fLegCutNames[icut].Data(), fTrackCutNames[iTrackCut].Data()), fValuesHadron); - for (uint32_t isig = 0; isig < fRecMCSignals.size(); isig++) { - if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s", fLegCutNames[icut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isig]->GetName()), fValuesHadron); + for (uint32_t isignal = 0; isignal < fRecMCSignals.size(); isignal++) { + if (mcDecision & (static_cast(1) << isignal)) { + fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s", fLegCutNames[icut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isignal]->GetName()), fValuesHadron); } } @@ -2953,9 +2974,9 @@ struct AnalysisDileptonTrack { for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit(fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass(Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), fCommonPairCutNames[iCommonCut].Data(), fTrackCutNames[iTrackCut].Data()), fValuesHadron); - for (uint32_t isig = 0; isig < fRecMCSignals.size(); isig++) { - if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s_%s", fLegCutNames[icut].Data(), fCommonPairCutNames[iCommonCut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isig]->GetName()), fValuesHadron); + for (uint32_t isignal = 0; isignal < fRecMCSignals.size(); isignal++) { + if (mcDecision & (static_cast(1) << isignal)) { + fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s_%s", fLegCutNames[icut].Data(), fCommonPairCutNames[iCommonCut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isignal]->GetName()), fValuesHadron); } } } @@ -2963,17 +2984,17 @@ struct AnalysisDileptonTrack { for (int iPairCut = 0; iPairCut < fNPairCuts; iPairCut++) { if (dilepton.pairFilterMap_bit(iPairCut)) { fHistMan->FillHistClass(Form("DileptonTrack_%s_%s_%s", fLegCutNames[icut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iTrackCut].Data()), fValuesHadron); - for (uint32_t isig = 0; isig < fRecMCSignals.size(); isig++) { - if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s_%s", fLegCutNames[icut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isig]->GetName()), fValuesHadron); + for (uint32_t isignal = 0; isignal < fRecMCSignals.size(); isignal++) { + if (mcDecision & (static_cast(1) << isignal)) { + fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s_%s", fLegCutNames[icut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isignal]->GetName()), fValuesHadron); } } for (int iCommonCut = 0; iCommonCut < fNCommonTrackCuts; iCommonCut++) { if (dilepton.commonFilterMap_bit(fCommonTrackCutMap[iCommonCut])) { fHistMan->FillHistClass(Form("DileptonTrack_%s_%s_%s_%s", fLegCutNames[icut].Data(), fCommonPairCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iTrackCut].Data()), fValuesHadron); - for (uint32_t isig = 0; isig < fRecMCSignals.size(); isig++) { - if (mcDecision & (static_cast(1) << isig)) { - fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s_%s_%s", fLegCutNames[icut].Data(), fCommonPairCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isig]->GetName()), fValuesHadron); + for (uint32_t isignal = 0; isignal < fRecMCSignals.size(); isignal++) { + if (mcDecision & (static_cast(1) << isignal)) { + fHistMan->FillHistClass(Form("DileptonTrackMCMatched_%s_%s_%s_%s_%s", fLegCutNames[icut].Data(), fCommonPairCutNames[iCommonCut].Data(), fPairCutNames[iPairCut].Data(), fTrackCutNames[iTrackCut].Data(), fRecMCSignals[isignal]->GetName()), fValuesHadron); } } } @@ -2996,8 +3017,8 @@ struct AnalysisDileptonTrack { MyBarrelTracksWithCov const& tracks, soa::Filtered const& dileptons, McCollisions const& mcEvents, McParticles const& mcTracks) { - cout << "AnalysisDileptonTrack::processBarrel() called" << endl; - // set up KF or DCAfitter + // cout << "AnalysisDileptonTrack::processBarrel() called" << endl; + // set up KF or DCAfitter if (events.size() == 0) { return; } @@ -3005,7 +3026,7 @@ struct AnalysisDileptonTrack { initParamsFromCCDB(bcs.begin().timestamp()); fCurrentRun = bcs.begin().runNumber(); } // end: runNumber - for (auto& event : events) { + for (const auto& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -3015,7 +3036,7 @@ struct AnalysisDileptonTrack { // groupedDielectrons.bindInternalIndicesTo(&dileptons); runDileptonHadron(event, bcs, groupedBarrelAssocs, tracks, groupedDielectrons, mcEvents, mcTracks); } - cout << "AnalysisDileptonTrack::processBarrel() completed" << endl; + // cout << "AnalysisDileptonTrack::processBarrel() completed" << endl; } /* void processDstarToD0Pi(soa::Filtered const& events, BCsWithTimestamps const& bcs, @@ -3070,13 +3091,13 @@ struct AnalysisDileptonTrack { void processMCGen(soa::Filtered const& events, McCollisions const& /*mcEvents*/, McParticles const& mcTracks) { - cout << "AnalysisDileptonTrack::processMCGen() called" << endl; - // first loop over MC particles to fill generator level histograms for one prong MC signals (e.g. the B meson) - for (auto& mctrack : mcTracks) { - for (auto& sig : fGenMCSignals) { + // cout << "AnalysisDileptonTrack::processMCGen() called" << endl; + // first loop over MC particles to fill generator level histograms for one prong MC signals (e.g. the B meson) + for (const auto& mctrack : mcTracks) { + for (const auto& sig : fGenMCSignals) { if (sig->CheckSignal(true, mctrack)) { VarManager::FillTrackMC(mcTracks, mctrack); - fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGen_%s", sig->GetName()), static_cast(VarManager::fgValues)); } } } @@ -3086,7 +3107,7 @@ struct AnalysisDileptonTrack { std::vector mcParticleListDileptonLegs; std::vector mcParticleListHadron; - for (auto& event : events) { + for (const auto& event : events) { if (!event.isEventSelected_bit(0)) { continue; } @@ -3098,12 +3119,12 @@ struct AnalysisDileptonTrack { auto groupedMCTracks = mcTracks.sliceBy(perReducedMcEvent, event.mcCollisionId()); groupedMCTracks.bindInternalIndicesTo(&mcTracks); - for (auto& track : groupedMCTracks) { + for (const auto& track : groupedMCTracks) { auto track_raw = mcTracks.rawIteratorAt(track.globalIndex()); - for (auto& sig : fGenMCSignals) { + for (const auto& sig : fGenMCSignals) { if (sig->CheckSignal(true, track_raw)) { VarManager::FillTrackMC(mcTracks, track); - fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), static_cast(VarManager::fgValues)); } } if (fDileptonLegSignal->CheckSignal(true, track_raw)) { @@ -3116,25 +3137,25 @@ struct AnalysisDileptonTrack { // construct all possible triplets of MC tracks in this MC collision to fill generator level histograms // for three prong MC signals (e.g. B -> J/psi + K) - for (auto& t1 : mcParticleListDileptonLegs) { + for (const auto& t1 : mcParticleListDileptonLegs) { auto t1_raw = mcTracks.rawIteratorAt(t1); - for (auto& t2 : mcParticleListDileptonLegs) { + for (const auto& t2 : mcParticleListDileptonLegs) { if (t2 <= t1) { continue; // avoid double counting and self-pairing } auto t2_raw = mcTracks.rawIteratorAt(t2); - for (auto& t3 : mcParticleListHadron) { + for (const auto& t3 : mcParticleListHadron) { if (t3 == t1 || t3 == t2) { continue; // avoid self-pairing } auto t3_raw = mcTracks.rawIteratorAt(t3); - for (auto& sig : fRecMCSignals) { + for (const auto& sig : fRecMCSignals) { if (sig->CheckSignal(true, t1_raw, t2_raw, t3_raw)) { - VarManager::FillTripleMC(t1_raw, t2_raw, t3_raw, VarManager::fgValues); // nb! hardcoded for jpsiK - fHistMan->FillHistClass(Form("MCTruthGenSelBR_%s", sig->GetName()), VarManager::fgValues); + VarManager::FillTripleMC(t1_raw, t2_raw, t3_raw, static_cast(VarManager::fgValues)); // nb! hardcoded for jpsiK + fHistMan->FillHistClass(Form("MCTruthGenSelBR_%s", sig->GetName()), static_cast(VarManager::fgValues)); // apply kinematic cuts if (t1_raw.pt() < fConfigMCOptions.fConfigMCGenDileptonLegPtMin.value || std::abs(t1_raw.eta()) > fConfigMCOptions.fConfigMCGenDileptonLegEtaAbs.value) { @@ -3146,17 +3167,17 @@ struct AnalysisDileptonTrack { if (t3_raw.pt() < fConfigMCOptions.fConfigMCGenHadronPtMin.value || std::abs(t3_raw.eta()) > fConfigMCOptions.fConfigMCGenHadronEtaAbs.value) { continue; } - fHistMan->FillHistClass(Form("MCTruthGenSelBRAccepted_%s", sig->GetName()), VarManager::fgValues); + fHistMan->FillHistClass(Form("MCTruthGenSelBRAccepted_%s", sig->GetName()), static_cast(VarManager::fgValues)); } } } } } } // end loop over reconstructed events - cout << "AnalysisDileptonTrack::processMCGen() completed" << endl; + // cout << "AnalysisDileptonTrack::processMCGen() completed" << endl; } - void processDummy(MyEvents&) + void processDummy(const MyEvents&) { // do nothing } @@ -3180,7 +3201,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) adaptAnalysisTask(cfgc)}; } -void DefineHistograms(HistogramManager* histMan, TString histClasses, const char* histGroups) +void DefineHistograms(HistogramManager* histMan, const TString& histClasses, const char* histGroups) { // // Define here the histograms for all the classes required in analysis.