11#ifndef O2_FRAMEWORK_ANALYSISDATAMODEL_H_
12#define O2_FRAMEWORK_ANALYSISDATAMODEL_H_
29#include <fairmq/Version.h>
30#include <fairmq/shmem/Common.h>
47 bc::RunNumber, bc::GlobalBC,
51 bc::RunNumber, bc::GlobalBC,
52 bc::TriggerMask, bc::InputMask);
57template <aod::is_origin_hash O>
59using BC = BCs::iterator;
67 timestamp::Timestamp);
99 collision::PosX, collision::PosY, collision::PosZ,
100 collision::CovXX, collision::CovXY, collision::CovXZ, collision::CovYY, collision::CovYZ, collision::CovZZ,
101 collision::Flags, collision::Chi2, collision::NumContrib,
102 collision::CollisionTime, collision::CollisionTimeRes);
106 collision::PosX, collision::PosY, collision::PosZ,
107 collision::CovXX, collision::CovXY, collision::CovYY, collision::CovXZ, collision::CovYZ, collision::CovZZ,
108 collision::Flags, collision::Chi2, collision::NumContrib,
109 collision::CollisionTime, collision::CollisionTimeRes);
134 nasin(aod::track::snp) + aod::track::alpha)));
142 [](
float signed1Pt) ->
short {
return (signed1Pt > 0) ? 1 : -1; });
144 [](
float signed1Pt,
float snp,
float alpha) ->
float {
145 auto pt = 1.f / std::abs(signed1Pt);
148 auto r = std::sqrt((1.f - snp) * (1.f + snp));
149 return pt * (
r * cs - snp * sn);
152 [](
float signed1Pt,
float snp,
float alpha) ->
float {
153 auto pt = 1.f / std::abs(signed1Pt);
156 auto r = std::sqrt((1.f - snp) * (1.f + snp));
157 return pt * (snp * cs +
r * sn);
160 [](
float signed1Pt,
float tgl) ->
float {
161 auto pt = 1.f / std::abs(signed1Pt);
165 [](
float signed1Pt,
float snp,
float alpha,
float tgl) -> std::array<float, 3> {
166 const auto pt = 1.f / std::abs(signed1Pt);
168 const float cs = cosf(
alpha), sn = sinf(
alpha);
169 const auto r = std::sqrt((1.f - snp) * (1.f + snp));
170 const auto px = pt * (
r * cs - snp * sn);
171 const auto py = pt * (snp * cs +
r * sn);
172 const auto pz = pt * tgl;
173 return std::array<float, 3>{px, py, pz};
178 [](
float signed1Pt,
float tgl,
float mass) ->
float {
179 const auto pt = 1.f / std::abs(signed1Pt);
181 return std::sqrt(p * p + mass * mass);
184 [](
float signed1Pt,
float tgl,
float mass) ->
float {
185 const auto pt = 1.f / std::abs(signed1Pt);
186 const auto pz = pt * tgl;
188 const auto energy = std::sqrt(p * p + mass * mass);
189 return 0.5f * std::log((energy + pz) / (energy - pz));
210 aod::track::sigmaY* aod::track::sigmaY);
212 (aod::track::rhoZY / 128.f) * (aod::track::sigmaZ * aod::track::sigmaY));
214 aod::track::sigmaZ* aod::track::sigmaZ);
216 (aod::track::rhoSnpY / 128.f) * (aod::track::sigmaSnp * aod::track::sigmaY));
218 (aod::track::rhoSnpZ / 128.f) * (aod::track::sigmaSnp * aod::track::sigmaZ));
220 aod::track::sigmaSnp* aod::track::sigmaSnp);
222 (aod::track::rhoTglY / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaY));
224 (aod::track::rhoTglZ / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaZ));
226 (aod::track::rhoTglSnp / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaSnp));
228 aod::track::sigmaTgl* aod::track::sigmaTgl);
230 (aod::track::rho1PtY / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaY));
232 (aod::track::rho1PtZ / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaZ));
234 (aod::track::rho1PtSnp / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaSnp));
236 (aod::track::rho1PtTgl / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaTgl));
238 aod::track::sigma1Pt* aod::track::sigma1Pt);
275 [](
float length,
float tofExpMom) ->
float {
281 [](
float length,
float tofExpMom) ->
float {
287 [](
float length,
float tofExpMom) ->
float {
293 [](
float length,
float tofExpMom) ->
float {
299 [](
float length,
float tofExpMom) ->
float {
305 [](
float length,
float tofExpMom) ->
float {
311 [](
float length,
float tofExpMom) ->
float {
317 [](
float length,
float tofExpMom) ->
float {
323 [](
float length,
float tofExpMom) ->
float {
336 [](uint32_t itsClusterSizes) -> uint8_t {
339 if ((itsClusterSizes >> (
layer * 4)) & 0xf) {
340 clmap |= (1 <<
layer);
346 [](uint32_t itsClusterSizes) -> uint8_t {
349 if ((itsClusterSizes >> (
layer * 4)) & 0xf)
355 [](uint32_t itsClusterSizes) -> uint8_t {
356 uint8_t itsNclsInnerBarrel = 0;
358 if ((itsClusterSizes >> (
layer * 4)) & 0xf)
359 itsNclsInnerBarrel++;
361 return itsNclsInnerBarrel;
364 [](uint32_t itsClusterSizes,
int layer) -> uint8_t {
368 return (itsClusterSizes >> (
layer * 4)) & 0xf;
372 [](uint8_t detectorMap,
float itsChi2Ncl) ->
bool {
380 [](
float timeErr, uint32_t trackType) ->
float {
381 if (!(trackType & TrackFlags::TrackTimeAsym)) {
382 return TPCTimeErrEncoding::invalidValue;
390 [](
float timeErr, uint32_t trackType) ->
float {
391 if (!(trackType & TrackFlags::TrackTimeAsym)) {
392 return TPCTimeErrEncoding::invalidValue;
395 p.encoding.timeErr = timeErr;
396 return p.getDeltaTBwd();
423 [](uint32_t
flags) -> uint32_t {
return flags >> 28; });
425 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) -> int16_t {
return (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound; });
427 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusPID) -> int16_t {
return (int16_t)tpcNClsFindable - tpcNClsFindableMinusPID; });
429 [](uint8_t tpcNClsFindable, int8_t TPCNClsFindableMinusCrossedRows) -> int16_t {
return (int16_t)tpcNClsFindable - TPCNClsFindableMinusCrossedRows; });
431 [](uint8_t itsClusterMap) -> uint8_t {
441 [](uint8_t itsClusterMap) -> uint8_t {
442 uint8_t itsNclsInnerBarrel = 0;
446 itsNclsInnerBarrel++;
448 return itsNclsInnerBarrel;
451 [](uint8_t itsSharedClusterMap) -> uint8_t {
455 if (itsSharedClusterMap & (
bit <<
layer))
461 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) ->
float {
462 int16_t tpcNClsFound = (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound;
463 return (
float)tpcNClsFound / (float)tpcNClsFindable;
467 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusCrossedRows) ->
float {
468 int16_t tpcNClsCrossedRows = (int16_t)tpcNClsFindable - tpcNClsFindableMinusCrossedRows;
469 return (
float)tpcNClsCrossedRows / (float)tpcNClsFindable;
473 [](uint8_t tpcNClsShared, uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) ->
float {
474 int16_t tpcNClsFound = (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound;
475 return (
float)tpcNClsShared / (float)tpcNClsFound;
485 [](uint8_t trdPattern) -> std::size_t {
return std::bitset<6>(trdPattern).count(); });
490 track::X, track::Alpha,
491 track::Y, track::Z, track::Snp, track::Tgl,
492 track::Signed1Pt, track::IsWithinBeamPipe<track::X>,
493 track::Px<track::Signed1Pt, track::Snp, track::Alpha>,
494 track::Py<track::Signed1Pt, track::Snp, track::Alpha>,
495 track::Pz<track::Signed1Pt, track::Tgl>,
496 track::PVector<track::Signed1Pt, track::Snp, track::Alpha, track::Tgl>,
497 track::Energy<track::Signed1Pt, track::Tgl>,
498 track::Rapidity<track::Signed1Pt, track::Tgl>,
499 track::Sign<track::Signed1Pt>,
510 track::X, track::Alpha,
511 track::Y, track::Z, track::Snp, track::Tgl,
512 track::Signed1Pt, track::IsWithinBeamPipe<track::X>,
513 track::Px<track::Signed1Pt, track::Snp, track::Alpha>,
514 track::Py<track::Signed1Pt, track::Snp, track::Alpha>,
515 track::Pz<track::Signed1Pt, track::Tgl>,
516 track::PVector<track::Signed1Pt, track::Snp, track::Alpha, track::Tgl>,
517 track::Energy<track::Signed1Pt, track::Tgl>,
518 track::Rapidity<track::Signed1Pt, track::Tgl>,
519 track::Sign<track::Signed1Pt>,
529 track::SigmaY, track::SigmaZ, track::SigmaSnp, track::SigmaTgl, track::Sigma1Pt,
530 track::RhoZY, track::RhoSnpY, track::RhoSnpZ, track::RhoTglY, track::RhoTglZ,
531 track::RhoTglSnp, track::Rho1PtY, track::Rho1PtZ, track::Rho1PtSnp, track::Rho1PtTgl,
o2::soa::Marker<1>);
548 aod::track::C1Pt21Pt2);
551 track::SigmaY, track::SigmaZ, track::SigmaSnp, track::SigmaTgl, track::Sigma1Pt,
552 track::RhoZY, track::RhoSnpY, track::RhoSnpZ, track::RhoTglY, track::RhoTglZ,
553 track::RhoTglSnp, track::Rho1PtY, track::Rho1PtZ, track::Rho1PtSnp, track::Rho1PtTgl,
o2::soa::Marker<2>);
570 aod::track::C1Pt21Pt2);
573 track::TPCInnerParam, track::Flags, track::ITSClusterMap,
574 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows,
575 track::TPCNClsShared, track::TRDPattern, track::ITSChi2NCl,
576 track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
577 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
578 track::PIDForTracking<track::Flags>,
579 track::IsPVContributor<track::Flags>,
580 track::HasITS<track::DetectorMap>, track::HasTPC<track::DetectorMap>,
581 track::HasTRD<track::DetectorMap>, track::HasTOF<track::DetectorMap>,
582 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
583 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
584 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
585 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
586 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
587 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
588 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
589 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
590 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
591 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
592 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
593 track::ITSNCls<track::ITSClusterMap>, track::ITSNClsInnerBarrel<track::ITSClusterMap>,
594 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
595 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
596 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
597 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
598 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
601 track::TPCInnerParam, track::Flags, track::ITSClusterSizes,
602 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows,
603 track::TPCNClsShared, track::v001::extensions::TPCDeltaTFwd<track::TrackTimeRes, track::Flags>, track::v001::extensions::TPCDeltaTBwd<track::TrackTimeRes, track::Flags>,
604 track::TRDPattern, track::ITSChi2NCl, track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
605 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
606 track::PIDForTracking<track::Flags>,
607 track::IsPVContributor<track::Flags>,
608 track::HasITS<track::v001::DetectorMap>, track::HasTPC<track::v001::DetectorMap>,
609 track::HasTRD<track::v001::DetectorMap>, track::HasTOF<track::v001::DetectorMap>,
610 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
611 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
612 track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
613 track::v001::ITSClsSizeInLayer<track::ITSClusterSizes>,
614 track::v001::IsITSAfterburner<track::v001::DetectorMap, track::ITSChi2NCl>,
615 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
616 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
617 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
618 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
619 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
620 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
621 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
622 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
623 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
624 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
625 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
626 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
627 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
628 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
631 track::TPCInnerParam, track::Flags, track::ITSClusterSizes,
632 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusPID, track::TPCNClsFindableMinusCrossedRows,
633 track::TPCNClsShared, track::v001::extensions::TPCDeltaTFwd<track::TrackTimeRes, track::Flags>, track::v001::extensions::TPCDeltaTBwd<track::TrackTimeRes, track::Flags>,
634 track::TRDPattern, track::ITSChi2NCl, track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
635 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
636 track::PIDForTracking<track::Flags>,
637 track::IsPVContributor<track::Flags>,
638 track::HasITS<track::v001::DetectorMap>, track::HasTPC<track::v001::DetectorMap>,
639 track::HasTRD<track::v001::DetectorMap>, track::HasTOF<track::v001::DetectorMap>,
640 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
641 track::TPCNClsPID<track::TPCNClsFindable, track::TPCNClsFindableMinusPID>,
642 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
643 track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
644 track::v001::ITSClsSizeInLayer<track::ITSClusterSizes>,
645 track::v001::IsITSAfterburner<track::v001::DetectorMap, track::ITSChi2NCl>,
646 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
647 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
648 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
649 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
650 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
651 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
652 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
653 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
654 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
655 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
656 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
657 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
658 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
659 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
664 track::v001::DetectorMap);
666 track::v001::DetectorMap);
671 track::ITSSignal, track::ITSSharedClusterMap,
672 track::ITSNSharedCls<track::ITSSharedClusterMap>);
728 [](int8_t cY, int8_t cZ, int8_t cSnp, int8_t cTgl, int8_t cQ2Pt, int8_t gY, int8_t gZ, int8_t gSnp, int8_t gTgl, int8_t gQ2Pt) ->
bool {
729 constexpr int8_t
m = std::numeric_limits<int8_t>::min();
730 return (cY ==
m && cZ ==
m && cSnp ==
m && cTgl ==
m && cQ2Pt ==
m && gY ==
m && gZ ==
m && gSnp ==
m && gTgl ==
m && gQ2Pt ==
m);
735 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
736 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
737 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R);
741 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
742 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
743 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
744 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
745 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
746 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
747 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
750 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
751 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
752 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
753 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
754 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
755 trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ,
756 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
757 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
760 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCdEdxNorm, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
761 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
762 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
763 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
764 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
765 trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ,
766 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
767 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
798 [](
float signed1Pt) ->
short {
return (signed1Pt > 0) ? 1 : -1; });
800 [](uint64_t mftClusterSizesAndTrackFlags) ->
bool {
return mftClusterSizesAndTrackFlags & (0x1ULL << 60); });
808 [](
float pt,
float phi) ->
float {
809 return pt * std::cos(phi);
812 [](
float pt,
float phi) ->
float {
813 return pt * std::sin(phi);
816 [](
float pt,
float tgl) ->
float {
820 [](uint32_t midBoards) ->
int {
821 return static_cast<int>(midBoards & 0xFF);
824 [](uint32_t midBoards) ->
int {
825 return static_cast<int>((midBoards >> 8) & 0xFF);
828 [](uint32_t midBoards) ->
int {
829 return static_cast<int>((midBoards >> 16) & 0xFF);
832 [](uint32_t midBoards) ->
int {
833 return static_cast<int>((midBoards >> 24) & 0xFF);
839 [](uint64_t mftClusterSizesAndTrackFlags) -> int8_t {
842 if ((mftClusterSizesAndTrackFlags >> (
layer * 6)) & 0x3F) {
868 aod::fwdtrack::sigmaX* aod::fwdtrack::sigmaX);
870 (aod::fwdtrack::rhoXY / 128.f) * (aod::fwdtrack::sigmaX * aod::fwdtrack::sigmaY));
872 aod::fwdtrack::sigmaY* aod::fwdtrack::sigmaY);
874 (aod::fwdtrack::rhoPhiX / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaX));
876 (aod::fwdtrack::rhoPhiY / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaY));
878 aod::fwdtrack::sigmaPhi* aod::fwdtrack::sigmaPhi);
880 (aod::fwdtrack::rhoTglX / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaX));
882 (aod::fwdtrack::rhoTglY / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaY));
884 (aod::fwdtrack::rhoTglPhi / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaPhi));
886 aod::fwdtrack::sigmaTgl* aod::fwdtrack::sigmaTgl);
888 (aod::fwdtrack::rho1PtY / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaY));
890 (aod::fwdtrack::rho1PtX / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaX));
892 (aod::fwdtrack::rho1PtPhi / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaPhi));
894 (aod::fwdtrack::rho1PtTgl / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaTgl));
896 aod::fwdtrack::sigma1Pt* aod::fwdtrack::sigma1Pt);
902 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
903 fwdtrack::Signed1Pt, fwdtrack::NClusters,
904 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
905 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
906 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
907 fwdtrack::Sign<fwdtrack::Signed1Pt>, fwdtrack::Chi2,
908 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
912 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
913 fwdtrack::Signed1Pt, fwdtrack::v001::NClusters<fwdtrack::MFTClusterSizesAndTrackFlags>, fwdtrack::MFTClusterSizesAndTrackFlags, fwdtrack::IsCA<fwdtrack::MFTClusterSizesAndTrackFlags>,
914 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
915 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
916 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
917 fwdtrack::Sign<fwdtrack::Signed1Pt>, fwdtrack::Chi2,
918 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
934template <aod::is_origin_hash O>
945 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
946 fwdtrack::Signed1Pt, fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd,
947 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
948 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
949 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
950 fwdtrack::Sign<fwdtrack::Signed1Pt>,
951 fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
952 fwdtrack::MatchScoreMCHMFT, fwdtrack::MFTTrackId, fwdtrack::MCHTrackId,
953 fwdtrack::MCHBitMap, fwdtrack::MIDBitMap, fwdtrack::MIDBoards,
954 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
962 fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
963 fwdtrack::RhoXY, fwdtrack::RhoPhiY, fwdtrack::RhoPhiX, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
964 fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
970 aod::fwdtrack::CPhiX,
971 aod::fwdtrack::CPhiY,
972 aod::fwdtrack::CPhiPhi,
973 aod::fwdtrack::CTglX,
974 aod::fwdtrack::CTglY,
975 aod::fwdtrack::CTglPhi,
976 aod::fwdtrack::CTglTgl,
977 aod::fwdtrack::C1PtX,
978 aod::fwdtrack::C1PtY,
979 aod::fwdtrack::C1PtPhi,
980 aod::fwdtrack::C1PtTgl,
981 aod::fwdtrack::C1Pt21Pt2);
988 fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
989 fwdtrack::RhoXY, fwdtrack::RhoPhiX, fwdtrack::RhoPhiY, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
990 fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
996 aod::fwdtrack::CPhiX,
997 aod::fwdtrack::CPhiY,
998 aod::fwdtrack::CPhiPhi,
999 aod::fwdtrack::CTglX,
1000 aod::fwdtrack::CTglY,
1001 aod::fwdtrack::CTglPhi,
1002 aod::fwdtrack::CTglTgl,
1003 aod::fwdtrack::C1PtX,
1004 aod::fwdtrack::C1PtY,
1005 aod::fwdtrack::C1PtPhi,
1006 aod::fwdtrack::C1PtTgl,
1007 aod::fwdtrack::C1Pt21Pt2);
1009using MFTTrack = MFTTracks::iterator;
1015extern template struct Join<aod::FwdTracks, aod::FwdTracksCov>;
1065 fwdtrkcl::FwdTrackId,
1070 fwdtrkcl::DEId<fwdtrkcl::ClInfo>,
1071 fwdtrkcl::IsGoodX<fwdtrkcl::ClInfo>,
1072 fwdtrkcl::IsGoodY<fwdtrkcl::ClInfo>);
1097 hmpid::HMPIDDistance,
1098 hmpid::HMPIDNPhotons,
1109 hmpid::HMPIDNPhotons,
1111 hmpid::HMPIDClusSize,
1113 hmpid::HMPIDPhotsCharge);
1130 calo::Time, calo::CellType, calo::CaloType);
1133namespace calotrigger
1144 calotrigger::LnAmplitude, calotrigger::TriggerBits, calotrigger::CaloType);
1155 return status & 0b00011111;
1158 return 2 + ((status & 0b01100000) >> 5);
1161 return (status & 0b01100000) >> 7;
1166 o2::soa::Index<>, cpvcluster::BCId, cpvcluster::PosX, cpvcluster::PosZ, cpvcluster::Amplitude,
1167 cpvcluster::ClusterStatus, cpvcluster::PadMult<cpvcluster::ClusterStatus>,
1168 cpvcluster::ModuleNumber<cpvcluster::ClusterStatus>, cpvcluster::IsUnfolded<cpvcluster::ClusterStatus>);
1198 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1200 auto thisenergy = -std::numeric_limits<float>::infinity();
1201 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1210 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1211 auto thisenergy = -std::numeric_limits<float>::infinity();
1212 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1221 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1222 auto thisenergy = -std::numeric_limits<float>::infinity();
1223 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1232 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1233 auto thisenergy = -std::numeric_limits<float>::infinity();
1234 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1243 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1244 auto thisenergy = -std::numeric_limits<float>::infinity();
1245 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1254 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1255 auto thisenergy = -std::numeric_limits<float>::infinity();
1256 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1265 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1267 -std::numeric_limits<float>::infinity(),
1268 -std::numeric_limits<float>::infinity(),
1269 -std::numeric_limits<float>::infinity(),
1270 -std::numeric_limits<float>::infinity()};
1284 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1285 std::array<float, 4> thisenergy = {
1286 -std::numeric_limits<float>::infinity(),
1287 -std::numeric_limits<float>::infinity(),
1288 -std::numeric_limits<float>::infinity(),
1289 -std::numeric_limits<float>::infinity()};
1290 for (uint64_t ie = 0; ie < channelE.size(); ie++) {
1292 thisenergy[0] = energy[ie];
1294 thisenergy[1] = energy[ie];
1296 thisenergy[2] = energy[ie];
1298 thisenergy[3] = energy[ie];
1303 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1305 -std::numeric_limits<float>::infinity(),
1306 -std::numeric_limits<float>::infinity(),
1307 -std::numeric_limits<float>::infinity(),
1308 -std::numeric_limits<float>::infinity()};
1309 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1322 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1324 -std::numeric_limits<float>::infinity(),
1325 -std::numeric_limits<float>::infinity(),
1326 -std::numeric_limits<float>::infinity(),
1327 -std::numeric_limits<float>::infinity()};
1328 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1341 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1342 auto thistime = -std::numeric_limits<float>::infinity();
1343 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1345 thistime =
time[ie];
1352 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1353 auto thistime = -std::numeric_limits<float>::infinity();
1354 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1356 thistime =
time[ie];
1363 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1364 auto thistime = -std::numeric_limits<float>::infinity();
1365 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1367 thistime =
time[ie];
1374 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1375 auto thistime = -std::numeric_limits<float>::infinity();
1376 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1378 thistime =
time[ie];
1385 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1386 auto thistime = -std::numeric_limits<float>::infinity();
1387 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1389 thistime =
time[ie];
1396 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1397 auto thistime = -std::numeric_limits<float>::infinity();
1398 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1400 thistime =
time[ie];
1408 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1409 auto thisamplitude = -std::numeric_limits<float>::infinity();
1410 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1412 thisamplitude = amplitude[ie];
1416 return thisamplitude;
1419 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1420 auto thisamplitude = -std::numeric_limits<float>::infinity();
1421 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1423 thisamplitude = amplitude[ie];
1427 return thisamplitude;
1430 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1431 auto thisamplitude = -std::numeric_limits<float>::infinity();
1432 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1434 thisamplitude = amplitude[ie];
1438 return thisamplitude;
1441 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1442 auto thisamplitude = -std::numeric_limits<float>::infinity();
1443 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1445 thisamplitude = amplitude[ie];
1449 return thisamplitude;
1452 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1453 auto thisamplitude = -std::numeric_limits<float>::infinity();
1454 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1456 thisamplitude = amplitude[ie];
1460 return thisamplitude;
1463 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1464 auto thisamplitude = -std::numeric_limits<float>::infinity();
1465 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1467 thisamplitude = amplitude[ie];
1471 return thisamplitude;
1477 zdc::EnergyCommonZNA, zdc::EnergyCommonZNC, zdc::EnergyCommonZPA, zdc::EnergyCommonZPC,
1478 zdc::EnergySectorZNA, zdc::EnergySectorZNC, zdc::EnergySectorZPA, zdc::EnergySectorZPC,
1479 zdc::TimeZEM1, zdc::TimeZEM2, zdc::TimeZNA, zdc::TimeZNC, zdc::TimeZPA, zdc::TimeZPC);
1483 o2::soa::Index<>, zdc::BCId, zdc::Energy, zdc::ChannelE, zdc::Amplitude, zdc::Time, zdc::ChannelT,
1484 zdc::DyEnergyZEM1<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyZEM2<zdc::ChannelE, zdc::Energy>,
1485 zdc::DyEnergyCommonZNA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyCommonZNC<zdc::ChannelE, zdc::Energy>,
1486 zdc::DyEnergyCommonZPA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyCommonZPC<zdc::ChannelE, zdc::Energy>,
1487 zdc::DyEnergySectorZNA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergySectorZNC<zdc::ChannelE, zdc::Energy>,
1488 zdc::DyEnergySectorZPA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergySectorZPC<zdc::ChannelE, zdc::Energy>,
1489 zdc::DyTimeZEM1<zdc::ChannelT, zdc::Time>, zdc::DyTimeZEM2<zdc::ChannelT, zdc::Time>,
1490 zdc::DyTimeZNA<zdc::ChannelT, zdc::Time>, zdc::DyTimeZNC<zdc::ChannelT, zdc::Time>,
1491 zdc::DyTimeZPA<zdc::ChannelT, zdc::Time>, zdc::DyTimeZPC<zdc::ChannelT, zdc::Time>,
1492 zdc::DyAmplitudeZEM1<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZEM2<zdc::ChannelT, zdc::Amplitude>,
1493 zdc::DyAmplitudeZNA<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZNC<zdc::ChannelT, zdc::Amplitude>,
1494 zdc::DyAmplitudeZPA<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZPC<zdc::ChannelT, zdc::Amplitude>);
1509 o2::soa::Index<>, fv0a::BCId, fv0a::Amplitude, fv0a::Channel, fv0a::Time, fv0a::TriggerMask);
1550 [](
float timeA) ->
bool {
1551 return timeA < 30.f;
1554 [](
float timeC) ->
bool {
1555 return timeC < 30.f;
1562 [](gsl::span<const float> vecAmpA) ->
float {
1563 return std::accumulate(vecAmpA.begin(), vecAmpA.end(), 0.f, [](
auto&&
sum,
auto&& curr) { return sum + (curr > 0 ? curr : 0); });
1566 [](gsl::span<const float> vecAmpC) ->
float {
1567 return std::accumulate(vecAmpC.begin(), vecAmpC.end(), 0.f, [](
auto&&
sum,
auto&& curr) { return sum + (curr > 0 ? curr : 0); });
1574 ft0::AmplitudeA, ft0::ChannelA, ft0::AmplitudeC, ft0::ChannelC, ft0::TimeA, ft0::TimeC,
1575 ft0::TriggerMask, ft0::PosZ<ft0::TimeA, ft0::TimeC>, ft0::CollTime<ft0::TimeA, ft0::TimeC>,
1576 ft0::IsValidTimeA<ft0::TimeA>, ft0::IsValidTimeC<ft0::TimeC>, ft0::IsValidTime<ft0::TimeA, ft0::TimeC>,
1577 ft0::SumAmpA<ft0::AmplitudeA>, ft0::SumAmpC<ft0::AmplitudeC>);
1582 ft0::TimeFT0A, ft0::TimeFT0C);
1604 fdd::AmplitudeA, fdd::AmplitudeC,
1605 fdd::TimeA, fdd::TimeC,
1611 fdd::ChargeA, fdd::ChargeC,
1612 fdd::TimeA, fdd::TimeC,
1620 fdd::TimeFDDA, fdd::TimeFDDC);
1638 trd::TRDQ0s, trd::TRDQ1s, trd::TRDQ2s,
1639 trd::TRDQ0sCorrected, trd::TRDQ1sCorrected, trd::TRDQ2sCorrected,
1640 trd::TRDTgls, trd::TRDPhis);
1651 [](uint8_t V0Type) ->
bool {
return V0Type == 1; });
1653 [](uint8_t V0Type) ->
bool {
return V0Type & (1 << 1); });
1655 [](uint8_t V0Type) ->
bool {
return V0Type & (1 << 2); });
1661 v0::PosTrackId, v0::NegTrackId);
1664 v0::PosTrackId, v0::NegTrackId);
1667 v0::PosTrackId, v0::NegTrackId,
1669 v0::IsStandardV0<v0::V0Type>,
1670 v0::IsPhotonV0<v0::V0Type>,
1671 v0::IsCollinearV0<v0::V0Type>);
1686 o2::soa::Index<>, cascade::CollisionId, cascade::V0Id, cascade::BachelorId);
1700 o2::soa::Index<>, decay3body::CollisionId, decay3body::Track0Id, decay3body::Track1Id, decay3body::Track2Id);
1705namespace strangenesstracking
1729 strangenesstracking::TrackId,
1730 strangenesstracking::ITSTrackId,
1731 strangenesstracking::CascadeId,
1732 strangenesstracking::DecayX,
1733 strangenesstracking::DecayY,
1734 strangenesstracking::DecayZ,
1735 strangenesstracking::XiMass,
1736 strangenesstracking::OmegaMass,
1737 strangenesstracking::MatchingChi2,
1738 strangenesstracking::TopologyChi2,
1739 strangenesstracking::ITSclsSize);
1743 strangenesstracking::TrackId,
1744 strangenesstracking::ITSTrackId,
1745 strangenesstracking::V0Id,
1746 strangenesstracking::DecayX,
1747 strangenesstracking::DecayY,
1748 strangenesstracking::DecayZ,
1749 strangenesstracking::H3Lmass,
1750 strangenesstracking::H4Lmass,
1751 strangenesstracking::MatchingChi2,
1752 strangenesstracking::TopologyChi2,
1753 strangenesstracking::ITSclsSize);
1757 strangenesstracking::TrackId,
1758 strangenesstracking::ITSTrackId,
1759 strangenesstracking::Decay3BodyId,
1760 strangenesstracking::DecayX,
1761 strangenesstracking::DecayY,
1762 strangenesstracking::DecayZ,
1763 strangenesstracking::H3Lmass,
1764 strangenesstracking::He4Lmass,
1765 strangenesstracking::MatchingChi2,
1766 strangenesstracking::TopologyChi2,
1767 strangenesstracking::ITSclsSize);
1842 run2::TriggerMaskNext50, run2::L0TriggerInputMask,
1843 run2::SPDClustersL0, run2::SPDClustersL1,
1844 run2::SPDFiredChipsL0, run2::SPDFiredChipsL1,
1845 run2::SPDFiredFastOrL0, run2::SPDFiredFastOrL1,
1846 run2::V0TriggerChargeA, run2::V0TriggerChargeC);
1850 run2::TriggerMaskNext50, run2::L0TriggerInputMask,
1851 run2::SPDClustersL0, run2::SPDClustersL1,
1852 run2::SPDFiredChipsL0, run2::SPDFiredChipsL1,
1853 run2::SPDFiredFastOrL0, run2::SPDFiredFastOrL1,
1854 run2::V0TriggerChargeA, run2::V0TriggerChargeC,
1855 run2::NTPCClusters, run2::NSDDSSDClusters);
1862 run2::oftv0::CollisionId, run2::oftv0::PosTrackId, run2::oftv0::NegTrackId,
1863 run2::oftv0::Px, run2::oftv0::Py, run2::oftv0::Pz, run2::oftv0::E,
1864 run2::oftv0::Qt, run2::oftv0::Alpha,
1865 run2::oftv0::X, run2::oftv0::Y, run2::oftv0::Z,
1866 run2::oftv0::Chi2NDF, run2::oftv0::PsiPair,
1867 run2::oftv0::DCAr, run2::oftv0::DCAz,
1868 run2::oftv0::MassInMeV);
1874 run2::pmd::Z, run2::pmd::CluADC, run2::pmd::CluPID, run2::pmd::Det,
1875 run2::pmd::Ncell, run2::pmd::Smn, run2::pmd::TrackNo, run2::pmd::TrackPid,
1876 run2::pmd::SigX, run2::pmd::SigY, run2::pmd::ClMatching);
1881namespace mccollision
1903 mccollision::GeneratorsID,
1904 mccollision::PosX, mccollision::PosY, mccollision::PosZ,
1905 mccollision::T, mccollision::Weight,
1906 mccollision::ImpactParameter,
1907 mccollision::GetGeneratorId<mccollision::GeneratorsID>,
1908 mccollision::GetSubGeneratorId<mccollision::GeneratorsID>,
1909 mccollision::GetSourceId<mccollision::GeneratorsID>);
1912 mccollision::GeneratorsID,
1913 mccollision::PosX, mccollision::PosY, mccollision::PosZ,
1914 mccollision::T, mccollision::Weight,
1915 mccollision::ImpactParameter,
1916 mccollision::EventPlaneAngle,
1917 mccollision::GetGeneratorId<mccollision::GeneratorsID>,
1918 mccollision::GetSubGeneratorId<mccollision::GeneratorsID>,
1919 mccollision::GetSourceId<mccollision::GeneratorsID>);
1958 [](
float px,
float py,
float pz) -> std::array<float, 3> {
return std::array<float, 3>{px, py, pz}; });
1963 ifnode((nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1964 aod::mcparticle::py * aod::mcparticle::py +
1965 aod::mcparticle::pz * aod::mcparticle::pz) -
1966 aod::mcparticle::pz) <
static_cast<float>(1e-7),
1967 ifnode(aod::mcparticle::pz < 0.f, -100.f, 100.f),
1968 0.5f * nlog((nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1969 aod::mcparticle::py * aod::mcparticle::py +
1970 aod::mcparticle::pz * aod::mcparticle::pz) +
1971 aod::mcparticle::pz) /
1972 (nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1973 aod::mcparticle::py * aod::mcparticle::py +
1974 aod::mcparticle::pz * aod::mcparticle::pz) -
1975 aod::mcparticle::pz))));
1977 nsqrt(aod::mcparticle::px* aod::mcparticle::px +
1978 aod::mcparticle::py * aod::mcparticle::py));
1980 nsqrt(aod::mcparticle::px* aod::mcparticle::px +
1981 aod::mcparticle::py * aod::mcparticle::py +
1982 aod::mcparticle::pz * aod::mcparticle::pz));
1984 ifnode((aod::mcparticle::e - aod::mcparticle::pz) <
static_cast<float>(1e-7),
1985 ifnode(aod::mcparticle::pz < 0.f, -100.f, 100.f),
1986 0.5f * nlog((aod::mcparticle::e + aod::mcparticle::pz) /
1987 (aod::mcparticle::e - aod::mcparticle::pz))));
1990namespace mcparticle_v2
2008 mcparticle::PdgCode, mcparticle::StatusCode, mcparticle_v2::Flags,
2009 mcparticle::Mother0Id, mcparticle::Mother1Id,
2010 mcparticle::Daughter0Id, mcparticle::Daughter1Id, mcparticle::Weight,
2011 mcparticle::Px, mcparticle::Py, mcparticle::Pz, mcparticle::E,
2012 mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt,
2013 mcparticle::PVector<mcparticle::Px, mcparticle::Py, mcparticle::Pz>,
2014 mcparticle::ProducedByGenerator<mcparticle_v2::Flags>,
2015 mcparticle::FromBackgroundEvent<mcparticle_v2::Flags>,
2016 mcparticle::GetGenStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2017 mcparticle::GetHepMCStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2018 mcparticle::GetProcess<mcparticle_v2::Flags, mcparticle::StatusCode>,
2019 mcparticle_v2::ProtectedFlags<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>,
2020 mcparticle_v2::IsPhysicalPrimary<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>);
2024 mcparticle::PdgCode, mcparticle::StatusCode, mcparticle_v2::Flags,
2025 mcparticle::MothersIds, mcparticle::DaughtersIdSlice, mcparticle::Weight,
2026 mcparticle::Px, mcparticle::Py, mcparticle::Pz, mcparticle::E,
2027 mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt,
2028 mcparticle::PVector<mcparticle::Px, mcparticle::Py, mcparticle::Pz>,
2029 mcparticle::ProducedByGenerator<mcparticle_v2::Flags>,
2030 mcparticle::FromBackgroundEvent<mcparticle_v2::Flags>,
2031 mcparticle::GetGenStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2032 mcparticle::GetHepMCStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2033 mcparticle::GetProcess<mcparticle_v2::Flags, mcparticle::StatusCode>,
2034 mcparticle_v2::ProtectedFlags<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>,
2035 mcparticle_v2::IsPhysicalPrimary<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>);
2054template <aod::is_origin_hash O>
2077namespace mctracklabel
2084 mctracklabel::McParticleId, mctracklabel::McMask);
2087namespace mcmfttracklabel
2094 mcmfttracklabel::McParticleId, mcmfttracklabel::McMask);
2097namespace mcfwdtracklabel
2104 mcfwdtracklabel::McParticleId, mcfwdtracklabel::McMask);
2107namespace mccalolabel
2116 mccalolabel::McParticleId, mccalolabel::McMask);
2118 mccalolabel::McParticleIds, mccalolabel::AmplitudeA);
2122namespace mccollisionlabel
2129 mccollisionlabel::McCollisionId, mccollisionlabel::McMask);
2133namespace hepmcxsection
2147 o2::soa::Index<>, hepmcxsection::McCollisionId, hepmcxsection::GeneratorsID,
2148 hepmcxsection::Accepted, hepmcxsection::Attempted, hepmcxsection::XsectGen,
2149 hepmcxsection::XsectErr, hepmcxsection::PtHard, hepmcxsection::NMPI, hepmcxsection::ProcessId);
2152namespace hepmcpdfinfo
2169 hepmcpdfinfo::Id1, hepmcpdfinfo::Id2,
2170 hepmcpdfinfo::PdfId1, hepmcpdfinfo::PdfId2,
2171 hepmcpdfinfo::X1, hepmcpdfinfo::X2,
2172 hepmcpdfinfo::ScalePdf, hepmcpdfinfo::Pdf1, hepmcpdfinfo::Pdf2);
2175namespace hepmcheavyion
2196 o2::soa::Index<>, hepmcheavyion::McCollisionId, hepmcheavyion::GeneratorsID,
2197 hepmcheavyion::NcollHard, hepmcheavyion::NpartProj, hepmcheavyion::NpartTarg,
2198 hepmcheavyion::Ncoll, hepmcheavyion::NNwoundedCollisions, hepmcheavyion::NwoundedNCollisions,
2199 hepmcheavyion::NwoundedNwoundedCollisions, hepmcheavyion::SpectatorNeutrons,
2200 hepmcheavyion::SpectatorProtons, hepmcheavyion::ImpactParameter, hepmcheavyion::EventPlaneAngle,
2201 hepmcheavyion::Eccentricity, hepmcheavyion::SigmaInelNN, hepmcheavyion::Centrality);
2219#define INDEX_LIST_RUN2 indices::CollisionId, indices::ZdcId, indices::BCId, indices::FT0Id, indices::FV0AId, indices::FV0CId, indices::FDDId
2223#define INDEX_LIST_RUN3 indices::CollisionId, indices::ZdcId, indices::BCId, indices::FT0Id, indices::FV0AId, indices::FDDId
2229 indices::BCId, indices::CollisionId);
2231 indices::BCId, indices::CollisionId);
2234 indices::BCId, indices::CollisionIds);
2236 indices::BCId, indices::CollisionIds);
2239 indices::BCId, indices::ZdcId, indices::FT0Id, indices::FV0AId, indices::FDDId);
2241 indices::BCId, indices::ZdcId, indices::FT0Id, indices::FV0AId, indices::FDDId);
2244 indices::BCId, indices::ZdcId, indices::FT0Id, indices::FV0AId, indices::FV0CId, indices::FDDId);
#define DECLARE_SOA_ARRAY_INDEX_COLUMN(_Name_, _Getter_)
#define DECLARE_SOA_SELF_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Label_)
#define DECLARE_SOA_SLICE_INDEX_COLUMN(_Name_, _Getter_)
#define DECLARE_SOA_EXTENDED_TABLE_NG(_Name_, _OriginalTable_, _Desc_, _Version_,...)
#define DECLARE_SOA_DYNAMIC_COLUMN(_Name_, _Getter_,...)
#define DECLARE_SOA_TABLE(_Name_, _Origin_, _Desc_,...)
#define DECLARE_SOA_EXPRESSION_COLUMN(_Name_, _Getter_, _Type_, _Expression_)
#define DECLARE_SOA_COLUMN(_Name_, _Getter_, _Type_)
#define DECLARE_SOA_INDEX_COLUMN_FULL(_Name_, _Getter_, _Type_, _Table_, _Suffix_)
#define DECLARE_EQUIVALENT_FOR_INDEX(_Base_, _Equiv_)
#define DECLARE_SOA_SELF_SLICE_INDEX_COLUMN(_Name_, _Getter_)
#define DECLARE_SOA_TABLE_FULL(_Name_, _Label_, _Origin_, _Desc_,...)
#define DECLARE_EQUIVALENT_FOR_INDEX_NG(_Base_, _Equiv_)
#define DECLARE_SOA_TABLE_VERSIONED(_Name_, _Origin_, _Desc_, _Version_,...)
#define DECLARE_SOA_INDEX_COLUMN(_Name_, _Getter_)
#define DECLARE_SOA_TABLE_FULL_VERSIONED(_Name_, _Label_, _Origin_, _Desc_, _Version_,...)
#define DECLARE_SOA_EXTENDED_TABLE(_Name_, _Table_, _Description_, _Version_,...)
#define DECLARE_SOA_INDEX_TABLE_EXCLUSIVE(_Name_, _Key_, _Description_,...)
#define DECLARE_SOA_INDEX_TABLE(_Name_, _Key_, _Description_,...)
#define DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN(_Name_, _Getter_)
TOF PID utilities to work with the information stored in the AO2D.
Some ALICE geometry constants of common interest.
Header to collect physics constants.
Some ZDC constants shared between O2 and O2Physics.
float sum(float s, o2::dcs::DataPointValue v)
GLfloat GLfloat GLfloat alpha
GLuint GLfloat GLfloat GLfloat x1
GLuint GLuint GLfloat weight
GLuint GLsizei GLsizei * length
GLsizei GLenum const void * indices
GLenum GLuint GLint GLint layer
GLdouble GLdouble GLdouble z
o2::constants::math::PI natan2(-1.0f *aod::mcparticle::py, -1.0f *aod::mcparticle::px))
uint8_t itsSharedClusterMap uint8_t
ifnode(nasin(aod::track::snp)+aod::track::alpha< 0.0f, nasin(aod::track::snp)+aod::track::alpha+o2::constants::math::TwoPI, ifnode(nasin(aod::track::snp)+aod::track::alpha >=o2::constants::math::TwoPI, nasin(aod::track::snp)+aod::track::alpha - o2::constants::math::TwoPI, nasin(aod::track::snp)+aod::track::alpha)))
(sign of charge)/Pt in c/GeV. Use pt() and sign() instead
gsl::span< const uint8_t > channelE
McParticles::iterator McParticle
StoredMcParticles_001 StoredMcParticles
TrackedV0s::iterator TrackedV0
FT0sExtra::iterator FT0Extra
McParticles_001 McParticles
FullTracks::iterator FullTrack
TRDsExtra::iterator TRDExtra
FDDsExtra::iterator FDDExtra
HepMCHeavyIons::iterator HepMCHeavyIon
Tracked3Bodys Tracked3Bodys
TracksExtra::iterator TrackExtra
TrackedCascades TrackedCascades
McCollisions_001 McCollisions
AmbiguousMFTTracks::iterator AmbiguousMFTTrack
McParticles_001From< O > McParticlesFrom
Zdcs::iterator Zdc
new version
TracksQA_003 TracksQAVersion
FDDs::iterator FDD
this defines the current default version
AmbiguousFwdTracks::iterator AmbiguousFwdTrack
Run2OTFV0s::iterator Run2OTFV0
FV0AsExtra::iterator FV0AExtra
StoredTracksExtra_002 StoredTracksExtra
HepMCXSections::iterator HepMCXSection
McFwdTrackLabels::iterator McFwdTrackLabel
McCaloLabels::iterator McCaloLabel
Run2TrackExtras::iterator Run2TrackExtra
McCollisions::iterator McCollision
FwdTracksCov::iterator FwdTrackCovFwd
Collisions_001 Collisions
soa::Join< Collisions, Run2MatchedSparse >::iterator CollisionMatchedRun2Sparse
AmbiguousTracks::iterator AmbiguousTrack
TracksQAVersion::iterator TracksQA
MFTTracks_001From< O > MFTTracksFrom
FwdTrkCls::iterator FwdTrkCl
Run2TrackExtras_001 Run2TrackExtras
CPVClusters::iterator CPVCluster
McCollisionLabels::iterator McCollisionLabel
FwdTracks::iterator FwdTrack
TracksIU::iterator TrackIU
Cascades::iterator Cascade
this defines the current default version
McMFTTrackLabels::iterator McMFTTrackLabel
TracksCov::iterator TrackCov
HepMCPdfInfos::iterator HepMCPdfInfo
TracksExtra_002 TracksExtra
StoredMFTTracks_001 StoredMFTTracks
Decay3Bodys::iterator Decay3Body
this defines the current default version
FullFwdTracks::iterator FullFwdTrack
TracksCovIU::iterator TrackCovIU
Run2BCInfos::iterator Run2BCInfo
McCaloLabels_000 McCaloLabels
soa::Join< Collisions, Run3MatchedSparse >::iterator CollisionMatchedRun3Sparse
CaloTriggers::iterator CaloTrigger
Tracked3Bodys::iterator Tracked3body
McTrackLabels::iterator McTrackLabel
MFTTracksCov::iterator MFTTrackCovFwd
Run2BCInfos_001 Run2BCInfos
TrackedCascades::iterator TrackedCascade
Collisions::iterator Collision
MFTTracks::iterator MFTTrack
constexpr float XBeamPipeOuterRef
inner radius of the beam pipe
constexpr float PIQuarter
constexpr double MassHelium3
constexpr double MassTriton
constexpr double MassMuon
constexpr double MassKaonCharged
constexpr float LightSpeedCm2NS
constexpr double MassDeuteron
constexpr double MassAlpha
constexpr double MassElectron
constexpr double MassProton
constexpr double MassPionCharged
float MassToExpTime(float tofExpMom, float length, float massSquared)
Compute the expected time of flight for a given momentum, length and massSquared.
int getSourceId(short encoded)
int getGeneratorId(short encoded)
int getSubGeneratorId(short encoded)
int getGenStatusCode(MCGenStatusEncoding enc)
int getHepMCStatusCode(MCGenStatusEncoding enc)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
static uint8_t removeIsPhysicalPrimaryBit(uint8_t input_flags, float vx, float vy)
float getDeltaTFwd() const
union o2::aod::track::extensions::TPCTimeErrEncoding::TPCDeltaTime encoding
table_t::template iterator_template< DefaultIndexPolicy, self_t, Ts... > iterator