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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
16 changes: 16 additions & 0 deletions PWGHF/Utils/utilsTrkCandHf.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,22 @@ 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
Loading