Skip to content
Merged
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
39 changes: 21 additions & 18 deletions PWGHF/TableProducer/derivedDataCreatorB0ToDPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ struct HfDerivedDataCreatorB0ToDPi {

SliceCache cache;
static constexpr double Mass{o2::constants::physics::MassB0};
static constexpr int NHypothesesCand{1}; // Number of possible selection hypotheses per candidate.

using CollisionsWCentMult = soa::Join<aod::Collisions, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
using CollisionsWMcCentMult = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
Expand Down Expand Up @@ -139,6 +140,7 @@ struct HfDerivedDataCreatorB0ToDPi {
void fillTablesCandidate(const T& candidate, const U& prongCharm, const V& prongBachelor, int candFlag, double invMass,
double ct, double y, int8_t flagMc, int8_t origin, float mlScore, const std::vector<float>& mlScoresCharm)
{
LOGF(debug, "Filling candidate at derived index %d", rowsCommon.rowCandidateBase.lastIndex() + 1);
rowsCommon.fillTablesCandidate(candidate, invMass, y);
if (fillCandidatePar) {
rowCandidatePar(
Expand Down Expand Up @@ -249,38 +251,39 @@ struct HfDerivedDataCreatorB0ToDPi {
rowsCommon.matchedCollisions.clear();
}
}
auto sizeTableColl = collisions.size();
rowsCommon.reserveTablesColl(sizeTableColl);
// const auto sizeTableColl = collisions.size();
// rowsCommon.reserveTablesColl(sizeTableColl);
const auto sizeTableCand = candidates.size() * NHypothesesCand;
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParDplus, fillCandidateParDplus, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateMlDplus, fillCandidateMlDplus, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
for (const auto& collision : collisions) {
auto thisCollId = collision.globalIndex();
auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
auto sizeTableCand = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCand);
const auto thisCollId = collision.globalIndex();
const auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
const auto sizeTableCandThisColl = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCandThisColl);
// Skip collisions without HF candidates (and without HF particles in matched MC collisions if saving indices of reconstructed collisions matched to MC collisions)
bool mcCollisionHasMcParticles{false};
if constexpr (IsMc) {
mcCollisionHasMcParticles = confDerData.fillMcRCollId && collision.has_mcCollision() && rowsCommon.hasMcParticles[collision.mcCollisionId()];
LOGF(debug, "Rec. collision %d has MC collision %d with MC particles? %s", thisCollId, collision.mcCollisionId(), mcCollisionHasMcParticles ? "yes" : "no");
}
if (sizeTableCand == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
if (sizeTableCandThisColl == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
LOGF(debug, "Skipping rec. collision %d", thisCollId);
continue;
}
LOGF(debug, "Filling rec. collision %d at derived index %d", thisCollId, rowsCommon.rowCollBase.lastIndex() + 1);
rowsCommon.fillTablesCollision<IsMc>(collision);

// Fill candidate properties
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParDplus, fillCandidateParDplus, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateMlDplus, fillCandidateMlDplus, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
int8_t flagMcRec = 0, origin = 0;
for (const auto& candidate : candidatesThisColl) {
if constexpr (IsMl) {
Expand Down
41 changes: 22 additions & 19 deletions PWGHF/TableProducer/derivedDataCreatorBplusToD0Pi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ struct HfDerivedDataCreatorBplusToD0Pi {

SliceCache cache;
static constexpr double Mass{o2::constants::physics::MassBPlus};
static constexpr int NHypothesesCand{1}; // Number of possible selection hypotheses per candidate.

using CollisionsWCentMult = soa::Join<aod::Collisions, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
using CollisionsWMcCentMult = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
Expand Down Expand Up @@ -142,6 +143,7 @@ struct HfDerivedDataCreatorBplusToD0Pi {
void fillTablesCandidate(const T& candidate, const U& prongCharm, const V& prongBachelor, int candFlag, double invMass,
double ct, double y, int8_t flagMc, int8_t origin, float mlScore, const std::vector<float>& mlScoresCharm)
{
LOGF(debug, "Filling candidate at derived index %d", rowsCommon.rowCandidateBase.lastIndex() + 1);
rowsCommon.fillTablesCandidate(candidate, invMass, y);
if (fillCandidatePar) {
rowCandidatePar(
Expand Down Expand Up @@ -284,39 +286,40 @@ struct HfDerivedDataCreatorBplusToD0Pi {
rowsCommon.matchedCollisions.clear();
}
}
auto sizeTableColl = collisions.size();
rowsCommon.reserveTablesColl(sizeTableColl);
// const auto sizeTableColl = collisions.size();
// rowsCommon.reserveTablesColl(sizeTableColl);
const auto sizeTableCand = candidates.size() * NHypothesesCand;
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParD0, fillCandidateParD0, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateParD0E, fillCandidateParD0E, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateMlD0, fillCandidateMlD0, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
for (const auto& collision : collisions) {
auto thisCollId = collision.globalIndex();
auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
auto sizeTableCand = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCand);
const auto thisCollId = collision.globalIndex();
const auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
const auto sizeTableCandThisColl = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCandThisColl);
// Skip collisions without HF candidates (and without HF particles in matched MC collisions if saving indices of reconstructed collisions matched to MC collisions)
bool mcCollisionHasMcParticles{false};
if constexpr (IsMc) {
mcCollisionHasMcParticles = confDerData.fillMcRCollId && collision.has_mcCollision() && rowsCommon.hasMcParticles[collision.mcCollisionId()];
LOGF(debug, "Rec. collision %d has MC collision %d with MC particles? %s", thisCollId, collision.mcCollisionId(), mcCollisionHasMcParticles ? "yes" : "no");
}
if (sizeTableCand == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
if (sizeTableCandThisColl == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
LOGF(debug, "Skipping rec. collision %d", thisCollId);
continue;
}
LOGF(debug, "Filling rec. collision %d at derived index %d", thisCollId, rowsCommon.rowCollBase.lastIndex() + 1);
rowsCommon.fillTablesCollision<IsMc>(collision);

// Fill candidate properties
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParD0, fillCandidateParD0, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateParD0E, fillCandidateParD0E, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateMlD0, fillCandidateMlD0, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
int8_t flagMcRec = 0, origin = 0;
for (const auto& candidate : candidatesThisColl) {
if constexpr (IsMl) {
Expand Down
35 changes: 19 additions & 16 deletions PWGHF/TableProducer/derivedDataCreatorD0ToKPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ struct HfDerivedDataCreatorD0ToKPi {

SliceCache cache;
static constexpr double Mass{o2::constants::physics::MassD0};
static constexpr int NHypothesesCand{2}; // Number of possible selection hypotheses per candidate.

using CollisionsWCentMult = soa::Join<aod::Collisions, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
using CollisionsWMcCentMult = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
Expand Down Expand Up @@ -150,6 +151,7 @@ struct HfDerivedDataCreatorD0ToKPi {
void fillTablesCandidate(const T& candidate, int candFlag, double invMass, double cosThetaStar, double topoChi2,
double ct, double y, int8_t flagMc, int8_t origin, const std::vector<float>& mlScores)
{
LOGF(debug, "Filling candidate at derived index %d", rowsCommon.rowCandidateBase.lastIndex() + 1);
rowsCommon.fillTablesCandidate(candidate, invMass, y);
if (fillCandidatePar) {
std::array<std::array<std::array<float, 3>, 2>, 2> sigmas{}; // PID nSigma [Expected][Hypothesis][TPC/TOF/TPC+TOF]
Expand Down Expand Up @@ -248,36 +250,37 @@ struct HfDerivedDataCreatorD0ToKPi {
rowsCommon.matchedCollisions.clear();
}
}
auto sizeTableColl = collisions.size();
rowsCommon.reserveTablesColl(sizeTableColl);
// const auto sizeTableColl = collisions.size();
// rowsCommon.reserveTablesColl(sizeTableColl);
const auto sizeTableCand = candidates.size() * NHypothesesCand;
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
for (const auto& collision : collisions) {
auto thisCollId = collision.globalIndex();
auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
auto sizeTableCand = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCand);
const auto thisCollId = collision.globalIndex();
const auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
const auto sizeTableCandThisColl = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCandThisColl);
// Skip collisions without HF candidates (and without HF particles in matched MC collisions if saving indices of reconstructed collisions matched to MC collisions)
bool mcCollisionHasMcParticles{false};
if constexpr (IsMc) {
mcCollisionHasMcParticles = confDerData.fillMcRCollId && collision.has_mcCollision() && rowsCommon.hasMcParticles[collision.mcCollisionId()];
LOGF(debug, "Rec. collision %d has MC collision %d with MC particles? %s", thisCollId, collision.mcCollisionId(), mcCollisionHasMcParticles ? "yes" : "no");
}
if (sizeTableCand == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
if (sizeTableCandThisColl == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
LOGF(debug, "Skipping rec. collision %d", thisCollId);
continue;
}
LOGF(debug, "Filling rec. collision %d at derived index %d", thisCollId, rowsCommon.rowCollBase.lastIndex() + 1);
rowsCommon.fillTablesCollision<IsMc>(collision);

// Fill candidate properties
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
int8_t flagMcRec = 0, origin = 0;
for (const auto& candidate : candidatesThisColl) {
if constexpr (IsMc) {
Expand Down
35 changes: 19 additions & 16 deletions PWGHF/TableProducer/derivedDataCreatorDplusToPiKPi.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ struct HfDerivedDataCreatorDplusToPiKPi {

SliceCache cache;
static constexpr double Mass{o2::constants::physics::MassDPlus};
static constexpr int NHypothesesCand{1}; // Number of possible selection hypotheses per candidate.

using CollisionsWCentMult = soa::Join<aod::Collisions, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
using CollisionsWMcCentMult = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::PVMultZeqs>;
Expand Down Expand Up @@ -134,6 +135,7 @@ struct HfDerivedDataCreatorDplusToPiKPi {
void fillTablesCandidate(const T& candidate, int candFlag, double invMass,
double ct, double y, int8_t flagMc, int8_t origin, int8_t swapping, int8_t flagDecayChan, const std::vector<float>& mlScores)
{
LOGF(debug, "Filling candidate at derived index %d", rowsCommon.rowCandidateBase.lastIndex() + 1);
rowsCommon.fillTablesCandidate(candidate, invMass, y);
if (fillCandidatePar) {
rowCandidatePar(
Expand Down Expand Up @@ -246,36 +248,37 @@ struct HfDerivedDataCreatorDplusToPiKPi {
rowsCommon.matchedCollisions.clear();
}
}
auto sizeTableColl = collisions.size();
rowsCommon.reserveTablesColl(sizeTableColl);
// const auto sizeTableColl = collisions.size();
// rowsCommon.reserveTablesColl(sizeTableColl);
const auto sizeTableCand = candidates.size() * NHypothesesCand;
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
for (const auto& collision : collisions) {
auto thisCollId = collision.globalIndex();
auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
auto sizeTableCand = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCand);
const auto thisCollId = collision.globalIndex();
const auto candidatesThisColl = candidates->sliceByCached(aod::hf_cand::collisionId, thisCollId, cache); // FIXME
const auto sizeTableCandThisColl = candidatesThisColl.size();
LOGF(debug, "Rec. collision %d has %d candidates", thisCollId, sizeTableCandThisColl);
// Skip collisions without HF candidates (and without HF particles in matched MC collisions if saving indices of reconstructed collisions matched to MC collisions)
bool mcCollisionHasMcParticles{false};
if constexpr (IsMc) {
mcCollisionHasMcParticles = confDerData.fillMcRCollId && collision.has_mcCollision() && rowsCommon.hasMcParticles[collision.mcCollisionId()];
LOGF(debug, "Rec. collision %d has MC collision %d with MC particles? %s", thisCollId, collision.mcCollisionId(), mcCollisionHasMcParticles ? "yes" : "no");
}
if (sizeTableCand == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
if (sizeTableCandThisColl == 0 && (!confDerData.fillMcRCollId || !mcCollisionHasMcParticles)) {
LOGF(debug, "Skipping rec. collision %d", thisCollId);
continue;
}
LOGF(debug, "Filling rec. collision %d at derived index %d", thisCollId, rowsCommon.rowCollBase.lastIndex() + 1);
rowsCommon.fillTablesCollision<IsMc>(collision);

// Fill candidate properties
rowsCommon.reserveTablesCandidates(sizeTableCand);
reserveTable(rowCandidatePar, fillCandidatePar, sizeTableCand);
reserveTable(rowCandidateParE, fillCandidateParE, sizeTableCand);
reserveTable(rowCandidateSel, fillCandidateSel, sizeTableCand);
reserveTable(rowCandidateMl, fillCandidateMl, sizeTableCand);
reserveTable(rowCandidateId, fillCandidateId, sizeTableCand);
if constexpr (IsMc) {
reserveTable(rowCandidateMc, fillCandidateMc, sizeTableCand);
}
int8_t flagMcRec = 0, origin = 0, swapping = 0, flagDecayChanRec = 0;
for (const auto& candidate : candidatesThisColl) {
if constexpr (IsMl) {
Expand Down
Loading
Loading