From 427d558a8a06320a8868310ffad938d3917322d6 Mon Sep 17 00:00:00 2001 From: jokonig Date: Fri, 25 Sep 2026 13:02:17 +0200 Subject: [PATCH] [PWGEM] Revert using ccdb column to get magnetic field - This makes it impossible to run everything in one train (with photon conversion builder) but requires that it has to be run over derived data - Now simply get magnetic field from ccdb directly in each task --- PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h | 15 +++++++++++---- PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h | 15 ++++++++++----- PWGEM/PhotonMeson/Tasks/pcmQC.cxx | 14 ++++++++++---- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h b/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h index 45e4f7c26d7..84609501500 100644 --- a/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h +++ b/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h @@ -471,10 +471,17 @@ struct Pi0EtaToGammaGamma { return; } - o2::base::Propagator::initFieldFromGRP(&collision.grpMagField()); + // o2::base::Propagator::initFieldFromGRP(&collision.grpMagField()); // Fetch magnetic field from ccdb for current collision - d_bz = collision.grpMagField().getNominalL3Field(); + // d_bz = collision.grpMagField().getNominalL3Field(); + + auto* grpmag = ccdb->getForRun("GLO/Config/GRPMagField", collision.runNumber()); + if (grpmag == nullptr) { + LOGF(fatal, "Could not retrieve GRPMagField for run %d", collision.runNumber()); + } + d_bz = grpmag->getNominalL3Field(); LOG(info) << "Retrieved GRP for timestamp " << collision.timestamp() << " with magnetic field of " << d_bz << " kZG"; + fV0PhotonCut.SetD_Bz(d_bz); } @@ -1139,7 +1146,7 @@ struct Pi0EtaToGammaGamma { o2::framework::expressions::Filter prefilter_primaryelectron = ifnode(dileptoncuts.cfg_apply_cuts_from_prefilter_derived.node(), o2::aod::emprimaryelectron::pfbderived == static_cast(0), true); int ndf = 0; - void processAnalysis(o2::soa::Filtered> const& collisions, Types const&... args) + void processAnalysis(o2::soa::Filtered> const& collisions, Types const&... args) { // LOGF(info, "ndf = %d", ndf); if constexpr (pairtype == o2::aod::pwgem::photonmeson::photonpair::PairType::kPCMPCM) { @@ -1176,7 +1183,7 @@ struct Pi0EtaToGammaGamma { PROCESS_SWITCH(Pi0EtaToGammaGamma, processAnalysis, "process pair analysis", true); // using FilteredMyCollisionsWithJJMC = o2::soa::Filtered, o2::aod::EMEventsWeight>>; - void processAnalysisJJMC(o2::soa::Filtered> const& collisions, Types const&... args) + void processAnalysisJJMC(o2::soa::Filtered> const& collisions, Types const&... args) { // LOGF(info, "ndf = %d", ndf); if constexpr (pairtype == o2::aod::pwgem::photonmeson::photonpair::PairType::kPCMPCM) { diff --git a/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h b/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h index 79c7b4308ae..dc20e1b3883 100644 --- a/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h +++ b/PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h @@ -326,9 +326,14 @@ struct Pi0EtaToGammaGammaMC { return; } - o2::base::Propagator::initFieldFromGRP(&collision.grpMagField()); - // Fetch magnetic field from ccdb for current collision - d_bz = collision.grpMagField().getNominalL3Field(); + // o2::base::Propagator::initFieldFromGRP(&collision.grpMagField()); + // // Fetch magnetic field from ccdb for current collision + // d_bz = collision.grpMagField().getNominalL3Field(); + auto* grpmag = ccdb->getForRun("GLO/Config/GRPMagField", collision.runNumber()); + if (grpmag == nullptr) { + LOGF(fatal, "Could not retrieve GRPMagField for run %d", collision.runNumber()); + } + d_bz = grpmag->getNominalL3Field(); LOG(info) << "Retrieved GRP for timestamp " << collision.timestamp() << " with magnetic field of " << d_bz << " kZG"; fV0PhotonCut.SetD_Bz(d_bz); } @@ -1005,7 +1010,7 @@ struct Pi0EtaToGammaGammaMC { o2::framework::expressions::Filter prefilter_pcm = ifnode(pcmcuts.cfg_apply_cuts_from_prefilter_derived.node(), o2::aod::v0photonkf::pfbderived == static_cast(0), true); o2::framework::expressions::Filter prefilter_primaryelectron = ifnode(dileptoncuts.cfg_apply_cuts_from_prefilter_derived.node(), o2::aod::emprimaryelectron::pfbderived == static_cast(0), true); - void processAnalysis(o2::soa::Filtered> const& collisions, o2::soa::Join const& mccollisions, o2::aod::EMMCParticles const& mcparticles, Types const&... args) + void processAnalysis(o2::soa::Filtered> const& collisions, o2::soa::Join const& mccollisions, o2::aod::EMMCParticles const& mcparticles, Types const&... args) { if constexpr (pairtype == o2::aod::pwgem::photonmeson::photonpair::PairType::kPCMPCM) { auto&& [v0photons, v0legs] = std::forward_as_tuple(args...); @@ -1041,7 +1046,7 @@ struct Pi0EtaToGammaGammaMC { PROCESS_SWITCH(Pi0EtaToGammaGammaMC, processAnalysis, "process pair analysis", true); // using FilteredMyCollisionsWithJJMC = o2::soa::Filtered, o2::aod::EMEventsWeight>>; - void processAnalysisJJMC(o2::soa::Filtered> const& collisions, o2::soa::Join const& mccollisions, o2::aod::EMMCParticles const& mcparticles, Types const&... args) + void processAnalysisJJMC(o2::soa::Filtered> const& collisions, o2::soa::Join const& mccollisions, o2::aod::EMMCParticles const& mcparticles, Types const&... args) { if constexpr (pairtype == o2::aod::pwgem::photonmeson::photonpair::PairType::kPCMPCM) { auto&& [v0photons, v0legs] = std::forward_as_tuple(args...); diff --git a/PWGEM/PhotonMeson/Tasks/pcmQC.cxx b/PWGEM/PhotonMeson/Tasks/pcmQC.cxx index 496cf7a8067..79626362428 100644 --- a/PWGEM/PhotonMeson/Tasks/pcmQC.cxx +++ b/PWGEM/PhotonMeson/Tasks/pcmQC.cxx @@ -85,7 +85,7 @@ using namespace o2::aod::pwgem::photon; using namespace o2::aod::pwgem::photonmeson::utils::mcutil; using namespace o2::aod::pwgem::dilepton::utils::mcutil; -using MyCollisions = soa::Join; +using MyCollisions = soa::Join; using MyCollision = MyCollisions::iterator; using MyV0Photons = soa::Join; @@ -95,7 +95,7 @@ using MyV0PhotonsML = soa::Join; using MyV0PhotonML = MyV0PhotonsML::iterator; // MC Joins -using MyCollisionsMC = soa::Join; +using MyCollisionsMC = soa::Join; using MyCollisionMC = MyCollisionsMC::iterator; using MyMCCollisions = soa::Join; @@ -276,8 +276,14 @@ struct PCMQC { } // Fetch magnetic field from ccdb for current collision - d_bz = collision.grpMagField().getNominalL3Field(); - LOG(info) << "Retrieved GRP for timestamp " << collision.timestamp() << " with magnetic field of " << d_bz << " kZG"; + // d_bz = collision.grpMagField().getNominalL3Field(); + // LOG(info) << "Retrieved GRP for timestamp " << collision.timestamp() << " with magnetic field of " << d_bz << " kZG"; + auto* grpmag = ccdb->getForRun("GLO/Config/GRPMagField", collision.runNumber()); + if (grpmag == nullptr) { + LOGF(fatal, "Could not retrieve GRPMagField for run %d", collision.runNumber()); + } + d_bz = grpmag->getNominalL3Field(); + LOG(info) << "Retrieved GRP for run " << collision.runNumber() << " with magnetic field of " << d_bz << " kZG"; fV0PhotonCut.SetD_Bz(d_bz); }