Skip to content

Commit

Permalink
replace nProngsContributorsPV with their indices
Browse files Browse the repository at this point in the history
  • Loading branch information
Oleksii Lubynets committed Dec 18, 2024
1 parent f2d9f6e commit 46bc3b4
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 25 deletions.
10 changes: 7 additions & 3 deletions PWGHF/DataModel/CandidateReconstructionTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

#include "PWGHF/Core/SelectorCuts.h"
#include "PWGHF/Utils/utilsPid.h"
#include "PWGHF/Utils/utilsTrkCandHf.h"

namespace o2::aod
{
Expand Down Expand Up @@ -484,7 +485,7 @@ DECLARE_SOA_COLUMN(ErrorImpactParameterZ2, errorImpactParameterZ2, float);
DECLARE_SOA_DYNAMIC_COLUMN(ImpactParameterZNormalised2, impactParameterZNormalised2, //!
[](float dca, float err) -> float { return dca / err; });
/// prong PID nsigma
DECLARE_SOA_COLUMN(NProngsContributorsPV, nProngsContributorsPV, uint8_t); //! number of prongs contributing to the primary-vertex reconstruction
DECLARE_SOA_COLUMN(IndicesProngsContributorsPV, indicesProngsContributorsPV, uint8_t); //! indices of prongs contributing to the primary-vertex reconstruction encoded in binary form
DECLARE_SOA_COLUMN(NSigTpcPi0, nSigTpcPi0, float); //! TPC nSigma for pion hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTpcPi1, nSigTpcPi1, float); //! TPC nSigma for pion hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTpcPi2, nSigTpcPi2, float); //! TPC nSigma for pion hypothesis - prong 2
Expand All @@ -503,6 +504,7 @@ DECLARE_SOA_COLUMN(NSigTofKa2, nSigTofKa2, float); //! T
DECLARE_SOA_COLUMN(NSigTofPr0, nSigTofPr0, float); //! TOF nSigma for proton hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTofPr1, nSigTofPr1, float); //! TOF nSigma for proton hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTofPr2, nSigTofPr2, float); //! TOF nSigma for proton hypothesis - prong 2
DECLARE_SOA_DYNAMIC_COLUMN(NProngsContributorsPV, nProngsContributorsPV, [](uint8_t indicesProngsContributorsPV) -> uint8_t {return hf_trkcandsel::countOnesInBinary(indicesProngsContributorsPV); });
DECLARE_SOA_DYNAMIC_COLUMN(TpcTofNSigmaPi0, tpcTofNSigmaPi0, //! Combined NSigma separation with the TPC & TOF detectors for pion - prong 0
[](float tpcNSigmaPi0, float tofNSigmaPi0) -> float { return pid_tpc_tof_utils::combineNSigma<false /*tiny*/>(tpcNSigmaPi0, tofNSigmaPi0); });
DECLARE_SOA_DYNAMIC_COLUMN(TpcTofNSigmaPi1, tpcTofNSigmaPi1, //! Combined NSigma separation with the TPC & TOF detectors for pion - prong 1
Expand Down Expand Up @@ -664,14 +666,15 @@ DECLARE_SOA_TABLE(HfCand2ProngBase, "AOD", "HFCAND2PBASE", //!
hf_cand::ErrorImpactParameter0, hf_cand::ErrorImpactParameter1,
hf_cand::ImpactParameterZ0, hf_cand::ImpactParameterZ1,
hf_cand::ErrorImpactParameterZ0, hf_cand::ErrorImpactParameterZ1,
hf_track_index::Prong0Id, hf_track_index::Prong1Id, hf_cand::NProngsContributorsPV,
hf_track_index::Prong0Id, hf_track_index::Prong1Id, hf_cand::IndicesProngsContributorsPV,
hf_track_index::HFflag,
/* dynamic columns */
hf_cand_2prong::M<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1>,
hf_cand_2prong::M2<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1>,
hf_cand_2prong::ImpactParameterProduct<hf_cand::ImpactParameter0, hf_cand::ImpactParameter1>,
hf_cand_2prong::CosThetaStar<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1>,
hf_cand_2prong::ImpactParameterProngSqSum<hf_cand::ImpactParameter0, hf_cand::ImpactParameter1>,
hf_cand::NProngsContributorsPV<hf_cand::IndicesProngsContributorsPV>,
/* dynamic columns that use candidate momentum components */
hf_cand::Pt<hf_cand_2prong::Px, hf_cand_2prong::Py>,
hf_cand::Pt2<hf_cand_2prong::Px, hf_cand_2prong::Py>,
Expand Down Expand Up @@ -970,12 +973,13 @@ DECLARE_SOA_TABLE(HfCand3ProngBase, "AOD", "HFCAND3PBASE", //!
hf_cand::ErrorImpactParameter0, hf_cand::ErrorImpactParameter1, hf_cand::ErrorImpactParameter2,
hf_cand::ImpactParameterZ0, hf_cand::ImpactParameterZ1, hf_cand::ImpactParameterZ2,
hf_cand::ErrorImpactParameterZ0, hf_cand::ErrorImpactParameterZ1, hf_cand::ErrorImpactParameterZ2,
hf_track_index::Prong0Id, hf_track_index::Prong1Id, hf_track_index::Prong2Id, hf_cand::NProngsContributorsPV,
hf_track_index::Prong0Id, hf_track_index::Prong1Id, hf_track_index::Prong2Id, hf_cand::IndicesProngsContributorsPV,
hf_track_index::HFflag,
/* dynamic columns */
hf_cand_3prong::M<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1, hf_cand::PxProng2, hf_cand::PyProng2, hf_cand::PzProng2>,
hf_cand_3prong::M2<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1, hf_cand::PxProng2, hf_cand::PyProng2, hf_cand::PzProng2>,
hf_cand_3prong::ImpactParameterProngSqSum<hf_cand::ImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ImpactParameter2>,
hf_cand::NProngsContributorsPV<hf_cand::IndicesProngsContributorsPV>,
/* prong 2 */
hf_cand::ImpactParameterNormalised2<hf_cand::ImpactParameter2, hf_cand::ErrorImpactParameter2>,
hf_cand::PtProng2<hf_cand::PxProng2, hf_cand::PyProng2>,
Expand Down
2 changes: 1 addition & 1 deletion PWGHF/DataModel/DerivedTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ DECLARE_SOA_TABLE_STAGED(HfBplusMcs, "HFBPMC", //! Table with MC candidate info
// normalised: DecayLengthNormalised, DecayLengthXYNormalised, ImpactParameterNormalised0
DECLARE_SOA_TABLE_STAGED(HfLcPars, "HFLCPAR", //! Table with candidate properties used for selection
hf_cand::Chi2PCA,
hf_cand::NProngsContributorsPV,
hf_cand::IndicesProngsContributorsPV,
hf_cand_par::Cpa,
hf_cand_par::CpaXY,
hf_cand_par::DecayLength,
Expand Down
16 changes: 8 additions & 8 deletions PWGHF/TableProducer/candidateCreator2Prong.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -281,12 +281,12 @@ struct HfCandidateCreator2Prong {
auto errorDecayLengthXY = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.));

auto indexCollision = collision.globalIndex();
uint8_t nProngsContributorsPV = 0;
uint8_t indicesProngsContributorsPV = 0;
if (indexCollision == track0.collisionId() && track0.isPVContributor()) {
nProngsContributorsPV += 1;
indicesProngsContributorsPV += 1;
}
if (indexCollision == track1.collisionId() && track1.isPVContributor()) {
nProngsContributorsPV += 1;
indicesProngsContributorsPV += 2;
}

// fill candidate table rows
Expand All @@ -301,7 +301,7 @@ struct HfCandidateCreator2Prong {
std::sqrt(impactParameter0.getSigmaY2()), std::sqrt(impactParameter1.getSigmaY2()),
impactParameter0.getZ(), impactParameter1.getZ(),
std::sqrt(impactParameter0.getSigmaZ2()), std::sqrt(impactParameter1.getSigmaZ2()),
rowTrackIndexProng2.prong0Id(), rowTrackIndexProng2.prong1Id(), nProngsContributorsPV,
rowTrackIndexProng2.prong0Id(), rowTrackIndexProng2.prong1Id(), indicesProngsContributorsPV,
rowTrackIndexProng2.hfflag());

// fill candidate prong PID rows
Expand Down Expand Up @@ -432,12 +432,12 @@ struct HfCandidateCreator2Prong {
}

auto indexCollision = collision.globalIndex();
uint8_t nProngsContributorsPV = 0;
uint8_t indicesProngsContributorsPV = 0;
if (indexCollision == track0.collisionId() && track0.isPVContributor()) {
nProngsContributorsPV += 1;
indicesProngsContributorsPV += 1;
}
if (indexCollision == track1.collisionId() && track1.isPVContributor()) {
nProngsContributorsPV += 1;
indicesProngsContributorsPV += 2;
}

// fill candidate table rows
Expand All @@ -452,7 +452,7 @@ struct HfCandidateCreator2Prong {
errImpactParameter0XY, errImpactParameter1XY,
0.f, 0.f,
0.f, 0.f,
rowTrackIndexProng2.prong0Id(), rowTrackIndexProng2.prong1Id(), nProngsContributorsPV,
rowTrackIndexProng2.prong0Id(), rowTrackIndexProng2.prong1Id(), indicesProngsContributorsPV,
rowTrackIndexProng2.hfflag());

// fill candidate prong PID rows
Expand Down
10 changes: 5 additions & 5 deletions PWGHF/TableProducer/candidateCreator3Prong.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -275,15 +275,15 @@ struct HfCandidateCreator3Prong {
auto errorDecayLengthXY = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.));

auto indexCollision = collision.globalIndex();
uint8_t nProngsContributorsPV = 0;
uint8_t indicesProngsContributorsPV = 0;
if (indexCollision == track0.collisionId() && track0.isPVContributor()) {
nProngsContributorsPV += 1;
indicesProngsContributorsPV += 1;
}
if (indexCollision == track1.collisionId() && track1.isPVContributor()) {
nProngsContributorsPV += 1;
indicesProngsContributorsPV += 2;
}
if (indexCollision == track2.collisionId() && track2.isPVContributor()) {
nProngsContributorsPV += 1;
indicesProngsContributorsPV += 4;
}

// fill candidate table rows
Expand All @@ -299,7 +299,7 @@ struct HfCandidateCreator3Prong {
std::sqrt(impactParameter0.getSigmaY2()), std::sqrt(impactParameter1.getSigmaY2()), std::sqrt(impactParameter2.getSigmaY2()),
impactParameter0.getZ(), impactParameter1.getZ(), impactParameter2.getZ(),
std::sqrt(impactParameter0.getSigmaZ2()), std::sqrt(impactParameter1.getSigmaZ2()), std::sqrt(impactParameter2.getSigmaZ2()),
rowTrackIndexProng3.prong0Id(), rowTrackIndexProng3.prong1Id(), rowTrackIndexProng3.prong2Id(), nProngsContributorsPV,
rowTrackIndexProng3.prong0Id(), rowTrackIndexProng3.prong1Id(), rowTrackIndexProng3.prong2Id(), indicesProngsContributorsPV,
rowTrackIndexProng3.hfflag());

// fill histograms
Expand Down
2 changes: 1 addition & 1 deletion PWGHF/TableProducer/derivedDataCreatorLcToPKPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ struct HfDerivedDataCreatorLcToPKPi {
if (fillCandidatePar) {
rowCandidatePar(
candidate.chi2PCA(),
candidate.nProngsContributorsPV(),
candidate.indicesProngsContributorsPV(),
candidate.cpa(),
candidate.cpaXY(),
candidate.decayLength(),
Expand Down
12 changes: 6 additions & 6 deletions PWGHF/TableProducer/treeCreatorLcToPKPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ DECLARE_SOA_TABLE(HfCandLcLites, "AOD", "HFCANDLCLITE",
collision::PosX,
collision::PosY,
collision::PosZ,
hf_cand::NProngsContributorsPV,
hf_cand::IndicesProngsContributorsPV,
// hf_cand::ErrorDecayLength,
// hf_cand::ErrorDecayLengthXY,
hf_cand::Chi2PCA,
Expand Down Expand Up @@ -158,7 +158,7 @@ DECLARE_SOA_TABLE(HfCandLcFulls, "AOD", "HFCANDLCFULL",
collision::PosX,
collision::PosY,
collision::PosZ,
hf_cand::NProngsContributorsPV,
hf_cand::IndicesProngsContributorsPV,
hf_cand::XSecondaryVertex,
hf_cand::YSecondaryVertex,
hf_cand::ZSecondaryVertex,
Expand Down Expand Up @@ -356,7 +356,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posX(),
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.indicesProngsContributorsPV(),
// candidate.errorDecayLength(),
// candidate.errorDecayLengthXY(),
candidate.chi2PCA(),
Expand Down Expand Up @@ -418,7 +418,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posX(),
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.indicesProngsContributorsPV(),
candidate.xSecondaryVertex(),
candidate.ySecondaryVertex(),
candidate.zSecondaryVertex(),
Expand Down Expand Up @@ -613,7 +613,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posX(),
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.indicesProngsContributorsPV(),
// candidate.errorDecayLength(),
// candidate.errorDecayLengthXY(),
candidate.chi2PCA(),
Expand Down Expand Up @@ -675,7 +675,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posX(),
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.indicesProngsContributorsPV(),
candidate.xSecondaryVertex(),
candidate.ySecondaryVertex(),
candidate.zSecondaryVertex(),
Expand Down
15 changes: 15 additions & 0 deletions PWGHF/Utils/utilsTrkCandHf.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,21 @@ void setLabelHistoCands(Histo& hCandidates)
hCandidates->GetXaxis()->SetBinLabel(SVFitting::Fail + 1, "Run-time error in secondary vertexing");
}

int countOnesInBinary(uint8_t num) {
int count = 0;

// Loop through all bits of the number (8 bits for uint8_t)
while (num > 0) {
// Increment count if the last bit is 1
count += num & 1;

// Right shift the number by 1 to check the next bit
num >>= 1;
}

return count;
}

} // namespace o2::hf_trkcandsel

#endif // PWGHF_UTILS_UTILSTRKCANDHF_H_
2 changes: 1 addition & 1 deletion PWGJE/Core/JetHFUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ void fillLcCandidateTable(T const& candidate, U& LcParTable, V& LcParETable, M&

LcParTable(
candidate.chi2PCA(),
candidate.nProngsContributorsPV(),
candidate.indicesProngsContributorsPV(),
candidate.cpa(),
candidate.cpaXY(),
candidate.decayLength(),
Expand Down

0 comments on commit 46bc3b4

Please sign in to comment.