From bcb10d8395adfc08c940587ed8ad006db88c2fc8 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Tue, 12 Jan 2021 12:36:58 +0100 Subject: [PATCH 01/11] Sketching AOD tables for forward tracks --- .../src/AODJAlienReaderHelpers.cxx | 4 + .../include/Framework/AnalysisDataModel.h | 94 +++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx index 5ca285a43babf..3c8e40664ca04 100644 --- a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx +++ b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx @@ -107,6 +107,10 @@ std::vector getColumnNames(header::DataHeader dh) return columnNamesTrait(typename StoredTracksCovMetadata::table_t::persistent_columns_t{}); } else if (description == "TRACK:EXTRA") { return columnNamesTrait(typename TracksExtraMetadata::table_t::persistent_columns_t{}); + } else if (description == "TRACKFWD:PAR") { + return columnNamesTrait(typename StoredTracksFwdMetadata::table_t::persistent_columns_t{}); + } else if (description == "TRACKFWD:PARCOV") { + return columnNamesTrait(typename StoredTracksCovMetadata::table_t::persistent_columns_t{}); } } diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index fe08af8f20b56..2b8524d00b596 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -265,6 +265,100 @@ using TrackExtra = TracksExtra::iterator; using FullTracks = soa::Join; using FullTrack = FullTracks::iterator; +namespace trackfwd +{ +// TRACKPARFWD TABLE definition +DECLARE_SOA_INDEX_COLUMN(Collision, collision); +DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); // TODO change to TrackTypeEnum when enums are supported +DECLARE_SOA_COLUMN(X, x, float); +DECLARE_SOA_COLUMN(Y, y, float); +DECLARE_SOA_COLUMN(Z, z, float); +DECLARE_SOA_COLUMN(Phi, phi, float); +DECLARE_SOA_COLUMN(Tgl, tgl, float); +DECLARE_SOA_COLUMN(Signed1Pt, signed1Pt, float); + +DECLARE_SOA_DYNAMIC_COLUMN(Charge, charge, [](float signed1Pt) -> short { return (signed1Pt > 0) ? 1 : -1; }); +DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, -1.f * nlog(ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl)))); +DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, nabs(1.f / aod::trackfwd::signed1Pt)); +DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, 0.5f * (ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl)) + 1.f / ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl))) / nabs(aod::trackfwd::signed1Pt)); + +// TRACKPARCOVFWD TABLE definition +DECLARE_SOA_COLUMN(SigmaX, sigmaX, float); +DECLARE_SOA_COLUMN(SigmaY, sigmaY, float); +DECLARE_SOA_COLUMN(SigmaPhi, sigmaPhi, float); +DECLARE_SOA_COLUMN(SigmaTgl, sigmaTgl, float); +DECLARE_SOA_COLUMN(Sigma1Pt, sigma1Pt, float); +DECLARE_SOA_COLUMN(RhoXY, rhoXY, int8_t); +DECLARE_SOA_COLUMN(RhoPhiX, rhoPhiX, int8_t); +DECLARE_SOA_COLUMN(RhoPhiY, rhoPhiY, int8_t); +DECLARE_SOA_COLUMN(RhoTglX, rhoTglX, int8_t); +DECLARE_SOA_COLUMN(RhoTglY, rhoTglY, int8_t); +DECLARE_SOA_COLUMN(RhoTglPhi, rhoTglPhi, int8_t); +DECLARE_SOA_COLUMN(Rho1PtX, rho1PtX, int8_t); +DECLARE_SOA_COLUMN(Rho1PtY, rho1PtY, int8_t); +DECLARE_SOA_COLUMN(Rho1PtPhi, rho1PtPhi, int8_t); +DECLARE_SOA_COLUMN(Rho1PtTgl, rho1PtTgl, int8_t); + +DECLARE_SOA_EXPRESSION_COLUMN(CXX, cXX, float, aod::trackfwd::sigmaX* aod::trackfwd::sigmaX); +DECLARE_SOA_EXPRESSION_COLUMN(CXY, cXY, float, (aod::trackfwd::rhoXY / 128.f) * (aod::trackfwd::sigmaX * aod::trackfwd::sigmaY)); //Why /128.f ? +DECLARE_SOA_EXPRESSION_COLUMN(CYY, cYY, float, aod::trackfwd::sigmaY* aod::trackfwd::sigmaY); +DECLARE_SOA_EXPRESSION_COLUMN(CPhiX, cPhiX, float, (aod::trackfwd::rhoPhiX / 128.f) * (aod::trackfwd::sigmaPhi * aod::trackfwd::sigmaX)); +DECLARE_SOA_EXPRESSION_COLUMN(CPhiY, cPhiY, float, (aod::trackfwd::rhoPhiY / 128.f) * (aod::trackfwd::sigmaPhi * aod::trackfwd::sigmaY)); +DECLARE_SOA_EXPRESSION_COLUMN(CPhiPhi, cPhiPhi, float, aod::trackfwd::sigmaPhi* aod::trackfwd::sigmaPhi); +DECLARE_SOA_EXPRESSION_COLUMN(CTglX, cTglX, float, (aod::trackfwd::rhoTglX / 128.f) * (aod::trackfwd::sigmaTgl * aod::trackfwd::sigmaX)); +DECLARE_SOA_EXPRESSION_COLUMN(CTglY, cTglY, float, (aod::trackfwd::rhoTglY / 128.f) * (aod::trackfwd::sigmaTgl * aod::trackfwd::sigmaY)); +DECLARE_SOA_EXPRESSION_COLUMN(CTglPhi, cTglPhi, float, (aod::trackfwd::rhoTglPhi / 128.f) * (aod::trackfwd::sigmaTgl * aod::trackfwd::sigmaPhi)); +DECLARE_SOA_EXPRESSION_COLUMN(CTglTgl, cTglTgl, float, aod::trackfwd::sigmaTgl* aod::trackfwd::sigmaTgl); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtY, c1PtY, float, (aod::trackfwd::rho1PtY / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaY)); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtX, c1PtX, float, (aod::trackfwd::rho1PtX / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaX)); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtPhi, c1PtPhi, float, (aod::trackfwd::rho1PtPhi / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaPhi)); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtTgl, c1PtTgl, float, (aod::trackfwd::rho1PtTgl / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaTgl)); +DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::trackfwd::sigma1Pt* aod::trackfwd::sigma1Pt); +} // namespace trackfwd + +DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", + o2::soa::Index<>, trackfwd::CollisionId, trackfwd::TrackType, + trackfwd::X, + trackfwd::Y, trackfwd::Z, trackfwd::Phi, trackfwd::Tgl, + trackfwd::Signed1Pt, + // trackfwd::Px, + // trackfwd::Py, + // trackfwd::Pz, + trackfwd::Charge); + +DECLARE_SOA_EXTENDED_TABLE(TracksFwd, StoredTracksFwd, "TRACKFWD:PAR", + aod::trackfwd::Pt, + aod::trackfwd::P, + aod::trackfwd::Eta); + +DECLARE_SOA_TABLE_FULL(StoredTracksCovFwd, "TracksCovFwd", "AOD", "TRACKFWD:PARCOV", + trackfwd::SigmaX, trackfwd::SigmaY, trackfwd::SigmaPhi, trackfwd::SigmaTgl, trackfwd::Sigma1Pt, + trackfwd::RhoXY, trackfwd::RhoPhiY, trackfwd::RhoPhiX, trackfwd::RhoTglX, trackfwd::RhoTglY, + trackfwd::RhoTglPhi, trackfwd::Rho1PtX, trackfwd::Rho1PtY, trackfwd::Rho1PtPhi, trackfwd::Rho1PtTgl); + +DECLARE_SOA_EXTENDED_TABLE(TracksCovFwd, StoredTracksCovFwd, "TRACKFWD:PARCOV", + aod::trackfwd::CXX, + aod::trackfwd::CXY, + aod::trackfwd::CYY, + aod::trackfwd::CPhiX, + aod::trackfwd::CPhiY, + aod::trackfwd::CPhiPhi, + aod::trackfwd::CTglX, + aod::trackfwd::CTglY, + aod::trackfwd::CTglPhi, + aod::trackfwd::CTglTgl, + aod::trackfwd::C1PtX, + aod::trackfwd::C1PtY, + aod::trackfwd::C1PtPhi, + aod::trackfwd::C1PtTgl, + aod::trackfwd::C1Pt21Pt2); + +using TrackFwd = TracksFwd::iterator; +using TrackCovFwd = TracksCovFwd::iterator; + +using FullTracksFwd = soa::Join; +using FullTrackFwd = FullTracksFwd::iterator; + namespace unassignedtracks { DECLARE_SOA_INDEX_COLUMN(Collision, collision); From bbc5824ed2fc4657a23b4e981286ba42db86ff03 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Tue, 2 Feb 2021 11:04:47 +0100 Subject: [PATCH 02/11] Fix AOD tables for forward tracks Add cartesian momenta. New table `TracksExtraFwd` for tracking and detector-specific data. --- .../src/AODJAlienReaderHelpers.cxx | 2 ++ .../include/Framework/AnalysisDataModel.h | 26 ++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx index 3c8e40664ca04..8cdcab9793302 100644 --- a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx +++ b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx @@ -111,6 +111,8 @@ std::vector getColumnNames(header::DataHeader dh) return columnNamesTrait(typename StoredTracksFwdMetadata::table_t::persistent_columns_t{}); } else if (description == "TRACKFWD:PARCOV") { return columnNamesTrait(typename StoredTracksCovMetadata::table_t::persistent_columns_t{}); + } else if (description == "TRACKFWD:EXTRA") { + return columnNamesTrait(typename TracksExtraFwdMetadata::table_t::persistent_columns_t{}); } } diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 2b8524d00b596..40b3fbdb9c493 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -280,6 +280,15 @@ DECLARE_SOA_COLUMN(Signed1Pt, signed1Pt, float); DECLARE_SOA_DYNAMIC_COLUMN(Charge, charge, [](float signed1Pt) -> short { return (signed1Pt > 0) ? 1 : -1; }); DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, -1.f * nlog(ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl)))); DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, nabs(1.f / aod::trackfwd::signed1Pt)); +DECLARE_SOA_DYNAMIC_COLUMN(Px, px, [](float pt, float phi) -> float { + return pt * std::cos(phi); +}); +DECLARE_SOA_DYNAMIC_COLUMN(Py, py, [](float pt, float phi) -> float { + return pt * std::sin(phi); +}); +DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float tgl) -> float { + return pt * tgl; +}); DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, 0.5f * (ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl)) + 1.f / ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl))) / nabs(aod::trackfwd::signed1Pt)); // TRACKPARCOVFWD TABLE definition @@ -314,6 +323,11 @@ DECLARE_SOA_EXPRESSION_COLUMN(C1PtX, c1PtX, float, (aod::trackfwd::rho1PtX / 128 DECLARE_SOA_EXPRESSION_COLUMN(C1PtPhi, c1PtPhi, float, (aod::trackfwd::rho1PtPhi / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaPhi)); DECLARE_SOA_EXPRESSION_COLUMN(C1PtTgl, c1PtTgl, float, (aod::trackfwd::rho1PtTgl / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaTgl)); DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::trackfwd::sigma1Pt* aod::trackfwd::sigma1Pt); + +// TRACKFWDEXTRA TABLE definition +DECLARE_SOA_COLUMN(Chi2, chi2, float); +DECLARE_SOA_COLUMN(Chi2Match, chi2Match, float); + } // namespace trackfwd DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", @@ -321,9 +335,9 @@ DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", trackfwd::X, trackfwd::Y, trackfwd::Z, trackfwd::Phi, trackfwd::Tgl, trackfwd::Signed1Pt, - // trackfwd::Px, - // trackfwd::Py, - // trackfwd::Pz, + trackfwd::Px, + trackfwd::Py, + trackfwd::Pz, trackfwd::Charge); DECLARE_SOA_EXTENDED_TABLE(TracksFwd, StoredTracksFwd, "TRACKFWD:PAR", @@ -353,10 +367,14 @@ DECLARE_SOA_EXTENDED_TABLE(TracksCovFwd, StoredTracksCovFwd, "TRACKFWD:PARCOV", aod::trackfwd::C1PtTgl, aod::trackfwd::C1Pt21Pt2); +DECLARE_SOA_TABLE(TracksExtraFwd, "AOD", "TRACKFWD:EXTRA", + trackfwd::Chi2, trackfwd::Chi2Match); + using TrackFwd = TracksFwd::iterator; using TrackCovFwd = TracksCovFwd::iterator; +using TrackExtraFwd = TracksExtraFwd::iterator; -using FullTracksFwd = soa::Join; +using FullTracksFwd = soa::Join; using FullTrackFwd = FullTracksFwd::iterator; namespace unassignedtracks From 51dfe6a419166a9d48b7d8cf81d1e78955683ae8 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Thu, 4 Feb 2021 12:35:24 +0100 Subject: [PATCH 03/11] Adding RAtAbsorberEnd and PDca to TracksExtraFwd AOD table Both columns will be evaluated at tracking. At the moment using expression columns for debuging purposes. --- Framework/Core/include/Framework/AnalysisDataModel.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 40b3fbdb9c493..2321544c191b4 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -327,7 +327,11 @@ DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::trackfwd::sigma1 // TRACKFWDEXTRA TABLE definition DECLARE_SOA_COLUMN(Chi2, chi2, float); DECLARE_SOA_COLUMN(Chi2Match, chi2Match, float); - +//DECLARE_SOA_COLUMN(PDca, pDca, float); +//DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); +// Expression columns for PDca and RAtAbsorberEnd will be replaced by SOA columns +DECLARE_SOA_EXPRESSION_COLUMN(PDca, pDca, float, (aod::trackfwd::p)*nsqrt((aod::trackfwd::x * aod::trackfwd::x) + (aod::trackfwd::y * aod::trackfwd::y) + (aod::trackfwd::z * aod::trackfwd::z))); +DECLARE_SOA_EXPRESSION_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float, nsqrt((aod::trackfwd::x + (-505. - aod::trackfwd::z) * ncos(aod::trackfwd::phi) / aod::trackfwd::tgl) * (aod::trackfwd::x + (-505. - aod::trackfwd::z) * ncos(aod::trackfwd::phi) / aod::trackfwd::tgl) + (aod::trackfwd::y + (-505. - aod::trackfwd::z) * nsin(aod::trackfwd::phi) / aod::trackfwd::tgl) * (aod::trackfwd::y + (-505. - aod::trackfwd::z) * nsin(aod::trackfwd::phi) / aod::trackfwd::tgl))); } // namespace trackfwd DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", @@ -368,7 +372,7 @@ DECLARE_SOA_EXTENDED_TABLE(TracksCovFwd, StoredTracksCovFwd, "TRACKFWD:PARCOV", aod::trackfwd::C1Pt21Pt2); DECLARE_SOA_TABLE(TracksExtraFwd, "AOD", "TRACKFWD:EXTRA", - trackfwd::Chi2, trackfwd::Chi2Match); + trackfwd::Chi2, trackfwd::Chi2Match, trackfwd::PDca, trackfwd::RAtAbsorberEnd); using TrackFwd = TracksFwd::iterator; using TrackCovFwd = TracksCovFwd::iterator; From 7dfb2e63b44ef7862bcb7776b4b6da5ed7ab8e37 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Thu, 4 Feb 2021 15:02:35 +0100 Subject: [PATCH 04/11] Adding enum for forward tracks types in AODs --- Framework/Core/include/Framework/AnalysisDataModel.h | 2 +- Framework/Core/include/Framework/DataTypes.h | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 2321544c191b4..46ffca657973d 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -269,7 +269,7 @@ namespace trackfwd { // TRACKPARFWD TABLE definition DECLARE_SOA_INDEX_COLUMN(Collision, collision); -DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); // TODO change to TrackTypeEnum when enums are supported +DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); // TODO change to ForwardTrackTypeEnum when enums are supported DECLARE_SOA_COLUMN(X, x, float); DECLARE_SOA_COLUMN(Y, y, float); DECLARE_SOA_COLUMN(Z, z, float); diff --git a/Framework/Core/include/Framework/DataTypes.h b/Framework/Core/include/Framework/DataTypes.h index 9ea0d1f9fb4c3..926a29a0b5af9 100644 --- a/Framework/Core/include/Framework/DataTypes.h +++ b/Framework/Core/include/Framework/DataTypes.h @@ -17,7 +17,6 @@ namespace o2::aod::track enum TrackTypeEnum : uint8_t { GlobalTrack = 0, ITSStandalone, - MFTStandalone, Run2GlobalTrack = 254, Run2Tracklet = 255 }; @@ -28,4 +27,13 @@ enum TrackFlagsRun2Enum { }; } // namespace o2::aod::track +namespace o2::aod::trackfwd +{ +enum ForwardTrackTypeEnum : uint8_t { + GlobalMuonTrack = 0, + MCHStandalone, + MFTStandalone, +}; +} // namespace o2::aod::trackfwd + #endif // O2_FRAMEWORK_DATATYPES_H_ From 4fa98a3a89b6776fd1b81bd9cdf66dae6fe78fda Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Thu, 4 Feb 2021 15:32:41 +0100 Subject: [PATCH 05/11] Add Chi2s, matching scores and ranking on forward tracks AOD table --- Framework/Core/include/Framework/AnalysisDataModel.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 46ffca657973d..dd4b0e2cbadf8 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -326,12 +326,15 @@ DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::trackfwd::sigma1 // TRACKFWDEXTRA TABLE definition DECLARE_SOA_COLUMN(Chi2, chi2, float); -DECLARE_SOA_COLUMN(Chi2Match, chi2Match, float); //DECLARE_SOA_COLUMN(PDca, pDca, float); //DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); // Expression columns for PDca and RAtAbsorberEnd will be replaced by SOA columns DECLARE_SOA_EXPRESSION_COLUMN(PDca, pDca, float, (aod::trackfwd::p)*nsqrt((aod::trackfwd::x * aod::trackfwd::x) + (aod::trackfwd::y * aod::trackfwd::y) + (aod::trackfwd::z * aod::trackfwd::z))); DECLARE_SOA_EXPRESSION_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float, nsqrt((aod::trackfwd::x + (-505. - aod::trackfwd::z) * ncos(aod::trackfwd::phi) / aod::trackfwd::tgl) * (aod::trackfwd::x + (-505. - aod::trackfwd::z) * ncos(aod::trackfwd::phi) / aod::trackfwd::tgl) + (aod::trackfwd::y + (-505. - aod::trackfwd::z) * nsin(aod::trackfwd::phi) / aod::trackfwd::tgl) * (aod::trackfwd::y + (-505. - aod::trackfwd::z) * nsin(aod::trackfwd::phi) / aod::trackfwd::tgl))); +DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2matchmchmid, float); +DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2matchmchmft, float); +DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchscoremchmft, float); +DECLARE_SOA_COLUMN(GlobalMuonTrackRank, globalmuontrackrank, uint8_t); } // namespace trackfwd DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", @@ -372,7 +375,9 @@ DECLARE_SOA_EXTENDED_TABLE(TracksCovFwd, StoredTracksCovFwd, "TRACKFWD:PARCOV", aod::trackfwd::C1Pt21Pt2); DECLARE_SOA_TABLE(TracksExtraFwd, "AOD", "TRACKFWD:EXTRA", - trackfwd::Chi2, trackfwd::Chi2Match, trackfwd::PDca, trackfwd::RAtAbsorberEnd); + trackfwd::Chi2, trackfwd::Chi2MatchMCHMID, trackfwd::Chi2MatchMCHMFT, + trackfwd::MatchScoreMCHMFT, trackfwd::GlobalMuonTrackRank, trackfwd::PDca, + trackfwd::RAtAbsorberEnd); using TrackFwd = TracksFwd::iterator; using TrackCovFwd = TracksCovFwd::iterator; From 1f4bf61cecdfc5dc49626088cebe8169d8903aa9 Mon Sep 17 00:00:00 2001 From: rpezzi Date: Tue, 9 Feb 2021 10:05:25 +0100 Subject: [PATCH 06/11] Naming MUONStandalone tracktype on DataTypes.h --- Framework/Core/include/Framework/DataTypes.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Framework/Core/include/Framework/DataTypes.h b/Framework/Core/include/Framework/DataTypes.h index 926a29a0b5af9..0c758fb292c7c 100644 --- a/Framework/Core/include/Framework/DataTypes.h +++ b/Framework/Core/include/Framework/DataTypes.h @@ -31,7 +31,7 @@ namespace o2::aod::trackfwd { enum ForwardTrackTypeEnum : uint8_t { GlobalMuonTrack = 0, - MCHStandalone, + MUONStandalone, MFTStandalone, }; } // namespace o2::aod::trackfwd From d14f0c6d42a8b0c90cbf84aef25f16454008ff96 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Tue, 9 Feb 2021 18:20:09 +0100 Subject: [PATCH 07/11] Fix dummy columns on forward AOD tables, add comments, better naming --- .../include/Framework/AnalysisDataModel.h | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index dd4b0e2cbadf8..9b0d5eb70a44e 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -270,7 +270,7 @@ namespace trackfwd // TRACKPARFWD TABLE definition DECLARE_SOA_INDEX_COLUMN(Collision, collision); DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); // TODO change to ForwardTrackTypeEnum when enums are supported -DECLARE_SOA_COLUMN(X, x, float); +DECLARE_SOA_COLUMN(X, x, float); // TrackParFwd parameters: x, y, z, phi, tan(lamba), q/pt DECLARE_SOA_COLUMN(Y, y, float); DECLARE_SOA_COLUMN(Z, z, float); DECLARE_SOA_COLUMN(Phi, phi, float); @@ -309,7 +309,7 @@ DECLARE_SOA_COLUMN(Rho1PtPhi, rho1PtPhi, int8_t); DECLARE_SOA_COLUMN(Rho1PtTgl, rho1PtTgl, int8_t); DECLARE_SOA_EXPRESSION_COLUMN(CXX, cXX, float, aod::trackfwd::sigmaX* aod::trackfwd::sigmaX); -DECLARE_SOA_EXPRESSION_COLUMN(CXY, cXY, float, (aod::trackfwd::rhoXY / 128.f) * (aod::trackfwd::sigmaX * aod::trackfwd::sigmaY)); //Why /128.f ? +DECLARE_SOA_EXPRESSION_COLUMN(CXY, cXY, float, (aod::trackfwd::rhoXY / 128.f) * (aod::trackfwd::sigmaX * aod::trackfwd::sigmaY)); DECLARE_SOA_EXPRESSION_COLUMN(CYY, cYY, float, aod::trackfwd::sigmaY* aod::trackfwd::sigmaY); DECLARE_SOA_EXPRESSION_COLUMN(CPhiX, cPhiX, float, (aod::trackfwd::rhoPhiX / 128.f) * (aod::trackfwd::sigmaPhi * aod::trackfwd::sigmaX)); DECLARE_SOA_EXPRESSION_COLUMN(CPhiY, cPhiY, float, (aod::trackfwd::rhoPhiY / 128.f) * (aod::trackfwd::sigmaPhi * aod::trackfwd::sigmaY)); @@ -326,15 +326,12 @@ DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::trackfwd::sigma1 // TRACKFWDEXTRA TABLE definition DECLARE_SOA_COLUMN(Chi2, chi2, float); -//DECLARE_SOA_COLUMN(PDca, pDca, float); -//DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); -// Expression columns for PDca and RAtAbsorberEnd will be replaced by SOA columns -DECLARE_SOA_EXPRESSION_COLUMN(PDca, pDca, float, (aod::trackfwd::p)*nsqrt((aod::trackfwd::x * aod::trackfwd::x) + (aod::trackfwd::y * aod::trackfwd::y) + (aod::trackfwd::z * aod::trackfwd::z))); -DECLARE_SOA_EXPRESSION_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float, nsqrt((aod::trackfwd::x + (-505. - aod::trackfwd::z) * ncos(aod::trackfwd::phi) / aod::trackfwd::tgl) * (aod::trackfwd::x + (-505. - aod::trackfwd::z) * ncos(aod::trackfwd::phi) / aod::trackfwd::tgl) + (aod::trackfwd::y + (-505. - aod::trackfwd::z) * nsin(aod::trackfwd::phi) / aod::trackfwd::tgl) * (aod::trackfwd::y + (-505. - aod::trackfwd::z) * nsin(aod::trackfwd::phi) / aod::trackfwd::tgl))); -DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2matchmchmid, float); -DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2matchmchmft, float); -DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchscoremchmft, float); -DECLARE_SOA_COLUMN(GlobalMuonTrackRank, globalmuontrackrank, uint8_t); +DECLARE_SOA_COLUMN(PDca, pDca, float); // PDca for MUONStandalone tracks +DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); // RAtAbsorberEnd for MUONStandalone tracks +DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2matchmchmid, float); // MCH-MID Match Chi2 for MUONStandalone tracks +DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2matchmchmft, float); // MCH-MFT Match Chi2 for GlobalMuonTracks +DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchscoremchmft, float); // MCH-MFT ML Matching Score for GlobalMuonTracks +DECLARE_SOA_COLUMN(MatchingTrackID, MatchingTrackID, int32_t); // ID(s) of matching track(s). } // namespace trackfwd DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", From a52a5414b9355dcc97102f86615749ea7130a567 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Wed, 17 Feb 2021 10:23:41 +0100 Subject: [PATCH 08/11] Add nClusters and IDs of matched MFT and MCH tracks to trackfwd tables --- Framework/Core/include/Framework/AnalysisDataModel.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 9b0d5eb70a44e..a8ecef1c55ca7 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -325,13 +325,15 @@ DECLARE_SOA_EXPRESSION_COLUMN(C1PtTgl, c1PtTgl, float, (aod::trackfwd::rho1PtTgl DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::trackfwd::sigma1Pt* aod::trackfwd::sigma1Pt); // TRACKFWDEXTRA TABLE definition +DECLARE_SOA_COLUMN(NClusters, nClusters, int8_t); DECLARE_SOA_COLUMN(Chi2, chi2, float); DECLARE_SOA_COLUMN(PDca, pDca, float); // PDca for MUONStandalone tracks DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); // RAtAbsorberEnd for MUONStandalone tracks -DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2matchmchmid, float); // MCH-MID Match Chi2 for MUONStandalone tracks -DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2matchmchmft, float); // MCH-MFT Match Chi2 for GlobalMuonTracks -DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchscoremchmft, float); // MCH-MFT ML Matching Score for GlobalMuonTracks -DECLARE_SOA_COLUMN(MatchingTrackID, MatchingTrackID, int32_t); // ID(s) of matching track(s). +DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2MatchMCHMID, float); // MCH-MID Match Chi2 for MUONStandalone tracks +DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2MatchMCHMFT, float); // MCH-MFT Match Chi2 for GlobalMuonTracks +DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchScoreMCHMFT, float); // MCH-MFT Machine Learning Matching Score for GlobalMuonTracks +DECLARE_SOA_COLUMN(MatchMFTTrackID, matchMFTTrackID, int16_t); // ID of matching MFT track for GlobalMuonTracks +DECLARE_SOA_COLUMN(MatchMCHTrackID, matchMCHTrackID, int8_t); // ID of matching MCH track for GlobalMuonTracks } // namespace trackfwd DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", From 53a5f0968a078190b3f05d87a4ebbba5cb8d6724 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Tue, 23 Feb 2021 22:38:13 +0100 Subject: [PATCH 09/11] Splitting AOD tables for MFTStandalone and other fwdtracks This PR implements what has been discussed last week, among other small fixes: - Drop storage of MFTStandalone tracks covariances - Add forward track-types - Add table for unassigned forward tracks - Namespace + descriptions renamed for more natural reading - trackfwd -> fwdtrack - IDs of MFT and MCH matched tracks - integers while self indexing within a table is not implemented - Bunch crossing IDs --- .../src/AODJAlienReaderHelpers.cxx | 12 +- .../include/Framework/AnalysisDataModel.h | 183 ++++++++++-------- Framework/Core/include/Framework/DataTypes.h | 11 +- 3 files changed, 114 insertions(+), 92 deletions(-) diff --git a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx index 8cdcab9793302..61c170d2a2b24 100644 --- a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx +++ b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx @@ -107,12 +107,12 @@ std::vector getColumnNames(header::DataHeader dh) return columnNamesTrait(typename StoredTracksCovMetadata::table_t::persistent_columns_t{}); } else if (description == "TRACK:EXTRA") { return columnNamesTrait(typename TracksExtraMetadata::table_t::persistent_columns_t{}); - } else if (description == "TRACKFWD:PAR") { - return columnNamesTrait(typename StoredTracksFwdMetadata::table_t::persistent_columns_t{}); - } else if (description == "TRACKFWD:PARCOV") { - return columnNamesTrait(typename StoredTracksCovMetadata::table_t::persistent_columns_t{}); - } else if (description == "TRACKFWD:EXTRA") { - return columnNamesTrait(typename TracksExtraFwdMetadata::table_t::persistent_columns_t{}); + } else if (description == "FWDTRACK:PAR") { + return columnNamesTrait(typename StoredFwdTracksMetadata::table_t::persistent_columns_t{}); + } else if (description == "FWDTRACK:PARCOV") { + return columnNamesTrait(typename StoredFwdTracksCovMetadata::table_t::persistent_columns_t{}); + } else if (description == "FWDTRACK:MFTPAR") { + return columnNamesTrait(typename MFTTracksMetadata::table_t::persistent_columns_t{}); } } diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index a8ecef1c55ca7..dd61bb04831ae 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -265,10 +265,11 @@ using TrackExtra = TracksExtra::iterator; using FullTracks = soa::Join; using FullTrack = FullTracks::iterator; -namespace trackfwd +namespace fwdtrack { -// TRACKPARFWD TABLE definition +// FWDTRACKPAR and MFTTrack TABLE definition DECLARE_SOA_INDEX_COLUMN(Collision, collision); +DECLARE_SOA_INDEX_COLUMN(BC, bc); DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); // TODO change to ForwardTrackTypeEnum when enums are supported DECLARE_SOA_COLUMN(X, x, float); // TrackParFwd parameters: x, y, z, phi, tan(lamba), q/pt DECLARE_SOA_COLUMN(Y, y, float); @@ -276,10 +277,19 @@ DECLARE_SOA_COLUMN(Z, z, float); DECLARE_SOA_COLUMN(Phi, phi, float); DECLARE_SOA_COLUMN(Tgl, tgl, float); DECLARE_SOA_COLUMN(Signed1Pt, signed1Pt, float); +DECLARE_SOA_COLUMN(NClusters, nClusters, int8_t); // For MFTStandalone only +DECLARE_SOA_COLUMN(Chi2, chi2, float); +DECLARE_SOA_COLUMN(PDca, pDca, float); // PDca for MUONStandalone +DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); // RAtAbsorberEnd for MUONStandalone tracks and GlobalMuonTrackstracks +DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2MatchMCHMID, float); // MCH-MID Match Chi2 for MUONStandalone tracks +DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2MatchMCHMFT, float); // MCH-MFT Match Chi2 for GlobalMuonTracks +DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchScoreMCHMFT, float); // MCH-MFT Machine Learning Matching Score for GlobalMuonTracks +DECLARE_SOA_COLUMN(MatchMFTTrackID, matchMFTTrackID, int); // ID of matching MFT track for GlobalMuonTrack (ints while self indexing not available) +DECLARE_SOA_COLUMN(MatchMCHTrackID, matchMCHTrackID, int); // ID of matching MCH track for GlobalMuonTracks (ints while self indexing not available) DECLARE_SOA_DYNAMIC_COLUMN(Charge, charge, [](float signed1Pt) -> short { return (signed1Pt > 0) ? 1 : -1; }); -DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, -1.f * nlog(ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl)))); -DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, nabs(1.f / aod::trackfwd::signed1Pt)); +DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, -1.f * nlog(ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::fwdtrack::tgl)))); +DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, nabs(1.f / aod::fwdtrack::signed1Pt)); DECLARE_SOA_DYNAMIC_COLUMN(Px, px, [](float pt, float phi) -> float { return pt * std::cos(phi); }); @@ -289,9 +299,9 @@ DECLARE_SOA_DYNAMIC_COLUMN(Py, py, [](float pt, float phi) -> float { DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float tgl) -> float { return pt * tgl; }); -DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, 0.5f * (ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl)) + 1.f / ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::trackfwd::tgl))) / nabs(aod::trackfwd::signed1Pt)); +DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, 0.5f * (ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::fwdtrack::tgl)) + 1.f / ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::fwdtrack::tgl))) / nabs(aod::fwdtrack::signed1Pt)); -// TRACKPARCOVFWD TABLE definition +// FWDTRACKPARCOV TABLE definition DECLARE_SOA_COLUMN(SigmaX, sigmaX, float); DECLARE_SOA_COLUMN(SigmaY, sigmaY, float); DECLARE_SOA_COLUMN(SigmaPhi, sigmaPhi, float); @@ -308,82 +318,80 @@ DECLARE_SOA_COLUMN(Rho1PtY, rho1PtY, int8_t); DECLARE_SOA_COLUMN(Rho1PtPhi, rho1PtPhi, int8_t); DECLARE_SOA_COLUMN(Rho1PtTgl, rho1PtTgl, int8_t); -DECLARE_SOA_EXPRESSION_COLUMN(CXX, cXX, float, aod::trackfwd::sigmaX* aod::trackfwd::sigmaX); -DECLARE_SOA_EXPRESSION_COLUMN(CXY, cXY, float, (aod::trackfwd::rhoXY / 128.f) * (aod::trackfwd::sigmaX * aod::trackfwd::sigmaY)); -DECLARE_SOA_EXPRESSION_COLUMN(CYY, cYY, float, aod::trackfwd::sigmaY* aod::trackfwd::sigmaY); -DECLARE_SOA_EXPRESSION_COLUMN(CPhiX, cPhiX, float, (aod::trackfwd::rhoPhiX / 128.f) * (aod::trackfwd::sigmaPhi * aod::trackfwd::sigmaX)); -DECLARE_SOA_EXPRESSION_COLUMN(CPhiY, cPhiY, float, (aod::trackfwd::rhoPhiY / 128.f) * (aod::trackfwd::sigmaPhi * aod::trackfwd::sigmaY)); -DECLARE_SOA_EXPRESSION_COLUMN(CPhiPhi, cPhiPhi, float, aod::trackfwd::sigmaPhi* aod::trackfwd::sigmaPhi); -DECLARE_SOA_EXPRESSION_COLUMN(CTglX, cTglX, float, (aod::trackfwd::rhoTglX / 128.f) * (aod::trackfwd::sigmaTgl * aod::trackfwd::sigmaX)); -DECLARE_SOA_EXPRESSION_COLUMN(CTglY, cTglY, float, (aod::trackfwd::rhoTglY / 128.f) * (aod::trackfwd::sigmaTgl * aod::trackfwd::sigmaY)); -DECLARE_SOA_EXPRESSION_COLUMN(CTglPhi, cTglPhi, float, (aod::trackfwd::rhoTglPhi / 128.f) * (aod::trackfwd::sigmaTgl * aod::trackfwd::sigmaPhi)); -DECLARE_SOA_EXPRESSION_COLUMN(CTglTgl, cTglTgl, float, aod::trackfwd::sigmaTgl* aod::trackfwd::sigmaTgl); -DECLARE_SOA_EXPRESSION_COLUMN(C1PtY, c1PtY, float, (aod::trackfwd::rho1PtY / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaY)); -DECLARE_SOA_EXPRESSION_COLUMN(C1PtX, c1PtX, float, (aod::trackfwd::rho1PtX / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaX)); -DECLARE_SOA_EXPRESSION_COLUMN(C1PtPhi, c1PtPhi, float, (aod::trackfwd::rho1PtPhi / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaPhi)); -DECLARE_SOA_EXPRESSION_COLUMN(C1PtTgl, c1PtTgl, float, (aod::trackfwd::rho1PtTgl / 128.f) * (aod::trackfwd::sigma1Pt * aod::trackfwd::sigmaTgl)); -DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::trackfwd::sigma1Pt* aod::trackfwd::sigma1Pt); - -// TRACKFWDEXTRA TABLE definition -DECLARE_SOA_COLUMN(NClusters, nClusters, int8_t); -DECLARE_SOA_COLUMN(Chi2, chi2, float); -DECLARE_SOA_COLUMN(PDca, pDca, float); // PDca for MUONStandalone tracks -DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); // RAtAbsorberEnd for MUONStandalone tracks -DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2MatchMCHMID, float); // MCH-MID Match Chi2 for MUONStandalone tracks -DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2MatchMCHMFT, float); // MCH-MFT Match Chi2 for GlobalMuonTracks -DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchScoreMCHMFT, float); // MCH-MFT Machine Learning Matching Score for GlobalMuonTracks -DECLARE_SOA_COLUMN(MatchMFTTrackID, matchMFTTrackID, int16_t); // ID of matching MFT track for GlobalMuonTracks -DECLARE_SOA_COLUMN(MatchMCHTrackID, matchMCHTrackID, int8_t); // ID of matching MCH track for GlobalMuonTracks -} // namespace trackfwd - -DECLARE_SOA_TABLE_FULL(StoredTracksFwd, "TracksFwd", "AOD", "TRACKFWD:PAR", - o2::soa::Index<>, trackfwd::CollisionId, trackfwd::TrackType, - trackfwd::X, - trackfwd::Y, trackfwd::Z, trackfwd::Phi, trackfwd::Tgl, - trackfwd::Signed1Pt, - trackfwd::Px, - trackfwd::Py, - trackfwd::Pz, - trackfwd::Charge); - -DECLARE_SOA_EXTENDED_TABLE(TracksFwd, StoredTracksFwd, "TRACKFWD:PAR", - aod::trackfwd::Pt, - aod::trackfwd::P, - aod::trackfwd::Eta); - -DECLARE_SOA_TABLE_FULL(StoredTracksCovFwd, "TracksCovFwd", "AOD", "TRACKFWD:PARCOV", - trackfwd::SigmaX, trackfwd::SigmaY, trackfwd::SigmaPhi, trackfwd::SigmaTgl, trackfwd::Sigma1Pt, - trackfwd::RhoXY, trackfwd::RhoPhiY, trackfwd::RhoPhiX, trackfwd::RhoTglX, trackfwd::RhoTglY, - trackfwd::RhoTglPhi, trackfwd::Rho1PtX, trackfwd::Rho1PtY, trackfwd::Rho1PtPhi, trackfwd::Rho1PtTgl); - -DECLARE_SOA_EXTENDED_TABLE(TracksCovFwd, StoredTracksCovFwd, "TRACKFWD:PARCOV", - aod::trackfwd::CXX, - aod::trackfwd::CXY, - aod::trackfwd::CYY, - aod::trackfwd::CPhiX, - aod::trackfwd::CPhiY, - aod::trackfwd::CPhiPhi, - aod::trackfwd::CTglX, - aod::trackfwd::CTglY, - aod::trackfwd::CTglPhi, - aod::trackfwd::CTglTgl, - aod::trackfwd::C1PtX, - aod::trackfwd::C1PtY, - aod::trackfwd::C1PtPhi, - aod::trackfwd::C1PtTgl, - aod::trackfwd::C1Pt21Pt2); - -DECLARE_SOA_TABLE(TracksExtraFwd, "AOD", "TRACKFWD:EXTRA", - trackfwd::Chi2, trackfwd::Chi2MatchMCHMID, trackfwd::Chi2MatchMCHMFT, - trackfwd::MatchScoreMCHMFT, trackfwd::GlobalMuonTrackRank, trackfwd::PDca, - trackfwd::RAtAbsorberEnd); - -using TrackFwd = TracksFwd::iterator; -using TrackCovFwd = TracksCovFwd::iterator; -using TrackExtraFwd = TracksExtraFwd::iterator; - -using FullTracksFwd = soa::Join; -using FullTrackFwd = FullTracksFwd::iterator; +DECLARE_SOA_EXPRESSION_COLUMN(CXX, cXX, float, aod::fwdtrack::sigmaX* aod::fwdtrack::sigmaX); +DECLARE_SOA_EXPRESSION_COLUMN(CXY, cXY, float, (aod::fwdtrack::rhoXY / 128.f) * (aod::fwdtrack::sigmaX * aod::fwdtrack::sigmaY)); +DECLARE_SOA_EXPRESSION_COLUMN(CYY, cYY, float, aod::fwdtrack::sigmaY* aod::fwdtrack::sigmaY); +DECLARE_SOA_EXPRESSION_COLUMN(CPhiX, cPhiX, float, (aod::fwdtrack::rhoPhiX / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaX)); +DECLARE_SOA_EXPRESSION_COLUMN(CPhiY, cPhiY, float, (aod::fwdtrack::rhoPhiY / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaY)); +DECLARE_SOA_EXPRESSION_COLUMN(CPhiPhi, cPhiPhi, float, aod::fwdtrack::sigmaPhi* aod::fwdtrack::sigmaPhi); +DECLARE_SOA_EXPRESSION_COLUMN(CTglX, cTglX, float, (aod::fwdtrack::rhoTglX / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaX)); +DECLARE_SOA_EXPRESSION_COLUMN(CTglY, cTglY, float, (aod::fwdtrack::rhoTglY / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaY)); +DECLARE_SOA_EXPRESSION_COLUMN(CTglPhi, cTglPhi, float, (aod::fwdtrack::rhoTglPhi / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaPhi)); +DECLARE_SOA_EXPRESSION_COLUMN(CTglTgl, cTglTgl, float, aod::fwdtrack::sigmaTgl* aod::fwdtrack::sigmaTgl); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtY, c1PtY, float, (aod::fwdtrack::rho1PtY / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaY)); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtX, c1PtX, float, (aod::fwdtrack::rho1PtX / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaX)); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtPhi, c1PtPhi, float, (aod::fwdtrack::rho1PtPhi / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaPhi)); +DECLARE_SOA_EXPRESSION_COLUMN(C1PtTgl, c1PtTgl, float, (aod::fwdtrack::rho1PtTgl / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaTgl)); +DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::fwdtrack::sigma1Pt* aod::fwdtrack::sigma1Pt); + +} // namespace fwdtrack + +//Table for MFTStandalone tracks +DECLARE_SOA_TABLE_FULL(MFTTracks, "MFTTracks", "AOD", "FWDTRACK:MFTPAR", + o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::BCId, fwdtrack::TrackType, + fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl, + fwdtrack::Signed1Pt, + fwdtrack::Px, + fwdtrack::Py, + fwdtrack::Pz, + fwdtrack::Charge, fwdtrack::Chi2); + +//Tables for MUONStandalone and GlobalForwardTracks +DECLARE_SOA_TABLE_FULL(StoredFwdTracks, "FwdTracks", "AOD", "FWDTRACK:PAR", + o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::BCId, fwdtrack::TrackType, + fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl, + fwdtrack::Signed1Pt, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd, + fwdtrack::Px, + fwdtrack::Py, + fwdtrack::Pz, + fwdtrack::Charge, + fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT, + fwdtrack::MatchScoreMCHMFT, fwdtrack::MatchMFTTrackID, fwdtrack::MatchMCHTrackID); + +DECLARE_SOA_EXTENDED_TABLE(FwdTracks, StoredFwdTracks, "FWDTRACK:PAR", + aod::fwdtrack::Pt, + aod::fwdtrack::P, + aod::fwdtrack::Eta); + +DECLARE_SOA_TABLE_FULL(StoredFwdTracksCov, "FwdTracksCov", "AOD", "FWDTRACK:PARCOV", + fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt, + fwdtrack::RhoXY, fwdtrack::RhoPhiY, fwdtrack::RhoPhiX, fwdtrack::RhoTglX, fwdtrack::RhoTglY, + fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl); + +DECLARE_SOA_EXTENDED_TABLE(FwdTracksCov, StoredFwdTracksCov, "FWDTRACK:PARCOV", + aod::fwdtrack::CXX, + aod::fwdtrack::CXY, + aod::fwdtrack::CYY, + aod::fwdtrack::CPhiX, + aod::fwdtrack::CPhiY, + aod::fwdtrack::CPhiPhi, + aod::fwdtrack::CTglX, + aod::fwdtrack::CTglY, + aod::fwdtrack::CTglPhi, + aod::fwdtrack::CTglTgl, + aod::fwdtrack::C1PtX, + aod::fwdtrack::C1PtY, + aod::fwdtrack::C1PtPhi, + aod::fwdtrack::C1PtTgl, + aod::fwdtrack::C1Pt21Pt2); + +using FwdTrack = FwdTracks::iterator; +using FwdTrackCov = FwdTracksCov::iterator; + +using FullFwdTracks = soa::Join; +using FullFwdTrack = FullFwdTracks::iterator; + +using MFTTrack = MFTTracks::iterator; namespace unassignedtracks { @@ -396,6 +404,17 @@ DECLARE_SOA_TABLE(UnassignedTracks, "AOD", "UNASSIGNEDTRACK", using UnassignedTrack = UnassignedTracks::iterator; +namespace unassignedfwdtracks +{ +DECLARE_SOA_INDEX_COLUMN(Collision, collision); +DECLARE_SOA_INDEX_COLUMN(FwdTrack, fwdtrack); +} // namespace unassignedfwdtracks + +DECLARE_SOA_TABLE(UnassignedFwdTracks, "AOD", "UNASSIGNEDFWDTR", + unassignedfwdtracks::CollisionId, unassignedfwdtracks::FwdTrackId); + +using UnassignedFwdTrack = UnassignedFwdTracks::iterator; + namespace calo { DECLARE_SOA_INDEX_COLUMN(BC, bc); diff --git a/Framework/Core/include/Framework/DataTypes.h b/Framework/Core/include/Framework/DataTypes.h index 0c758fb292c7c..7b9f635d402a1 100644 --- a/Framework/Core/include/Framework/DataTypes.h +++ b/Framework/Core/include/Framework/DataTypes.h @@ -27,13 +27,16 @@ enum TrackFlagsRun2Enum { }; } // namespace o2::aod::track -namespace o2::aod::trackfwd +namespace o2::aod::fwdtrack { enum ForwardTrackTypeEnum : uint8_t { - GlobalMuonTrack = 0, - MUONStandalone, + MUONStandalone = 0, MFTStandalone, + GlobalMuonTrack, + GlobalMuonTrackBestMatch, + MCHStandalone, + GlobalForwardTrack }; -} // namespace o2::aod::trackfwd +} // namespace o2::aod::fwdtrack #endif // O2_FRAMEWORK_DATATYPES_H_ From a31fa55ed71e7e5ceb9cda8f98e8e69276093b4c Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Wed, 24 Feb 2021 20:21:44 +0100 Subject: [PATCH 10/11] Fixes for mft and fwdtracks AOD tables - Drop MFTStandalone from ForwardTrackTypeEnum - Adopt GlobalMuonTrackOtherMatch - Fix MFTTracks table description --- Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx | 2 -- Framework/Core/include/Framework/AnalysisDataModel.h | 4 ++-- Framework/Core/include/Framework/DataTypes.h | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx index 61c170d2a2b24..fe308adc094dd 100644 --- a/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx +++ b/Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx @@ -111,8 +111,6 @@ std::vector getColumnNames(header::DataHeader dh) return columnNamesTrait(typename StoredFwdTracksMetadata::table_t::persistent_columns_t{}); } else if (description == "FWDTRACK:PARCOV") { return columnNamesTrait(typename StoredFwdTracksCovMetadata::table_t::persistent_columns_t{}); - } else if (description == "FWDTRACK:MFTPAR") { - return columnNamesTrait(typename MFTTracksMetadata::table_t::persistent_columns_t{}); } } diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index dd61bb04831ae..4273db2aec8e5 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -337,7 +337,7 @@ DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::fwdtrack::sigma1 } // namespace fwdtrack //Table for MFTStandalone tracks -DECLARE_SOA_TABLE_FULL(MFTTracks, "MFTTracks", "AOD", "FWDTRACK:MFTPAR", +DECLARE_SOA_TABLE_FULL(MFTTracks, "MFTTracks", "AOD", "MFTTRACK", o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::BCId, fwdtrack::TrackType, fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl, fwdtrack::Signed1Pt, @@ -386,7 +386,7 @@ DECLARE_SOA_EXTENDED_TABLE(FwdTracksCov, StoredFwdTracksCov, "FWDTRACK:PARCOV", aod::fwdtrack::C1Pt21Pt2); using FwdTrack = FwdTracks::iterator; -using FwdTrackCov = FwdTracksCov::iterator; +using FwdTrackCovFwd = FwdTracksCov::iterator; using FullFwdTracks = soa::Join; using FullFwdTrack = FullFwdTracks::iterator; diff --git a/Framework/Core/include/Framework/DataTypes.h b/Framework/Core/include/Framework/DataTypes.h index 7b9f635d402a1..7a592e933fda1 100644 --- a/Framework/Core/include/Framework/DataTypes.h +++ b/Framework/Core/include/Framework/DataTypes.h @@ -31,9 +31,8 @@ namespace o2::aod::fwdtrack { enum ForwardTrackTypeEnum : uint8_t { MUONStandalone = 0, - MFTStandalone, GlobalMuonTrack, - GlobalMuonTrackBestMatch, + GlobalMuonTrackOtherMatch, MCHStandalone, GlobalForwardTrack }; From ee1966fa5aa99fa684076f9266c11544b8896496 Mon Sep 17 00:00:00 2001 From: Rafael Pezzi Date: Wed, 3 Mar 2021 15:26:08 +0100 Subject: [PATCH 11/11] Further fixes for mft and fwdtracks AOD tables - Drop BCId and TrackType from MFTStandalone table - Unnassigned tracks table for MFTTracks instead of FwdTracks - SOA_EXTENDED_TABLE for MFTTracks (expression columns) - new order on ForwardTrackTypeEnum --- .../include/Framework/AnalysisDataModel.h | 29 +++++++++++-------- Framework/Core/include/Framework/DataTypes.h | 8 ++--- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/Framework/Core/include/Framework/AnalysisDataModel.h b/Framework/Core/include/Framework/AnalysisDataModel.h index 4273db2aec8e5..24c552ea45729 100644 --- a/Framework/Core/include/Framework/AnalysisDataModel.h +++ b/Framework/Core/include/Framework/AnalysisDataModel.h @@ -267,7 +267,7 @@ using FullTrack = FullTracks::iterator; namespace fwdtrack { -// FWDTRACKPAR and MFTTrack TABLE definition +// FwdTracks and MFTTracks Columns definitions DECLARE_SOA_INDEX_COLUMN(Collision, collision); DECLARE_SOA_INDEX_COLUMN(BC, bc); DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); // TODO change to ForwardTrackTypeEnum when enums are supported @@ -301,7 +301,7 @@ DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float tgl) -> float { }); DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, 0.5f * (ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::fwdtrack::tgl)) + 1.f / ntan(0.25f * static_cast(M_PI) - 0.5f * natan(aod::fwdtrack::tgl))) / nabs(aod::fwdtrack::signed1Pt)); -// FWDTRACKPARCOV TABLE definition +// FwdTracksCov columns definitions DECLARE_SOA_COLUMN(SigmaX, sigmaX, float); DECLARE_SOA_COLUMN(SigmaY, sigmaY, float); DECLARE_SOA_COLUMN(SigmaPhi, sigmaPhi, float); @@ -336,9 +336,9 @@ DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::fwdtrack::sigma1 } // namespace fwdtrack -//Table for MFTStandalone tracks -DECLARE_SOA_TABLE_FULL(MFTTracks, "MFTTracks", "AOD", "MFTTRACK", - o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::BCId, fwdtrack::TrackType, +//Tables for MFTStandalone tracks +DECLARE_SOA_TABLE_FULL(StoredMFTTracks, "MFTTracks", "AOD", "MFTTRACK", + o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl, fwdtrack::Signed1Pt, fwdtrack::Px, @@ -346,7 +346,12 @@ DECLARE_SOA_TABLE_FULL(MFTTracks, "MFTTracks", "AOD", "MFTTRACK", fwdtrack::Pz, fwdtrack::Charge, fwdtrack::Chi2); -//Tables for MUONStandalone and GlobalForwardTracks +DECLARE_SOA_EXTENDED_TABLE(MFTTracks, StoredMFTTracks, "MFTTRACK", + aod::fwdtrack::Eta, + aod::fwdtrack::Pt, + aod::fwdtrack::P); + +//Tables for GlobalMuonTrack, MUONStandalone, MCHStandalone, and GlobalForwardTracks DECLARE_SOA_TABLE_FULL(StoredFwdTracks, "FwdTracks", "AOD", "FWDTRACK:PAR", o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::BCId, fwdtrack::TrackType, fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl, @@ -404,16 +409,16 @@ DECLARE_SOA_TABLE(UnassignedTracks, "AOD", "UNASSIGNEDTRACK", using UnassignedTrack = UnassignedTracks::iterator; -namespace unassignedfwdtracks +namespace unassignedmfttracks { DECLARE_SOA_INDEX_COLUMN(Collision, collision); -DECLARE_SOA_INDEX_COLUMN(FwdTrack, fwdtrack); -} // namespace unassignedfwdtracks +DECLARE_SOA_INDEX_COLUMN(MFTTrack, mfttrack); +} // namespace unassignedmfttracks -DECLARE_SOA_TABLE(UnassignedFwdTracks, "AOD", "UNASSIGNEDFWDTR", - unassignedfwdtracks::CollisionId, unassignedfwdtracks::FwdTrackId); +DECLARE_SOA_TABLE(UnassignedMFTTracks, "AOD", "UNASSIGNEDMFTTR", + unassignedmfttracks::CollisionId, unassignedmfttracks::MFTTrackId); -using UnassignedFwdTrack = UnassignedFwdTracks::iterator; +using UnassignedMFTTrack = UnassignedMFTTracks::iterator; namespace calo { diff --git a/Framework/Core/include/Framework/DataTypes.h b/Framework/Core/include/Framework/DataTypes.h index 7a592e933fda1..c8c64e78ceef9 100644 --- a/Framework/Core/include/Framework/DataTypes.h +++ b/Framework/Core/include/Framework/DataTypes.h @@ -30,11 +30,11 @@ enum TrackFlagsRun2Enum { namespace o2::aod::fwdtrack { enum ForwardTrackTypeEnum : uint8_t { - MUONStandalone = 0, - GlobalMuonTrack, - GlobalMuonTrackOtherMatch, + GlobalMuonTrack = 0, + MUONStandalone, MCHStandalone, - GlobalForwardTrack + GlobalForwardTrack, + GlobalMuonTrackOtherMatch }; } // namespace o2::aod::fwdtrack