diff --git a/PWGJE/TableProducer/secondaryVertexReconstruction.cxx b/PWGJE/TableProducer/secondaryVertexReconstruction.cxx index f3e66c537c9..dc13c327a77 100644 --- a/PWGJE/TableProducer/secondaryVertexReconstruction.cxx +++ b/PWGJE/TableProducer/secondaryVertexReconstruction.cxx @@ -17,7 +17,6 @@ #include #include -#include #include "CommonConstants/PhysicsConstants.h" #include "DCAFitter/DCAFitterN.h" @@ -28,7 +27,6 @@ #include "Framework/runDataProcessing.h" #include "Common/Core/trackUtilities.h" #include "Common/Core/RecoDecay.h" -#include "Field/MagneticField.h" #include "ReconstructionDataFormats/DCA.h" @@ -58,6 +56,7 @@ struct SecondaryVertexReconstruction { Produces sv2prongTableMCD; Produces sv2prongIndicesTableMCD; + Configurable magneticField{"magneticField", 20.0f, "magnetic field in kG"}; Configurable propagateToPCA{"propagateToPCA", true, "create tracks version propagated to PCA"}; Configurable useAbsDCA{"useAbsDCA", false, "Minimise abs. distance rather than chi2"}; Configurable useWeightedFinalPCA{"useWeightedFinalPCA", false, "Recalculate vertex position using track covariances, effective only if useAbsDCA is true"}; @@ -127,7 +126,7 @@ struct SecondaryVertexReconstruction { using JetTracksMCDwPIs = soa::Filtered>; using OriginalTracks = soa::Join; - template + template void runCreatorNProng(AnyCollision const& collision, AnyJet const& analysisJet, AnyParticles const& listoftracks, @@ -149,15 +148,14 @@ struct SecondaryVertexReconstruction { trackParVars[inum] = getTrackParCov(prong); } - if constexpr (hasBC) { + if constexpr (externalMagneticField) { + bz = magneticField; + } else { auto bc = collision.template bc_as(); if (runNumber != bc.runNumber()) { initCCDB(bc, runNumber, ccdb, ccdbPathGrpMag, lut, false); bz = o2::base::Propagator::Instance()->getNominalBz(); } - } else { - auto fieldInstance = static_cast(TGeoGlobalMagField::Instance()->GetField()); - bz = fieldInstance->GetBz(0, 0, 0); // to be checked } // Use a different fitter depending on the number of prongs @@ -268,7 +266,7 @@ struct SecondaryVertexReconstruction { } currentCombination.push_back(iprong); - runCreatorNProng( + runCreatorNProng( collision, analysisJet, listoftracks, svIndices, df, iprong + 1, currentCombination); currentCombination.pop_back(); } @@ -283,81 +281,81 @@ struct SecondaryVertexReconstruction { { for (auto& jet : jets) { std::vector svIndices; - runCreatorNProng<3, true>(collision.template collision_as(), jet, jtracks, svIndices, df3); + runCreatorNProng<3, false>(collision.template collision_as(), jet, jtracks, svIndices, df3); sv3prongIndicesTableData(svIndices); } } PROCESS_SWITCH(SecondaryVertexReconstruction, processData3Prongs, "Reconstruct the data 3-prong secondary vertex", false); - void processData3ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/) + void processData3ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/) { for (auto& jet : jets) { std::vector svIndices; - runCreatorNProng<3, false>(collision.template collision_as(), jet, jtracks, svIndices, df3); + runCreatorNProng<3, true>(collision.template collision_as(), jet, jtracks, svIndices, df3); sv3prongIndicesTableData(svIndices); } } - PROCESS_SWITCH(SecondaryVertexReconstruction, processData3ProngsWithoutBCs, "Reconstruct the data 3-prong secondary vertex without BC info", false); + PROCESS_SWITCH(SecondaryVertexReconstruction, processData3ProngsExternalMagneticField, "Reconstruct the data 3-prong secondary vertex with external magnetic field", false); void processData2Prongs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/) { for (auto& jet : jets) { std::vector svIndices; - runCreatorNProng<2, true>(collision.template collision_as(), jet, jtracks, svIndices, df2); + runCreatorNProng<2, false>(collision.template collision_as(), jet, jtracks, svIndices, df2); sv2prongIndicesTableData(svIndices); } } PROCESS_SWITCH(SecondaryVertexReconstruction, processData2Prongs, "Reconstruct the data 2-prong secondary vertex", false); - void processData2ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/) + void processData2ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/) { for (auto& jet : jets) { std::vector svIndices; - runCreatorNProng<2, false>(collision.template collision_as(), jet, jtracks, svIndices, df2); + runCreatorNProng<2, true>(collision.template collision_as(), jet, jtracks, svIndices, df2); sv2prongIndicesTableData(svIndices); } } - PROCESS_SWITCH(SecondaryVertexReconstruction, processData2ProngsWithoutBCs, "Reconstruct the data 2-prong secondary vertex without BC info", false); + PROCESS_SWITCH(SecondaryVertexReconstruction, processData2ProngsExternalMagneticField, "Reconstruct the data 2-prong secondary vertex with extrernal magnetic field", false); void processMCD3Prongs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/) { for (auto& jet : mcdjets) { std::vector svIndices; - runCreatorNProng<3, true>(collision.template collision_as(), jet, jtracks, svIndices, df3); + runCreatorNProng<3, false>(collision.template collision_as(), jet, jtracks, svIndices, df3); sv3prongIndicesTableMCD(svIndices); } } PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD3Prongs, "Reconstruct the MCD 3-prong secondary vertex", false); - void processMCD3ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/) + void processMCD3ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/) { for (auto& jet : mcdjets) { std::vector svIndices; - runCreatorNProng<3, false>(collision.template collision_as(), jet, jtracks, svIndices, df3); + runCreatorNProng<3, true>(collision.template collision_as(), jet, jtracks, svIndices, df3); sv3prongIndicesTableMCD(svIndices); } } - PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD3ProngsWithoutBCs, "Reconstruct the MCD 3-prong secondary vertex without BC info", false); + PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD3ProngsExternalMagneticField, "Reconstruct the MCD 3-prong secondary vertex with external magnetic field", false); void processMCD2Prongs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/) { for (auto& jet : mcdjets) { std::vector svIndices; - runCreatorNProng<2, true>(collision.template collision_as(), jet, jtracks, svIndices, df2); + runCreatorNProng<2, false>(collision.template collision_as(), jet, jtracks, svIndices, df2); sv2prongIndicesTableMCD(svIndices); } } PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD2Prongs, "Reconstruct the MCD 2-prong secondary vertex", false); - void processMCD2ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/) + void processMCD2ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/) { for (auto& jet : mcdjets) { std::vector svIndices; - runCreatorNProng<2, false>(collision.template collision_as(), jet, jtracks, svIndices, df2); + runCreatorNProng<2, true>(collision.template collision_as(), jet, jtracks, svIndices, df2); sv2prongIndicesTableMCD(svIndices); } } - PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD2ProngsWithoutBCs, "Reconstruct the MCD 2-prong secondary vertex without BC info", false); + PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD2ProngsExternalMagneticField, "Reconstruct the MCD 2-prong secondary vertex with external magnetic field", false); }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)