Skip to content

Commit

Permalink
[PWGJE] Fixing MCD dependency in MCP only process functions for HF su…
Browse files Browse the repository at this point in the history
…bstructure (AliceO2Group#10352)
  • Loading branch information
nzardosh authored Mar 6, 2025
1 parent 4928c17 commit 3cd7dc0
Show file tree
Hide file tree
Showing 13 changed files with 98 additions and 127 deletions.
18 changes: 0 additions & 18 deletions PWGJE/Core/JetCandidateUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -237,24 +237,6 @@ auto slicedPerCandidate(T const& table, U const& candidate, V const& perD0Candid
}
}

/**
* returns a slice of the table depending on the type of the candidate and index of the collision
*
* @param candidate candidate that is being checked
* @param table the table to be sliced
*/
template <typename T, typename U, typename V, typename M, typename N, typename O, typename P, typename Q>
auto slicedPerCandidateCollision(T const& table, U const& candidates, V const& collision, M const& D0CollisionPerCollision, N const& DplusCollisionPerCollision, O const& LcCollisionPerCollision, P const& BplusCollisionPerCollision, Q const& DielectronCollisionPerCollision)
{
if constexpr (jethfutilities::isHFTable<U>() || jethfutilities::isHFMcTable<U>()) {
return jethfutilities::slicedPerHFCollision(table, candidates, collision, D0CollisionPerCollision, DplusCollisionPerCollision, LcCollisionPerCollision, BplusCollisionPerCollision);
} else if constexpr (jetdqutilities::isDielectronTable<U>() || jetdqutilities::isDielectronMcTable<U>()) {
return jetdqutilities::slicedPerDielectronCollision(table, candidates, collision, DielectronCollisionPerCollision);
} else {
return table;
}
}

/**
* returns a slice of the table depending on the index of the candidate
* @param CandidateTable candidtae table type
Expand Down
16 changes: 0 additions & 16 deletions PWGJE/Core/JetDQUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -164,22 +164,6 @@ auto slicedPerDielectronCandidate(T const& table, U const& candidate, V const& p
}
}

/**
* returns a slice of the table depending on the type of the Dielectron candidate and index of the collision
*
* @param candidate dielectron candidate that is being checked
* @param table the table to be sliced
*/
template <typename T, typename U, typename V, typename M>
auto slicedPerDielectronCollision(T const& table, U const& /*candidates*/, V const& collision, M const& DielectronCollisionPerCollision)
{
if constexpr (isDielectronTable<U>() || isDielectronMcTable<U>()) {
return table.sliceBy(DielectronCollisionPerCollision, collision.globalIndex());
} else {
return table;
}
}

/**
* returns a slice of the table depending on the index of the Dielectron jet
* @param DielectronTable dielectron table type
Expand Down
22 changes: 0 additions & 22 deletions PWGJE/Core/JetHFUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -418,28 +418,6 @@ auto slicedPerHFCandidate(T const& table, U const& candidate, V const& perD0Cand
}
}

/**
* returns a slice of the table depending on the type of the HF candidate and index of the collision
*
* @param candidate HF candidate that is being checked
* @param table the table to be sliced
*/
template <typename T, typename U, typename V, typename M, typename N, typename O, typename P>
auto slicedPerHFCollision(T const& table, U const& /*candidates*/, V const& collision, M const& D0CollisionPerCollision, N const& DplusCollisionPerCollision, O const& LcCollisionPerCollision, P const& BplusCollisionPerCollision)
{
if constexpr (isD0Table<U>() || isD0McTable<U>()) {
return table.sliceBy(D0CollisionPerCollision, collision.globalIndex());
} else if constexpr (isDplusTable<U>() || isDplusMcTable<U>()) {
return table.sliceBy(DplusCollisionPerCollision, collision.globalIndex());
} else if constexpr (isLcTable<U>() || isLcMcTable<U>()) {
return table.sliceBy(LcCollisionPerCollision, collision.globalIndex());
} else if constexpr (isBplusTable<U>() || isBplusMcTable<U>()) {
return table.sliceBy(BplusCollisionPerCollision, collision.globalIndex());
} else {
return table;
}
}

