Skip to content

Commit 3989626

Browse files
authored
Adding Forward (MFT+Muon) tables (#5623)
1 parent ccf1457 commit 3989626

2 files changed

Lines changed: 155 additions & 2 deletions

File tree

Framework/Core/include/Framework/AnalysisDataModel.h

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,138 @@ using TrackExtra = TracksExtra::iterator;
268268
using FullTracks = soa::Join<Tracks, TracksCov, TracksExtra>;
269269
using FullTrack = FullTracks::iterator;
270270

271+
namespace fwdtrack
272+
{
273+
// FwdTracks and MFTTracks Columns definitions
274+
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
275+
DECLARE_SOA_INDEX_COLUMN(BC, bc);
276+
DECLARE_SOA_COLUMN(TrackType, trackType, uint8_t); // TODO change to ForwardTrackTypeEnum when enums are supported
277+
DECLARE_SOA_COLUMN(X, x, float); // TrackParFwd parameters: x, y, z, phi, tan(lamba), q/pt
278+
DECLARE_SOA_COLUMN(Y, y, float);
279+
DECLARE_SOA_COLUMN(Z, z, float);
280+
DECLARE_SOA_COLUMN(Phi, phi, float);
281+
DECLARE_SOA_COLUMN(Tgl, tgl, float);
282+
DECLARE_SOA_COLUMN(Signed1Pt, signed1Pt, float);
283+
DECLARE_SOA_COLUMN(NClusters, nClusters, int8_t);
284+
DECLARE_SOA_COLUMN(Chi2, chi2, float);
285+
DECLARE_SOA_COLUMN(PDca, pDca, float); // PDca for MUONStandalone
286+
DECLARE_SOA_COLUMN(RAtAbsorberEnd, rAtAbsorberEnd, float); // RAtAbsorberEnd for MUONStandalone tracks and GlobalMuonTrackstracks
287+
DECLARE_SOA_COLUMN(Chi2MatchMCHMID, chi2MatchMCHMID, float); // MCH-MID Match Chi2 for MUONStandalone tracks
288+
DECLARE_SOA_COLUMN(Chi2MatchMCHMFT, chi2MatchMCHMFT, float); // MCH-MFT Match Chi2 for GlobalMuonTracks
289+
DECLARE_SOA_COLUMN(MatchScoreMCHMFT, matchScoreMCHMFT, float); // MCH-MFT Machine Learning Matching Score for GlobalMuonTracks
290+
DECLARE_SOA_COLUMN(MatchMFTTrackID, matchMFTTrackID, int); // ID of matching MFT track for GlobalMuonTrack (ints while self indexing not available)
291+
DECLARE_SOA_COLUMN(MatchMCHTrackID, matchMCHTrackID, int); // ID of matching MCH track for GlobalMuonTracks (ints while self indexing not available)
292+
293+
DECLARE_SOA_DYNAMIC_COLUMN(Sign, sign, [](float signed1Pt) -> short { return (signed1Pt > 0) ? 1 : -1; });
294+
DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, -1.f * nlog(ntan(0.25f * static_cast<float>(M_PI) - 0.5f * natan(aod::fwdtrack::tgl))));
295+
DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, nabs(1.f / aod::fwdtrack::signed1Pt));
296+
DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, 0.5f * (ntan(0.25f * static_cast<float>(M_PI) - 0.5f * natan(aod::fwdtrack::tgl)) + 1.f / ntan(0.25f * static_cast<float>(M_PI) - 0.5f * natan(aod::fwdtrack::tgl))) / nabs(aod::fwdtrack::signed1Pt));
297+
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, [](float pt, float phi) -> float {
298+
return pt * std::cos(phi);
299+
});
300+
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, [](float pt, float phi) -> float {
301+
return pt * std::sin(phi);
302+
});
303+
DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float tgl) -> float {
304+
return pt * tgl;
305+
});
306+
307+
// FwdTracksCov columns definitions
308+
DECLARE_SOA_COLUMN(SigmaX, sigmaX, float);
309+
DECLARE_SOA_COLUMN(SigmaY, sigmaY, float);
310+
DECLARE_SOA_COLUMN(SigmaPhi, sigmaPhi, float);
311+
DECLARE_SOA_COLUMN(SigmaTgl, sigmaTgl, float);
312+
DECLARE_SOA_COLUMN(Sigma1Pt, sigma1Pt, float);
313+
DECLARE_SOA_COLUMN(RhoXY, rhoXY, int8_t);
314+
DECLARE_SOA_COLUMN(RhoPhiX, rhoPhiX, int8_t);
315+
DECLARE_SOA_COLUMN(RhoPhiY, rhoPhiY, int8_t);
316+
DECLARE_SOA_COLUMN(RhoTglX, rhoTglX, int8_t);
317+
DECLARE_SOA_COLUMN(RhoTglY, rhoTglY, int8_t);
318+
DECLARE_SOA_COLUMN(RhoTglPhi, rhoTglPhi, int8_t);
319+
DECLARE_SOA_COLUMN(Rho1PtX, rho1PtX, int8_t);
320+
DECLARE_SOA_COLUMN(Rho1PtY, rho1PtY, int8_t);
321+
DECLARE_SOA_COLUMN(Rho1PtPhi, rho1PtPhi, int8_t);
322+
DECLARE_SOA_COLUMN(Rho1PtTgl, rho1PtTgl, int8_t);
323+
324+
DECLARE_SOA_EXPRESSION_COLUMN(CXX, cXX, float, aod::fwdtrack::sigmaX* aod::fwdtrack::sigmaX);
325+
DECLARE_SOA_EXPRESSION_COLUMN(CXY, cXY, float, (aod::fwdtrack::rhoXY / 128.f) * (aod::fwdtrack::sigmaX * aod::fwdtrack::sigmaY));
326+
DECLARE_SOA_EXPRESSION_COLUMN(CYY, cYY, float, aod::fwdtrack::sigmaY* aod::fwdtrack::sigmaY);
327+
DECLARE_SOA_EXPRESSION_COLUMN(CPhiX, cPhiX, float, (aod::fwdtrack::rhoPhiX / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaX));
328+
DECLARE_SOA_EXPRESSION_COLUMN(CPhiY, cPhiY, float, (aod::fwdtrack::rhoPhiY / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaY));
329+
DECLARE_SOA_EXPRESSION_COLUMN(CPhiPhi, cPhiPhi, float, aod::fwdtrack::sigmaPhi* aod::fwdtrack::sigmaPhi);
330+
DECLARE_SOA_EXPRESSION_COLUMN(CTglX, cTglX, float, (aod::fwdtrack::rhoTglX / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaX));
331+
DECLARE_SOA_EXPRESSION_COLUMN(CTglY, cTglY, float, (aod::fwdtrack::rhoTglY / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaY));
332+
DECLARE_SOA_EXPRESSION_COLUMN(CTglPhi, cTglPhi, float, (aod::fwdtrack::rhoTglPhi / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaPhi));
333+
DECLARE_SOA_EXPRESSION_COLUMN(CTglTgl, cTglTgl, float, aod::fwdtrack::sigmaTgl* aod::fwdtrack::sigmaTgl);
334+
DECLARE_SOA_EXPRESSION_COLUMN(C1PtY, c1PtY, float, (aod::fwdtrack::rho1PtY / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaY));
335+
DECLARE_SOA_EXPRESSION_COLUMN(C1PtX, c1PtX, float, (aod::fwdtrack::rho1PtX / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaX));
336+
DECLARE_SOA_EXPRESSION_COLUMN(C1PtPhi, c1PtPhi, float, (aod::fwdtrack::rho1PtPhi / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaPhi));
337+
DECLARE_SOA_EXPRESSION_COLUMN(C1PtTgl, c1PtTgl, float, (aod::fwdtrack::rho1PtTgl / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaTgl));
338+
DECLARE_SOA_EXPRESSION_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float, aod::fwdtrack::sigma1Pt* aod::fwdtrack::sigma1Pt);
339+
} // namespace fwdtrack
340+
341+
// MFTStandalone tracks
342+
DECLARE_SOA_TABLE_FULL(StoredMFTTracks, "MFTTracks", "AOD", "MFTTRACK",
343+
o2::soa::Index<>, fwdtrack::CollisionId,
344+
fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
345+
fwdtrack::Signed1Pt, fwdtrack::NClusters,
346+
fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
347+
fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
348+
fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
349+
fwdtrack::Sign<fwdtrack::Signed1Pt>, fwdtrack::Chi2);
350+
351+
DECLARE_SOA_EXTENDED_TABLE(MFTTracks, StoredMFTTracks, "MFTTRACK",
352+
aod::fwdtrack::Pt,
353+
aod::fwdtrack::Eta,
354+
aod::fwdtrack::P);
355+
356+
using MFTTrack = MFTTracks::iterator;
357+
358+
// Tracks including MCH and/or MCH (plus optionally MFT)
359+
DECLARE_SOA_TABLE_FULL(StoredFwdTracks, "FwdTracks", "AOD", "FWDTRACK",
360+
o2::soa::Index<>, fwdtrack::CollisionId, fwdtrack::BCId, fwdtrack::TrackType,
361+
fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
362+
fwdtrack::Signed1Pt, fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd,
363+
fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
364+
fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
365+
fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
366+
fwdtrack::Sign<fwdtrack::Signed1Pt>,
367+
fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
368+
fwdtrack::MatchScoreMCHMFT, fwdtrack::MatchMFTTrackID, fwdtrack::MatchMCHTrackID);
369+
370+
DECLARE_SOA_EXTENDED_TABLE(FwdTracks, StoredFwdTracks, "FWDTRACK",
371+
aod::fwdtrack::Eta, // NOTE the order is different here than in MFTTracks as table extension has to be unique
372+
aod::fwdtrack::Pt,
373+
aod::fwdtrack::P);
374+
375+
DECLARE_SOA_TABLE_FULL(StoredFwdTracksCov, "FwdTracksCov", "AOD", "FWDTRACKCOV",
376+
fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
377+
fwdtrack::RhoXY, fwdtrack::RhoPhiY, fwdtrack::RhoPhiX, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
378+
fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
379+
380+
DECLARE_SOA_EXTENDED_TABLE(FwdTracksCov, StoredFwdTracksCov, "FWDTRACKCOV",
381+
aod::fwdtrack::CXX,
382+
aod::fwdtrack::CXY,
383+
aod::fwdtrack::CYY,
384+
aod::fwdtrack::CPhiX,
385+
aod::fwdtrack::CPhiY,
386+
aod::fwdtrack::CPhiPhi,
387+
aod::fwdtrack::CTglX,
388+
aod::fwdtrack::CTglY,
389+
aod::fwdtrack::CTglPhi,
390+
aod::fwdtrack::CTglTgl,
391+
aod::fwdtrack::C1PtX,
392+
aod::fwdtrack::C1PtY,
393+
aod::fwdtrack::C1PtPhi,
394+
aod::fwdtrack::C1PtTgl,
395+
aod::fwdtrack::C1Pt21Pt2);
396+
397+
using FwdTrack = FwdTracks::iterator;
398+
using FwdTrackCovFwd = FwdTracksCov::iterator;
399+
400+
using FullFwdTracks = soa::Join<FwdTracks, FwdTracksCov>;
401+
using FullFwdTrack = FullFwdTracks::iterator;
402+
271403
namespace unassignedtracks
272404
{
273405
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
@@ -279,6 +411,17 @@ DECLARE_SOA_TABLE(UnassignedTracks, "AOD", "UNASSIGNEDTRACK",
279411

280412
using UnassignedTrack = UnassignedTracks::iterator;
281413

414+
namespace unassignedmfttracks
415+
{
416+
DECLARE_SOA_INDEX_COLUMN(Collision, collision);
417+
DECLARE_SOA_INDEX_COLUMN(MFTTrack, mfttrack);
418+
} // namespace unassignedmfttracks
419+
420+
DECLARE_SOA_TABLE(UnassignedMFTTracks, "AOD", "UNASSIGNEDMFTTR",
421+
unassignedmfttracks::CollisionId, unassignedmfttracks::MFTTrackId);
422+
423+
using UnassignedMFTTrack = UnassignedMFTTracks::iterator;
424+
282425
// HMPID information
283426
namespace hmpid
284427
{

Framework/Core/include/Framework/DataTypes.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ namespace o2::aod::track
2828
{
2929
enum TrackTypeEnum : uint8_t {
3030
GlobalTrack = 0,
31-
ITSStandalone,
32-
MFTStandalone,
31+
ITSStandaloneTrack,
3332
Run2GlobalTrack = 254,
3433
Run2Tracklet = 255
3534
};
@@ -40,4 +39,15 @@ enum TrackFlagsRun2Enum {
4039
};
4140
} // namespace o2::aod::track
4241

42+
namespace o2::aod::fwdtrack
43+
{
44+
enum ForwardTrackTypeEnum : uint8_t {
45+
GlobalMuonTrack = 0, // MFT-MCH-MID
46+
GlobalMuonTrackOtherMatch, // MFT-MCH-MID (MCH-MID used another time)
47+
GlobalForwardTrack, // MFT-MCH
48+
MuonStandaloneTrack, // MCH-MID
49+
MCHStandaloneTrack // MCH
50+
};
51+
} // namespace o2::aod::fwdtrack
52+
4353
#endif // O2_FRAMEWORK_DATATYPES_H_

0 commit comments

Comments
 (0)