diff --git a/PWGHF/D2H/Macros/runMassFitter.C b/PWGHF/D2H/Macros/runMassFitter.C index d83c0f7b7a5..0b926b321f0 100644 --- a/PWGHF/D2H/Macros/runMassFitter.C +++ b/PWGHF/D2H/Macros/runMassFitter.C @@ -237,14 +237,14 @@ int runMassFitter(const TString& configFileName) hMass[iSliceVar] = inputFile->Get(inputHistoName[iSliceVar].data()); if (enableRefl) { hMassRefl[iSliceVar] = inputFileRefl->Get(reflHistoName[iSliceVar].data()); - hMassSgn[iSliceVar] = inputFileRefl->Get(fdHistoName[iSliceVar].data()); - hMassSgn[iSliceVar]->Add(inputFileRefl->Get(promptHistoName[iSliceVar].data())); if (hMassRefl[iSliceVar] == nullptr) { throw std::runtime_error("ERROR: MC reflection histogram not found! Exit!"); } + hMassSgn[iSliceVar] = inputFileRefl->Get(fdHistoName[iSliceVar].data()); if (hMassSgn[iSliceVar] == nullptr) { throw std::runtime_error("ERROR: MC prompt or FD histogram not found! Exit!"); } + hMassSgn[iSliceVar]->Add(inputFileRefl->Get(promptHistoName[iSliceVar].data())); } } else { hMass[iSliceVar] = inputFile->Get(promptHistoName[iSliceVar].data()); @@ -505,9 +505,6 @@ int runMassFitter(const TString& configFileName) hRawYieldsChiSquareTotal->SetBinError(iSliceVar + 1, 1.e-20); if (enableRefl) { hReflectionOverSignal->SetBinContent(iSliceVar + 1, reflOverSgn); - } - - if (enableRefl) { if (nSliceVarBins > 1) { canvasRefl[iCanvas]->cd(iSliceVar - nCanvasesMax * iCanvas + 1); } else { @@ -625,7 +622,7 @@ void divideCanvas(TCanvas* canvas, int nSliceVarBins) } } -int main(int argc, char* argv[]) +int main(int argc, const char* argv[]) { if (argc == 1) { throw std::runtime_error("Not enough arguments. Please use\n./runMassFitter configFileName"); diff --git a/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx b/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx index 60e8c1e6bb8..85168f089b5 100644 --- a/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx +++ b/PWGHF/D2H/Tasks/taskCharmPolarisation.cxx @@ -1393,8 +1393,8 @@ struct HfTaskCharmPolarisation { template bool isInSignalRegion(float invMass) { - float invMassMin = 0.f; - float invMassMax = 100.f; + float invMassMin; + float invMassMax; if constexpr (Channel == charm_polarisation::DecayChannel::DstarToDzeroPi) { // D*+ invMassMin = 0.142f; invMassMax = 0.15f; @@ -1576,7 +1576,7 @@ struct HfTaskCharmPolarisation { // variable definition float pxDau{-1000.f}, pyDau{-1000.f}, pzDau{-1000.f}; float pxCharmHad{-1000.f}, pyCharmHad{-1000.f}, pzCharmHad{-1000.f}; - float massDau{0.f}, invMassCharmHad{0.f}, invMassCharmHadForSparse{0.f}, invMassD0{0.f}, invMassKPiLc{0.f}, invMassPKLc{0.f}, invMassPPiLc{0.f}; + double massDau{0.}, invMassCharmHad{0.}, invMassCharmHadForSparse{0.}, invMassD0{0.}, invMassKPiLc{0.}, invMassPKLc{0.}, invMassPPiLc{0.}; float rapidity{-999.f}; std::array outputMl{-1.f, -1.f, -1.f}; int isRotatedCandidate = 0; // currently meaningful only for Lc->pKpi @@ -1834,12 +1834,11 @@ struct HfTaskCharmPolarisation { float const xQvec = (*qVecs).at(0); float const yQvec = (*qVecs).at(1); ROOT::Math::XYZVector const qVecNorm = ROOT::Math::XYZVector(yQvec, -xQvec, 0.f); - float cosThetaStarEP = -10.f; float const phiEP = -99.f; if (activateTHnSparseCosThStarEP) { // EP - cosThetaStarEP = qVecNorm.Dot(threeVecDauCM) / std::sqrt(threeVecDauCM.Mag2()) / std::sqrt(qVecNorm.Mag2()); + float cosThetaStarEP = qVecNorm.Dot(threeVecDauCM) / std::sqrt(threeVecDauCM.Mag2()) / std::sqrt(qVecNorm.Mag2()); fillRecoHistos(invMassCharmHadForSparse, ptCharmHad, numPvContributors, rapidity, invMassD0, invMassKPiLc, cosThetaStarEP, phiEP, outputMl, isRotatedCandidate, origin, ptBhadMother, resoChannelLc, absEtaTrackMin, numItsClsMin, numTpcClsMin, charge, nMuons, partRecoDstar); } } @@ -2310,8 +2309,7 @@ struct HfTaskCharmPolarisation { TracksWithExtra const& tracks) { for (const auto& collision : collisions) { - float centrality = {-1.f}; - centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); + const auto centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); if (centrality < centralityMin || centrality > centralityMax) { continue; // skip this collision if outside of the centrality range } @@ -2340,8 +2338,7 @@ struct HfTaskCharmPolarisation { TracksWithExtra const& tracks) { for (const auto& collision : collisions) { - float centrality = {-1.f}; - centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); + const auto centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); if (centrality < centralityMin || centrality > centralityMax) { continue; // skip this collision if outside of the centrality range } @@ -2371,11 +2368,10 @@ struct HfTaskCharmPolarisation { FilteredCandDstarWSelFlagAndMc const& dstarCandidates, TracksWithExtra const& tracks) { - float centrality = {-1.f}; int numPvContributorsGen{0}; for (const auto& collision : collisions) { // loop over reco collisions associated to this gen collision - centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); + const auto centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); if (centrality < centralityMin || centrality > centralityMax) { continue; // skip this collision if outside of the centrality range } @@ -2400,7 +2396,7 @@ struct HfTaskCharmPolarisation { } for (const auto& mcParticle : mcParticles) { const auto& recoCollsPerMcColl = collisions.sliceBy(colPerMcCollision, mcParticle.mcCollision().globalIndex()); - float const cent = o2::hf_centrality::getCentralityGenColl(recoCollsPerMcColl, centEstimator); + const auto cent = o2::hf_centrality::getCentralityGenColl(recoCollsPerMcColl, centEstimator); runMcGenPolarisationAnalysis(mcParticle, mcParticles, numPvContributorsGen, ¢); } } @@ -2412,11 +2408,10 @@ struct HfTaskCharmPolarisation { FilteredCandDstarWSelFlagAndMcAndMl const& dstarCandidates, TracksWithExtra const& tracks) { - float centrality = {-1.f}; int numPvContributorsGen{0}; for (const auto& collision : collisions) { // loop over reco collisions associated to this gen collision - centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); + const auto centrality = o2::hf_centrality::getCentralityColl(collision, centEstimator); if (centrality < centralityMin || centrality > centralityMax) { continue; // skip this collision if outside of the centrality range } @@ -2441,7 +2436,7 @@ struct HfTaskCharmPolarisation { } for (const auto& mcParticle : mcParticles) { const auto& recoCollsPerMcColl = collisions.sliceBy(colPerMcCollision, mcParticle.mcCollision().globalIndex()); - float const cent = o2::hf_centrality::getCentralityGenColl(recoCollsPerMcColl, centEstimator); + const auto cent = o2::hf_centrality::getCentralityGenColl(recoCollsPerMcColl, centEstimator); runMcGenPolarisationAnalysis(mcParticle, mcParticles, numPvContributorsGen, ¢); } } diff --git a/PWGHF/D2H/Tasks/taskSigmacToCascade.cxx b/PWGHF/D2H/Tasks/taskSigmacToCascade.cxx index 5d6a27f7141..8cb1013323e 100644 --- a/PWGHF/D2H/Tasks/taskSigmacToCascade.cxx +++ b/PWGHF/D2H/Tasks/taskSigmacToCascade.cxx @@ -140,7 +140,6 @@ struct HfTaskSigmacToCascade { { for (const auto& candSc : candScs) { const auto& candidateLc = candSc.prongLc_as(); - float massSc(-1.), massLc(-1.), deltaMass(-1.); float ptSc(candSc.pt()), ptLc(candidateLc.pt()); float const etaSc(candSc.eta()) /*, etaLc(candidateLc.eta())*/; float const phiSc(candSc.phi()) /*, phiLc(candidateLc.phi())*/; @@ -149,9 +148,9 @@ struct HfTaskSigmacToCascade { float cpaLc(candidateLc.cpa()), cpaXYLc(candidateLc.cpaXY()); float y(-1.); - massLc = hfHelper.invMassLcToK0sP(candidateLc); - massSc = hfHelper.invMassScRecoLcToK0sP(candSc, candidateLc); - deltaMass = massSc - massLc; + auto massLc = hfHelper.invMassLcToK0sP(candidateLc); + auto massSc = hfHelper.invMassScRecoLcToK0sP(candSc, candidateLc); + auto deltaMass = massSc - massLc; if (candSc.charge() == 0) { y = hfHelper.ySc0(candSc); } else if (candSc.charge() == 2) { diff --git a/PWGHF/HFC/Macros/DhCorrelationExtraction.cxx b/PWGHF/HFC/Macros/DhCorrelationExtraction.cxx index ebf50d0f10e..6459c54c437 100644 --- a/PWGHF/HFC/Macros/DhCorrelationExtraction.cxx +++ b/PWGHF/HFC/Macros/DhCorrelationExtraction.cxx @@ -116,6 +116,8 @@ DhCorrelationExtraction::DhCorrelationExtraction(const DhCorrelationExtraction& fFilePromptMc(source.fFilePromptMc), fFileNonPromptMc(source.fFileNonPromptMc), fDirMass(source.fDirMass), + fDirSE(source.fDirSE), + fDirME(source.fDirME), fDirSecPart(source.fDirSecPart), fCorrectedCorrHisto(source.fCorrectedCorrHisto), fCorrectedCorrHistoBaselineSubtr(source.fCorrectedCorrHistoBaselineSubtr), @@ -942,16 +944,15 @@ Bool_t DhCorrelationExtraction::readInputSecondaryPartContamination() TH1D* DhCorrelationExtraction::evaluateMcClosModulations(Double_t ptCandMin, Double_t ptCandMax, Double_t ptHadMin, Double_t ptHadMax) { - TH1D* hModul = new TH1D(); + TH1D* hModul = nullptr; fFilePromptMc = TFile::Open(fFilePromptMcRecName.Data()); - fFileNonPromptMc = TFile::Open(fFileNonPromptMcRecName.Data()); - if (fFilePromptMc == nullptr) { - std::cout << "[ERROR] File prompt MC rec cannot be opened! check your file path!" << std::endl; + throw std::runtime_error("[ERROR] File prompt MC rec cannot be opened! check your file path!"); } + fFileNonPromptMc = TFile::Open(fFileNonPromptMcRecName.Data()); if (fFileNonPromptMc == nullptr) { - std::cout << "[ERROR] File non-prompt MC rec cannot be opened! check your file path!" << std::endl; + throw std::runtime_error("[ERROR] File non-prompt MC rec cannot be opened! check your file path!"); } // TODO: generalise this part @@ -1019,7 +1020,7 @@ TH1D* DhCorrelationExtraction::evaluateMcClosModulations(Double_t ptCandMin, Dou TH2D* DhCorrelationExtraction::getCorrelHisto(Int_t sEorMe, Int_t sorSb, Int_t pool, Double_t ptCandMin, Double_t ptCandMax, Double_t ptHadMin, Double_t ptHadMax) { // TODO: Subtraction of softpion - TH2D* h2D = new TH2D(); // pointer to be returned + TH2D* h2D = nullptr; // pointer to be returned THnSparseD* hSparse = nullptr; if (sEorMe == kSE) { // Same Event @@ -1027,7 +1028,7 @@ TH2D* DhCorrelationExtraction::getCorrelHisto(Int_t sEorMe, Int_t sorSb, Int_t p hSparse = reinterpret_cast(fDirSE->Get(fSECorrelSignalRegionName.Data())); } else if (!fSidebandDivided) { hSparse = reinterpret_cast(fDirSE->Get(fSECorrelSidebandsName.Data())); - } else if (fSidebandDivided) { + } else { if (fUseSidebLeft && !fUseSidebRight) { hSparse = reinterpret_cast(fDirSE->Get(fSECorrelSidebandLeftName.Data())); } else if (!fUseSidebLeft && fUseSidebRight) { @@ -1044,7 +1045,7 @@ TH2D* DhCorrelationExtraction::getCorrelHisto(Int_t sEorMe, Int_t sorSb, Int_t p hSparse = reinterpret_cast(fDirME->Get(fMECorrelSignalRegionName.Data())); } else if (!fSidebandDivided) { hSparse = reinterpret_cast(fDirME->Get(fMECorrelSidebandsName.Data())); - } else if (fSidebandDivided) { + } else { if (fUseSidebLeft && !fUseSidebRight) { hSparse = reinterpret_cast(fDirME->Get(fMECorrelSidebandLeftName.Data())); } else if (!fUseSidebLeft && fUseSidebRight) { @@ -1183,7 +1184,7 @@ void DhCorrelationExtraction::getSignalAndBackgroundForNorm(Double_t ptCandMin, TH2D* DhCorrelationExtraction::getFdTemplateHisto(Int_t promptOrFd, Double_t ptCandMin, Double_t ptCandMax, Double_t ptHadMin, Double_t ptHadMax) { - TH2D* h2D = new TH2D(); // pointer to be returned + TH2D* h2D = nullptr; // pointer to be returned if (promptOrFd == kPrompt) { h2D = reinterpret_cast(fFileFDTemplate->Get(Form("%s%.0f_%.0f_ptassoc%.0f_%.0f", fHistoFDTemplatePromptName.Data(), ptCandMin, ptCandMax, ptHadMin, ptHadMax))); @@ -1215,7 +1216,7 @@ TH2D* DhCorrelationExtraction::getFdTemplateHisto(Int_t promptOrFd, Double_t ptC TH1D* DhCorrelationExtraction::getCorrelHistoSecondaryPart(Int_t partType, Double_t ptCandMin, Double_t ptCandMax, Double_t ptHadMin, Double_t ptHadMax) { - TH1D* h1D = new TH1D(); // pointer to be returned + TH1D* h1D = nullptr; // pointer to be returned THnSparseD* hSparse = nullptr; @@ -1329,8 +1330,7 @@ TH1D* DhCorrelationExtraction::reflectHistoRun2(TH1D* h, Double_t scale) Double_t DhCorrelationExtraction::getFdPromptFrac(Double_t ptCandMin, Double_t ptCandMax, Double_t /*ptHadMin*/, Double_t /*ptHadMax*/) { - TH1D* h1D = new TH1D(); - h1D = reinterpret_cast(fFileFDPromptFrac->Get(fHistoFDPromptFracName.Data())); + TH1D* h1D = reinterpret_cast(fFileFDPromptFrac->Get(fHistoFDPromptFracName.Data())); Int_t const binPtCandMin = h1D->GetXaxis()->FindBin(ptCandMin + 0.01); Int_t const binPtCandMax = h1D->GetXaxis()->FindBin(ptCandMax - 0.01); @@ -1380,7 +1380,7 @@ Double_t DhCorrelationExtraction::calculateBaseline(TH1D*& histo, Bool_t totalRa // total range = 2*Pi // half range = Pi , for histogram reflected under symmetric assumption - Double_t baseline, errBaseline; + Double_t baseline; Int_t const nBinsPhi = histo->GetNbinsX(); Int_t const binPhiHalf = nBinsPhi / 2; Int_t const binPhiHalfMinus1 = nBinsPhi / 2 - 1; diff --git a/PWGHF/HFC/Macros/DhCorrelationFitter.cxx b/PWGHF/HFC/Macros/DhCorrelationFitter.cxx index a69a1ab4a2e..35e023153d3 100644 --- a/PWGHF/HFC/Macros/DhCorrelationFitter.cxx +++ b/PWGHF/HFC/Macros/DhCorrelationFitter.cxx @@ -38,81 +38,79 @@ #include DhCorrelationFitter::DhCorrelationFitter() : // default constructor + fHist(nullptr), + fFit(nullptr), + fGausNS(nullptr), + fGausAS(nullptr), + fPed(nullptr), + fBaseTransvReg(nullptr), fIsReflected(kFALSE), - fTypeOfFitFunc(kConstwoGaus), - fFixBase(0), - fFixMean(0), - fMinCandPt(0.), - fMaxCandPt(99.), - fMinAssoPt(0.), - fMaxAssoPt(99.), - fNpars(0), - fExtParsVals(nullptr), - fExtParsLowBounds(nullptr), - fExtParsUppBounds(nullptr), fUseExternalPars(kFALSE), fShiftBaselineUp(kFALSE), fShiftBaselineDown(kFALSE), fIsTotal(kTRUE), + fTypeOfFitFunc(kConstwoGaus), + fFixBase(0), + fFixMean(0), + fNpars(0), fNbasleinePoints(0), fBinsBaseline(nullptr), - fHist(nullptr), fMinCorr(0), fMaxCorr(0), + fMinCandPt(0.), + fMaxCandPt(99.), + fMinAssoPt(0.), + fMaxAssoPt(99.), fBaseline(0.), fErrBaseline(0.), - fFit(nullptr), - fGausNS(nullptr), - fGausAS(nullptr), - fPed(nullptr), - fv2AssocPart(0.), - fv2Dmeson(0.), fNSyieldBinCount(0.), fErrNSyieldBinCount(0.), fASyieldBinCount(0.), - fErrASyieldBinCount(0.) + fErrASyieldBinCount(0.), + fv2AssocPart(0.), + fv2Dmeson(0.), + fExtParsVals(nullptr), + fExtParsLowBounds(nullptr), + fExtParsUppBounds(nullptr) { } DhCorrelationFitter::DhCorrelationFitter(TH1F* histoToFit, Double_t min, Double_t max) : // standard constructor + fHist(histoToFit), + fFit(nullptr), + fGausNS(nullptr), + fGausAS(nullptr), + fPed(nullptr), + fBaseTransvReg(nullptr), fIsReflected(kFALSE), + fUseExternalPars(kFALSE), + fShiftBaselineUp(kFALSE), + fShiftBaselineDown(kFALSE), + fIsTotal(kTRUE), fTypeOfFitFunc(kConstwoGaus), fFixBase(0), fFixMean(0), + fNpars(0), + fNbasleinePoints(0), + fBinsBaseline(nullptr), + fMinCorr(min), + fMaxCorr(max), fMinCandPt(0.), fMaxCandPt(99.), fMinAssoPt(0.), fMaxAssoPt(99.), - fNpars(0), - fExtParsVals(nullptr), - fExtParsLowBounds(nullptr), - fExtParsUppBounds(nullptr), - fUseExternalPars(kFALSE), - fShiftBaselineUp(kFALSE), - fShiftBaselineDown(kFALSE), - fIsTotal(kTRUE), - fNbasleinePoints(0), - fBinsBaseline(nullptr), - fHist(nullptr), - fMinCorr(0.), - fMaxCorr(0.), fBaseline(0.), fErrBaseline(0.), - fFit(nullptr), - fGausNS(nullptr), - fGausAS(nullptr), - fPed(nullptr), - fBaseTransvReg(nullptr), - fv2AssocPart(0.), - fv2Dmeson(0.), fNSyieldBinCount(0.), fErrNSyieldBinCount(0.), fASyieldBinCount(0.), - fErrASyieldBinCount(0.) + fErrASyieldBinCount(0.), + fv2AssocPart(0.), + fv2Dmeson(0.), + fExtParsVals(nullptr), + fExtParsLowBounds(nullptr), + fExtParsUppBounds(nullptr) { - fHist = histoToFit; - fMinCorr = min; - fMaxCorr = max; } DhCorrelationFitter::DhCorrelationFitter(const DhCorrelationFitter& source) @@ -163,6 +161,9 @@ DhCorrelationFitter& DhCorrelationFitter::operator=(const DhCorrelationFitter& c fExtParsLowBounds = cfit.fExtParsLowBounds; fExtParsUppBounds = cfit.fExtParsUppBounds; fUseExternalPars = cfit.fUseExternalPars; + fShiftBaselineUp = cfit.fShiftBaselineUp; + fShiftBaselineDown = cfit.fShiftBaselineDown; + fIsTotal = cfit.fIsTotal; fNbasleinePoints = cfit.fNbasleinePoints; fBinsBaseline = cfit.fBinsBaseline; fHist = cfit.fHist; @@ -174,6 +175,9 @@ DhCorrelationFitter& DhCorrelationFitter::operator=(const DhCorrelationFitter& c fGausNS = cfit.fGausNS; fGausAS = cfit.fGausAS; fPed = cfit.fPed; + fBaseTransvReg = cfit.fBaseTransvReg; + fv2AssocPart = cfit.fv2AssocPart; + fv2Dmeson = cfit.fv2Dmeson; fNSyieldBinCount = cfit.fNSyieldBinCount; fErrNSyieldBinCount = cfit.fErrNSyieldBinCount; fASyieldBinCount = cfit.fASyieldBinCount; @@ -622,6 +626,7 @@ Double_t DhCorrelationFitter::findBaseline() } Double_t errAv = 0., av = 0.; TMath::Sort(fHist->GetNbinsX(), hval, ind, kFALSE); // KFALSE -> increasing order + delete[] hval; // Average of abs(fFixBase) lower points for (Int_t k = 0; k < npointsAv; k++) { if (fHist->GetBinError(ind[k] + 1) == 0.) // in case of null entries which induce a crash. Could bias the basline in upward direction! @@ -633,6 +638,7 @@ Double_t DhCorrelationFitter::findBaseline() av += fHist->GetBinContent(ind[k] + 1) / (fHist->GetBinError(ind[k] + 1) * fHist->GetBinError(ind[k] + 1)); errAv += 1. / (fHist->GetBinError(ind[k] + 1) * fHist->GetBinError(ind[k] + 1)); } + delete[] ind; av /= errAv; errAv = TMath::Sqrt(1. / errAv); printf("[RESULT] Average fBaseline: %.3f +- %.3f", av, errAv); @@ -802,7 +808,7 @@ Double_t DhCorrelationFitter::calculateBaseline(TH1F*& histo, Bool_t totalRange) // total range = 2*Pi // half range = Pi , for histogram reflected under symmetric assumption - Double_t baseline, errBaseline; + Double_t baseline; Int_t const nBinsPhi = histo->GetNbinsX(); Int_t const binPhiHalf = nBinsPhi / 2; Int_t const binPhiHalfMinus1 = nBinsPhi / 2 - 1; @@ -956,11 +962,11 @@ void DhCorrelationFitter::setSingleTermsForDrawing(Bool_t draw) pvStatTests1->SetFillStyle(0); pvStatTests1->SetTextSize(0.045); pvStatTests1->SetBorderSize(0); - TText *t0, *t1, *t2, *t3; - t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); - t1 = pvStatTests1->AddText(0., 0.80, Form("Ped = %.3f#pm%.3f ", fBaseline, fErrBaseline)); - t2 = pvStatTests1->AddText(0., 0.65, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); - t3 = pvStatTests1->AddText(0., 0.50, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); + // TText *t0, *t1, *t2, *t3; + // t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); + // t1 = pvStatTests1->AddText(0., 0.80, Form("Ped = %.3f#pm%.3f ", fBaseline, fErrBaseline)); + // t2 = pvStatTests1->AddText(0., 0.65, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); + // t3 = pvStatTests1->AddText(0., 0.50, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); if (draw) { fFit->Draw("same"); @@ -996,14 +1002,14 @@ void DhCorrelationFitter::setSingleTermsForDrawing(Bool_t draw) pvStatTests1->SetFillStyle(0); pvStatTests1->SetTextSize(0.045); pvStatTests1->SetBorderSize(0); - TText *t0, *t1, *t2, *t3, *t4, *t5, *t6; - t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); - t1 = pvStatTests1->AddText(0., 0.80, Form("Ped = %.3f#pm%.3f ", fBaseline, fErrBaseline)); - t2 = pvStatTests1->AddText(0., 0.65, Form("NS Y = %.3f#pm%.3f ", fFit->GetParameter("NS Y"), fFit->GetParError(fFit->GetParNumber("NS Y")))); - t3 = pvStatTests1->AddText(0., 0.50, Form("NS #sigma = %.3f#pm%.3f ", fFit->GetParameter("NS #sigma"), fFit->GetParError(fFit->GetParNumber("NS #sigma")))); - t4 = pvStatTests1->AddText(0., 0.35, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); - t5 = pvStatTests1->AddText(0., 0.20, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); - t6 = pvStatTests1->AddText(0., 0.05, Form("#beta = %.3f#pm%.3f ", fFit->GetParameter("NS shape par"), fFit->GetParError(fFit->GetParNumber("NS shape par")))); + // TText *t0, *t1, *t2, *t3, *t4, *t5, *t6; + // t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); + // t1 = pvStatTests1->AddText(0., 0.80, Form("Ped = %.3f#pm%.3f ", fBaseline, fErrBaseline)); + // t2 = pvStatTests1->AddText(0., 0.65, Form("NS Y = %.3f#pm%.3f ", fFit->GetParameter("NS Y"), fFit->GetParError(fFit->GetParNumber("NS Y")))); + // t3 = pvStatTests1->AddText(0., 0.50, Form("NS #sigma = %.3f#pm%.3f ", fFit->GetParameter("NS #sigma"), fFit->GetParError(fFit->GetParNumber("NS #sigma")))); + // t4 = pvStatTests1->AddText(0., 0.35, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); + // t5 = pvStatTests1->AddText(0., 0.20, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); + // t6 = pvStatTests1->AddText(0., 0.05, Form("#beta = %.3f#pm%.3f ", fFit->GetParameter("NS shape par"), fFit->GetParError(fFit->GetParNumber("NS shape par")))); if (draw) { fFit->Draw("same"); @@ -1046,21 +1052,21 @@ void DhCorrelationFitter::setSingleTermsForDrawing(Bool_t draw) pvStatTests1->SetFillStyle(0); pvStatTests1->SetTextSize(0.045); pvStatTests1->SetBorderSize(0); - TText *t0, *t1, *t2, *t3, *t4, *t5, *t6, *t7, *t8; - t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); - t2 = pvStatTests1->AddText(0., 0.80, Form("NS Y = %.3f#pm%.3f ", fFit->GetParameter("NS Y"), fFit->GetParError(fFit->GetParNumber("NS Y")))); - t3 = pvStatTests1->AddText(0., 0.65, Form("NS #sigma = %.3f#pm%.3f ", fFit->GetParameter("NS #sigma"), fFit->GetParError(fFit->GetParNumber("NS #sigma")))); - t4 = pvStatTests1->AddText(0., 0.50, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); - t5 = pvStatTests1->AddText(0., 0.35, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); + // TText *t0, *t1, *t2, *t3, *t4, *t5, *t6, *t7, *t8; + // t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); + // t2 = pvStatTests1->AddText(0., 0.80, Form("NS Y = %.3f#pm%.3f ", fFit->GetParameter("NS Y"), fFit->GetParError(fFit->GetParNumber("NS Y")))); + // t3 = pvStatTests1->AddText(0., 0.65, Form("NS #sigma = %.3f#pm%.3f ", fFit->GetParameter("NS #sigma"), fFit->GetParError(fFit->GetParNumber("NS #sigma")))); + // t4 = pvStatTests1->AddText(0., 0.50, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); + // t5 = pvStatTests1->AddText(0., 0.35, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); // t6 = pvStatTests1 -> AddText(0., 0.20, Form("#beta = %.3f#pm%.3f ", fFit -> GetParameter("NS shape par"), fFit -> GetParError(fFit->GetParNumber("NS shape par")))); auto* pvStatTests2 = new TPaveText(0.51, 0.28, 0.85, 0.60, "NDC"); pvStatTests2->SetFillStyle(0); pvStatTests2->SetTextSize(0.045); pvStatTests2->SetBorderSize(0); - t1 = pvStatTests2->AddText(0., 1.00, Form("Ped = %.3f#pm%.3f ", fFit->GetParameter("ped"), fErrBaseline /*fFit -> GetParError(fFit->GetParNumber("ped")*/)); - t7 = pvStatTests2->AddText(0., 0.65, Form("v_{2}^{hadron} = %.3f#pm%.3f ", fFit->GetParameter("v_{2} hadron"), fFit->GetParError(fFit->GetParNumber("v_{2} hadron")))); - t8 = pvStatTests2->AddText(0., 0.35, Form("v_{2}^{D} = %.3f#pm%.3f ", fFit->GetParameter("v_{2} D meson"), fFit->GetParError(fFit->GetParNumber("v_{2} D meson")))); + // t1 = pvStatTests2->AddText(0., 1.00, Form("Ped = %.3f#pm%.3f ", fFit->GetParameter("ped"), fErrBaseline /*fFit -> GetParError(fFit->GetParNumber("ped")*/)); + // t7 = pvStatTests2->AddText(0., 0.65, Form("v_{2}^{hadron} = %.3f#pm%.3f ", fFit->GetParameter("v_{2} hadron"), fFit->GetParError(fFit->GetParNumber("v_{2} hadron")))); + // t8 = pvStatTests2->AddText(0., 0.35, Form("v_{2}^{D} = %.3f#pm%.3f ", fFit->GetParameter("v_{2} D meson"), fFit->GetParError(fFit->GetParNumber("v_{2} D meson")))); if (draw) { fFit->Draw("same"); @@ -1098,13 +1104,13 @@ void DhCorrelationFitter::setSingleTermsForDrawing(Bool_t draw) pvStatTests1->SetFillStyle(0); pvStatTests1->SetTextSize(0.045); pvStatTests1->SetBorderSize(0); - TText *t0, *t1, *t2, *t3, *t4, *t5, *t6; - t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); - t1 = pvStatTests1->AddText(0., 0.80, Form("Ped = %.3f#pm%.3f ", fBaseline, fErrBaseline)); - t2 = pvStatTests1->AddText(0., 0.65, Form("NS Y = %.3f#pm%.3f ", fFit->GetParameter("NS Y"), fFit->GetParError(fFit->GetParNumber("NS Y")))); - t3 = pvStatTests1->AddText(0., 0.50, Form("NS #sigma = %.3f#pm%.3f ", fFit->GetParameter("NS #sigma"), fFit->GetParError(fFit->GetParNumber("NS #sigma")))); - t4 = pvStatTests1->AddText(0., 0.35, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); - t5 = pvStatTests1->AddText(0., 0.20, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); + // TText *t0, *t1, *t2, *t3, *t4, *t5, *t6; + // t0 = pvStatTests1->AddText(0., 1.00, Form("#chi^{2}/ndf = %.1f/%d ", fFit->GetChisquare(), fFit->GetNDF())); + // t1 = pvStatTests1->AddText(0., 0.80, Form("Ped = %.3f#pm%.3f ", fBaseline, fErrBaseline)); + // t2 = pvStatTests1->AddText(0., 0.65, Form("NS Y = %.3f#pm%.3f ", fFit->GetParameter("NS Y"), fFit->GetParError(fFit->GetParNumber("NS Y")))); + // t3 = pvStatTests1->AddText(0., 0.50, Form("NS #sigma = %.3f#pm%.3f ", fFit->GetParameter("NS #sigma"), fFit->GetParError(fFit->GetParNumber("NS #sigma")))); + // t4 = pvStatTests1->AddText(0., 0.35, Form("AS Y = %.3f#pm%.3f ", fFit->GetParameter("AS Y"), fFit->GetParError(fFit->GetParNumber("AS Y")))); + // t5 = pvStatTests1->AddText(0., 0.20, Form("AS #sigma = %.3f#pm%.3f ", fFit->GetParameter("AS #sigma"), fFit->GetParError(fFit->GetParNumber("AS #sigma")))); if (draw) { fFit->Draw("same"); @@ -1114,4 +1120,5 @@ void DhCorrelationFitter::setSingleTermsForDrawing(Bool_t draw) pvStatTests1->Draw("same"); } } + delete[] par; } diff --git a/PWGHF/HFC/Macros/FitCorrel.C b/PWGHF/HFC/Macros/FitCorrel.C index 11e5b0c5742..72461f06dc3 100644 --- a/PWGHF/HFC/Macros/FitCorrel.C +++ b/PWGHF/HFC/Macros/FitCorrel.C @@ -173,12 +173,11 @@ void fitCorrelDs(const TString cfgFileName = "config_CorrAnalysis.json") // Input parameters for fitting const int npars{10}; // PED NSY NSM NSW ASY ASM ASW BETA v2D v2h - Double_t vals[npars] = {3., 2., 0., 0.5, 2., 3.14, 0.3, 2., 0.1, 0.1}; - Double_t lowBounds[npars] = {0., 0., -1., 0., 0., 2., 0., 0.5, 0., 0.}; - Double_t uppBounds[npars] = {9999., 999., 1., 3.14 / 3., 999., 4., 3.14 / 2., 3.5, 0.5, 0.5}; - - Double_t const v2AssocPart[nBinsPtD] = {0.15, 0.15, 0.15, 0.15}; - Double_t const v2Dmeson[nBinsPtD] = {0.175, 0.09, 0.04, 0.04}; + const Double_t vals[npars] = {3., 2., 0., 0.5, 2., 3.14, 0.3, 2., 0.1, 0.1}; + const Double_t lowBounds[npars] = {0., 0., -1., 0., 0., 2., 0., 0.5, 0., 0.}; + const Double_t uppBounds[npars] = {9999., 999., 1., 3.14 / 3., 999., 4., 3.14 / 2., 3.5, 0.5, 0.5}; + const Double_t v2AssocPart[nBinsPtD] = {0.15, 0.15, 0.15, 0.15}; + const Double_t v2Dmeson[nBinsPtD] = {0.175, 0.09, 0.04, 0.04}; // Output histograms TH1D* hBaselin[nBinsPtHad]; @@ -347,8 +346,6 @@ void fitCorrelDs(const TString cfgFileName = "config_CorrAnalysis.json") pttext->Draw("same"); if (drawSystematicErrors) { tCorrUncDs->Draw("same"); - } - if (drawSystematicErrors) { tScaleUnc->Draw("same"); } } @@ -399,18 +396,12 @@ void fitCorrelDs(const TString cfgFileName = "config_CorrAnalysis.json") hBaselin[iBinPtHad]->SetMinimum(0); hBaselin[iBinPtHad]->Draw(); - TH1F* hBaselinSyst; - TH1F* hNSYieldSyst; - TH1F* hNSSigmaSyst; - TH1F* hASYieldSyst; - TH1F* hASSigmaSyst; - if (drawSystematicErrors) { - hBaselinSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsBaselinMerged_PtBinAssoc%d", iBinPtHad + 1))); - hNSYieldSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsNSYieldMerged_PtBinAssoc%d", iBinPtHad + 1))); - hNSSigmaSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsNSSigmaMerged_PtBinAssoc%d", iBinPtHad + 1))); - hASYieldSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsASYieldMerged_PtBinAssoc%d", iBinPtHad + 1))); - hASSigmaSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsASSigmaMerged_PtBinAssoc%d", iBinPtHad + 1))); + TH1F* hBaselinSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsBaselinMerged_PtBinAssoc%d", iBinPtHad + 1))); + TH1F* hNSYieldSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsNSYieldMerged_PtBinAssoc%d", iBinPtHad + 1))); + TH1F* hNSSigmaSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsNSSigmaMerged_PtBinAssoc%d", iBinPtHad + 1))); + TH1F* hASYieldSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsASYieldMerged_PtBinAssoc%d", iBinPtHad + 1))); + TH1F* hASSigmaSyst = reinterpret_cast(inFileFitSystematicErrors->Get(Form("hSystematicErrorsASSigmaMerged_PtBinAssoc%d", iBinPtHad + 1))); for (int iBinPtCand = 0; iBinPtCand < nBinsPtCand; iBinPtCand++) { hBaselinSyst->SetBinError(iBinPtCand + 1, hBaselinSyst->GetBinContent(iBinPtCand + 1) * hBaselin[iBinPtHad]->GetBinContent(iBinPtCand + 1)); diff --git a/PWGHF/HFC/TableProducer/correlatorD0Hadrons.cxx b/PWGHF/HFC/TableProducer/correlatorD0Hadrons.cxx index ab1618e8b82..7408b3f947b 100644 --- a/PWGHF/HFC/TableProducer/correlatorD0Hadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorD0Hadrons.cxx @@ -130,11 +130,9 @@ struct HfCorrelatorD0HadronsSelection { } } if (useSel8) { - isSel8 = false; isSel8 = collision.sel8(); } if (selNoSameBunchPileUpColl) { - isNosameBunchPileUp = false; isNosameBunchPileUp = collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup); } isSelColl = isD0Found && isSel8 && isNosameBunchPileUp; @@ -449,7 +447,6 @@ struct HfCorrelatorD0Hadrons { // ========== soft pion removal =================================================== double invMassDstar1 = 0., invMassDstar2 = 0.; - bool isSoftPiD0 = false, isSoftPiD0bar = false; auto pSum2 = RecoDecay::p2(candidate.pVector(), track.pVector()); auto ePion = track.energy(massPi); invMassDstar1 = std::sqrt((ePiK + ePion) * (ePiK + ePion) - pSum2); @@ -457,24 +454,22 @@ struct HfCorrelatorD0Hadrons { if (candidate.isSelD0() >= selectionFlagD0) { if ((std::abs(invMassDstar1 - hfHelper.invMassD0ToPiK(candidate)) - softPiMass) < ptSoftPionMax) { - isSoftPiD0 = true; continue; } } if (candidate.isSelD0bar() >= selectionFlagD0bar) { if ((std::abs(invMassDstar2 - hfHelper.invMassD0barToKPi(candidate)) - softPiMass) < ptSoftPionMax) { - isSoftPiD0bar = true; continue; } } registry.fill(HIST("hTrackCounter"), 2); // fill no. of tracks after soft pion removal int signalStatus = 0; - if ((candidate.isSelD0() >= selectionFlagD0) && !isSoftPiD0) { + if (candidate.isSelD0() >= selectionFlagD0) { signalStatus += aod::hf_correlation_d0_hadron::ParticleTypeData::D0Only; } - if ((candidate.isSelD0bar() >= selectionFlagD0bar) && !isSoftPiD0bar) { + if (candidate.isSelD0bar() >= selectionFlagD0bar) { signalStatus += aod::hf_correlation_d0_hadron::ParticleTypeData::D0barOnly; } @@ -538,14 +533,12 @@ struct HfCorrelatorD0Hadrons { // MC reco level bool flagD0 = false; bool flagD0bar = false; - bool isD0Prompt = false; - bool isD0NonPrompt = false; std::vector outputMlD0 = {-1., -1., -1.}; std::vector outputMlD0bar = {-1., -1., -1.}; for (const auto& candidate : candidates) { - isD0Prompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; - isD0NonPrompt = candidate.originMcRec() == RecoDecay::OriginType::NonPrompt; + bool isD0Prompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; + bool isD0NonPrompt = candidate.originMcRec() == RecoDecay::OriginType::NonPrompt; // check decay channel flag for candidate if (!TESTBIT(candidate.hfflag(), aod::hf_cand_2prong::DecayType::D0ToPiK)) { continue; @@ -640,7 +633,6 @@ struct HfCorrelatorD0Hadrons { registry.fill(HIST("hTrackCounter"), 1); // fill no. of tracks before soft pion removal bool isPhysicalPrimary = false; - int trackOrigin = -1; // ===== soft pion removal =================================================== double invMassDstar1 = 0, invMassDstar2 = 0; bool isSoftPiD0 = false, isSoftPiD0bar = false; @@ -651,14 +643,12 @@ struct HfCorrelatorD0Hadrons { if (candidate.isSelD0() >= selectionFlagD0) { if ((std::abs(invMassDstar1 - hfHelper.invMassD0ToPiK(candidate)) - softPiMass) < ptSoftPionMax) { - isSoftPiD0 = true; continue; } } if (candidate.isSelD0bar() >= selectionFlagD0bar) { if ((std::abs(invMassDstar2 - hfHelper.invMassD0barToKPi(candidate)) - softPiMass) < ptSoftPionMax) { - isSoftPiD0bar = true; continue; } } @@ -704,7 +694,7 @@ struct HfCorrelatorD0Hadrons { if (track.has_mcParticle()) { auto mcParticle = track.template mcParticle_as(); isPhysicalPrimary = mcParticle.isPhysicalPrimary(); - trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, true); + auto trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, true); entryD0HadronGenInfo(isD0Prompt, isPhysicalPrimary, trackOrigin); } else { entryD0HadronGenInfo(isD0Prompt, isPhysicalPrimary, 0); diff --git a/PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx b/PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx index 7d40e1e4db1..b2368e55f04 100644 --- a/PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx +++ b/PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx @@ -121,11 +121,9 @@ struct HfCorrelatorDsHadronsSelCollision { } } if (useSel8) { - isSel8 = false; isSel8 = collision.sel8(); } if (selNoSameBunchPileUpColl) { - isNosameBunchPileUp = false; isNosameBunchPileUp = collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup); } isSelColl = isDsFound && isSel8 && isNosameBunchPileUp; @@ -504,18 +502,15 @@ struct HfCorrelatorDsHadrons { registry.fill(HIST("hCollisionPoolBin"), poolBin); // MC reco level - bool isDsPrompt = false; - bool isDsSignal = false; bool isCorrectInvMassHypo = false; - bool isDecayChan = false; bool isAlreadyFilledEvent = false; float const multiplicityFT0M = collision.multFT0M(); for (const auto& candidate : candidates) { // prompt and non-prompt division - isDsPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; + bool isDsPrompt = candidate.originMcRec() == RecoDecay::OriginType::Prompt; // Ds Signal - isDsSignal = std::abs(candidate.flagMcMatchRec()) == hf_decay::hf_cand_3prong::DecayChannelMain::DsToPiKK; - isDecayChan = candidate.flagMcDecayChanRec() == channelsResonant[decayChannel]; + bool isDsSignal = std::abs(candidate.flagMcMatchRec()) == hf_decay::hf_cand_3prong::DecayChannelMain::DsToPiKK; + bool isDecayChan = candidate.flagMcDecayChanRec() == channelsResonant[decayChannel]; if (std::abs(hfHelper.yDs(candidate)) > yCandMax || candidate.pt() < ptCandMin || candidate.pt() > ptCandMax) { continue; @@ -588,7 +583,6 @@ struct HfCorrelatorDsHadrons { continue; } bool isPhysicalPrimary = false; - int trackOrigin = -1; // DsToKKPi and DsToPiKK division if (isCorrectInvMassHypo && candidate.isSelDsToKKPi() >= selectionFlagDs) { entryDsHadronPair(getDeltaPhi(track.phi(), candidate.phi()), @@ -602,7 +596,7 @@ struct HfCorrelatorDsHadrons { if (track.has_mcParticle()) { auto mcParticle = track.template mcParticle_as(); isPhysicalPrimary = mcParticle.isPhysicalPrimary(); - trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, true); + auto trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, true); entryDsHadronGenInfo(isDsPrompt, isPhysicalPrimary, trackOrigin); } else { entryDsHadronGenInfo(isDsPrompt, isPhysicalPrimary, 0); @@ -628,7 +622,7 @@ struct HfCorrelatorDsHadrons { if (track.has_mcParticle()) { auto mcParticle = track.template mcParticle_as(); isPhysicalPrimary = mcParticle.isPhysicalPrimary(); - trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, true); + auto trackOrigin = RecoDecay::getCharmHadronOrigin(mcParticles, mcParticle, true); entryDsHadronGenInfo(isDsPrompt, isPhysicalPrimary, trackOrigin); } else { entryDsHadronGenInfo(isDsPrompt, false, 0); diff --git a/PWGHF/HFC/TableProducer/femtoDreamProducer.cxx b/PWGHF/HFC/TableProducer/femtoDreamProducer.cxx index f5cc68a3996..4aacaba7ec3 100644 --- a/PWGHF/HFC/TableProducer/femtoDreamProducer.cxx +++ b/PWGHF/HFC/TableProducer/femtoDreamProducer.cxx @@ -483,7 +483,7 @@ struct HfFemtoDreamProducer { float bdtScoreBkg, float bdtScorePrompt, float bdtScoreFd) { - if (functionSelection >= 1){ + if (functionSelection >= 1) { rowCandCharmHad( outputCollision.lastIndex(), timeStamp, @@ -511,7 +511,8 @@ struct HfFemtoDreamProducer { candidate.flagMcMatchRec(), candidate.originMcRec()); } - } }; + } + }; if constexpr (Channel == DecayChannel::DplusToPiKPi) { if constexpr (UseCharmMl) { @@ -576,7 +577,7 @@ struct HfFemtoDreamProducer { } } - if (!isTrackFilled) { + if (!isTrackFilled) { // FIXME: isTrackFilled is always false here isTrackFilled = fillTracksForCharmHadron(col, tracks); // If track filling was successful, fill the collision table } diff --git a/PWGHF/HFC/Tasks/taskFlow.cxx b/PWGHF/HFC/Tasks/taskFlow.cxx index f3a74f14e79..447c615f7b3 100644 --- a/PWGHF/HFC/Tasks/taskFlow.cxx +++ b/PWGHF/HFC/Tasks/taskFlow.cxx @@ -229,7 +229,6 @@ struct HfTaskFlow { o2::ccdb::CcdbApi ccdbApi; o2::ft0::Geometry ft0Det; o2::fv0::Geometry* fv0Det{}; - std::vector hfIndexCache; // ========================= // using declarations : DATA @@ -707,7 +706,7 @@ struct HfTaskFlow { double getPhiFV0(unsigned int chno) const { - int cellsInLeft[] = {0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27, 32, 40, 33, 41, 34, 42, 35, 43}; + int const cellsInLeft[] = {0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27, 32, 40, 33, 41, 34, 42, 35, 43}; bool const isChnoInLeft = std::find(std::begin(cellsInLeft), std::end(cellsInLeft), chno) != std::end(cellsInLeft); float offsetX, offsetY; if (isChnoInLeft) { @@ -743,7 +742,7 @@ struct HfTaskFlow { double getEtaFV0(unsigned int chno) const { - int cellsInLeft[] = {0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27, 32, 40, 33, 41, 34, 42, 35, 43}; + int const cellsInLeft[] = {0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27, 32, 40, 33, 41, 34, 42, 35, 43}; bool const isChnoInLeft = std::find(std::begin(cellsInLeft), std::end(cellsInLeft), chno) != std::end(cellsInLeft); float offsetX, offsetY, offsetZ; if (isChnoInLeft) { diff --git a/PWGHF/Macros/computeFonllPlusPythiaPredictions.C b/PWGHF/Macros/computeFonllPlusPythiaPredictions.C index 8b410b2b1e9..86caa6243e7 100644 --- a/PWGHF/Macros/computeFonllPlusPythiaPredictions.C +++ b/PWGHF/Macros/computeFonllPlusPythiaPredictions.C @@ -109,7 +109,7 @@ std::vector splitString(const std::string& str, char delimiter) } //__________________________________________________________________________________________________ -std::array readFonll(std::string inFile, std::string histName) +std::array readFonll(const std::string& inFile, const std::string& histName) { std::array hFonll{nullptr, nullptr, nullptr}; diff --git a/PWGHF/TableProducer/candidateCreator2Prong.cxx b/PWGHF/TableProducer/candidateCreator2Prong.cxx index dc93fc318bc..d7805b491ab 100644 --- a/PWGHF/TableProducer/candidateCreator2Prong.cxx +++ b/PWGHF/TableProducer/candidateCreator2Prong.cxx @@ -115,22 +115,15 @@ struct HfCandidateCreator2Prong { o2::vertexing::DCAFitterN<2> df; // 2-prong vertex fitter Service ccdb; - using TracksWCovExtraPidPiKa = soa::Join; - int runNumber{0}; - float toMicrometers = 10000.; // from cm to µm - double massPi{0.}; - double massK{0.}; - double massE{0.}; - double massMu{0.}; - double massPiK{0.}; - double massKPi{0.}; - double massEE{0.}; - double massMuMu{0.}; double bz{0.}; + const float toMicrometers = 10000.; // from cm to µm + std::shared_ptr hCandidates; + using TracksWCovExtraPidPiKa = soa::Join; + ConfigurableAxis axisMass{"axisMass", {500, 1.6, 2.1}, "axis for mass (GeV/c^2)"}; HistogramRegistry registry{"registry"}; @@ -192,11 +185,6 @@ struct HfCandidateCreator2Prong { // init HF event selection helper hfEvSel.init(registry); - massPi = MassPiPlus; - massK = MassKPlus; - massE = MassElectron; - massMu = MassMuon; - if (std::accumulate(doprocessDF.begin(), doprocessDF.end(), 0) == 1) { registry.fill(HIST("hVertexerType"), aod::hf_cand::VertexerType::DCAFitter); // Configure DCAFitterN @@ -366,11 +354,11 @@ struct HfCandidateCreator2Prong { // fill histograms if (fillHistograms) { // calculate invariant masses - auto arrayMomenta = std::array{pvec0, pvec1}; - massPiK = RecoDecay::m(arrayMomenta, std::array{massPi, massK}); - massKPi = RecoDecay::m(arrayMomenta, std::array{massK, massPi}); - massEE = RecoDecay::m(arrayMomenta, std::array{massE, massE}); - massMuMu = RecoDecay::m(arrayMomenta, std::array{massMu, massMu}); + const auto arrayMomenta = std::array{pvec0, pvec1}; + const auto massPiK = RecoDecay::m(arrayMomenta, std::array{MassPiPlus, MassKPlus}); + const auto massKPi = RecoDecay::m(arrayMomenta, std::array{MassKPlus, MassPiPlus}); + const auto massEE = RecoDecay::m(arrayMomenta, std::array{MassElectron, MassElectron}); + const auto massMuMu = RecoDecay::m(arrayMomenta, std::array{MassMuon, MassMuon}); registry.fill(HIST("hMass2"), massPiK); registry.fill(HIST("hMass2"), massKPi); registry.fill(HIST("hMassEE"), massEE); diff --git a/PWGHF/TableProducer/candidateCreator3Prong.cxx b/PWGHF/TableProducer/candidateCreator3Prong.cxx index d2a852eeed9..0bf6c47fc91 100644 --- a/PWGHF/TableProducer/candidateCreator3Prong.cxx +++ b/PWGHF/TableProducer/candidateCreator3Prong.cxx @@ -129,19 +129,9 @@ struct HfCandidateCreator3Prong { Service ccdb; int runNumber{0}; - float toMicrometers = 10000.; // from cm to µm - double massP{0.}; - double massPi{0.}; - double massK{0.}; - double massPKPi{0.}; - double massPiKP{0.}; - double massPiKPi{0.}; - double massKKPi{0.}; - double massPiKK{0.}; - double massKPi{0.}; - double massPiK{0.}; double bz{0.}; + const float toMicrometers = 10000.; // from cm to µm constexpr static float UndefValueFloat{-999.f}; using FilteredHf3Prongs = soa::Filtered; @@ -223,10 +213,6 @@ struct HfCandidateCreator3Prong { // init HF event selection helper hfEvSel.init(registry); - massP = MassProton; - massPi = MassPiPlus; - massK = MassKPlus; - // Configure DCAFitterN // df.setBz(bz); df.setPropagateToPCA(propagateToPCA); @@ -418,14 +404,14 @@ struct HfCandidateCreator3Prong { // fill histograms if (fillHistograms) { // calculate invariant mass - auto arrayMomenta = std::array{pvec0, pvec1, pvec2}; - massPKPi = RecoDecay::m(arrayMomenta, std::array{massP, massK, massPi}); - massPiKP = RecoDecay::m(arrayMomenta, std::array{massPi, massK, massP}); - massPiKPi = RecoDecay::m(arrayMomenta, std::array{massPi, massK, massPi}); - massKKPi = RecoDecay::m(arrayMomenta, std::array{massK, massK, massPi}); - massPiKK = RecoDecay::m(arrayMomenta, std::array{massPi, massK, massK}); - massKPi = RecoDecay::m(std::array{arrayMomenta.at(1), arrayMomenta.at(2)}, std::array{massK, massPi}); - massPiK = RecoDecay::m(std::array{arrayMomenta.at(0), arrayMomenta.at(1)}, std::array{massPi, massK}); + const auto arrayMomenta = std::array{pvec0, pvec1, pvec2}; + const auto massPKPi = RecoDecay::m(arrayMomenta, std::array{MassProton, MassKPlus, MassPiPlus}); + const auto massPiKP = RecoDecay::m(arrayMomenta, std::array{MassPiPlus, MassKPlus, MassProton}); + const auto massPiKPi = RecoDecay::m(arrayMomenta, std::array{MassPiPlus, MassKPlus, MassPiPlus}); + const auto massKKPi = RecoDecay::m(arrayMomenta, std::array{MassKPlus, MassKPlus, MassPiPlus}); + const auto massPiKK = RecoDecay::m(arrayMomenta, std::array{MassPiPlus, MassKPlus, MassKPlus}); + const auto massKPi = RecoDecay::m(std::array{arrayMomenta.at(1), arrayMomenta.at(2)}, std::array{MassKPlus, MassPiPlus}); + const auto massPiK = RecoDecay::m(std::array{arrayMomenta.at(0), arrayMomenta.at(1)}, std::array{MassPiPlus, MassKPlus}); registry.fill(HIST("hMass3PiKPi"), massPiKPi); registry.fill(HIST("hMass3PKPi"), massPKPi); registry.fill(HIST("hMass3PiKP"), massPiKP); diff --git a/PWGHF/TableProducer/candidateCreatorXicc.cxx b/PWGHF/TableProducer/candidateCreatorXicc.cxx index 380bae1445f..1d8058d09cb 100644 --- a/PWGHF/TableProducer/candidateCreatorXicc.cxx +++ b/PWGHF/TableProducer/candidateCreatorXicc.cxx @@ -80,11 +80,6 @@ struct HfCandidateCreatorXicc { o2::vertexing::DCAFitterN<2> df2; // 2-prong vertex fitter to build the Xicc vertex HfHelper hfHelper; - double massPi{0.}; - double massK{0.}; - double massXic{0.}; - double massXicc{0.}; - Filter filterSelectCandidates = (aod::hf_sel_candidate_xic::isSelXicToPKPi >= selectionFlagXic || aod::hf_sel_candidate_xic::isSelXicToPiKP >= selectionFlagXic); OutputObj hMassXic{TH1F("hMassXic", "xic candidates;inv. mass (#pi K #pi) (GeV/#it{c}^{2});entries", 500, 1.6, 2.6)}; @@ -93,10 +88,6 @@ struct HfCandidateCreatorXicc { void init(InitContext const&) { - massPi = MassPiPlus; - massK = MassKPlus; - massXic = MassXiCPlus; - df3.setBz(bz); df3.setPropagateToPCA(propagateToPCA); df3.setMaxR(maxR); @@ -232,17 +223,15 @@ struct HfCandidateCreatorXiccMc { aod::TracksWMc const&, aod::McParticles const& mcParticles) { - int indexRec = -1; int8_t sign = 0; - int8_t flag = 0; - int8_t origin = 0; - int8_t debug = 0; + int8_t flag; + int8_t origin; // Match reconstructed candidates. for (const auto& candidate : candidates) { + int8_t debug = 0; flag = 0; origin = 0; - debug = 0; auto xicCand = candidate.prong0(); auto arrayDaughters = std::array{xicCand.prong0_as(), xicCand.prong1_as(), @@ -252,7 +241,7 @@ struct HfCandidateCreatorXiccMc { xicCand.prong1_as(), xicCand.prong2_as()}; // Ξcc±± → p± K∓ π± π± - indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kXiCCPlusPlus, std::array{+kProton, -kKPlus, +kPiPlus, +kPiPlus}, true, &sign, 2); + auto indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughters, Pdg::kXiCCPlusPlus, std::array{+kProton, -kKPlus, +kPiPlus, +kPiPlus}, true, &sign, 2); if (indexRec > -1) { // Ξc± → p± K∓ π± indexRec = RecoDecay::getMatchedMCRec(mcParticles, arrayDaughtersXic, Pdg::kXiCPlus, std::array{+kProton, -kKPlus, +kPiPlus}, true, &sign, 1); diff --git a/PWGHF/TableProducer/candidateSelectorLc.cxx b/PWGHF/TableProducer/candidateSelectorLc.cxx index ded5f282810..25a4ede94d3 100644 --- a/PWGHF/TableProducer/candidateSelectorLc.cxx +++ b/PWGHF/TableProducer/candidateSelectorLc.cxx @@ -517,11 +517,11 @@ struct HfCandidateSelectorLc { if (usePid) { // track-level PID selection - TrackSelectorPID::Status pidTrackPos1Proton = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackPos2Proton = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackPos1Pion = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackPos2Pion = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackNegKaon = TrackSelectorPID::Accepted; + TrackSelectorPID::Status pidTrackPos1Proton; + TrackSelectorPID::Status pidTrackPos2Proton; + TrackSelectorPID::Status pidTrackPos1Pion; + TrackSelectorPID::Status pidTrackPos2Pion; + TrackSelectorPID::Status pidTrackNegKaon; if (usePidTpcAndTof) { pidTrackPos1Proton = selectorProton.statusTpcAndTof(trackPos1, candidate.nSigTpcPr0(), candidate.nSigTofPr0()); pidTrackPos2Proton = selectorProton.statusTpcAndTof(trackPos2, candidate.nSigTpcPr2(), candidate.nSigTofPr2()); diff --git a/PWGHF/TableProducer/candidateSelectorXicToPKPi.cxx b/PWGHF/TableProducer/candidateSelectorXicToPKPi.cxx index 2ed4e2b329f..cf6593c7c66 100644 --- a/PWGHF/TableProducer/candidateSelectorXicToPKPi.cxx +++ b/PWGHF/TableProducer/candidateSelectorXicToPKPi.cxx @@ -313,11 +313,11 @@ struct HfCandidateSelectorXicToPKPi { pidXicToPiKP = 1; } else { // track-level PID selection - TrackSelectorPID::Status pidTrackPos1Proton = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackPos2Proton = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackPos1Pion = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackPos2Pion = TrackSelectorPID::Accepted; - TrackSelectorPID::Status pidTrackNegKaon = TrackSelectorPID::Accepted; + TrackSelectorPID::Status pidTrackPos1Proton; + TrackSelectorPID::Status pidTrackPos2Proton; + TrackSelectorPID::Status pidTrackPos1Pion; + TrackSelectorPID::Status pidTrackPos2Pion; + TrackSelectorPID::Status pidTrackNegKaon; if (usePidTpcAndTof) { pidTrackPos1Proton = selectorProton.statusTpcAndTof(trackPos1, candidate.nSigTpcPr0(), candidate.nSigTofPr0()); diff --git a/PWGHF/TableProducer/candidateSelectorXicToXiPiPi.cxx b/PWGHF/TableProducer/candidateSelectorXicToXiPiPi.cxx index b5f5c2cb64c..223d484d0a1 100644 --- a/PWGHF/TableProducer/candidateSelectorXicToXiPiPi.cxx +++ b/PWGHF/TableProducer/candidateSelectorXicToXiPiPi.cxx @@ -603,11 +603,11 @@ struct HfCandidateSelectorXicToXiPiPi { // PID selection // //////////////////////////////////////////////// if (usePid) { - TrackSelectorPID::Status statusPidPi0 = TrackSelectorPID::NotApplicable; - TrackSelectorPID::Status statusPidPi1 = TrackSelectorPID::NotApplicable; - TrackSelectorPID::Status statusPidPiXi = TrackSelectorPID::NotApplicable; - TrackSelectorPID::Status statusPidPrLam = TrackSelectorPID::NotApplicable; - TrackSelectorPID::Status statusPidPiLam = TrackSelectorPID::NotApplicable; + TrackSelectorPID::Status statusPidPi0; + TrackSelectorPID::Status statusPidPi1; + TrackSelectorPID::Status statusPidPiXi; + TrackSelectorPID::Status statusPidPrLam; + TrackSelectorPID::Status statusPidPiLam; // assign proton and pion hypothesis to V0 daughters auto trackPr = trackV0PosDau; diff --git a/PWGHF/TableProducer/trackIndexSkimCreator.cxx b/PWGHF/TableProducer/trackIndexSkimCreator.cxx index 0bcb60aec6e..8bc26864059 100644 --- a/PWGHF/TableProducer/trackIndexSkimCreator.cxx +++ b/PWGHF/TableProducer/trackIndexSkimCreator.cxx @@ -958,10 +958,7 @@ struct HfTrackIndexSkimCreatorTagSelTracks { } if (config.debugPvRefit) { LOG(info) << "### vecPvContributorGlobId.size()=" << vecPvContributorGlobId.size() << ", vecPvContributorTrackParCov.size()=" << vecPvContributorTrackParCov.size() << ", N. original contributors=" << collision.numContrib(); - } - - /// Perform the PV refit only for tracks with an assigned collision - if (config.debugPvRefit) { + /// Perform the PV refit only for tracks with an assigned collision LOG(info) << "[BEFORE performPvRefitTrack] track.collision().globalIndex(): " << collision.globalIndex(); } performPvRefitTrack(collision, bcWithTimeStamps, vecPvContributorGlobId, vecPvContributorTrackParCov, track, pvRefitPvCoord, pvRefitPvCovMatrix, pvRefitDcaXYDcaZ); @@ -1964,12 +1961,11 @@ struct HfTrackIndexSkimCreator { /// PV refitting, if the tracks contributed to this at the beginning o2::dataformats::VertexBase primVtxBaseRecalc; - bool recalcPvRefit = false; if ((doprocess2And3ProngsWithPvRefit || doprocess2And3ProngsWithPvRefitWithPidForHfFiltersBdt) && pvRefitDoable) { if (config.fillHistograms) { registry.fill(HIST("PvRefit/verticesPerCandidate"), 2); } - recalcPvRefit = true; + bool recalcPvRefit = true; int nCandContr = 0; for (const uint64_t myGlobalID : vecCandPvContributorGlobId) { // o2-linter: disable=const-ref-in-for-loop (small type) auto trackIterator = std::find(vecPvContributorGlobId.begin(), vecPvContributorGlobId.end(), myGlobalID); /// track global index @@ -2007,10 +2003,6 @@ struct HfTrackIndexSkimCreator { registry.fill(HIST("PvRefit/hChi2vsNContrib"), primVtxRefitted.getNContributors(), primVtxRefitted.getChi2()); } - for (size_t i = 0; i < vecPvContributorGlobId.size(); i++) { - vecPvRefitContributorUsed[i] = true; /// restore the tracks for the next PV refitting (probably not necessary here) - } - if (recalcPvRefit) { // fill the histograms for refitted PV with good Chi2 const double deltaX = primVtx.getX() - primVtxRefitted.getX(); diff --git a/PWGHF/Tasks/taskMcEfficiency.cxx b/PWGHF/Tasks/taskMcEfficiency.cxx index 9cea8501366..b4d17250c8f 100644 --- a/PWGHF/Tasks/taskMcEfficiency.cxx +++ b/PWGHF/Tasks/taskMcEfficiency.cxx @@ -125,7 +125,7 @@ struct HfTaskMcEfficiency { } template - void candidate3ProngLoop(T1& candidates, T2& tracks, T3& mcParticles, std::vector pdgCodes) + void candidate3ProngLoop(T1 const& candidates, T2 const& tracks, T3 const& mcParticles, std::vector const& pdgCodes) { using TracksType = std::decay_t; @@ -325,7 +325,7 @@ struct HfTaskMcEfficiency { } template - void candidate2ProngLoop(T1 const& candidates, T2 const& tracks, T3 const& mcParticles, std::vector pdgCodes) + void candidate2ProngLoop(T1 const& candidates, T2 const& tracks, T3 const& mcParticles, std::vector const& pdgCodes) { using TracksType = std::decay_t; diff --git a/PWGHF/Tasks/taskMcValidation.cxx b/PWGHF/Tasks/taskMcValidation.cxx index 650452250db..a2cdaf659eb 100644 --- a/PWGHF/Tasks/taskMcValidation.cxx +++ b/PWGHF/Tasks/taskMcValidation.cxx @@ -953,8 +953,8 @@ struct HfTaskMcValidationRec { } uint const index = uint(track.collisionId() >= 0); if (track.has_mcParticle()) { - auto particle = track.mcParticle(); // get corresponding MC particle to check origin - auto mcCollision = particle.mcCollision_as(); + const auto& particle = track.mcParticle(); // get corresponding MC particle to check origin + const auto& mcCollision = particle.mcCollision_as(); if (eventGeneratorType >= 0 && mcCollision.getSubGeneratorId() != eventGeneratorType) { continue; } @@ -966,7 +966,7 @@ struct HfTaskMcValidationRec { histAmbiguousTracks->Fill(origin, track.pt()); std::vector ambCollPosZ{}; for (const auto& collIdx : track.compatibleCollIds()) { - auto ambCollision = collisions.rawIteratorAt(collIdx); + const auto& ambCollision = collisions.rawIteratorAt(collIdx); ambCollPosZ.push_back(ambCollision.posZ()); } // here we are only interested to tracks associated to multiple vertices @@ -976,8 +976,7 @@ struct HfTaskMcValidationRec { } float deltaZ = -999.f; if (index) { - auto collision = track.collision_as(); - auto mcCollision = particle.mcCollision_as(); + const auto& collision = track.collision_as(); deltaZ = collision.posZ() - mcCollision.posZ(); if (collision.has_mcCollision() && collision.mcCollisionId() == particle.mcCollisionId()) { histOriginTracks[index + 1]->Fill(origin, track.pt(), track.eta(), deltaZ, track.isPVContributor(), track.hasTOF(), nITSlayers); @@ -1101,7 +1100,7 @@ struct HfTaskMcValidationRec { continue; } int whichHad = -1; - if (isD0Sel && std::abs(cand2Prong.flagMcMatchRec()) == o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK) { + if (std::abs(cand2Prong.flagMcMatchRec()) == o2::hf_decay::hf_cand_2prong::DecayChannelMain::D0ToPiK) { whichHad = DzeroToKPi; } int whichOrigin;