/**
* returns a slice of the table depending on the index of the HF candidate
*
Expand Down
26 changes: 17 additions & 9 deletions PWGJE/DataModel/JetReducedDataDQ.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,36 +22,44 @@
#include "Framework/AnalysisDataModel.h"
#include "PWGDQ/DataModel/ReducedInfoTables.h"
#include "PWGJE/DataModel/JetReducedData.h"
#include "PWGJE/DataModel/JetReducedDataHF.h"

namespace o2::aod
{
namespace jdielectronmccollision
{
DECLARE_SOA_COLUMN(DummyDQ, dummyDQ, bool);
} // namespace jdielectronmccollision

DECLARE_SOA_TABLE_STAGED(JDielectronMcCollisions, "JDIELMCCOLL",
o2::soa::Index<>,
jmccollision::PosX,
jmccollision::PosY,
jmccollision::PosZ);

DECLARE_SOA_TABLE_STAGED(JDielectronMcRCollDummys, "JDIELMCRCOLLDUM",
jdielectronmccollision::DummyDQ);

namespace jdielectronindices
{
DECLARE_SOA_INDEX_COLUMN(JCollision, collision);
DECLARE_SOA_INDEX_COLUMN_CUSTOM(JDielectronMcCollision, dielectronmccollision, "JDIELMCCOLLS");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong0, prong0, int, JTracks, "_0");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong1, prong1, int, JTracks, "_1");
DECLARE_SOA_INDEX_COLUMN(JMcCollision, mcCollision);
DECLARE_SOA_INDEX_COLUMN(JMcParticle, mcParticle);
} // namespace jdielectronindices

DECLARE_SOA_TABLE_STAGED(JDielectronCollisionIds, "JDIELCOLLID",
jdielectronindices::JCollisionId);
jcandidateindices::JCollisionId,
o2::soa::Marker<JMarkerDielectron>);

DECLARE_SOA_TABLE_STAGED(JDielectronMcCollisionIds, "JDIELMCCOLLID",
jdielectronindices::JMcCollisionId);
jcandidateindices::JMcCollisionId,
o2::soa::Marker<JMarkerDielectron>);

DECLARE_SOA_TABLE_STAGED(JDielectronIds, "JDIELID",
jdielectronindices::JCollisionId,
jcandidateindices::JCollisionId,
jdielectronindices::Prong0Id,
jdielectronindices::Prong1Id);
jdielectronindices::Prong1Id,
o2::soa::Marker<JMarkerDielectron>);

namespace jdielectronmc
{
Expand Down Expand Up @@ -103,8 +111,8 @@ using JDielectronMc = JDielectronMcs::iterator;
using StoredJDielectronMc = StoredJDielectronMcs::iterator;

DECLARE_SOA_TABLE_STAGED(JDielectronMcIds, "JDIELMCID",
jdielectronindices::JMcCollisionId,
jdielectronindices::JMcParticleId,
jcandidateindices::JMcCollisionId,
jcandidateindices::JMcParticleId,
jdielectronmc::MothersIds,
jdielectronmc::DaughtersIdSlice);

Expand Down
77 changes: 45 additions & 32 deletions PWGJE/DataModel/JetReducedDataHF.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,29 +26,42 @@
namespace o2::aod
{

namespace jd0indices
constexpr uint JMarkerD0 = 1;
constexpr uint JMarkerDplus = 2;
constexpr uint JMarkerLc = 3;
constexpr uint JMarkerBplus = 4;
constexpr uint JMarkerDielectron = 5;

namespace jcandidateindices
{
DECLARE_SOA_INDEX_COLUMN(JCollision, collision);
DECLARE_SOA_INDEX_COLUMN_FULL(Prong0, prong0, int, JTracks, "_0");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong1, prong1, int, JTracks, "_1");
DECLARE_SOA_INDEX_COLUMN(JMcCollision, mcCollision);
DECLARE_SOA_INDEX_COLUMN(JMcParticle, mcParticle);
} // namespace jcandidateindices

namespace jd0indices
{
DECLARE_SOA_INDEX_COLUMN_FULL(Prong0, prong0, int, JTracks, "_0");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong1, prong1, int, JTracks, "_1");
} // namespace jd0indices

DECLARE_SOA_TABLE_STAGED(JD0CollisionIds, "JD0COLLID",
jd0indices::JCollisionId);
jcandidateindices::JCollisionId,
o2::soa::Marker<JMarkerD0>);

DECLARE_SOA_TABLE_STAGED(JD0McCollisionIds, "JD0MCCOLLID",
jd0indices::JMcCollisionId);
jcandidateindices::JMcCollisionId,
o2::soa::Marker<JMarkerD0>);

DECLARE_SOA_TABLE_STAGED(JD0Ids, "JD0ID",
jd0indices::JCollisionId,
jcandidateindices::JCollisionId,
jd0indices::Prong0Id,
jd0indices::Prong1Id);

DECLARE_SOA_TABLE_STAGED(JD0PIds, "JD0PID",
jd0indices::JMcCollisionId,
jd0indices::JMcParticleId);
jcandidateindices::JMcCollisionId,
jcandidateindices::JMcParticleId,
o2::soa::Marker<JMarkerD0>);

namespace jdummyd0
{
Expand All @@ -65,29 +78,29 @@ DECLARE_SOA_TABLE(JDumD0MlDaus, "AOD", "JDumD0MLDAU",

namespace jdplusindices
{
DECLARE_SOA_INDEX_COLUMN(JCollision, collision);
DECLARE_SOA_INDEX_COLUMN_FULL(Prong0, prong0, int, JTracks, "_0");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong1, prong1, int, JTracks, "_1");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong2, prong2, int, JTracks, "_2");
DECLARE_SOA_INDEX_COLUMN(JMcCollision, mcCollision);
DECLARE_SOA_INDEX_COLUMN(JMcParticle, mcParticle);
} // namespace jdplusindices

DECLARE_SOA_TABLE_STAGED(JDplusCollisionIds, "JDPCOLLID",
jdplusindices::JCollisionId);
jcandidateindices::JCollisionId,
o2::soa::Marker<JMarkerDplus>);

DECLARE_SOA_TABLE_STAGED(JDplusMcCollisionIds, "JDPMCCOLLID",
jdplusindices::JMcCollisionId);
jcandidateindices::JMcCollisionId,
o2::soa::Marker<JMarkerDplus>);

DECLARE_SOA_TABLE_STAGED(JDplusIds, "JDPID",
jdplusindices::JCollisionId,
jcandidateindices::JCollisionId,
jdplusindices::Prong0Id,
jdplusindices::Prong1Id,
jdplusindices::Prong2Id);

DECLARE_SOA_TABLE_STAGED(JDplusPIds, "JDPPID",
jdplusindices::JMcCollisionId,
jdplusindices::JMcParticleId);
jcandidateindices::JMcCollisionId,
jcandidateindices::JMcParticleId,
o2::soa::Marker<JMarkerDplus>);

namespace jdummydplus
{
Expand All @@ -105,29 +118,29 @@ DECLARE_SOA_TABLE(JDumDplusMlDaus, "AOD", "JDUMDPMLDAU",

namespace jlcindices
{
DECLARE_SOA_INDEX_COLUMN(JCollision, collision);
DECLARE_SOA_INDEX_COLUMN_FULL(Prong0, prong0, int, JTracks, "_0");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong1, prong1, int, JTracks, "_1");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong2, prong2, int, JTracks, "_2");
DECLARE_SOA_INDEX_COLUMN(JMcCollision, mcCollision);
DECLARE_SOA_INDEX_COLUMN(JMcParticle, mcParticle);
} // namespace jlcindices

DECLARE_SOA_TABLE_STAGED(JLcCollisionIds, "JLCCOLLID",
jlcindices::JCollisionId);
jcandidateindices::JCollisionId,
o2::soa::Marker<JMarkerLc>);

DECLARE_SOA_TABLE_STAGED(JLcMcCollisionIds, "JLCMCCOLLID",
jlcindices::JMcCollisionId);
jcandidateindices::JMcCollisionId,
o2::soa::Marker<JMarkerLc>);

DECLARE_SOA_TABLE_STAGED(JLcIds, "JLCID",
jlcindices::JCollisionId,
jcandidateindices::JCollisionId,
jlcindices::Prong0Id,
jlcindices::Prong1Id,
jlcindices::Prong2Id);

DECLARE_SOA_TABLE_STAGED(JLcPIds, "JLCPID",
jlcindices::JMcCollisionId,
jlcindices::JMcParticleId);
jcandidateindices::JMcCollisionId,
jcandidateindices::JMcParticleId,
o2::soa::Marker<JMarkerLc>);

namespace jdummylc
{
Expand All @@ -145,29 +158,29 @@ DECLARE_SOA_TABLE(JDumLcMlDaus, "AOD", "JDUMLCMLDAU",

namespace jbplusindices
{
DECLARE_SOA_INDEX_COLUMN(JCollision, collision);
DECLARE_SOA_INDEX_COLUMN_FULL(Prong0, prong0, int, JTracks, "_0");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong1, prong1, int, JTracks, "_1");
DECLARE_SOA_INDEX_COLUMN_FULL(Prong2, prong2, int, JTracks, "_2");
DECLARE_SOA_INDEX_COLUMN(JMcCollision, mcCollision);
DECLARE_SOA_INDEX_COLUMN(JMcParticle, mcParticle);
} // namespace jbplusindices

DECLARE_SOA_TABLE_STAGED(JBplusCollisionIds, "JBPCOLLID",
jbplusindices::JCollisionId);
jcandidateindices::JCollisionId,
o2::soa::Marker<JMarkerBplus>);

DECLARE_SOA_TABLE_STAGED(JBplusMcCollisionIds, "JBPMCCOLLID",
jbplusindices::JMcCollisionId);
jcandidateindices::JMcCollisionId,
o2::soa::Marker<JMarkerBplus>);

DECLARE_SOA_TABLE_STAGED(JBplusIds, "JBPID",
jbplusindices::JCollisionId,
jcandidateindices::JCollisionId,
jbplusindices::Prong0Id,
jbplusindices::Prong1Id,
jbplusindices::Prong2Id);

DECLARE_SOA_TABLE_STAGED(JBplusPIds, "JBPPID",
jbplusindices::JMcCollisionId,
jbplusindices::JMcParticleId);
jcandidateindices::JMcCollisionId,
jcandidateindices::JMcParticleId,
o2::soa::Marker<JMarkerBplus>);

} // namespace o2::aod

Expand Down
2 changes: 2 additions & 0 deletions PWGJE/TableProducer/derivedDataProducer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ struct JetDerivedDataProducerTask {
Produces<aod::JDielectronIds> jDielectronIdsTable;
Produces<aod::JDielectronMcCollisions> jDielectronMcCollisionsTable;
Produces<aod::JDielectronMcCollisionIds> jDielectronMcCollisionIdsTable;
Produces<aod::JDielectronMcRCollDummys> JDielectronMcRCollDummysTable;
Produces<aod::JDielectronMcs> jDielectronMcsTable;
Produces<aod::JDielectronMcIds> jDielectronMcIdsTable;
} products;
Expand Down Expand Up @@ -646,6 +647,7 @@ struct JetDerivedDataProducerTask {
auto pdgParticle = pdgDatabase->GetParticle(particle.pdgCode());
products.jDielectronMcsTable(products.jDielectronMcCollisionsTable.lastIndex(), particle.pt(), particle.eta(), particle.phi(), particle.y(), particle.e(), pdgParticle->Mass(), particle.pdgCode(), particle.getGenStatusCode(), particle.getHepMCStatusCode(), particle.isPhysicalPrimary(), jetdqutilities::setDielectronParticleDecayBit(particles, particle), RecoDecay::getCharmHadronOrigin(particles, particle, false)); // Todo: should the last thing be false?
products.jDielectronMcIdsTable(mcCollision.globalIndex(), particle.globalIndex(), mothersId, daughtersId);
products.JDielectronMcRCollDummysTable(false);
}
}
}
Expand Down
23 changes: 12 additions & 11 deletions PWGJE/TableProducer/derivedDataWriter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ struct JetDerivedDataWriter {
Produces<aod::StoredJDielectronIds> storedDielectronIdsTable;
Produces<aod::StoredJDielectronMcCollisions> storedDielectronMcCollisionsTable;
Produces<aod::StoredJDielectronMcCollisionIds> storedDielectronMcCollisionIdsTable;
// Produces<aod::StoredHfD0McRCollIds> storedD0McCollisionsMatchingTable; //this doesnt exist for Dileptons yet
Produces<aod::StoredJDielectronMcRCollDummys> storedDielectronMcRCollDummysTable;
Produces<aod::StoredJDielectronMcs> storedDielectronParticlesTable;
Produces<aod::StoredJDielectronMcIds> storedDielectronParticleIdsTable;
} products;
Expand All @@ -154,15 +154,15 @@ struct JetDerivedDataWriter {

Preslice<soa::Join<aod::JMcParticles, aod::JMcParticlePIs>> ParticlesPerMcCollision = aod::jmcparticle::mcCollisionId;
Preslice<soa::Join<aod::JTracks, aod::JTrackExtras, aod::JTrackPIs, aod::JMcTrackLbs>> TracksPerCollision = aod::jtrack::collisionId;
Preslice<aod::McCollisionsD0> D0McCollisionsPerMcCollision = aod::jd0indices::mcCollisionId;
Preslice<aod::McCollisionsDplus> DplusMcCollisionsPerMcCollision = aod::jdplusindices::mcCollisionId;
Preslice<aod::McCollisionsLc> LcMcCollisionsPerMcCollision = aod::jlcindices::mcCollisionId;
Preslice<aod::McCollisionsBplus> BplusMcCollisionsPerMcCollision = aod::jbplusindices::mcCollisionId;
Preslice<aod::McCollisionsDielectron> DielectronMcCollisionsPerMcCollision = aod::jdielectronindices::mcCollisionId;
Preslice<aod::CandidatesD0MCP> D0ParticlesPerMcCollision = aod::jd0indices::mcCollisionId;
Preslice<aod::CandidatesDplusMCP> DplusParticlesPerMcCollision = aod::jdplusindices::mcCollisionId;
Preslice<aod::CandidatesLcMCP> LcParticlesPerMcCollision = aod::jlcindices::mcCollisionId;
Preslice<aod::CandidatesBplusMCP> BplusParticlesPerMcCollision = aod::jbplusindices::mcCollisionId;
Preslice<aod::McCollisionsD0> D0McCollisionsPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::McCollisionsDplus> DplusMcCollisionsPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::McCollisionsLc> LcMcCollisionsPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::McCollisionsBplus> BplusMcCollisionsPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::McCollisionsDielectron> DielectronMcCollisionsPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::CandidatesD0MCP> D0ParticlesPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::CandidatesDplusMCP> DplusParticlesPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::CandidatesLcMCP> LcParticlesPerMcCollision = aod::jcandidateindices::mcCollisionId;
Preslice<aod::CandidatesBplusMCP> BplusParticlesPerMcCollision = aod::jcandidateindices::mcCollisionId;
PresliceUnsorted<aod::JEMCTracks> EMCTrackPerTrack = aod::jemctrack::trackId;

uint32_t precisionPositionMask;
Expand Down Expand Up @@ -561,14 +561,15 @@ struct JetDerivedDataWriter {
}
PROCESS_SWITCH(JetDerivedDataWriter, processBplusMCP, "write out Bplus mcp output tables", false);

void processDielectronMCP(soa::Join<aod::JMcCollisions, aod::JMcCollisionSelections>::iterator const& mcCollision, aod::JMcParticles const&, aod::McCollisionsDielectron const& DielectronMcCollisions, aod::CandidatesDielectronMCP const& DielectronParticles)
void processDielectronMCP(soa::Join<aod::JMcCollisions, aod::JMcCollisionSelections>::iterator const& mcCollision, aod::JMcParticles const&, soa::Join<aod::McCollisionsDielectron, aod::JDielectronMcRCollDummys> const& DielectronMcCollisions, aod::CandidatesDielectronMCP const& DielectronParticles)
{
if (mcCollision.isMcCollisionSelected()) {

const auto dielectronMcCollisionsPerMcCollision = DielectronMcCollisions.sliceBy(DielectronMcCollisionsPerMcCollision, mcCollision.globalIndex());
for (const auto& dielectronMcCollisionPerMcCollision : dielectronMcCollisionsPerMcCollision) { // should only ever be one
jetdqutilities::fillDielectronMcCollisionTable(dielectronMcCollisionPerMcCollision, products.storedDielectronMcCollisionsTable);
products.storedDielectronMcCollisionIdsTable(mcCollisionMapping[mcCollision.globalIndex()]);
products.storedDielectronMcRCollDummysTable(dielectronMcCollisionPerMcCollision.dummyDQ());
}
for (const auto& DielectronParticle : DielectronParticles) {
jetdqutilities::fillDielectronCandidateMcTable(DielectronParticle, products.storedDielectronMcCollisionsTable.lastIndex(), products.storedDielectronParticlesTable);
Expand Down
Loading

0 comments on commit 3cd7dc0

Please sign in to comment.