11#ifndef O2_FRAMEWORK_ANALYSISDATAMODEL_H_
12#define O2_FRAMEWORK_ANALYSISDATAMODEL_H_
29#include <fairmq/Version.h>
30#if (FAIRMQ_VERSION_DEC >= 111000)
31#include <fairmq/shmem/Common.h>
49 bc::RunNumber, bc::GlobalBC,
53 bc::RunNumber, bc::GlobalBC,
54 bc::TriggerMask, bc::InputMask);
59template <aod::is_origin_hash O>
61using BC = BCs::iterator;
69 timestamp::Timestamp);
101 collision::PosX, collision::PosY, collision::PosZ,
102 collision::CovXX, collision::CovXY, collision::CovXZ, collision::CovYY, collision::CovYZ, collision::CovZZ,
103 collision::Flags, collision::Chi2, collision::NumContrib,
104 collision::CollisionTime, collision::CollisionTimeRes);
108 collision::PosX, collision::PosY, collision::PosZ,
109 collision::CovXX, collision::CovXY, collision::CovYY, collision::CovXZ, collision::CovYZ, collision::CovZZ,
110 collision::Flags, collision::Chi2, collision::NumContrib,
111 collision::CollisionTime, collision::CollisionTimeRes);
136 nasin(aod::track::snp) + aod::track::alpha)));
144 [](
float signed1Pt) ->
short {
return (signed1Pt > 0) ? 1 : -1; });
146 [](
float signed1Pt,
float snp,
float alpha) ->
float {
147 auto pt = 1.f / std::abs(signed1Pt);
150 auto r = std::sqrt((1.f - snp) * (1.f + snp));
151 return pt * (
r * cs - snp * sn);
154 [](
float signed1Pt,
float snp,
float alpha) ->
float {
155 auto pt = 1.f / std::abs(signed1Pt);
158 auto r = std::sqrt((1.f - snp) * (1.f + snp));
159 return pt * (snp * cs +
r * sn);
162 [](
float signed1Pt,
float tgl) ->
float {
163 auto pt = 1.f / std::abs(signed1Pt);
167 [](
float signed1Pt,
float snp,
float alpha,
float tgl) -> std::array<float, 3> {
168 const auto pt = 1.f / std::abs(signed1Pt);
170 const float cs = cosf(
alpha), sn = sinf(
alpha);
171 const auto r = std::sqrt((1.f - snp) * (1.f + snp));
172 const auto px = pt * (
r * cs - snp * sn);
173 const auto py = pt * (snp * cs +
r * sn);
174 const auto pz = pt * tgl;
175 return std::array<float, 3>{px, py, pz};
180 [](
float signed1Pt,
float tgl,
float mass) ->
float {
181 const auto pt = 1.f / std::abs(signed1Pt);
183 return std::sqrt(p * p + mass * mass);
186 [](
float signed1Pt,
float tgl,
float mass) ->
float {
187 const auto pt = 1.f / std::abs(signed1Pt);
188 const auto pz = pt * tgl;
190 const auto energy = std::sqrt(p * p + mass * mass);
191 return 0.5f * std::log((energy + pz) / (energy - pz));
212 aod::track::sigmaY* aod::track::sigmaY);
214 (aod::track::rhoZY / 128.f) * (aod::track::sigmaZ * aod::track::sigmaY));
216 aod::track::sigmaZ* aod::track::sigmaZ);
218 (aod::track::rhoSnpY / 128.f) * (aod::track::sigmaSnp * aod::track::sigmaY));
220 (aod::track::rhoSnpZ / 128.f) * (aod::track::sigmaSnp * aod::track::sigmaZ));
222 aod::track::sigmaSnp* aod::track::sigmaSnp);
224 (aod::track::rhoTglY / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaY));
226 (aod::track::rhoTglZ / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaZ));
228 (aod::track::rhoTglSnp / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaSnp));
230 aod::track::sigmaTgl* aod::track::sigmaTgl);
232 (aod::track::rho1PtY / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaY));
234 (aod::track::rho1PtZ / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaZ));
236 (aod::track::rho1PtSnp / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaSnp));
238 (aod::track::rho1PtTgl / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaTgl));
240 aod::track::sigma1Pt* aod::track::sigma1Pt);
277 [](
float length,
float tofExpMom) ->
float {
283 [](
float length,
float tofExpMom) ->
float {
289 [](
float length,
float tofExpMom) ->
float {
295 [](
float length,
float tofExpMom) ->
float {
301 [](
float length,
float tofExpMom) ->
float {
307 [](
float length,
float tofExpMom) ->
float {
313 [](
float length,
float tofExpMom) ->
float {
319 [](
float length,
float tofExpMom) ->
float {
325 [](
float length,
float tofExpMom) ->
float {
338 [](uint32_t itsClusterSizes) -> uint8_t {
341 if ((itsClusterSizes >> (
layer * 4)) & 0xf) {
342 clmap |= (1 <<
layer);
348 [](uint32_t itsClusterSizes) -> uint8_t {
351 if ((itsClusterSizes >> (
layer * 4)) & 0xf)
357 [](uint32_t itsClusterSizes) -> uint8_t {
358 uint8_t itsNclsInnerBarrel = 0;
360 if ((itsClusterSizes >> (
layer * 4)) & 0xf)
361 itsNclsInnerBarrel++;
363 return itsNclsInnerBarrel;
366 [](uint32_t itsClusterSizes,
int layer) -> uint8_t {
370 return (itsClusterSizes >> (
layer * 4)) & 0xf;
374 [](uint8_t detectorMap,
float itsChi2Ncl) ->
bool {
382 [](
float timeErr, uint32_t trackType) ->
float {
383 if (!(trackType & TrackFlags::TrackTimeAsym)) {
384 return TPCTimeErrEncoding::invalidValue;
392 [](
float timeErr, uint32_t trackType) ->
float {
393 if (!(trackType & TrackFlags::TrackTimeAsym)) {
394 return TPCTimeErrEncoding::invalidValue;
397 p.encoding.timeErr = timeErr;
398 return p.getDeltaTBwd();
425 [](uint32_t
flags) -> uint32_t {
return flags >> 28; });
427 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) -> int16_t {
return (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound; });
429 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusPID) -> int16_t {
return (int16_t)tpcNClsFindable - tpcNClsFindableMinusPID; });
431 [](uint8_t tpcNClsFindable, int8_t TPCNClsFindableMinusCrossedRows) -> int16_t {
return (int16_t)tpcNClsFindable - TPCNClsFindableMinusCrossedRows; });
433 [](uint8_t itsClusterMap) -> uint8_t {
443 [](uint8_t itsClusterMap) -> uint8_t {
444 uint8_t itsNclsInnerBarrel = 0;
448 itsNclsInnerBarrel++;
450 return itsNclsInnerBarrel;
453 [](uint8_t itsSharedClusterMap) -> uint8_t {
457 if (itsSharedClusterMap & (
bit <<
layer))
463 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) ->
float {
464 int16_t tpcNClsFound = (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound;
465 return (
float)tpcNClsFound / (float)tpcNClsFindable;
469 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusCrossedRows) ->
float {
470 int16_t tpcNClsCrossedRows = (int16_t)tpcNClsFindable - tpcNClsFindableMinusCrossedRows;
471 return (
float)tpcNClsCrossedRows / (float)tpcNClsFindable;
475 [](uint8_t tpcNClsShared, uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) ->
float {
476 int16_t tpcNClsFound = (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound;
477 return (
float)tpcNClsShared / (float)tpcNClsFound;
487 [](uint8_t trdPattern) -> std::size_t {
return std::bitset<6>(trdPattern).count(); });
492 track::X, track::Alpha,
493 track::Y, track::Z, track::Snp, track::Tgl,
494 track::Signed1Pt, track::IsWithinBeamPipe<track::X>,
495 track::Px<track::Signed1Pt, track::Snp, track::Alpha>,
496 track::Py<track::Signed1Pt, track::Snp, track::Alpha>,
497 track::Pz<track::Signed1Pt, track::Tgl>,
498 track::PVector<track::Signed1Pt, track::Snp, track::Alpha, track::Tgl>,
499 track::Energy<track::Signed1Pt, track::Tgl>,
500 track::Rapidity<track::Signed1Pt, track::Tgl>,
501 track::Sign<track::Signed1Pt>,
512 track::X, track::Alpha,
513 track::Y, track::Z, track::Snp, track::Tgl,
514 track::Signed1Pt, track::IsWithinBeamPipe<track::X>,
515 track::Px<track::Signed1Pt, track::Snp, track::Alpha>,
516 track::Py<track::Signed1Pt, track::Snp, track::Alpha>,
517 track::Pz<track::Signed1Pt, track::Tgl>,
518 track::PVector<track::Signed1Pt, track::Snp, track::Alpha, track::Tgl>,
519 track::Energy<track::Signed1Pt, track::Tgl>,
520 track::Rapidity<track::Signed1Pt, track::Tgl>,
521 track::Sign<track::Signed1Pt>,
531 track::SigmaY, track::SigmaZ, track::SigmaSnp, track::SigmaTgl, track::Sigma1Pt,
532 track::RhoZY, track::RhoSnpY, track::RhoSnpZ, track::RhoTglY, track::RhoTglZ,
533 track::RhoTglSnp, track::Rho1PtY, track::Rho1PtZ, track::Rho1PtSnp, track::Rho1PtTgl,
o2::soa::Marker<1>);
550 aod::track::C1Pt21Pt2);
553 track::SigmaY, track::SigmaZ, track::SigmaSnp, track::SigmaTgl, track::Sigma1Pt,
554 track::RhoZY, track::RhoSnpY, track::RhoSnpZ, track::RhoTglY, track::RhoTglZ,
555 track::RhoTglSnp, track::Rho1PtY, track::Rho1PtZ, track::Rho1PtSnp, track::Rho1PtTgl,
o2::soa::Marker<2>);
572 aod::track::C1Pt21Pt2);
575 track::TPCInnerParam, track::Flags, track::ITSClusterMap,
576 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows,
577 track::TPCNClsShared, track::TRDPattern, track::ITSChi2NCl,
578 track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
579 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
580 track::PIDForTracking<track::Flags>,
581 track::IsPVContributor<track::Flags>,
582 track::HasITS<track::DetectorMap>, track::HasTPC<track::DetectorMap>,
583 track::HasTRD<track::DetectorMap>, track::HasTOF<track::DetectorMap>,
584 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
585 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
586 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
587 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
588 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
589 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
590 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
591 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
592 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
593 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
594 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
595 track::ITSNCls<track::ITSClusterMap>, track::ITSNClsInnerBarrel<track::ITSClusterMap>,
596 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
597 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
598 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
599 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
600 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
603 track::TPCInnerParam, track::Flags, track::ITSClusterSizes,
604 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows,
605 track::TPCNClsShared, track::v001::extensions::TPCDeltaTFwd<track::TrackTimeRes, track::Flags>, track::v001::extensions::TPCDeltaTBwd<track::TrackTimeRes, track::Flags>,
606 track::TRDPattern, track::ITSChi2NCl, track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
607 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
608 track::PIDForTracking<track::Flags>,
609 track::IsPVContributor<track::Flags>,
610 track::HasITS<track::v001::DetectorMap>, track::HasTPC<track::v001::DetectorMap>,
611 track::HasTRD<track::v001::DetectorMap>, track::HasTOF<track::v001::DetectorMap>,
612 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
613 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
614 track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
615 track::v001::ITSClsSizeInLayer<track::ITSClusterSizes>,
616 track::v001::IsITSAfterburner<track::v001::DetectorMap, track::ITSChi2NCl>,
617 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
618 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
619 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
620 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
621 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
622 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
623 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
624 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
625 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
626 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
627 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
628 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
629 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
630 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
633 track::TPCInnerParam, track::Flags, track::ITSClusterSizes,
634 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusPID, track::TPCNClsFindableMinusCrossedRows,
635 track::TPCNClsShared, track::v001::extensions::TPCDeltaTFwd<track::TrackTimeRes, track::Flags>, track::v001::extensions::TPCDeltaTBwd<track::TrackTimeRes, track::Flags>,
636 track::TRDPattern, track::ITSChi2NCl, track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
637 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
638 track::PIDForTracking<track::Flags>,
639 track::IsPVContributor<track::Flags>,
640 track::HasITS<track::v001::DetectorMap>, track::HasTPC<track::v001::DetectorMap>,
641 track::HasTRD<track::v001::DetectorMap>, track::HasTOF<track::v001::DetectorMap>,
642 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
643 track::TPCNClsPID<track::TPCNClsFindable, track::TPCNClsFindableMinusPID>,
644 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
645 track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
646 track::v001::ITSClsSizeInLayer<track::ITSClusterSizes>,
647 track::v001::IsITSAfterburner<track::v001::DetectorMap, track::ITSChi2NCl>,
648 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
649 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
650 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
651 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
652 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
653 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
654 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
655 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
656 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
657 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
658 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
659 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
660 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
661 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
666 track::v001::DetectorMap);
668 track::v001::DetectorMap);
673 track::ITSSignal, track::ITSSharedClusterMap,
674 track::ITSNSharedCls<track::ITSSharedClusterMap>);
730 [](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 {
731 constexpr int8_t
m = std::numeric_limits<int8_t>::min();
732 return (cY ==
m && cZ ==
m && cSnp ==
m && cTgl ==
m && cQ2Pt ==
m && gY ==
m && gZ ==
m && gSnp ==
m && gTgl ==
m && gQ2Pt ==
m);
737 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
738 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
739 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R);
743 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
744 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
745 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
746 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
747 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
748 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
749 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
752 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
753 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
754 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
755 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
756 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
757 trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ,
758 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
759 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
762 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCdEdxNorm, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
763 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
764 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
765 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
766 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
767 trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ,
768 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
769 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
800 [](
float signed1Pt) ->
short {
return (signed1Pt > 0) ? 1 : -1; });
802 [](uint64_t mftClusterSizesAndTrackFlags) ->
bool {
return mftClusterSizesAndTrackFlags & (0x1ULL << 60); });
810 [](
float pt,
float phi) ->
float {
811 return pt * std::cos(phi);
814 [](
float pt,
float phi) ->
float {
815 return pt * std::sin(phi);
818 [](
float pt,
float tgl) ->
float {
822 [](uint32_t midBoards) ->
int {
823 return static_cast<int>(midBoards & 0xFF);
826 [](uint32_t midBoards) ->
int {
827 return static_cast<int>((midBoards >> 8) & 0xFF);
830 [](uint32_t midBoards) ->
int {
831 return static_cast<int>((midBoards >> 16) & 0xFF);
834 [](uint32_t midBoards) ->
int {
835 return static_cast<int>((midBoards >> 24) & 0xFF);
841 [](uint64_t mftClusterSizesAndTrackFlags) -> int8_t {
844 if ((mftClusterSizesAndTrackFlags >> (
layer * 6)) & 0x3F) {
870 aod::fwdtrack::sigmaX* aod::fwdtrack::sigmaX);
872 (aod::fwdtrack::rhoXY / 128.f) * (aod::fwdtrack::sigmaX * aod::fwdtrack::sigmaY));
874 aod::fwdtrack::sigmaY* aod::fwdtrack::sigmaY);
876 (aod::fwdtrack::rhoPhiX / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaX));
878 (aod::fwdtrack::rhoPhiY / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaY));
880 aod::fwdtrack::sigmaPhi* aod::fwdtrack::sigmaPhi);
882 (aod::fwdtrack::rhoTglX / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaX));
884 (aod::fwdtrack::rhoTglY / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaY));
886 (aod::fwdtrack::rhoTglPhi / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaPhi));
888 aod::fwdtrack::sigmaTgl* aod::fwdtrack::sigmaTgl);
890 (aod::fwdtrack::rho1PtY / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaY));
892 (aod::fwdtrack::rho1PtX / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaX));
894 (aod::fwdtrack::rho1PtPhi / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaPhi));
896 (aod::fwdtrack::rho1PtTgl / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaTgl));
898 aod::fwdtrack::sigma1Pt* aod::fwdtrack::sigma1Pt);
904 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
905 fwdtrack::Signed1Pt, fwdtrack::NClusters,
906 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
907 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
908 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
909 fwdtrack::Sign<fwdtrack::Signed1Pt>, fwdtrack::Chi2,
910 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
914 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
915 fwdtrack::Signed1Pt, fwdtrack::v001::NClusters<fwdtrack::MFTClusterSizesAndTrackFlags>, fwdtrack::MFTClusterSizesAndTrackFlags, fwdtrack::IsCA<fwdtrack::MFTClusterSizesAndTrackFlags>,
916 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
917 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
918 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
919 fwdtrack::Sign<fwdtrack::Signed1Pt>, fwdtrack::Chi2,
920 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
936template <aod::is_origin_hash O>
947 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
948 fwdtrack::Signed1Pt, fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd,
949 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
950 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
951 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
952 fwdtrack::Sign<fwdtrack::Signed1Pt>,
953 fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
954 fwdtrack::MatchScoreMCHMFT, fwdtrack::MFTTrackId, fwdtrack::MCHTrackId,
955 fwdtrack::MCHBitMap, fwdtrack::MIDBitMap, fwdtrack::MIDBoards,
956 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
964 fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
965 fwdtrack::RhoXY, fwdtrack::RhoPhiY, fwdtrack::RhoPhiX, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
966 fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
972 aod::fwdtrack::CPhiX,
973 aod::fwdtrack::CPhiY,
974 aod::fwdtrack::CPhiPhi,
975 aod::fwdtrack::CTglX,
976 aod::fwdtrack::CTglY,
977 aod::fwdtrack::CTglPhi,
978 aod::fwdtrack::CTglTgl,
979 aod::fwdtrack::C1PtX,
980 aod::fwdtrack::C1PtY,
981 aod::fwdtrack::C1PtPhi,
982 aod::fwdtrack::C1PtTgl,
983 aod::fwdtrack::C1Pt21Pt2);
990 fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
991 fwdtrack::RhoXY, fwdtrack::RhoPhiX, fwdtrack::RhoPhiY, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
992 fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
998 aod::fwdtrack::CPhiX,
999 aod::fwdtrack::CPhiY,
1000 aod::fwdtrack::CPhiPhi,
1001 aod::fwdtrack::CTglX,
1002 aod::fwdtrack::CTglY,
1003 aod::fwdtrack::CTglPhi,
1004 aod::fwdtrack::CTglTgl,
1005 aod::fwdtrack::C1PtX,
1006 aod::fwdtrack::C1PtY,
1007 aod::fwdtrack::C1PtPhi,
1008 aod::fwdtrack::C1PtTgl,
1009 aod::fwdtrack::C1Pt21Pt2);
1011using MFTTrack = MFTTracks::iterator;
1017extern template struct Join<aod::FwdTracks, aod::FwdTracksCov>;
1067 fwdtrkcl::FwdTrackId,
1072 fwdtrkcl::DEId<fwdtrkcl::ClInfo>,
1073 fwdtrkcl::IsGoodX<fwdtrkcl::ClInfo>,
1074 fwdtrkcl::IsGoodY<fwdtrkcl::ClInfo>);
1099 hmpid::HMPIDDistance,
1100 hmpid::HMPIDNPhotons,
1111 hmpid::HMPIDNPhotons,
1113 hmpid::HMPIDClusSize,
1115 hmpid::HMPIDPhotsCharge);
1132 calo::Time, calo::CellType, calo::CaloType);
1135namespace calotrigger
1146 calotrigger::LnAmplitude, calotrigger::TriggerBits, calotrigger::CaloType);
1157 return status & 0b00011111;
1160 return 2 + ((status & 0b01100000) >> 5);
1163 return (status & 0b01100000) >> 7;
1168 o2::soa::Index<>, cpvcluster::BCId, cpvcluster::PosX, cpvcluster::PosZ, cpvcluster::Amplitude,
1169 cpvcluster::ClusterStatus, cpvcluster::PadMult<cpvcluster::ClusterStatus>,
1170 cpvcluster::ModuleNumber<cpvcluster::ClusterStatus>, cpvcluster::IsUnfolded<cpvcluster::ClusterStatus>);
1200 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1202 auto thisenergy = -std::numeric_limits<float>::infinity();
1203 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1212 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1213 auto thisenergy = -std::numeric_limits<float>::infinity();
1214 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1223 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1224 auto thisenergy = -std::numeric_limits<float>::infinity();
1225 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1234 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1235 auto thisenergy = -std::numeric_limits<float>::infinity();
1236 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1245 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1246 auto thisenergy = -std::numeric_limits<float>::infinity();
1247 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1256 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1257 auto thisenergy = -std::numeric_limits<float>::infinity();
1258 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1267 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1269 -std::numeric_limits<float>::infinity(),
1270 -std::numeric_limits<float>::infinity(),
1271 -std::numeric_limits<float>::infinity(),
1272 -std::numeric_limits<float>::infinity()};
1286 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1287 std::array<float, 4> thisenergy = {
1288 -std::numeric_limits<float>::infinity(),
1289 -std::numeric_limits<float>::infinity(),
1290 -std::numeric_limits<float>::infinity(),
1291 -std::numeric_limits<float>::infinity()};
1292 for (uint64_t ie = 0; ie < channelE.size(); ie++) {
1294 thisenergy[0] = energy[ie];
1296 thisenergy[1] = energy[ie];
1298 thisenergy[2] = energy[ie];
1300 thisenergy[3] = energy[ie];
1305 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1307 -std::numeric_limits<float>::infinity(),
1308 -std::numeric_limits<float>::infinity(),
1309 -std::numeric_limits<float>::infinity(),
1310 -std::numeric_limits<float>::infinity()};
1311 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1324 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1326 -std::numeric_limits<float>::infinity(),
1327 -std::numeric_limits<float>::infinity(),
1328 -std::numeric_limits<float>::infinity(),
1329 -std::numeric_limits<float>::infinity()};
1330 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1343 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1344 auto thistime = -std::numeric_limits<float>::infinity();
1345 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1347 thistime =
time[ie];
1354 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1355 auto thistime = -std::numeric_limits<float>::infinity();
1356 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1358 thistime =
time[ie];
1365 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1366 auto thistime = -std::numeric_limits<float>::infinity();
1367 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1369 thistime =
time[ie];
1376 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1377 auto thistime = -std::numeric_limits<float>::infinity();
1378 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1380 thistime =
time[ie];
1387 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1388 auto thistime = -std::numeric_limits<float>::infinity();
1389 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1391 thistime =
time[ie];
1398 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1399 auto thistime = -std::numeric_limits<float>::infinity();
1400 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1402 thistime =
time[ie];
1410 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1411 auto thisamplitude = -std::numeric_limits<float>::infinity();
1412 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1414 thisamplitude = amplitude[ie];
1418 return thisamplitude;
1421 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1422 auto thisamplitude = -std::numeric_limits<float>::infinity();
1423 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1425 thisamplitude = amplitude[ie];
1429 return thisamplitude;
1432 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1433 auto thisamplitude = -std::numeric_limits<float>::infinity();
1434 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1436 thisamplitude = amplitude[ie];
1440 return thisamplitude;
1443 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1444 auto thisamplitude = -std::numeric_limits<float>::infinity();
1445 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1447 thisamplitude = amplitude[ie];
1451 return thisamplitude;
1454 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1455 auto thisamplitude = -std::numeric_limits<float>::infinity();
1456 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1458 thisamplitude = amplitude[ie];
1462 return thisamplitude;
1465 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1466 auto thisamplitude = -std::numeric_limits<float>::infinity();
1467 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1469 thisamplitude = amplitude[ie];
1473 return thisamplitude;
1479 zdc::EnergyCommonZNA, zdc::EnergyCommonZNC, zdc::EnergyCommonZPA, zdc::EnergyCommonZPC,
1480 zdc::EnergySectorZNA, zdc::EnergySectorZNC, zdc::EnergySectorZPA, zdc::EnergySectorZPC,
1481 zdc::TimeZEM1, zdc::TimeZEM2, zdc::TimeZNA, zdc::TimeZNC, zdc::TimeZPA, zdc::TimeZPC);
1485 o2::soa::Index<>, zdc::BCId, zdc::Energy, zdc::ChannelE, zdc::Amplitude, zdc::Time, zdc::ChannelT,
1486 zdc::DyEnergyZEM1<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyZEM2<zdc::ChannelE, zdc::Energy>,
1487 zdc::DyEnergyCommonZNA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyCommonZNC<zdc::ChannelE, zdc::Energy>,
1488 zdc::DyEnergyCommonZPA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyCommonZPC<zdc::ChannelE, zdc::Energy>,
1489 zdc::DyEnergySectorZNA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergySectorZNC<zdc::ChannelE, zdc::Energy>,
1490 zdc::DyEnergySectorZPA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergySectorZPC<zdc::ChannelE, zdc::Energy>,
1491 zdc::DyTimeZEM1<zdc::ChannelT, zdc::Time>, zdc::DyTimeZEM2<zdc::ChannelT, zdc::Time>,
1492 zdc::DyTimeZNA<zdc::ChannelT, zdc::Time>, zdc::DyTimeZNC<zdc::ChannelT, zdc::Time>,
1493 zdc::DyTimeZPA<zdc::ChannelT, zdc::Time>, zdc::DyTimeZPC<zdc::ChannelT, zdc::Time>,
1494 zdc::DyAmplitudeZEM1<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZEM2<zdc::ChannelT, zdc::Amplitude>,
1495 zdc::DyAmplitudeZNA<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZNC<zdc::ChannelT, zdc::Amplitude>,
1496 zdc::DyAmplitudeZPA<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZPC<zdc::ChannelT, zdc::Amplitude>);
1511 o2::soa::Index<>, fv0a::BCId, fv0a::Amplitude, fv0a::Channel, fv0a::Time, fv0a::TriggerMask);
1552 [](
float timeA) ->
bool {
1553 return timeA < 30.f;
1556 [](
float timeC) ->
bool {
1557 return timeC < 30.f;
1564 [](gsl::span<const float> vecAmpA) ->
float {
1565 return std::accumulate(vecAmpA.begin(), vecAmpA.end(), 0.f, [](
auto&&
sum,
auto&& curr) { return sum + (curr > 0 ? curr : 0); });
1568 [](gsl::span<const float> vecAmpC) ->
float {
1569 return std::accumulate(vecAmpC.begin(), vecAmpC.end(), 0.f, [](
auto&&
sum,
auto&& curr) { return sum + (curr > 0 ? curr : 0); });
1576 ft0::AmplitudeA, ft0::ChannelA, ft0::AmplitudeC, ft0::ChannelC, ft0::TimeA, ft0::TimeC,
1577 ft0::TriggerMask, ft0::PosZ<ft0::TimeA, ft0::TimeC>, ft0::CollTime<ft0::TimeA, ft0::TimeC>,
1578 ft0::IsValidTimeA<ft0::TimeA>, ft0::IsValidTimeC<ft0::TimeC>, ft0::IsValidTime<ft0::TimeA, ft0::TimeC>,
1579 ft0::SumAmpA<ft0::AmplitudeA>, ft0::SumAmpC<ft0::AmplitudeC>);
1584 ft0::TimeFT0A, ft0::TimeFT0C);
1606 fdd::AmplitudeA, fdd::AmplitudeC,
1607 fdd::TimeA, fdd::TimeC,
1613 fdd::ChargeA, fdd::ChargeC,
1614 fdd::TimeA, fdd::TimeC,
1622 fdd::TimeFDDA, fdd::TimeFDDC);
1640 trd::TRDQ0s, trd::TRDQ1s, trd::TRDQ2s,
1641 trd::TRDQ0sCorrected, trd::TRDQ1sCorrected, trd::TRDQ2sCorrected,
1642 trd::TRDTgls, trd::TRDPhis);
1653 [](uint8_t V0Type) ->
bool {
return V0Type == 1; });
1655 [](uint8_t V0Type) ->
bool {
return V0Type & (1 << 1); });
1657 [](uint8_t V0Type) ->
bool {
return V0Type & (1 << 2); });
1663 v0::PosTrackId, v0::NegTrackId);
1666 v0::PosTrackId, v0::NegTrackId);
1669 v0::PosTrackId, v0::NegTrackId,
1671 v0::IsStandardV0<v0::V0Type>,
1672 v0::IsPhotonV0<v0::V0Type>,
1673 v0::IsCollinearV0<v0::V0Type>);
1688 o2::soa::Index<>, cascade::CollisionId, cascade::V0Id, cascade::BachelorId);
1702 o2::soa::Index<>, decay3body::CollisionId, decay3body::Track0Id, decay3body::Track1Id, decay3body::Track2Id);
1707namespace strangenesstracking
1731 strangenesstracking::TrackId,
1732 strangenesstracking::ITSTrackId,
1733 strangenesstracking::CascadeId,
1734 strangenesstracking::DecayX,
1735 strangenesstracking::DecayY,
1736 strangenesstracking::DecayZ,
1737 strangenesstracking::XiMass,
1738 strangenesstracking::OmegaMass,
1739 strangenesstracking::MatchingChi2,
1740 strangenesstracking::TopologyChi2,
1741 strangenesstracking::ITSclsSize);
1745 strangenesstracking::TrackId,
1746 strangenesstracking::ITSTrackId,
1747 strangenesstracking::V0Id,
1748 strangenesstracking::DecayX,
1749 strangenesstracking::DecayY,
1750 strangenesstracking::DecayZ,
1751 strangenesstracking::H3Lmass,
1752 strangenesstracking::H4Lmass,
1753 strangenesstracking::MatchingChi2,
1754 strangenesstracking::TopologyChi2,
1755 strangenesstracking::ITSclsSize);
1759 strangenesstracking::TrackId,
1760 strangenesstracking::ITSTrackId,
1761 strangenesstracking::Decay3BodyId,
1762 strangenesstracking::DecayX,
1763 strangenesstracking::DecayY,
1764 strangenesstracking::DecayZ,
1765 strangenesstracking::H3Lmass,
1766 strangenesstracking::He4Lmass,
1767 strangenesstracking::MatchingChi2,
1768 strangenesstracking::TopologyChi2,
1769 strangenesstracking::ITSclsSize);
1844 run2::TriggerMaskNext50, run2::L0TriggerInputMask,
1845 run2::SPDClustersL0, run2::SPDClustersL1,
1846 run2::SPDFiredChipsL0, run2::SPDFiredChipsL1,
1847 run2::SPDFiredFastOrL0, run2::SPDFiredFastOrL1,
1848 run2::V0TriggerChargeA, run2::V0TriggerChargeC);
1852 run2::TriggerMaskNext50, run2::L0TriggerInputMask,
1853 run2::SPDClustersL0, run2::SPDClustersL1,
1854 run2::SPDFiredChipsL0, run2::SPDFiredChipsL1,
1855 run2::SPDFiredFastOrL0, run2::SPDFiredFastOrL1,
1856 run2::V0TriggerChargeA, run2::V0TriggerChargeC,
1857 run2::NTPCClusters, run2::NSDDSSDClusters);
1864 run2::oftv0::CollisionId, run2::oftv0::PosTrackId, run2::oftv0::NegTrackId,
1865 run2::oftv0::Px, run2::oftv0::Py, run2::oftv0::Pz, run2::oftv0::E,
1866 run2::oftv0::Qt, run2::oftv0::Alpha,
1867 run2::oftv0::X, run2::oftv0::Y, run2::oftv0::Z,
1868 run2::oftv0::Chi2NDF, run2::oftv0::PsiPair,
1869 run2::oftv0::DCAr, run2::oftv0::DCAz,
1870 run2::oftv0::MassInMeV);
1876 run2::pmd::Z, run2::pmd::CluADC, run2::pmd::CluPID, run2::pmd::Det,
1877 run2::pmd::Ncell, run2::pmd::Smn, run2::pmd::TrackNo, run2::pmd::TrackPid,
1878 run2::pmd::SigX, run2::pmd::SigY, run2::pmd::ClMatching);
1883namespace mccollision
1905 mccollision::GeneratorsID,
1906 mccollision::PosX, mccollision::PosY, mccollision::PosZ,
1907 mccollision::T, mccollision::Weight,
1908 mccollision::ImpactParameter,
1909 mccollision::GetGeneratorId<mccollision::GeneratorsID>,
1910 mccollision::GetSubGeneratorId<mccollision::GeneratorsID>,
1911 mccollision::GetSourceId<mccollision::GeneratorsID>);
1914 mccollision::GeneratorsID,
1915 mccollision::PosX, mccollision::PosY, mccollision::PosZ,
1916 mccollision::T, mccollision::Weight,
1917 mccollision::ImpactParameter,
1918 mccollision::EventPlaneAngle,
1919 mccollision::GetGeneratorId<mccollision::GeneratorsID>,
1920 mccollision::GetSubGeneratorId<mccollision::GeneratorsID>,
1921 mccollision::GetSourceId<mccollision::GeneratorsID>);
1960 [](
float px,
float py,
float pz) -> std::array<float, 3> {
return std::array<float, 3>{px, py, pz}; });
1965 ifnode((nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1966 aod::mcparticle::py * aod::mcparticle::py +
1967 aod::mcparticle::pz * aod::mcparticle::pz) -
1968 aod::mcparticle::pz) <
static_cast<float>(1e-7),
1969 ifnode(aod::mcparticle::pz < 0.f, -100.f, 100.f),
1970 0.5f * nlog((nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1971 aod::mcparticle::py * aod::mcparticle::py +
1972 aod::mcparticle::pz * aod::mcparticle::pz) +
1973 aod::mcparticle::pz) /
1974 (nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1975 aod::mcparticle::py * aod::mcparticle::py +
1976 aod::mcparticle::pz * aod::mcparticle::pz) -
1977 aod::mcparticle::pz))));
1979 nsqrt(aod::mcparticle::px* aod::mcparticle::px +
1980 aod::mcparticle::py * aod::mcparticle::py));
1982 nsqrt(aod::mcparticle::px* aod::mcparticle::px +
1983 aod::mcparticle::py * aod::mcparticle::py +
1984 aod::mcparticle::pz * aod::mcparticle::pz));
1986 ifnode((aod::mcparticle::e - aod::mcparticle::pz) <
static_cast<float>(1e-7),
1987 ifnode(aod::mcparticle::pz < 0.f, -100.f, 100.f),
1988 0.5f * nlog((aod::mcparticle::e + aod::mcparticle::pz) /
1989 (aod::mcparticle::e - aod::mcparticle::pz))));
1992namespace mcparticle_v2
2010 mcparticle::PdgCode, mcparticle::StatusCode, mcparticle_v2::Flags,
2011 mcparticle::Mother0Id, mcparticle::Mother1Id,
2012 mcparticle::Daughter0Id, mcparticle::Daughter1Id, mcparticle::Weight,
2013 mcparticle::Px, mcparticle::Py, mcparticle::Pz, mcparticle::E,
2014 mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt,
2015 mcparticle::PVector<mcparticle::Px, mcparticle::Py, mcparticle::Pz>,
2016 mcparticle::ProducedByGenerator<mcparticle_v2::Flags>,
2017 mcparticle::FromBackgroundEvent<mcparticle_v2::Flags>,
2018 mcparticle::GetGenStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2019 mcparticle::GetHepMCStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2020 mcparticle::GetProcess<mcparticle_v2::Flags, mcparticle::StatusCode>,
2021 mcparticle_v2::ProtectedFlags<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>,
2022 mcparticle_v2::IsPhysicalPrimary<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>);
2026 mcparticle::PdgCode, mcparticle::StatusCode, mcparticle_v2::Flags,
2027 mcparticle::MothersIds, mcparticle::DaughtersIdSlice, mcparticle::Weight,
2028 mcparticle::Px, mcparticle::Py, mcparticle::Pz, mcparticle::E,
2029 mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt,
2030 mcparticle::PVector<mcparticle::Px, mcparticle::Py, mcparticle::Pz>,
2031 mcparticle::ProducedByGenerator<mcparticle_v2::Flags>,
2032 mcparticle::FromBackgroundEvent<mcparticle_v2::Flags>,
2033 mcparticle::GetGenStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2034 mcparticle::GetHepMCStatusCode<mcparticle_v2::Flags, mcparticle::StatusCode>,
2035 mcparticle::GetProcess<mcparticle_v2::Flags, mcparticle::StatusCode>,
2036 mcparticle_v2::ProtectedFlags<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>,
2037 mcparticle_v2::IsPhysicalPrimary<mcparticle_v2::Flags, mcparticle::Vx, mcparticle::Vy>);
2056template <aod::is_origin_hash O>
2079namespace mctracklabel
2086 mctracklabel::McParticleId, mctracklabel::McMask);
2089namespace mcmfttracklabel
2096 mcmfttracklabel::McParticleId, mcmfttracklabel::McMask);
2099namespace mcfwdtracklabel
2106 mcfwdtracklabel::McParticleId, mcfwdtracklabel::McMask);
2109namespace mccalolabel
2118 mccalolabel::McParticleId, mccalolabel::McMask);
2120 mccalolabel::McParticleIds, mccalolabel::AmplitudeA);
2124namespace mccollisionlabel
2131 mccollisionlabel::McCollisionId, mccollisionlabel::McMask);
2135namespace hepmcxsection
2149 o2::soa::Index<>, hepmcxsection::McCollisionId, hepmcxsection::GeneratorsID,
2150 hepmcxsection::Accepted, hepmcxsection::Attempted, hepmcxsection::XsectGen,
2151 hepmcxsection::XsectErr, hepmcxsection::PtHard, hepmcxsection::NMPI, hepmcxsection::ProcessId);
2154namespace hepmcpdfinfo
2171 hepmcpdfinfo::Id1, hepmcpdfinfo::Id2,
2172 hepmcpdfinfo::PdfId1, hepmcpdfinfo::PdfId2,
2173 hepmcpdfinfo::X1, hepmcpdfinfo::X2,
2174 hepmcpdfinfo::ScalePdf, hepmcpdfinfo::Pdf1, hepmcpdfinfo::Pdf2);
2177namespace hepmcheavyion
2198 o2::soa::Index<>, hepmcheavyion::McCollisionId, hepmcheavyion::GeneratorsID,
2199 hepmcheavyion::NcollHard, hepmcheavyion::NpartProj, hepmcheavyion::NpartTarg,
2200 hepmcheavyion::Ncoll, hepmcheavyion::NNwoundedCollisions, hepmcheavyion::NwoundedNCollisions,
2201 hepmcheavyion::NwoundedNwoundedCollisions, hepmcheavyion::SpectatorNeutrons,
2202 hepmcheavyion::SpectatorProtons, hepmcheavyion::ImpactParameter, hepmcheavyion::EventPlaneAngle,
2203 hepmcheavyion::Eccentricity, hepmcheavyion::SigmaInelNN, hepmcheavyion::Centrality);
2221#define INDEX_LIST_RUN2 indices::CollisionId, indices::ZdcId, indices::BCId, indices::FT0Id, indices::FV0AId, indices::FV0CId, indices::FDDId
2225#define INDEX_LIST_RUN3 indices::CollisionId, indices::ZdcId, indices::BCId, indices::FT0Id, indices::FV0AId, indices::FDDId
2231 indices::BCId, indices::CollisionId);
2233 indices::BCId, indices::CollisionId);
2236 indices::BCId, indices::CollisionIds);
2238 indices::BCId, indices::CollisionIds);
2241 indices::BCId, indices::ZdcId, indices::FT0Id, indices::FV0AId, indices::FDDId);
2243 indices::BCId, indices::ZdcId, indices::FT0Id, indices::FV0AId, indices::FDDId);
2246 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