From 81e0c71e21b536507a80d02a4a4b04fbb67e5ab7 Mon Sep 17 00:00:00 2001 From: Francesco Mazzaschi Date: Tue, 23 Jul 2024 11:41:35 +0200 Subject: [PATCH 1/5] Fill DCA histo according to pdg in the MC --- PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx | 74 ++++++++++++++++---- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx index f76b97e0465..edd0497cf54 100644 --- a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx +++ b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx @@ -84,6 +84,18 @@ struct NucleusCandidate { uint32_t clusterSizesITS; }; +struct NucleusCandidateDCA { + int globalIndex; + float pt; + float DCAxy; + float DCAz; + float nSigmaTPC; + float tofMass; + uint8_t itsNCls; + uint8_t tpcNCls; + uint8_t partHypo; +}; + struct NucleusCandidateFlow { float centFV0A; float centFT0M; @@ -143,12 +155,12 @@ constexpr int FlowHistDefault[5][1]{ {0}, {0}, {0}}; -constexpr int DCAHistDefault[5][1]{ - {0}, - {0}, - {0}, - {0}, - {0}}; +constexpr int DCAHistDefault[5][2]{ + {0, 0}, + {0, 0}, + {0, 0}, + {0, 0}, + {0, 0}}; constexpr double DownscalingDefault[5][1]{ {1.}, {1.}, @@ -165,7 +177,7 @@ static const std::vector pidName{"TPC", "TOF"}; static const std::vector names{"proton", "deuteron", "triton", "He3", "alpha"}; static const std::vector treeConfigNames{"Filter trees", "Use TOF selection"}; static const std::vector flowConfigNames{"Save flow hists"}; -static const std::vector DCAConfigNames{"Save DCA hists"}; +static const std::vector DCAConfigNames{"Save DCA hist", "Matter/Antimatter"}; static const std::vector nSigmaConfigName{"nsigma_min", "nsigma_max"}; static const std::vector nDCAConfigName{"max DCAxy", "max DCAz"}; static const std::vector DownscalingConfigName{"Fraction of kept candidates"}; @@ -189,6 +201,7 @@ std::shared_ptr hDCAHists[2][5]; o2::base::MatLayerCylSet* lut = nullptr; std::vector candidates; +std::vector candidates_dca; std::vector candidates_flow; enum centDetectors { @@ -242,8 +255,8 @@ struct nucleiSpectra { Configurable> cfgDCAcut{"cfgDCAcut", {nuclei::DCAcutDefault[0], 5, 2, nuclei::names, nuclei::nDCAConfigName}, "Max DCAxy and DCAz for light nuclei"}; Configurable> cfgDownscaling{"cfgDownscaling", {nuclei::DownscalingDefault[0], 5, 1, nuclei::names, nuclei::DownscalingConfigName}, "Fraction of kept candidates for light nuclei"}; Configurable> cfgTreeConfig{"cfgTreeConfig", {nuclei::TreeConfigDefault[0], 5, 2, nuclei::names, nuclei::treeConfigNames}, "Filtered trees configuration"}; + Configurable> cfgDCAHist{"cfgDCAHist", {nuclei::DCAHistDefault[0], 5, 2, nuclei::names, nuclei::DCAConfigNames}, "DCA hist configuration"}; Configurable> cfgFlowHist{"cfgFlowHist", {nuclei::FlowHistDefault[0], 5, 1, nuclei::names, nuclei::flowConfigNames}, "Flow hist configuration"}; - Configurable> cfgDCAHist{"cfgDCAHist", {nuclei::DCAHistDefault[0], 5, 1, nuclei::names, nuclei::DCAConfigNames}, "DCA hist configuration"}; ConfigurableAxis cfgDCAxyBinsProtons{"cfgDCAxyBinsProtons", {1500, -1.5f, 1.5f}, "DCAxy binning for Protons"}; ConfigurableAxis cfgDCAxyBinsDeuterons{"cfgDCAxyBinsDeuterons", {1500, -1.5f, 1.5f}, "DCAxy binning for Deuterons"}; @@ -540,7 +553,7 @@ struct nucleiSpectra { } ROOT::Math::LorentzVector> fvector{trackParCov.getPt() * nuclei::charges[iS], trackParCov.getEta(), trackParCov.getPhi(), nuclei::masses[iS]}; float y{fvector.Rapidity() + cfgCMrapidity}; - + float tofMass = -10.f; for (int iPID{0}; iPID < 2; ++iPID) { if (selectedTPC[iS]) { if (iPID && !track.hasTOF()) { @@ -552,7 +565,6 @@ struct nucleiSpectra { nuclei::hDCAxy[iPID][iS][iC]->Fill(centrality, fvector.pt(), dcaInfo[0]); nuclei::hDCAz[iPID][iS][iC]->Fill(centrality, fvector.pt(), dcaInfo[1]); if (std::abs(dcaInfo[0]) < cfgDCAcut->get(iS, 0u)) { - float tofMass = -10.f; if (!iPID) { /// temporary exclusion of the TOF nsigma PID for the He3 and Alpha nuclei::hNsigma[iPID][iS][iC]->Fill(centrality, fvector.pt(), nSigma[iPID][iS]); nuclei::hNsigmaEta[iPID][iS][iC]->Fill(fvector.eta(), fvector.pt(), nSigma[iPID][iS]); @@ -576,14 +588,24 @@ struct nucleiSpectra { nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMass, v2, track.itsNCls(), track.tpcNClsFound()); } } - if (cfgDCAHist->get(iS)) { - nuclei::hDCAHists[iC][iS]->Fill(fvector.pt(), dcaInfo[0], dcaInfo[1], nSigma[0][iS], tofMass, track.itsNCls(), track.tpcNClsFound()); - } } } } } + if (cfgDCAHists->get(iS, iC) && selectedTPC[iS]) { + nuclei::candidates_dca.emplace_back(NucleusCandidateDCA{ + track.globalIndex(), + fvector.pt() * track.sign(), + dcaInfo[0], + dcaInfo[1], + nSigma[0][iS], + tofMass, + track.itsNCls(), + track.tpcNClsFound(), + iS}); + } + if (cfgTreeConfig->get(iS, 0u) && selectedTPC[iS]) { if (cfgTreeConfig->get(iS, 1u) && !selectedTOF) { continue; @@ -635,6 +657,7 @@ struct nucleiSpectra { void processData(soa::Join::iterator const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); + nuclei::candidates_dca.clear(); if (!eventSelection(collision)) { return; } @@ -646,12 +669,16 @@ struct nucleiSpectra { for (auto& c : nuclei::candidates) { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } + for (auto& c : nuclei::candidates_dca) { + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + } } PROCESS_SWITCH(nucleiSpectra, processData, "Data analysis", true); void processDataFlow(CollWithEP const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); + nuclei::candidates_dca.clear(); nuclei::candidates_flow.clear(); if (!eventSelection(collision)) { return; @@ -663,6 +690,9 @@ struct nucleiSpectra { for (auto& c : nuclei::candidates) { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } + for (auto& c : nuclei::candidates_dca) { + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); } @@ -672,6 +702,7 @@ struct nucleiSpectra { void processDataFlowAlternative(CollWithQvec const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); + nuclei::candidates_dca.clear(); nuclei::candidates_flow.clear(); if (!eventSelection(collision)) { return; @@ -683,6 +714,9 @@ struct nucleiSpectra { for (auto& c : nuclei::candidates) { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } + for (auto& c : nuclei::candidates_dca) { + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); } @@ -693,6 +727,7 @@ struct nucleiSpectra { void processMC(soa::Join const& collisions, aod::McCollisions const& mcCollisions, TrackCandidates const& tracks, aod::McTrackLabels const& trackLabelsMC, aod::McParticles const& particlesMC, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); + nuclei::candidates_dca.clear(); for (auto& c : mcCollisions) { spectra.fill(HIST("hGenVtxZ"), c.posZ()); } @@ -735,6 +770,19 @@ struct nucleiSpectra { nucleiTableMC(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS, particle.pt(), particle.eta(), particle.phi(), particle.pdgCode(), goodCollisions[particle.mcCollisionId()], absoDecL); } + for (auto& c : nuclei::candidates_dca) { + auto label = trackLabelsMC.iteratorAt(c.globalIndex); + if (label.mcParticleId() < -1 || label.mcParticleId() >= particlesMC.size()) { + continue; + } + auto particle = particlesMC.iteratorAt(label.mcParticleId()); + int partHypoPDG = nuclei::codes[c.partHypo]; + if (!particle.isPhysicalPrimary() || std::abs(particle.pdgCode()) != partHypoPDG) { + continue; + } + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + } + int index{0}; for (auto& particle : particlesMC) { int pdg{std::abs(particle.pdgCode())}; From d7c622e9b05c5cbdaf952204a1240ca7addfcd9a Mon Sep 17 00:00:00 2001 From: Francesco Mazzaschi Date: Tue, 23 Jul 2024 13:34:51 +0200 Subject: [PATCH 2/5] Fix compilation error --- PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx index edd0497cf54..7e7bc4855e5 100644 --- a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx +++ b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx @@ -255,7 +255,7 @@ struct nucleiSpectra { Configurable> cfgDCAcut{"cfgDCAcut", {nuclei::DCAcutDefault[0], 5, 2, nuclei::names, nuclei::nDCAConfigName}, "Max DCAxy and DCAz for light nuclei"}; Configurable> cfgDownscaling{"cfgDownscaling", {nuclei::DownscalingDefault[0], 5, 1, nuclei::names, nuclei::DownscalingConfigName}, "Fraction of kept candidates for light nuclei"}; Configurable> cfgTreeConfig{"cfgTreeConfig", {nuclei::TreeConfigDefault[0], 5, 2, nuclei::names, nuclei::treeConfigNames}, "Filtered trees configuration"}; - Configurable> cfgDCAHist{"cfgDCAHist", {nuclei::DCAHistDefault[0], 5, 2, nuclei::names, nuclei::DCAConfigNames}, "DCA hist configuration"}; + Configurable> cfgDCAHists{"cfgDCAHists", {nuclei::DCAHistDefault[0], 5, 2, nuclei::names, nuclei::DCAConfigNames}, "DCA hist configuration"}; Configurable> cfgFlowHist{"cfgFlowHist", {nuclei::FlowHistDefault[0], 5, 1, nuclei::names, nuclei::flowConfigNames}, "Flow hist configuration"}; ConfigurableAxis cfgDCAxyBinsProtons{"cfgDCAxyBinsProtons", {1500, -1.5f, 1.5f}, "DCAxy binning for Protons"}; @@ -595,15 +595,15 @@ struct nucleiSpectra { if (cfgDCAHists->get(iS, iC) && selectedTPC[iS]) { nuclei::candidates_dca.emplace_back(NucleusCandidateDCA{ - track.globalIndex(), + static_cast(track.globalIndex()), fvector.pt() * track.sign(), dcaInfo[0], dcaInfo[1], nSigma[0][iS], tofMass, track.itsNCls(), - track.tpcNClsFound(), - iS}); + static_cast(track.tpcNClsFound()), + static_cast(iS)}); } if (cfgTreeConfig->get(iS, 0u) && selectedTPC[iS]) { @@ -670,7 +670,7 @@ struct nucleiSpectra { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); } } PROCESS_SWITCH(nucleiSpectra, processData, "Data analysis", true); @@ -691,7 +691,7 @@ struct nucleiSpectra { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); @@ -715,7 +715,7 @@ struct nucleiSpectra { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); @@ -780,7 +780,7 @@ struct nucleiSpectra { if (!particle.isPhysicalPrimary() || std::abs(particle.pdgCode()) != partHypoPDG) { continue; } - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigma, c.tofMass, c.ITScls, c.TPCcls); + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); } int index{0}; From cb1909c64633b740ade26a22dc02617fa89d8cca Mon Sep 17 00:00:00 2001 From: Francesco Mazzaschi Date: Wed, 24 Jul 2024 10:57:15 +0200 Subject: [PATCH 3/5] Fix pt sign --- PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx index 7e7bc4855e5..99e666f4922 100644 --- a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx +++ b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx @@ -670,7 +670,7 @@ struct nucleiSpectra { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); } } PROCESS_SWITCH(nucleiSpectra, processData, "Data analysis", true); @@ -691,7 +691,7 @@ struct nucleiSpectra { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); @@ -715,7 +715,7 @@ struct nucleiSpectra { nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); } for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); + nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); From 1fb593ec817e87bdcc25c6197c90136ba85cf586 Mon Sep 17 00:00:00 2001 From: Francesco Mazzaschi Date: Wed, 24 Jul 2024 17:25:19 +0200 Subject: [PATCH 4/5] remove dca dedicated structure --- PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx | 134 +++++++++---------- 1 file changed, 64 insertions(+), 70 deletions(-) diff --git a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx index 99e666f4922..e5f4a3af5bc 100644 --- a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx +++ b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx @@ -76,6 +76,10 @@ struct NucleusCandidate { float TPCsignal; float ITSchi2; float TPCchi2; + float nSigmaTPC[5]; + float tofMass[5]; + bool fillTree; + bool fillDCAHist; uint16_t flags; uint8_t TPCfindableCls; uint8_t TPCcrossedRows; @@ -84,18 +88,6 @@ struct NucleusCandidate { uint32_t clusterSizesITS; }; -struct NucleusCandidateDCA { - int globalIndex; - float pt; - float DCAxy; - float DCAz; - float nSigmaTPC; - float tofMass; - uint8_t itsNCls; - uint8_t tpcNCls; - uint8_t partHypo; -}; - struct NucleusCandidateFlow { float centFV0A; float centFT0M; @@ -201,7 +193,6 @@ std::shared_ptr hDCAHists[2][5]; o2::base::MatLayerCylSet* lut = nullptr; std::vector candidates; -std::vector candidates_dca; std::vector candidates_flow; enum centDetectors { @@ -537,6 +528,10 @@ struct nucleiSpectra { spectra.fill(HIST("hTofSignalData"), correctedTpcInnerParam, beta); beta = std::min(1.f - 1.e-6f, std::max(1.e-4f, beta)); /// sometimes beta > 1 or < 0, to be checked uint16_t flag = static_cast((track.pidForTracking() & 0xF) << 12); + float tofMass[5]{-10.f, -10.f, -10.f, -10.f, -10.f}; + bool fillTree{false}; + bool fillDCAHist{false}; + if (track.hasTOF()) { flag |= kHasTOF; } @@ -553,7 +548,6 @@ struct nucleiSpectra { } ROOT::Math::LorentzVector> fvector{trackParCov.getPt() * nuclei::charges[iS], trackParCov.getEta(), trackParCov.getPhi(), nuclei::masses[iS]}; float y{fvector.Rapidity() + cfgCMrapidity}; - float tofMass = -10.f; for (int iPID{0}; iPID < 2; ++iPID) { if (selectedTPC[iS]) { if (iPID && !track.hasTOF()) { @@ -570,50 +564,41 @@ struct nucleiSpectra { nuclei::hNsigmaEta[iPID][iS][iC]->Fill(fvector.eta(), fvector.pt(), nSigma[iPID][iS]); } if (iPID) { - tofMass = correctedTpcInnerParam * std::sqrt(1.f / (beta * beta) - 1.f) - nuclei::masses[iS]; - nuclei::hTOFmass[iS][iC]->Fill(centrality, fvector.pt(), tofMass); - nuclei::hTOFmassEta[iS][iC]->Fill(fvector.eta(), fvector.pt(), tofMass); + tofMass[iS] = correctedTpcInnerParam * std::sqrt(1.f / (beta * beta) - 1.f) - nuclei::masses[iS]; + nuclei::hTOFmass[iS][iC]->Fill(centrality, fvector.pt(), tofMass[iS]); + nuclei::hTOFmassEta[iS][iC]->Fill(fvector.eta(), fvector.pt(), tofMass[iS]); } if (cfgFlowHist->get(iS) && doprocessDataFlow) { if constexpr (std::is_same::value) { auto deltaPhiInRange = getPhiInRange(fvector.phi() - collision.psiFT0C()); auto v2 = std::cos(2.0 * deltaPhiInRange); - nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMass, v2, track.itsNCls(), track.tpcNClsFound()); + nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMass[iS], v2, track.itsNCls(), track.tpcNClsFound()); } } else if (cfgFlowHist->get(iS) && doprocessDataFlowAlternative) { if constexpr (std::is_same::value) { auto deltaPhiInRange = getPhiInRange(fvector.phi() - computeEventPlane(collision.qvecFT0CIm(), collision.qvecFT0CRe())); auto v2 = std::cos(2.0 * deltaPhiInRange); - nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMass, v2, track.itsNCls(), track.tpcNClsFound()); + nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMass[iS], v2, track.itsNCls(), track.tpcNClsFound()); } } } } } } - - if (cfgDCAHists->get(iS, iC) && selectedTPC[iS]) { - nuclei::candidates_dca.emplace_back(NucleusCandidateDCA{ - static_cast(track.globalIndex()), - fvector.pt() * track.sign(), - dcaInfo[0], - dcaInfo[1], - nSigma[0][iS], - tofMass, - track.itsNCls(), - static_cast(track.tpcNClsFound()), - static_cast(iS)}); - } - - if (cfgTreeConfig->get(iS, 0u) && selectedTPC[iS]) { + if (selectedTPC[iS]) { if (cfgTreeConfig->get(iS, 1u) && !selectedTOF) { continue; } - if (cfgDownscaling->get(iS) < 1. && gRandom->Rndm() > cfgDownscaling->get(iS)) { - continue; + !fillTree && cfgTreeConfig->get(iS, 0u) ? fillTree = true : fillTree; + !fillDCAHist && cfgDCAHists->get(iS, iC) ? fillDCAHist = true : fillDCAHist; + bool setPartFlag = cfgTreeConfig->get(iS, 0u) || cfgDCAHists->get(iS, iC); + if (setPartFlag) { + if (cfgDownscaling->get(iS) < 1. && gRandom->Rndm() > cfgDownscaling->get(iS)) { + continue; + } + flag |= BIT(iS); } - flag |= BIT(iS); } } if (flag & (kProton | kDeuteron | kTriton | kHe3 | kHe4) || doprocessMC) { /// ignore PID pre-selections for the MC @@ -646,7 +631,11 @@ struct nucleiSpectra { computeEventPlane(collision.qvecBPosIm(), collision.qvecBPosRe()), collision.multTPC()}); } - nuclei::candidates.emplace_back(NucleusCandidate{static_cast(track.globalIndex()), (1 - 2 * iC) * trackParCov.getPt(), trackParCov.getEta(), trackParCov.getPhi(), correctedTpcInnerParam, beta, collision.posZ(), dcaInfo[0], dcaInfo[1], track.tpcSignal(), track.itsChi2NCl(), track.tpcChi2NCl(), flag, track.tpcNClsFindable(), static_cast(track.tpcNClsCrossedRows()), track.itsClusterMap(), static_cast(track.tpcNClsFound()), static_cast(track.itsClusterSizes())}); + nuclei::candidates.emplace_back(NucleusCandidate{ + static_cast(track.globalIndex()), (1 - 2 * iC) * trackParCov.getPt(), trackParCov.getEta(), trackParCov.getPhi(), + correctedTpcInnerParam, beta, collision.posZ(), dcaInfo[0], dcaInfo[1], track.tpcSignal(), track.itsChi2NCl(), track.tpcChi2NCl(), + nSigma[0], tofMass, fillTree, fillDCAHist, flag, track.tpcNClsFindable(), static_cast(track.tpcNClsCrossedRows()), track.itsClusterMap(), + static_cast(track.tpcNClsFound()), static_cast(track.itsClusterSizes())}); } } // end loop over tracks @@ -657,7 +646,6 @@ struct nucleiSpectra { void processData(soa::Join::iterator const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); - nuclei::candidates_dca.clear(); if (!eventSelection(collision)) { return; } @@ -667,10 +655,16 @@ struct nucleiSpectra { fillDataInfo(collision, tracks); for (auto& c : nuclei::candidates) { - nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); - } - for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); + if (c.fillTree) { + nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); + } + if (c.fillDCAHist) { + for (int iS{0}; iS < nuclei::species; ++iS) { + if (c.flags & BIT(iS)) { + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + } + } + } } } PROCESS_SWITCH(nucleiSpectra, processData, "Data analysis", true); @@ -678,7 +672,6 @@ struct nucleiSpectra { void processDataFlow(CollWithEP const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); - nuclei::candidates_dca.clear(); nuclei::candidates_flow.clear(); if (!eventSelection(collision)) { return; @@ -688,10 +681,16 @@ struct nucleiSpectra { } fillDataInfo(collision, tracks); for (auto& c : nuclei::candidates) { - nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); - } - for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); + if (c.fillTree) { + nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); + } + if (c.fillDCAHist) { + for (int iS{0}; iS < nuclei::species; ++iS) { + if (c.flags & BIT(iS)) { + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + } + } + } } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); @@ -702,7 +701,6 @@ struct nucleiSpectra { void processDataFlowAlternative(CollWithQvec const& collision, TrackCandidates const& tracks, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); - nuclei::candidates_dca.clear(); nuclei::candidates_flow.clear(); if (!eventSelection(collision)) { return; @@ -712,10 +710,16 @@ struct nucleiSpectra { } fillDataInfo(collision, tracks); for (auto& c : nuclei::candidates) { - nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); - } - for (auto& c : nuclei::candidates_dca) { - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); + if (c.fillTree) { + nucleiTable(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS); + } + if (c.fillDCAHist) { + for (int iS{0}; iS < nuclei::species; ++iS) { + if (c.flags & BIT(iS)) { + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + } + } + } } for (auto& c : nuclei::candidates_flow) { nucleiTableFlow(c.centFV0A, c.centFT0M, c.centFT0A, c.centFT0C, c.psiFT0A, c.multFT0A, c.psiFT0C, c.multFT0C, c.psiTPC, c.psiTPCl, c.psiTPCr, c.multTPC); @@ -727,7 +731,6 @@ struct nucleiSpectra { void processMC(soa::Join const& collisions, aod::McCollisions const& mcCollisions, TrackCandidates const& tracks, aod::McTrackLabels const& trackLabelsMC, aod::McParticles const& particlesMC, aod::BCsWithTimestamps const&) { nuclei::candidates.clear(); - nuclei::candidates_dca.clear(); for (auto& c : mcCollisions) { spectra.fill(HIST("hGenVtxZ"), c.posZ()); } @@ -750,9 +753,13 @@ struct nucleiSpectra { bool storeIt{false}; for (int iS{0}; iS < nuclei::species; ++iS) { if (std::abs(particle.pdgCode()) == nuclei::codes[iS]) { - nuclei::hMomRes[iS][particle.pdgCode() < 0]->Fill(1., std::abs(c.pt * nuclei::charges[iS]), 1. - std::abs(c.pt * nuclei::charges[iS]) / particle.pt()); - storeIt = cfgTreeConfig->get(iS, 0u) || cfgTreeConfig->get(iS, 1u); /// store only the particles of interest - break; + if (c.fillTree && !storeIt) { + nuclei::hMomRes[iS][particle.pdgCode() < 0]->Fill(1., std::abs(c.pt * nuclei::charges[iS]), 1. - std::abs(c.pt * nuclei::charges[iS]) / particle.pt()); + storeIt = cfgTreeConfig->get(iS, 0u) || cfgTreeConfig->get(iS, 1u); /// store only the particles of interest + } + if (c.fillDCAHist && cfgDCAHists->get(iS, c.pt < 0)) { + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + } } } if (!storeIt) { @@ -770,19 +777,6 @@ struct nucleiSpectra { nucleiTableMC(c.pt, c.eta, c.phi, c.tpcInnerParam, c.beta, c.zVertex, c.DCAxy, c.DCAz, c.TPCsignal, c.ITSchi2, c.TPCchi2, c.flags, c.TPCfindableCls, c.TPCcrossedRows, c.ITSclsMap, c.TPCnCls, c.clusterSizesITS, particle.pt(), particle.eta(), particle.phi(), particle.pdgCode(), goodCollisions[particle.mcCollisionId()], absoDecL); } - for (auto& c : nuclei::candidates_dca) { - auto label = trackLabelsMC.iteratorAt(c.globalIndex); - if (label.mcParticleId() < -1 || label.mcParticleId() >= particlesMC.size()) { - continue; - } - auto particle = particlesMC.iteratorAt(label.mcParticleId()); - int partHypoPDG = nuclei::codes[c.partHypo]; - if (!particle.isPhysicalPrimary() || std::abs(particle.pdgCode()) != partHypoPDG) { - continue; - } - nuclei::hDCAHists[c.pt < 0][c.partHypo]->Fill(c.pt, c.DCAxy, c.DCAz, c.nSigmaTPC, c.tofMass, c.itsNCls, c.tpcNCls); - } - int index{0}; for (auto& particle : particlesMC) { int pdg{std::abs(particle.pdgCode())}; From 20e11f08126cd7f749c4311119e09e5e58544740 Mon Sep 17 00:00:00 2001 From: Francesco Mazzaschi Date: Wed, 24 Jul 2024 18:19:08 +0200 Subject: [PATCH 5/5] Fix compilation errors --- PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx | 31 +++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx index e5f4a3af5bc..4b71f1ece1e 100644 --- a/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx +++ b/PWGLF/TableProducer/Nuspex/nucleiSpectra.cxx @@ -76,8 +76,8 @@ struct NucleusCandidate { float TPCsignal; float ITSchi2; float TPCchi2; - float nSigmaTPC[5]; - float tofMass[5]; + std::array nSigmaTPC; + std::array tofMasses; bool fillTree; bool fillDCAHist; uint16_t flags; @@ -85,6 +85,7 @@ struct NucleusCandidate { uint8_t TPCcrossedRows; uint8_t ITSclsMap; uint8_t TPCnCls; + uint8_t ITSnCls; uint32_t clusterSizesITS; }; @@ -505,10 +506,12 @@ struct nucleiSpectra { } bool selectedTPC[5]{false}, goodToAnalyse{false}; + std::array nSigmaTPC; for (int iS{0}; iS < nuclei::species; ++iS) { double expBethe{tpc::BetheBlochAleph(static_cast(correctedTpcInnerParam * bgScalings[iS][iC]), cfgBetheBlochParams->get(iS, 0u), cfgBetheBlochParams->get(iS, 1u), cfgBetheBlochParams->get(iS, 2u), cfgBetheBlochParams->get(iS, 3u), cfgBetheBlochParams->get(iS, 4u))}; double expSigma{expBethe * cfgBetheBlochParams->get(iS, 5u)}; nSigma[0][iS] = static_cast((track.tpcSignal() - expBethe) / expSigma); + nSigmaTPC[iS] = nSigma[0][iS]; selectedTPC[iS] = (nSigma[0][iS] > nuclei::pidCuts[0][iS][0] && nSigma[0][iS] < nuclei::pidCuts[0][iS][1]); goodToAnalyse = goodToAnalyse || selectedTPC[iS]; if (selectedTPC[iS] && track.p() > 0.2) { @@ -528,7 +531,7 @@ struct nucleiSpectra { spectra.fill(HIST("hTofSignalData"), correctedTpcInnerParam, beta); beta = std::min(1.f - 1.e-6f, std::max(1.e-4f, beta)); /// sometimes beta > 1 or < 0, to be checked uint16_t flag = static_cast((track.pidForTracking() & 0xF) << 12); - float tofMass[5]{-10.f, -10.f, -10.f, -10.f, -10.f}; + std::array tofMasses{0.f, 0.f, 0.f, 0.f, 0.f}; bool fillTree{false}; bool fillDCAHist{false}; @@ -564,22 +567,22 @@ struct nucleiSpectra { nuclei::hNsigmaEta[iPID][iS][iC]->Fill(fvector.eta(), fvector.pt(), nSigma[iPID][iS]); } if (iPID) { - tofMass[iS] = correctedTpcInnerParam * std::sqrt(1.f / (beta * beta) - 1.f) - nuclei::masses[iS]; - nuclei::hTOFmass[iS][iC]->Fill(centrality, fvector.pt(), tofMass[iS]); - nuclei::hTOFmassEta[iS][iC]->Fill(fvector.eta(), fvector.pt(), tofMass[iS]); + tofMasses[iS] = correctedTpcInnerParam * std::sqrt(1.f / (beta * beta) - 1.f) - nuclei::masses[iS]; + nuclei::hTOFmass[iS][iC]->Fill(centrality, fvector.pt(), tofMasses[iS]); + nuclei::hTOFmassEta[iS][iC]->Fill(fvector.eta(), fvector.pt(), tofMasses[iS]); } if (cfgFlowHist->get(iS) && doprocessDataFlow) { if constexpr (std::is_same::value) { auto deltaPhiInRange = getPhiInRange(fvector.phi() - collision.psiFT0C()); auto v2 = std::cos(2.0 * deltaPhiInRange); - nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMass[iS], v2, track.itsNCls(), track.tpcNClsFound()); + nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMasses[iS], v2, track.itsNCls(), track.tpcNClsFound()); } } else if (cfgFlowHist->get(iS) && doprocessDataFlowAlternative) { if constexpr (std::is_same::value) { auto deltaPhiInRange = getPhiInRange(fvector.phi() - computeEventPlane(collision.qvecFT0CIm(), collision.qvecFT0CRe())); auto v2 = std::cos(2.0 * deltaPhiInRange); - nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMass[iS], v2, track.itsNCls(), track.tpcNClsFound()); + nuclei::hFlowHists[iC][iS]->Fill(collision.centFT0C(), fvector.pt(), nSigma[0][iS], tofMasses[iS], v2, track.itsNCls(), track.tpcNClsFound()); } } } @@ -634,8 +637,8 @@ struct nucleiSpectra { nuclei::candidates.emplace_back(NucleusCandidate{ static_cast(track.globalIndex()), (1 - 2 * iC) * trackParCov.getPt(), trackParCov.getEta(), trackParCov.getPhi(), correctedTpcInnerParam, beta, collision.posZ(), dcaInfo[0], dcaInfo[1], track.tpcSignal(), track.itsChi2NCl(), track.tpcChi2NCl(), - nSigma[0], tofMass, fillTree, fillDCAHist, flag, track.tpcNClsFindable(), static_cast(track.tpcNClsCrossedRows()), track.itsClusterMap(), - static_cast(track.tpcNClsFound()), static_cast(track.itsClusterSizes())}); + nSigmaTPC, tofMasses, fillTree, fillDCAHist, flag, track.tpcNClsFindable(), static_cast(track.tpcNClsCrossedRows()), track.itsClusterMap(), + static_cast(track.tpcNClsFound()), static_cast(track.itsNCls()), static_cast(track.itsClusterSizes())}); } } // end loop over tracks @@ -661,7 +664,7 @@ struct nucleiSpectra { if (c.fillDCAHist) { for (int iS{0}; iS < nuclei::species; ++iS) { if (c.flags & BIT(iS)) { - nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMasses[iS], c.ITSnCls, c.TPCnCls); } } } @@ -687,7 +690,7 @@ struct nucleiSpectra { if (c.fillDCAHist) { for (int iS{0}; iS < nuclei::species; ++iS) { if (c.flags & BIT(iS)) { - nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMasses[iS], c.ITSnCls, c.TPCnCls); } } } @@ -716,7 +719,7 @@ struct nucleiSpectra { if (c.fillDCAHist) { for (int iS{0}; iS < nuclei::species; ++iS) { if (c.flags & BIT(iS)) { - nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMasses[iS], c.ITSnCls, c.TPCnCls); } } } @@ -758,7 +761,7 @@ struct nucleiSpectra { storeIt = cfgTreeConfig->get(iS, 0u) || cfgTreeConfig->get(iS, 1u); /// store only the particles of interest } if (c.fillDCAHist && cfgDCAHists->get(iS, c.pt < 0)) { - nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMass[iS], c.itsNCls, c.tpcNCls); + nuclei::hDCAHists[c.pt < 0][iS]->Fill(std::abs(c.pt), c.DCAxy, c.DCAz, c.nSigmaTPC[iS], c.tofMasses[iS], c.ITSnCls, c.TPCnCls); } } }