Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PWGHF] Add bitmap of primary-vertex-contributor prongs #9051

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 7 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
46 changes: 24 additions & 22 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"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should only be included in files that use countOnesInBinary.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


namespace o2::aod
{
Expand Down Expand Up @@ -245,7 +246,7 @@
DECLARE_SOA_INDEX_COLUMN_FULL(Prong2, prong2, int, Tracks, "_2"); //! Index to third prong
DECLARE_SOA_INDEX_COLUMN(V0, v0); //! Index to V0 prong
DECLARE_SOA_INDEX_COLUMN(Cascade, cascade); //! Index to cascade prong
DECLARE_SOA_COLUMN(HFflag, hfflag, uint8_t); //!

Check warning on line 249 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.

DECLARE_SOA_COLUMN(FlagD0ToKPi, flagD0ToKPi, uint8_t); //!
DECLARE_SOA_COLUMN(FlagJpsiToEE, flagJpsiToEE, uint8_t); //!
Expand Down Expand Up @@ -484,26 +485,27 @@
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(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
DECLARE_SOA_COLUMN(NSigTpcKa0, nSigTpcKa0, float); //! TPC nSigma for kaon hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTpcKa1, nSigTpcKa1, float); //! TPC nSigma for kaon hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTpcKa2, nSigTpcKa2, float); //! TPC nSigma for kaon hypothesis - prong 2
DECLARE_SOA_COLUMN(NSigTpcPr0, nSigTpcPr0, float); //! TPC nSigma for proton hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTpcPr1, nSigTpcPr1, float); //! TPC nSigma for proton hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTpcPr2, nSigTpcPr2, float); //! TPC nSigma for proton hypothesis - prong 2
DECLARE_SOA_COLUMN(NSigTofPi0, nSigTofPi0, float); //! TOF nSigma for pion hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTofPi1, nSigTofPi1, float); //! TOF nSigma for pion hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTofPi2, nSigTofPi2, float); //! TOF nSigma for pion hypothesis - prong 2
DECLARE_SOA_COLUMN(NSigTofKa0, nSigTofKa0, float); //! TOF nSigma for kaon hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTofKa1, nSigTofKa1, float); //! TOF nSigma for kaon hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTofKa2, nSigTofKa2, float); //! TOF nSigma for kaon hypothesis - prong 2
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(TpcTofNSigmaPi0, tpcTofNSigmaPi0, //! Combined NSigma separation with the TPC & TOF detectors for pion - prong 0
DECLARE_SOA_COLUMN(NProngsContributorsPV, nProngsContributorsPV, uint8_t); //! number of prongs contributing to the primary-vertex reconstruction
DECLARE_SOA_COLUMN(BitmapProngsContributorsPV, bitmapProngsContributorsPV, uint8_t); //! bitmap with booleans indicating prongs contributing to the primary-vertex reconstruction
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
DECLARE_SOA_COLUMN(NSigTpcKa0, nSigTpcKa0, float); //! TPC nSigma for kaon hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTpcKa1, nSigTpcKa1, float); //! TPC nSigma for kaon hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTpcKa2, nSigTpcKa2, float); //! TPC nSigma for kaon hypothesis - prong 2
DECLARE_SOA_COLUMN(NSigTpcPr0, nSigTpcPr0, float); //! TPC nSigma for proton hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTpcPr1, nSigTpcPr1, float); //! TPC nSigma for proton hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTpcPr2, nSigTpcPr2, float); //! TPC nSigma for proton hypothesis - prong 2
DECLARE_SOA_COLUMN(NSigTofPi0, nSigTofPi0, float); //! TOF nSigma for pion hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTofPi1, nSigTofPi1, float); //! TOF nSigma for pion hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTofPi2, nSigTofPi2, float); //! TOF nSigma for pion hypothesis - prong 2
DECLARE_SOA_COLUMN(NSigTofKa0, nSigTofKa0, float); //! TOF nSigma for kaon hypothesis - prong 0
DECLARE_SOA_COLUMN(NSigTofKa1, nSigTofKa1, float); //! TOF nSigma for kaon hypothesis - prong 1
DECLARE_SOA_COLUMN(NSigTofKa2, nSigTofKa2, float); //! TOF nSigma for kaon hypothesis - prong 2
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(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
[](float tpcNSigmaPi1, float tofNSigmaPi1) -> float { return pid_tpc_tof_utils::combineNSigma<false /*tiny*/>(tpcNSigmaPi1, tofNSigmaPi1); });
Expand Down Expand Up @@ -572,9 +574,9 @@
[](float xVtxP, float yVtxP, float xVtxS, float yVtxS, float err) -> float { return RecoDecay::distanceXY(std::array{xVtxP, yVtxP}, std::array{xVtxS, yVtxS}) / err; });
DECLARE_SOA_COLUMN(ErrorDecayLength, errorDecayLength, float); //!
DECLARE_SOA_COLUMN(ErrorDecayLengthXY, errorDecayLengthXY, float); //!
DECLARE_SOA_DYNAMIC_COLUMN(CPA, cpa, //!

Check warning on line 577 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
[](float xVtxP, float yVtxP, float zVtxP, float xVtxS, float yVtxS, float zVtxS, float px, float py, float pz) -> float { return RecoDecay::cpa(std::array{xVtxP, yVtxP, zVtxP}, std::array{xVtxS, yVtxS, zVtxS}, std::array{px, py, pz}); });
DECLARE_SOA_DYNAMIC_COLUMN(CPAXY, cpaXY, //!

Check warning on line 579 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
[](float xVtxP, float yVtxP, float xVtxS, float yVtxS, float px, float py) -> float { return RecoDecay::cpaXY(std::array{xVtxP, yVtxP}, std::array{xVtxS, yVtxS}, std::array{px, py}); });
DECLARE_SOA_DYNAMIC_COLUMN(Ct, ct, //!
[](float xVtxP, float yVtxP, float zVtxP, float xVtxS, float yVtxS, float zVtxS, float px, float py, float pz, double m) -> float { return RecoDecay::ct(std::array{px, py, pz}, RecoDecay::distance(std::array{xVtxP, yVtxP, zVtxP}, std::array{xVtxS, yVtxS, zVtxS}), m); });
Expand Down Expand Up @@ -664,7 +666,7 @@
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::NProngsContributorsPV, hf_cand::BitmapProngsContributorsPV,
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>,
Expand Down Expand Up @@ -763,9 +765,9 @@
DECLARE_SOA_COLUMN(FlagMcMatchGen, flagMcMatchGen, int8_t); //! generator level
DECLARE_SOA_COLUMN(OriginMcRec, originMcRec, int8_t); //! particle origin, reconstruction level
DECLARE_SOA_COLUMN(OriginMcGen, originMcGen, int8_t); //! particle origin, generator level
DECLARE_SOA_COLUMN(V0X, v0x, float); //! X position of V0 decay

Check warning on line 768 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(V0Y, v0y, float); //! Y position of V0 decay

Check warning on line 769 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(V0Z, v0z, float); //! Z position of V0 decay

Check warning on line 770 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
} // namespace hf_cand_casc

DECLARE_SOA_TABLE(HfCandCascBase, "AOD", "HFCANDCASCBASE", //!
Expand Down Expand Up @@ -970,7 +972,7 @@
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::NProngsContributorsPV, hf_cand::BitmapProngsContributorsPV,
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>,
Expand Down Expand Up @@ -1230,10 +1232,10 @@
DECLARE_SOA_COLUMN(CosPAXYV0, cosPAXYV0, float);
DECLARE_SOA_COLUMN(CosPAXYCharmBaryon, cosPAXYCharmBaryon, float);
DECLARE_SOA_COLUMN(CosPAXYCasc, cosPAXYCasc, float);
DECLARE_SOA_COLUMN(CTauOmegac, ctauOmegac, float);

Check warning on line 1235 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(CTauCascade, ctauCascade, float);

Check warning on line 1236 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(CTauV0, ctauV0, float);

Check warning on line 1237 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(CTauXic, ctauXic, float);

Check warning on line 1238 in PWGHF/DataModel/CandidateReconstructionTables.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(EtaV0PosDau, etaV0PosDau, float);
DECLARE_SOA_COLUMN(EtaV0NegDau, etaV0NegDau, float);
DECLARE_SOA_COLUMN(EtaBachFromCasc, etaBachFromCasc, float);
Expand Down
18 changes: 10 additions & 8 deletions PWGHF/TableProducer/candidateCreator2Prong.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -281,13 +281,14 @@ struct HfCandidateCreator2Prong {
auto errorDecayLengthXY = std::sqrt(getRotatedCovMatrixXX(covMatrixPV, phi, 0.) + getRotatedCovMatrixXX(covMatrixPCA, phi, 0.));

auto indexCollision = collision.globalIndex();
uint8_t nProngsContributorsPV = 0;
uint8_t bitmapProngsContributorsPV = 0;
if (indexCollision == track0.collisionId() && track0.isPVContributor()) {
nProngsContributorsPV += 1;
SETBIT(bitmapProngsContributorsPV, 0);
}
if (indexCollision == track1.collisionId() && track1.isPVContributor()) {
nProngsContributorsPV += 1;
SETBIT(bitmapProngsContributorsPV, 1);
}
uint8_t nProngsContributorsPV = hf_trkcandsel::countOnesInBinary(bitmapProngsContributorsPV);

// fill candidate table rows
rowCandidateBase(indexCollision,
Expand All @@ -301,7 +302,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(), nProngsContributorsPV, bitmapProngsContributorsPV,
rowTrackIndexProng2.hfflag());

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

auto indexCollision = collision.globalIndex();
uint8_t nProngsContributorsPV = 0;
uint8_t bitmapProngsContributorsPV = 0;
if (indexCollision == track0.collisionId() && track0.isPVContributor()) {
nProngsContributorsPV += 1;
SETBIT(bitmapProngsContributorsPV, 0);
}
if (indexCollision == track1.collisionId() && track1.isPVContributor()) {
nProngsContributorsPV += 1;
SETBIT(bitmapProngsContributorsPV, 1);
}
uint8_t nProngsContributorsPV = hf_trkcandsel::countOnesInBinary(bitmapProngsContributorsPV);

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

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

auto indexCollision = collision.globalIndex();
uint8_t nProngsContributorsPV = 0;
uint8_t bitmapProngsContributorsPV = 0;
if (indexCollision == track0.collisionId() && track0.isPVContributor()) {
nProngsContributorsPV += 1;
SETBIT(bitmapProngsContributorsPV, 0);
}
if (indexCollision == track1.collisionId() && track1.isPVContributor()) {
nProngsContributorsPV += 1;
SETBIT(bitmapProngsContributorsPV, 1);
}
if (indexCollision == track2.collisionId() && track2.isPVContributor()) {
nProngsContributorsPV += 1;
SETBIT(bitmapProngsContributorsPV, 2);
}
uint8_t nProngsContributorsPV = hf_trkcandsel::countOnesInBinary(bitmapProngsContributorsPV);

// fill candidate table rows
rowCandidateBase(indexCollision,
Expand All @@ -299,7 +300,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(), nProngsContributorsPV, bitmapProngsContributorsPV,
rowTrackIndexProng3.hfflag());

// fill histograms
Expand Down
6 changes: 6 additions & 0 deletions PWGHF/TableProducer/treeCreatorLcToPKPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ DECLARE_SOA_TABLE(HfCandLcLites, "AOD", "HFCANDLCLITE",
collision::PosY,
collision::PosZ,
hf_cand::NProngsContributorsPV,
hf_cand::BitmapProngsContributorsPV,
// hf_cand::ErrorDecayLength,
// hf_cand::ErrorDecayLengthXY,
hf_cand::Chi2PCA,
Expand Down Expand Up @@ -159,6 +160,7 @@ DECLARE_SOA_TABLE(HfCandLcFulls, "AOD", "HFCANDLCFULL",
collision::PosY,
collision::PosZ,
hf_cand::NProngsContributorsPV,
hf_cand::BitmapProngsContributorsPV,
hf_cand::XSecondaryVertex,
hf_cand::YSecondaryVertex,
hf_cand::ZSecondaryVertex,
Expand Down Expand Up @@ -357,6 +359,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.bitmapProngsContributorsPV(),
// candidate.errorDecayLength(),
// candidate.errorDecayLengthXY(),
candidate.chi2PCA(),
Expand Down Expand Up @@ -419,6 +422,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.bitmapProngsContributorsPV(),
candidate.xSecondaryVertex(),
candidate.ySecondaryVertex(),
candidate.zSecondaryVertex(),
Expand Down Expand Up @@ -614,6 +618,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.bitmapProngsContributorsPV(),
// candidate.errorDecayLength(),
// candidate.errorDecayLengthXY(),
candidate.chi2PCA(),
Expand Down Expand Up @@ -676,6 +681,7 @@ struct HfTreeCreatorLcToPKPi {
candidate.posY(),
candidate.posZ(),
candidate.nProngsContributorsPV(),
candidate.bitmapProngsContributorsPV(),
candidate.xSecondaryVertex(),
candidate.ySecondaryVertex(),
candidate.zSecondaryVertex(),
Expand Down
13 changes: 13 additions & 0 deletions PWGHF/Utils/utilsTrkCandHf.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@ void setLabelHistoCands(Histo& hCandidates)
hCandidates->GetXaxis()->SetBinLabel(SVFitting::Fail + 1, "Run-time error in secondary vertexing");
}

/// @brief Function to evaluate number of ones in a binary representation of the argument
/// \param num is the input argument
int countOnesInBinary(uint8_t num)
{
int count = 0;

for (int iBit = 0; iBit < 8; iBit++) {
count += TESTBIT(num, iBit);
}

return count;
}

} // namespace o2::hf_trkcandsel

#endif // PWGHF_UTILS_UTILSTRKCANDHF_H_
Loading