From 3dd984fbbb32dec79f94f1669bbddc102c905613 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Thu, 2 Nov 2023 15:31:33 +0100 Subject: [PATCH 01/13] Add function to propagate muon tracks through absorber to PV --- PWGDQ/Core/VarManager.h | 79 ++++++++++++++++++++++++++++++ PWGDQ/TableProducer/tableMaker.cxx | 28 +++++++---- 2 files changed, 97 insertions(+), 10 deletions(-) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index dc30d826680..5023d1b27bc 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -36,6 +36,9 @@ #include "Math/GenVector/Boost.h" #include "Framework/DataTypes.h" +#include "MCHTracking/TrackExtrap.h" +#include "ReconstructionDataFormats/GlobalFwdTrack.h" +#include "GlobalTracking/MatchGlobalFwd.h" #include "ReconstructionDataFormats/Track.h" #include "ReconstructionDataFormats/Vertex.h" #include "DCAFitter/DCAFitterN.h" @@ -194,9 +197,13 @@ class VarManager : public TObject kNEventWiseVariables, // Basic track/muon/pair wise variables + kX, + kY, + kZ, kPt, kInvPt, kEta, + kTgl, kPhi, kP, kPx, @@ -309,9 +316,19 @@ class VarManager : public TObject kMuonChi2MatchMCHMFT, kMuonMatchScoreMCHMFT, kMuonCXX, + kMuonCYX, kMuonCYY, + kMuonCPhiX, + kMuonCPhiY, kMuonCPhiPhi, + kMuonCTglX, + kMuonCTglY, + kMuonCTglPhi, kMuonCTglTgl, + kMuonC1Pt2X, + kMuonC1Pt2Y, + kMuonC1Pt2Phi, + kMuonC1Pt2Tgl, kMuonC1Pt21Pt2, kNMuonTrackVariables, kMuonTrackType, @@ -558,6 +575,8 @@ class VarManager : public TObject return (1.0 / harm) * TMath::ATan(qnya / qnxa); }; + template + static void FillpropagateMuon(const T& muon, const C& collision, float* values = nullptr); template static void FillEvent(T const& event, float* values = nullptr); template @@ -649,6 +668,7 @@ class VarManager : public TObject static o2::vertexing::DCAFitterN<3> fgFitterThreeProngBarrel; static o2::vertexing::FwdDCAFitterN<2> fgFitterTwoProngFwd; static o2::vertexing::FwdDCAFitterN<3> fgFitterThreeProngFwd; + static o2::globaltracking::MatchGlobalFwd mMatching; static std::map fgCalibs; // map of calibration histograms static bool fgRunTPCPostCalibration[4]; // 0-electron, 1-pion, 2-kaon, 3-proton @@ -743,6 +763,51 @@ KFPVertex VarManager::createKFPVertexFromCollision(const T& collision) return kfpVertex; } +template +void VarManager::FillpropagateMuon(const T& muon, const C& collision, float* values) +{ + if constexpr ((fillMap & MuonCov) > 0) { + o2::mch::TrackExtrap::setField(); + double chi2 = muon.chi2(); + SMatrix5 tpars(muon.x(), muon.y(), muon.phi(), muon.tgl(), muon.signed1Pt()); + std::vector v1{muon.cXX(), muon.cXY(), muon.cYY(), muon.cPhiX(), muon.cPhiY(), + muon.cPhiPhi(), muon.cTglX(), muon.cTglY(), muon.cTglPhi(), muon.cTglTgl(), + muon.c1PtX(), muon.c1PtY(), muon.c1PtPhi(), muon.c1PtTgl(), muon.c1Pt21Pt2()}; + SMatrix55 tcovs(v1.begin(), v1.end()); + o2::track::TrackParCovFwd fwdtrack{muon.z(), tpars, tcovs, chi2}; + o2::dataformats::GlobalFwdTrack track{fwdtrack}; + auto mchTrack = mMatching.FwdtoMCH(track); + o2::mch::TrackExtrap::extrapToVertex(mchTrack, collision.posX(), collision.posY(), collision.posZ(), collision.covXX(), collision.covYY()); + auto propmuon = mMatching.MCHtoFwd(mchTrack); + values[kPt] = propmuon.getPt(); + + values[kX] = propmuon.getX(); + values[kY] = propmuon.getY(); + values[kZ] = propmuon.getZ(); + values[kEta] = propmuon.getEta(); + values[kTgl] = propmuon.getTgl(); + values[kPhi] = propmuon.getPhi(); + + SMatrix55 cov = propmuon.getCovariances(); + + values[kMuonCXX] = cov(0, 0); + values[kMuonCYX] = cov(1, 0); + values[kMuonCYY] = cov(1, 1); + values[kMuonCPhiX] = cov(2, 0); + values[kMuonCPhiY] = cov(2, 1); + values[kMuonCPhiPhi] = cov(2, 2); + values[kMuonCTglX] = cov(3, 0); + values[kMuonCTglY] = cov(3, 1); + values[kMuonCTglPhi] = cov(3, 2); + values[kMuonCTglTgl] = cov(3, 3); + values[kMuonC1Pt2X] = cov(4, 0); + values[kMuonC1Pt2Y] = cov(4, 1); + values[kMuonC1Pt2Phi] = cov(4, 2); + values[kMuonC1Pt2Tgl] = cov(4, 3); + values[kMuonC1Pt21Pt2] = cov(4, 4); + } +} + template void VarManager::FillEvent(T const& event, float* values) { @@ -1268,10 +1333,24 @@ void VarManager::FillTrack(T const& track, float* values) } // Quantities based on the muon covariance table if constexpr ((fillMap & ReducedMuonCov) > 0 || (fillMap & MuonCov) > 0) { + values[kX] = track.x(); + values[kY] = track.y(); + values[kZ] = track.z(); + values[kTgl] = track.tgl(); values[kMuonCXX] = track.cXX(); + values[kMuonCYX] = track.cXY(); values[kMuonCYY] = track.cYY(); + values[kMuonCPhiX] = track.cPhiX(); + values[kMuonCPhiY] = track.cPhiY(); values[kMuonCPhiPhi] = track.cPhiPhi(); + values[kMuonCTglX] = track.cTglX(); + values[kMuonCTglY] = track.cTglY(); + values[kMuonCTglPhi] = track.cTglPhi(); values[kMuonCTglTgl] = track.cTglTgl(); + values[kMuonC1Pt2X] = track.c1PtX(); + values[kMuonC1Pt2Y] = track.c1PtY(); + values[kMuonC1Pt2Phi] = track.c1PtPhi(); + values[kMuonC1Pt2Tgl] = track.c1PtTgl(); values[kMuonC1Pt21Pt2] = track.c1Pt21Pt2(); } diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index 5e76a91ae84..37e225664b9 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -163,6 +163,8 @@ struct TableMaker { Configurable fConfigSaveElectronSample{"cfgSaveElectronSample", false, "If true, only save electron sample"}; Configurable fConfigDummyRunlist{"cfgDummyRunlist", false, "If true, use dummy runlist"}; Configurable fConfigInitRunNumber{"cfgInitRunNumber", 543215, "Initial run number used in run by run checks"}; + Configurable fPropMuon{"cfgPropMuon", false, "Propgate muon tracks through absorber"}; + Service fCCDB; AnalysisCompositeCut* fEventCut; //! Event selection cut @@ -603,6 +605,9 @@ struct TableMaker { trackTempFilterMap = uint8_t(0); VarManager::FillTrack(muon); + if (fPropMuon) { + VarManager::FillpropagateMuon(muon, collision); + } if (fDoDetailedQA) { fHistMan->FillHistClass("Muons_BeforeCuts", VarManager::fgValues); if (fIsAmbiguous && isAmbiguous == 1) { @@ -663,7 +668,7 @@ struct TableMaker { } } - muonBasic(event.lastIndex(), trackFilteringTag, muon.pt(), muon.eta(), muon.phi(), muon.sign(), isAmbiguous); + muonBasic(event.lastIndex(), trackFilteringTag, VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], muon.sign(), isAmbiguous); muonExtra(muon.nClusters(), muon.pDca(), muon.rAtAbsorberEnd(), muon.chi2(), muon.chi2MatchMCHMID(), muon.chi2MatchMCHMFT(), muon.matchScoreMCHMFT(), newMatchIndex.find(muon.index())->second, newMFTMatchIndex.find(muon.index())->second, muon.mchBitMap(), muon.midBitMap(), @@ -671,10 +676,10 @@ struct TableMaker { muon.trackTime(), muon.trackTimeRes()); muonInfo(muon.collisionId(), collision.posX(), collision.posY(), collision.posZ()); if constexpr (static_cast(TMuonFillMap & VarManager::ObjTypes::MuonCov)) { - muonCov(muon.x(), muon.y(), muon.z(), muon.phi(), muon.tgl(), muon.signed1Pt(), - muon.cXX(), muon.cXY(), muon.cYY(), muon.cPhiX(), muon.cPhiY(), muon.cPhiPhi(), - muon.cTglX(), muon.cTglY(), muon.cTglPhi(), muon.cTglTgl(), muon.c1PtX(), muon.c1PtY(), - muon.c1PtPhi(), muon.c1PtTgl(), muon.c1Pt21Pt2()); + muonCov(VarManager::fgValues[VarManager::kX], VarManager::fgValues[VarManager::kY], VarManager::fgValues[VarManager::kZ], VarManager::fgValues[VarManager::kPhi], VarManager::fgValues[VarManager::kTgl], muon.sign() / VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kMuonCXX], VarManager::fgValues[VarManager::kMuonCYX], VarManager::fgValues[VarManager::kMuonCYY], VarManager::fgValues[VarManager::kMuonCPhiX], VarManager::fgValues[VarManager::kMuonCPhiY], VarManager::fgValues[VarManager::kMuonCPhiPhi], + VarManager::fgValues[VarManager::kMuonCTglX], VarManager::fgValues[VarManager::kMuonCTglY], VarManager::fgValues[VarManager::kMuonCTglPhi], VarManager::fgValues[VarManager::kMuonCTglTgl], VarManager::fgValues[VarManager::kMuonC1Pt2X], VarManager::fgValues[VarManager::kMuonC1Pt2Y], + VarManager::fgValues[VarManager::kMuonC1Pt2Phi], VarManager::fgValues[VarManager::kMuonC1Pt2Tgl], VarManager::fgValues[VarManager::kMuonC1Pt21Pt2]); } } } // end if constexpr (TMuonFillMap) @@ -924,6 +929,9 @@ struct TableMaker { trackTempFilterMap = uint8_t(0); VarManager::FillTrack(muon); + if (fPropMuon) { + VarManager::FillpropagateMuon(muon, collision); + } if (fDoDetailedQA) { fHistMan->FillHistClass("Muons_BeforeCuts", VarManager::fgValues); if (fIsAmbiguous && isAmbiguous == 1) { @@ -970,7 +978,7 @@ struct TableMaker { } } - muonBasic(event.lastIndex(), trackFilteringTag, muon.pt(), muon.eta(), muon.phi(), muon.sign(), isAmbiguous); + muonBasic(event.lastIndex(), trackFilteringTag, VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], muon.sign(), isAmbiguous); muonExtra(muon.nClusters(), muon.pDca(), muon.rAtAbsorberEnd(), muon.chi2(), muon.chi2MatchMCHMID(), muon.chi2MatchMCHMFT(), muon.matchScoreMCHMFT(), newMatchIndex.find(muon.index())->second, -1, muon.mchBitMap(), muon.midBitMap(), @@ -978,10 +986,10 @@ struct TableMaker { muon.trackTime(), muon.trackTimeRes()); muonInfo(muon.collisionId(), collision.posX(), collision.posY(), collision.posZ()); if constexpr (static_cast(TMuonFillMap & VarManager::ObjTypes::MuonCov)) { - muonCov(muon.x(), muon.y(), muon.z(), muon.phi(), muon.tgl(), muon.signed1Pt(), - muon.cXX(), muon.cXY(), muon.cYY(), muon.cPhiX(), muon.cPhiY(), muon.cPhiPhi(), - muon.cTglX(), muon.cTglY(), muon.cTglPhi(), muon.cTglTgl(), muon.c1PtX(), muon.c1PtY(), - muon.c1PtPhi(), muon.c1PtTgl(), muon.c1Pt21Pt2()); + muonCov(VarManager::fgValues[VarManager::kX], VarManager::fgValues[VarManager::kY], VarManager::fgValues[VarManager::kZ], VarManager::fgValues[VarManager::kPhi], VarManager::fgValues[VarManager::kTgl], muon.sign() / VarManager::fgValues[VarManager::kPt], + VarManager::fgValues[VarManager::kMuonCXX], VarManager::fgValues[VarManager::kMuonCYX], VarManager::fgValues[VarManager::kMuonCYY], VarManager::fgValues[VarManager::kMuonCPhiX], VarManager::fgValues[VarManager::kMuonCPhiY], VarManager::fgValues[VarManager::kMuonCPhiPhi], + VarManager::fgValues[VarManager::kMuonCTglX], VarManager::fgValues[VarManager::kMuonCTglY], VarManager::fgValues[VarManager::kMuonCTglPhi], VarManager::fgValues[VarManager::kMuonCTglTgl], VarManager::fgValues[VarManager::kMuonC1Pt2X], VarManager::fgValues[VarManager::kMuonC1Pt2Y], + VarManager::fgValues[VarManager::kMuonC1Pt2Phi], VarManager::fgValues[VarManager::kMuonC1Pt2Tgl], VarManager::fgValues[VarManager::kMuonC1Pt21Pt2]); } } } // end if constexpr (TMuonFillMap) From ad0825bcf848bc81768566ea5e635b37c173a8c9 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Thu, 2 Nov 2023 20:17:33 +0100 Subject: [PATCH 02/13] Format --- PWGDQ/Core/VarManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 5023d1b27bc..eb96a765cef 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -779,8 +779,8 @@ void VarManager::FillpropagateMuon(const T& muon, const C& collision, float* val auto mchTrack = mMatching.FwdtoMCH(track); o2::mch::TrackExtrap::extrapToVertex(mchTrack, collision.posX(), collision.posY(), collision.posZ(), collision.covXX(), collision.covYY()); auto propmuon = mMatching.MCHtoFwd(mchTrack); - values[kPt] = propmuon.getPt(); + values[kPt] = propmuon.getPt(); values[kX] = propmuon.getX(); values[kY] = propmuon.getY(); values[kZ] = propmuon.getZ(); From f22bc425971e061fc322811d4b7c61e69a8f73a6 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Fri, 3 Nov 2023 08:32:59 +0100 Subject: [PATCH 03/13] Fix --- PWGDQ/Core/VarManager.h | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index eb96a765cef..992c275268c 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -789,7 +789,6 @@ void VarManager::FillpropagateMuon(const T& muon, const C& collision, float* val values[kPhi] = propmuon.getPhi(); SMatrix55 cov = propmuon.getCovariances(); - values[kMuonCXX] = cov(0, 0); values[kMuonCYX] = cov(1, 0); values[kMuonCYY] = cov(1, 1); From 8cc8dfbeab27bfe9725b6be6eff21d2b8a2f4b15 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Tue, 7 Nov 2023 13:31:39 +0100 Subject: [PATCH 04/13] Fix --- PWGDQ/Core/VarManager.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 992c275268c..9ca5f44560d 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -36,8 +36,6 @@ #include "Math/GenVector/Boost.h" #include "Framework/DataTypes.h" -#include "MCHTracking/TrackExtrap.h" -#include "ReconstructionDataFormats/GlobalFwdTrack.h" #include "GlobalTracking/MatchGlobalFwd.h" #include "ReconstructionDataFormats/Track.h" #include "ReconstructionDataFormats/Vertex.h" @@ -576,7 +574,7 @@ class VarManager : public TObject }; template - static void FillpropagateMuon(const T& muon, const C& collision, float* values = nullptr); + static void FillPropagateMuon(const T& muon, const C& collision, float* values = nullptr); template static void FillEvent(T const& event, float* values = nullptr); template @@ -764,7 +762,7 @@ KFPVertex VarManager::createKFPVertexFromCollision(const T& collision) } template -void VarManager::FillpropagateMuon(const T& muon, const C& collision, float* values) +void VarManager::FillPropagateMuon(const T& muon, const C& collision, float* values) { if constexpr ((fillMap & MuonCov) > 0) { o2::mch::TrackExtrap::setField(); From 6c2ae578658a68c3b8d0dff56afd4e70d21a43ac Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Tue, 7 Nov 2023 13:46:52 +0100 Subject: [PATCH 05/13] Fix typo --- PWGDQ/TableProducer/tableMaker.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index 37e225664b9..daae3266abb 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -606,7 +606,7 @@ struct TableMaker { VarManager::FillTrack(muon); if (fPropMuon) { - VarManager::FillpropagateMuon(muon, collision); + VarManager::FillPropagateMuon(muon, collision); } if (fDoDetailedQA) { fHistMan->FillHistClass("Muons_BeforeCuts", VarManager::fgValues); @@ -930,7 +930,7 @@ struct TableMaker { VarManager::FillTrack(muon); if (fPropMuon) { - VarManager::FillpropagateMuon(muon, collision); + VarManager::FillPropagateMuon(muon, collision); } if (fDoDetailedQA) { fHistMan->FillHistClass("Muons_BeforeCuts", VarManager::fgValues); From e6f2130502afbaaf71bca6a1285ca2441e528c6d Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Thu, 9 Nov 2023 18:22:57 +0100 Subject: [PATCH 06/13] Fixing libraries --- PWGDQ/Core/CMakeLists.txt | 2 +- PWGDQ/Core/VarManager.cxx | 1 + PWGDQ/Core/VarManager.h | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/PWGDQ/Core/CMakeLists.txt b/PWGDQ/Core/CMakeLists.txt index 710e9a57283..5ce05ab82d1 100644 --- a/PWGDQ/Core/CMakeLists.txt +++ b/PWGDQ/Core/CMakeLists.txt @@ -21,7 +21,7 @@ o2physics_add_library(PWGDQCore AnalysisCompositeCut.cxx MCProng.cxx MCSignal.cxx - PUBLIC_LINK_LIBRARIES O2::Framework O2::DCAFitter O2Physics::AnalysisCore KFParticle::KFParticle) + PUBLIC_LINK_LIBRARIES O2::Framework O2::DCAFitter O2::GlobalTracking O2Physics::AnalysisCore KFParticle::KFParticle) o2physics_target_root_dictionary(PWGDQCore HEADERS AnalysisCut.h diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index 77156e1aa1d..8e1e75412bf 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -33,6 +33,7 @@ o2::vertexing::DCAFitterN<2> VarManager::fgFitterTwoProngBarrel; o2::vertexing::DCAFitterN<3> VarManager::fgFitterThreeProngBarrel; o2::vertexing::FwdDCAFitterN<2> VarManager::fgFitterTwoProngFwd; o2::vertexing::FwdDCAFitterN<3> VarManager::fgFitterThreeProngFwd; +o2::globaltracking::MatchGlobalFwd VarManager::mMatching; std::map VarManager::fgCalibs; bool VarManager::fgRunTPCPostCalibration[4] = {false, false, false, false}; diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 9ca5f44560d..882b25228e1 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -36,7 +36,7 @@ #include "Math/GenVector/Boost.h" #include "Framework/DataTypes.h" -#include "GlobalTracking/MatchGlobalFwd.h" +//#include "MCHTracking/TrackExtrap.h" #include "ReconstructionDataFormats/Track.h" #include "ReconstructionDataFormats/Vertex.h" #include "DCAFitter/DCAFitterN.h" @@ -47,6 +47,7 @@ #include "Math/SMatrix.h" #include "ReconstructionDataFormats/TrackFwd.h" #include "DCAFitter/FwdDCAFitterN.h" +#include "GlobalTracking/MatchGlobalFwd.h" #include "CommonConstants/PhysicsConstants.h" #include "KFParticle.h" From 14c905dd4487ad4fa8325a0a0e501d9ac3611186 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Thu, 9 Nov 2023 18:24:23 +0100 Subject: [PATCH 07/13] Clang format --- PWGDQ/Core/VarManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 882b25228e1..98e7b1d6242 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -36,7 +36,7 @@ #include "Math/GenVector/Boost.h" #include "Framework/DataTypes.h" -//#include "MCHTracking/TrackExtrap.h" +// #include "MCHTracking/TrackExtrap.h" #include "ReconstructionDataFormats/Track.h" #include "ReconstructionDataFormats/Vertex.h" #include "DCAFitter/DCAFitterN.h" From f987b366fbae165037e409759eaa1f95337dcaf7 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Thu, 9 Nov 2023 23:59:35 +0100 Subject: [PATCH 08/13] Missing array definition --- PWGDQ/Core/VarManager.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 98e7b1d6242..458c6e4bbaf 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -765,6 +765,9 @@ KFPVertex VarManager::createKFPVertexFromCollision(const T& collision) template void VarManager::FillPropagateMuon(const T& muon, const C& collision, float* values) { + if (!values) { + values = fgValues; + } if constexpr ((fillMap & MuonCov) > 0) { o2::mch::TrackExtrap::setField(); double chi2 = muon.chi2(); From 1d597e295dabc89cc7f5f4881f6417406f8e9a98 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Fri, 10 Nov 2023 14:55:28 +0100 Subject: [PATCH 09/13] Retrieving geometry from ccdb --- PWGDQ/TableProducer/tableMaker.cxx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index daae3266abb..e93d3b4e211 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -49,6 +49,12 @@ #include "MathUtils/Primitive2D.h" #include "DataFormatsGlobalTracking/RecoContainer.h" #include "Common/DataModel/CollisionAssociationTables.h" +#include "DataFormatsParameters/GRPMagField.h" +#include "Field/MagneticField.h" +#include "TGeoGlobalMagField.h" +#include "DetectorsBase/Propagator.h" +#include "DetectorsBase/GeometryManager.h" + using std::cout; using std::endl; @@ -164,6 +170,9 @@ struct TableMaker { Configurable fConfigDummyRunlist{"cfgDummyRunlist", false, "If true, use dummy runlist"}; Configurable fConfigInitRunNumber{"cfgInitRunNumber", 543215, "Initial run number used in run by run checks"}; Configurable fPropMuon{"cfgPropMuon", false, "Propgate muon tracks through absorber"}; + Configurable geoPath{"geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; + Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; + Service fCCDB; @@ -176,6 +185,7 @@ struct TableMaker { Preslice trackIndicesPerCollision = aod::track_association::collisionId; Preslice fwdtrackIndicesPerCollision = aod::track_association::collisionId; + Service ccdb; bool fDoDetailedQA = false; // Bool to set detailed QA true, if QA is set true int fCurrentRun; // needed to detect if the run changed and trigger update of calibrations etc. @@ -187,6 +197,15 @@ struct TableMaker { void init(o2::framework::InitContext& context) { DefineCuts(); + ccdb->setURL(fConfigCcdbUrl); + ccdb->setCaching(true); + ccdb->setLocalObjectValidityChecking(); + if (fPropMuon){ + if (!o2::base::GeometryManager::isGeometryLoaded()) { + ccdb->get(geoPath); + } + } + VarManager::SetDefaultVarNames(); fHistMan = new HistogramManager("analysisHistos", "aa", VarManager::kNVars); From ff2991e7b4810738c5b0aee52501da27ca282da6 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Fri, 10 Nov 2023 14:59:35 +0100 Subject: [PATCH 10/13] Clang format --- PWGDQ/TableProducer/tableMaker.cxx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index e93d3b4e211..9b11323e756 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -55,7 +55,6 @@ #include "DetectorsBase/Propagator.h" #include "DetectorsBase/GeometryManager.h" - using std::cout; using std::endl; @@ -173,7 +172,6 @@ struct TableMaker { Configurable geoPath{"geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; - Service fCCDB; AnalysisCompositeCut* fEventCut; //! Event selection cut @@ -200,13 +198,12 @@ struct TableMaker { ccdb->setURL(fConfigCcdbUrl); ccdb->setCaching(true); ccdb->setLocalObjectValidityChecking(); - if (fPropMuon){ + if (fPropMuon) { if (!o2::base::GeometryManager::isGeometryLoaded()) { ccdb->get(geoPath); } } - VarManager::SetDefaultVarNames(); fHistMan = new HistogramManager("analysisHistos", "aa", VarManager::kNVars); fHistMan->SetUseDefaultVariableNames(kTRUE); From b2fab9e56f324e73fd7a0e055f11fcb4161287f2 Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Wed, 15 Nov 2023 21:35:17 +0100 Subject: [PATCH 11/13] Fixing retrieving of ccdb object --- PWGDQ/TableProducer/tableMaker.cxx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index 9b11323e756..6c0f2855eb4 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -174,6 +174,8 @@ struct TableMaker { Service fCCDB; + o2::parameters::GRPMagField* grpmag = nullptr; + AnalysisCompositeCut* fEventCut; //! Event selection cut std::vector fTrackCuts; //! Barrel track cuts std::vector fMuonCuts; //! Muon track cuts @@ -337,7 +339,8 @@ struct TableMaker { void fullSkimming(TEvent const& collision, aod::BCsWithTimestamps const&, TTracks const& tracksBarrel, TMuons const& tracksMuon, TAmbiTracks const& ambiTracksMid, TAmbiMuons const& ambiTracksFwd, TMFTTracks const& mftTracks = nullptr) { auto bc = collision.template bc_as(); - if (fConfigComputeTPCpostCalib && fCurrentRun != bc.runNumber()) { + if (fCurrentRun != bc.runNumber()) { + if (fConfigComputeTPCpostCalib) { auto calibList = fCCDB->getForTimeStamp(fConfigCcdbPathTPC.value, bc.timestamp()); VarManager::SetCalibrationObject(VarManager::kTPCElectronMean, calibList->FindObject("mean_map_electron")); VarManager::SetCalibrationObject(VarManager::kTPCElectronSigma, calibList->FindObject("sigma_map_electron")); @@ -349,6 +352,11 @@ struct TableMaker { VarManager::SetCalibrationObject(VarManager::kTPCKaonMean, calibList->FindObject("mean_map_kaon")); VarManager::SetCalibrationObject(VarManager::kTPCKaonSigma, calibList->FindObject("sigma_map_kaon")); } + } + grpmag = ccdb->getForTimeStamp(grpmagPath, bc.timestamp()); + if (grpmag != nullptr) { + o2::base::Propagator::initFieldFromGRP(grpmag); + } fCurrentRun = bc.runNumber(); } From d7d43ef94157b337e5a2d81a413ebe1b42b0cf2d Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Wed, 15 Nov 2023 21:38:53 +0100 Subject: [PATCH 12/13] Calng format --- PWGDQ/TableProducer/tableMaker.cxx | 32 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index 6c0f2855eb4..e1a635c5b4e 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -340,23 +340,23 @@ struct TableMaker { { auto bc = collision.template bc_as(); if (fCurrentRun != bc.runNumber()) { - if (fConfigComputeTPCpostCalib) { - auto calibList = fCCDB->getForTimeStamp(fConfigCcdbPathTPC.value, bc.timestamp()); - VarManager::SetCalibrationObject(VarManager::kTPCElectronMean, calibList->FindObject("mean_map_electron")); - VarManager::SetCalibrationObject(VarManager::kTPCElectronSigma, calibList->FindObject("sigma_map_electron")); - VarManager::SetCalibrationObject(VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion")); - VarManager::SetCalibrationObject(VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion")); - VarManager::SetCalibrationObject(VarManager::kTPCProtonMean, calibList->FindObject("mean_map_proton")); - VarManager::SetCalibrationObject(VarManager::kTPCProtonSigma, calibList->FindObject("sigma_map_proton")); - if (fConfigComputeTPCpostCalibKaon) { - VarManager::SetCalibrationObject(VarManager::kTPCKaonMean, calibList->FindObject("mean_map_kaon")); - VarManager::SetCalibrationObject(VarManager::kTPCKaonSigma, calibList->FindObject("sigma_map_kaon")); + if (fConfigComputeTPCpostCalib) { + auto calibList = fCCDB->getForTimeStamp(fConfigCcdbPathTPC.value, bc.timestamp()); + VarManager::SetCalibrationObject(VarManager::kTPCElectronMean, calibList->FindObject("mean_map_electron")); + VarManager::SetCalibrationObject(VarManager::kTPCElectronSigma, calibList->FindObject("sigma_map_electron")); + VarManager::SetCalibrationObject(VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion")); + VarManager::SetCalibrationObject(VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion")); + VarManager::SetCalibrationObject(VarManager::kTPCProtonMean, calibList->FindObject("mean_map_proton")); + VarManager::SetCalibrationObject(VarManager::kTPCProtonSigma, calibList->FindObject("sigma_map_proton")); + if (fConfigComputeTPCpostCalibKaon) { + VarManager::SetCalibrationObject(VarManager::kTPCKaonMean, calibList->FindObject("mean_map_kaon")); + VarManager::SetCalibrationObject(VarManager::kTPCKaonSigma, calibList->FindObject("sigma_map_kaon")); + } + } + grpmag = ccdb->getForTimeStamp(grpmagPath, bc.timestamp()); + if (grpmag != nullptr) { + o2::base::Propagator::initFieldFromGRP(grpmag); } - } - grpmag = ccdb->getForTimeStamp(grpmagPath, bc.timestamp()); - if (grpmag != nullptr) { - o2::base::Propagator::initFieldFromGRP(grpmag); - } fCurrentRun = bc.runNumber(); } From aa80badd436f504d23806f7ef678b653f0310f5d Mon Sep 17 00:00:00 2001 From: mcoquet642 Date: Fri, 17 Nov 2023 16:22:19 +0100 Subject: [PATCH 13/13] Fixing covariance name --- PWGDQ/Core/VarManager.h | 6 +++--- PWGDQ/TableProducer/tableMaker.cxx | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index 458c6e4bbaf..7346fb40679 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -315,7 +315,7 @@ class VarManager : public TObject kMuonChi2MatchMCHMFT, kMuonMatchScoreMCHMFT, kMuonCXX, - kMuonCYX, + kMuonCXY, kMuonCYY, kMuonCPhiX, kMuonCPhiY, @@ -792,7 +792,7 @@ void VarManager::FillPropagateMuon(const T& muon, const C& collision, float* val SMatrix55 cov = propmuon.getCovariances(); values[kMuonCXX] = cov(0, 0); - values[kMuonCYX] = cov(1, 0); + values[kMuonCXY] = cov(1, 0); values[kMuonCYY] = cov(1, 1); values[kMuonCPhiX] = cov(2, 0); values[kMuonCPhiY] = cov(2, 1); @@ -1339,7 +1339,7 @@ void VarManager::FillTrack(T const& track, float* values) values[kZ] = track.z(); values[kTgl] = track.tgl(); values[kMuonCXX] = track.cXX(); - values[kMuonCYX] = track.cXY(); + values[kMuonCXY] = track.cXY(); values[kMuonCYY] = track.cYY(); values[kMuonCPhiX] = track.cPhiX(); values[kMuonCPhiY] = track.cPhiY(); diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index e1a635c5b4e..9a427d02a30 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -701,7 +701,7 @@ struct TableMaker { muonInfo(muon.collisionId(), collision.posX(), collision.posY(), collision.posZ()); if constexpr (static_cast(TMuonFillMap & VarManager::ObjTypes::MuonCov)) { muonCov(VarManager::fgValues[VarManager::kX], VarManager::fgValues[VarManager::kY], VarManager::fgValues[VarManager::kZ], VarManager::fgValues[VarManager::kPhi], VarManager::fgValues[VarManager::kTgl], muon.sign() / VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kMuonCXX], VarManager::fgValues[VarManager::kMuonCYX], VarManager::fgValues[VarManager::kMuonCYY], VarManager::fgValues[VarManager::kMuonCPhiX], VarManager::fgValues[VarManager::kMuonCPhiY], VarManager::fgValues[VarManager::kMuonCPhiPhi], + VarManager::fgValues[VarManager::kMuonCXX], VarManager::fgValues[VarManager::kMuonCXY], VarManager::fgValues[VarManager::kMuonCYY], VarManager::fgValues[VarManager::kMuonCPhiX], VarManager::fgValues[VarManager::kMuonCPhiY], VarManager::fgValues[VarManager::kMuonCPhiPhi], VarManager::fgValues[VarManager::kMuonCTglX], VarManager::fgValues[VarManager::kMuonCTglY], VarManager::fgValues[VarManager::kMuonCTglPhi], VarManager::fgValues[VarManager::kMuonCTglTgl], VarManager::fgValues[VarManager::kMuonC1Pt2X], VarManager::fgValues[VarManager::kMuonC1Pt2Y], VarManager::fgValues[VarManager::kMuonC1Pt2Phi], VarManager::fgValues[VarManager::kMuonC1Pt2Tgl], VarManager::fgValues[VarManager::kMuonC1Pt21Pt2]); } @@ -1011,7 +1011,7 @@ struct TableMaker { muonInfo(muon.collisionId(), collision.posX(), collision.posY(), collision.posZ()); if constexpr (static_cast(TMuonFillMap & VarManager::ObjTypes::MuonCov)) { muonCov(VarManager::fgValues[VarManager::kX], VarManager::fgValues[VarManager::kY], VarManager::fgValues[VarManager::kZ], VarManager::fgValues[VarManager::kPhi], VarManager::fgValues[VarManager::kTgl], muon.sign() / VarManager::fgValues[VarManager::kPt], - VarManager::fgValues[VarManager::kMuonCXX], VarManager::fgValues[VarManager::kMuonCYX], VarManager::fgValues[VarManager::kMuonCYY], VarManager::fgValues[VarManager::kMuonCPhiX], VarManager::fgValues[VarManager::kMuonCPhiY], VarManager::fgValues[VarManager::kMuonCPhiPhi], + VarManager::fgValues[VarManager::kMuonCXX], VarManager::fgValues[VarManager::kMuonCXY], VarManager::fgValues[VarManager::kMuonCYY], VarManager::fgValues[VarManager::kMuonCPhiX], VarManager::fgValues[VarManager::kMuonCPhiY], VarManager::fgValues[VarManager::kMuonCPhiPhi], VarManager::fgValues[VarManager::kMuonCTglX], VarManager::fgValues[VarManager::kMuonCTglY], VarManager::fgValues[VarManager::kMuonCTglPhi], VarManager::fgValues[VarManager::kMuonCTglTgl], VarManager::fgValues[VarManager::kMuonC1Pt2X], VarManager::fgValues[VarManager::kMuonC1Pt2Y], VarManager::fgValues[VarManager::kMuonC1Pt2Phi], VarManager::fgValues[VarManager::kMuonC1Pt2Tgl], VarManager::fgValues[VarManager::kMuonC1Pt21Pt2]); }