11#ifndef O2_FRAMEWORK_ANALYSISDATAMODEL_H_
12#define O2_FRAMEWORK_ANALYSISDATAMODEL_H_
44 bc::RunNumber, bc::GlobalBC,
48 bc::RunNumber, bc::GlobalBC,
49 bc::TriggerMask, bc::InputMask);
54template <aod::is_origin_hash O>
56using BC = BCs::iterator;
64 timestamp::Timestamp);
96 collision::PosX, collision::PosY, collision::PosZ,
97 collision::CovXX, collision::CovXY, collision::CovXZ, collision::CovYY, collision::CovYZ, collision::CovZZ,
98 collision::Flags, collision::Chi2, collision::NumContrib,
99 collision::CollisionTime, collision::CollisionTimeRes);
103 collision::PosX, collision::PosY, collision::PosZ,
104 collision::CovXX, collision::CovXY, collision::CovYY, collision::CovXZ, collision::CovYZ, collision::CovZZ,
105 collision::Flags, collision::Chi2, collision::NumContrib,
106 collision::CollisionTime, collision::CollisionTimeRes);
131 nasin(aod::track::snp) + aod::track::alpha)));
139 [](
float signed1Pt) ->
short {
return (signed1Pt > 0) ? 1 : -1; });
141 [](
float signed1Pt,
float snp,
float alpha) ->
float {
142 auto pt = 1.f / std::abs(signed1Pt);
145 auto r = std::sqrt((1.f - snp) * (1.f + snp));
146 return pt * (
r * cs - snp * sn);
149 [](
float signed1Pt,
float snp,
float alpha) ->
float {
150 auto pt = 1.f / std::abs(signed1Pt);
153 auto r = std::sqrt((1.f - snp) * (1.f + snp));
154 return pt * (snp * cs +
r * sn);
157 [](
float signed1Pt,
float tgl) ->
float {
158 auto pt = 1.f / std::abs(signed1Pt);
162 [](
float signed1Pt,
float snp,
float alpha,
float tgl) -> std::array<float, 3> {
163 const auto pt = 1.f / std::abs(signed1Pt);
165 const float cs = cosf(
alpha), sn = sinf(
alpha);
166 const auto r = std::sqrt((1.f - snp) * (1.f + snp));
167 const auto px = pt * (
r * cs - snp * sn);
168 const auto py = pt * (snp * cs +
r * sn);
169 const auto pz = pt * tgl;
170 return std::array<float, 3>{px, py, pz};
175 [](
float signed1Pt,
float tgl,
float mass) ->
float {
176 const auto pt = 1.f / std::abs(signed1Pt);
178 return std::sqrt(p * p + mass * mass);
181 [](
float signed1Pt,
float tgl,
float mass) ->
float {
182 const auto pt = 1.f / std::abs(signed1Pt);
183 const auto pz = pt * tgl;
185 const auto energy = std::sqrt(p * p + mass * mass);
186 return 0.5f * std::log((energy + pz) / (energy - pz));
207 aod::track::sigmaY* aod::track::sigmaY);
209 (aod::track::rhoZY / 128.f) * (aod::track::sigmaZ * aod::track::sigmaY));
211 aod::track::sigmaZ* aod::track::sigmaZ);
213 (aod::track::rhoSnpY / 128.f) * (aod::track::sigmaSnp * aod::track::sigmaY));
215 (aod::track::rhoSnpZ / 128.f) * (aod::track::sigmaSnp * aod::track::sigmaZ));
217 aod::track::sigmaSnp* aod::track::sigmaSnp);
219 (aod::track::rhoTglY / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaY));
221 (aod::track::rhoTglZ / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaZ));
223 (aod::track::rhoTglSnp / 128.f) * (aod::track::sigmaTgl * aod::track::sigmaSnp));
225 aod::track::sigmaTgl* aod::track::sigmaTgl);
227 (aod::track::rho1PtY / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaY));
229 (aod::track::rho1PtZ / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaZ));
231 (aod::track::rho1PtSnp / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaSnp));
233 (aod::track::rho1PtTgl / 128.f) * (aod::track::sigma1Pt * aod::track::sigmaTgl));
235 aod::track::sigma1Pt* aod::track::sigma1Pt);
272 [](
float length,
float tofExpMom) ->
float {
278 [](
float length,
float tofExpMom) ->
float {
284 [](
float length,
float tofExpMom) ->
float {
290 [](
float length,
float tofExpMom) ->
float {
296 [](
float length,
float tofExpMom) ->
float {
302 [](
float length,
float tofExpMom) ->
float {
308 [](
float length,
float tofExpMom) ->
float {
314 [](
float length,
float tofExpMom) ->
float {
320 [](
float length,
float tofExpMom) ->
float {
333 [](uint32_t itsClusterSizes) -> uint8_t {
336 if ((itsClusterSizes >> (
layer * 4)) & 0xf) {
337 clmap |= (1 <<
layer);
343 [](uint32_t itsClusterSizes) -> uint8_t {
346 if ((itsClusterSizes >> (
layer * 4)) & 0xf)
352 [](uint32_t itsClusterSizes) -> uint8_t {
353 uint8_t itsNclsInnerBarrel = 0;
355 if ((itsClusterSizes >> (
layer * 4)) & 0xf)
356 itsNclsInnerBarrel++;
358 return itsNclsInnerBarrel;
361 [](uint32_t itsClusterSizes,
int layer) -> uint8_t {
365 return (itsClusterSizes >> (
layer * 4)) & 0xf;
369 [](uint8_t detectorMap,
float itsChi2Ncl) ->
bool {
377 [](
float timeErr, uint32_t trackType) ->
float {
378 if (!(trackType & TrackFlags::TrackTimeAsym)) {
379 return TPCTimeErrEncoding::invalidValue;
387 [](
float timeErr, uint32_t trackType) ->
float {
388 if (!(trackType & TrackFlags::TrackTimeAsym)) {
389 return TPCTimeErrEncoding::invalidValue;
392 p.encoding.timeErr = timeErr;
393 return p.getDeltaTBwd();
420 [](uint32_t
flags) -> uint32_t {
return flags >> 28; });
422 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) -> int16_t {
return (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound; });
424 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusPID) -> int16_t {
return (int16_t)tpcNClsFindable - tpcNClsFindableMinusPID; });
426 [](uint8_t tpcNClsFindable, int8_t TPCNClsFindableMinusCrossedRows) -> int16_t {
return (int16_t)tpcNClsFindable - TPCNClsFindableMinusCrossedRows; });
428 [](uint8_t itsClusterMap) -> uint8_t {
438 [](uint8_t itsClusterMap) -> uint8_t {
439 uint8_t itsNclsInnerBarrel = 0;
443 itsNclsInnerBarrel++;
445 return itsNclsInnerBarrel;
448 [](uint8_t itsSharedClusterMap) -> uint8_t {
452 if (itsSharedClusterMap & (
bit <<
layer))
458 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) ->
float {
459 int16_t tpcNClsFound = (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound;
460 return (
float)tpcNClsFound / (float)tpcNClsFindable;
464 [](uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusCrossedRows) ->
float {
465 int16_t tpcNClsCrossedRows = (int16_t)tpcNClsFindable - tpcNClsFindableMinusCrossedRows;
466 return (
float)tpcNClsCrossedRows / (float)tpcNClsFindable;
470 [](uint8_t tpcNClsShared, uint8_t tpcNClsFindable, int8_t tpcNClsFindableMinusFound) ->
float {
471 int16_t tpcNClsFound = (int16_t)tpcNClsFindable - tpcNClsFindableMinusFound;
472 return (
float)tpcNClsShared / (float)tpcNClsFound;
482 [](uint8_t trdPattern) -> std::size_t {
return std::bitset<6>(trdPattern).count(); });
487 track::X, track::Alpha,
488 track::Y, track::Z, track::Snp, track::Tgl,
489 track::Signed1Pt, track::IsWithinBeamPipe<track::X>,
490 track::Px<track::Signed1Pt, track::Snp, track::Alpha>,
491 track::Py<track::Signed1Pt, track::Snp, track::Alpha>,
492 track::Pz<track::Signed1Pt, track::Tgl>,
493 track::PVector<track::Signed1Pt, track::Snp, track::Alpha, track::Tgl>,
494 track::Energy<track::Signed1Pt, track::Tgl>,
495 track::Rapidity<track::Signed1Pt, track::Tgl>,
496 track::Sign<track::Signed1Pt>,
507 track::X, track::Alpha,
508 track::Y, track::Z, track::Snp, track::Tgl,
509 track::Signed1Pt, track::IsWithinBeamPipe<track::X>,
510 track::Px<track::Signed1Pt, track::Snp, track::Alpha>,
511 track::Py<track::Signed1Pt, track::Snp, track::Alpha>,
512 track::Pz<track::Signed1Pt, track::Tgl>,
513 track::PVector<track::Signed1Pt, track::Snp, track::Alpha, track::Tgl>,
514 track::Energy<track::Signed1Pt, track::Tgl>,
515 track::Rapidity<track::Signed1Pt, track::Tgl>,
516 track::Sign<track::Signed1Pt>,
526 track::SigmaY, track::SigmaZ, track::SigmaSnp, track::SigmaTgl, track::Sigma1Pt,
527 track::RhoZY, track::RhoSnpY, track::RhoSnpZ, track::RhoTglY, track::RhoTglZ,
528 track::RhoTglSnp, track::Rho1PtY, track::Rho1PtZ, track::Rho1PtSnp, track::Rho1PtTgl,
o2::soa::Marker<1>);
545 aod::track::C1Pt21Pt2);
548 track::SigmaY, track::SigmaZ, track::SigmaSnp, track::SigmaTgl, track::Sigma1Pt,
549 track::RhoZY, track::RhoSnpY, track::RhoSnpZ, track::RhoTglY, track::RhoTglZ,
550 track::RhoTglSnp, track::Rho1PtY, track::Rho1PtZ, track::Rho1PtSnp, track::Rho1PtTgl,
o2::soa::Marker<2>);
567 aod::track::C1Pt21Pt2);
570 track::TPCInnerParam, track::Flags, track::ITSClusterMap,
571 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows,
572 track::TPCNClsShared, track::TRDPattern, track::ITSChi2NCl,
573 track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
574 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
575 track::PIDForTracking<track::Flags>,
576 track::IsPVContributor<track::Flags>,
577 track::HasITS<track::DetectorMap>, track::HasTPC<track::DetectorMap>,
578 track::HasTRD<track::DetectorMap>, track::HasTOF<track::DetectorMap>,
579 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
580 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
581 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
582 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
583 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
584 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
585 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
586 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
587 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
588 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
589 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
590 track::ITSNCls<track::ITSClusterMap>, track::ITSNClsInnerBarrel<track::ITSClusterMap>,
591 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
592 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
593 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
594 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
595 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
598 track::TPCInnerParam, track::Flags, track::ITSClusterSizes,
599 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusCrossedRows,
600 track::TPCNClsShared, track::v001::extensions::TPCDeltaTFwd<track::TrackTimeRes, track::Flags>, track::v001::extensions::TPCDeltaTBwd<track::TrackTimeRes, track::Flags>,
601 track::TRDPattern, track::ITSChi2NCl, track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
602 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
603 track::PIDForTracking<track::Flags>,
604 track::IsPVContributor<track::Flags>,
605 track::HasITS<track::v001::DetectorMap>, track::HasTPC<track::v001::DetectorMap>,
606 track::HasTRD<track::v001::DetectorMap>, track::HasTOF<track::v001::DetectorMap>,
607 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
608 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
609 track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
610 track::v001::ITSClsSizeInLayer<track::ITSClusterSizes>,
611 track::v001::IsITSAfterburner<track::v001::DetectorMap, track::ITSChi2NCl>,
612 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
613 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
614 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
615 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
616 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
617 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
618 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
619 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
620 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
621 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
622 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
623 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
624 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
625 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
628 track::TPCInnerParam, track::Flags, track::ITSClusterSizes,
629 track::TPCNClsFindable, track::TPCNClsFindableMinusFound, track::TPCNClsFindableMinusPID, track::TPCNClsFindableMinusCrossedRows,
630 track::TPCNClsShared, track::v001::extensions::TPCDeltaTFwd<track::TrackTimeRes, track::Flags>, track::v001::extensions::TPCDeltaTBwd<track::TrackTimeRes, track::Flags>,
631 track::TRDPattern, track::ITSChi2NCl, track::TPCChi2NCl, track::TRDChi2, track::TOFChi2,
632 track::TPCSignal, track::TRDSignal, track::Length, track::TOFExpMom,
633 track::PIDForTracking<track::Flags>,
634 track::IsPVContributor<track::Flags>,
635 track::HasITS<track::v001::DetectorMap>, track::HasTPC<track::v001::DetectorMap>,
636 track::HasTRD<track::v001::DetectorMap>, track::HasTOF<track::v001::DetectorMap>,
637 track::TPCNClsFound<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
638 track::TPCNClsPID<track::TPCNClsFindable, track::TPCNClsFindableMinusPID>,
639 track::TPCNClsCrossedRows<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
640 track::v001::ITSClusterMap<track::ITSClusterSizes>, track::v001::ITSNCls<track::ITSClusterSizes>, track::v001::ITSNClsInnerBarrel<track::ITSClusterSizes>,
641 track::v001::ITSClsSizeInLayer<track::ITSClusterSizes>,
642 track::v001::IsITSAfterburner<track::v001::DetectorMap, track::ITSChi2NCl>,
643 track::TOFExpTimeEl<track::Length, track::TOFExpMom>,
644 track::TOFExpTimeMu<track::Length, track::TOFExpMom>,
645 track::TOFExpTimePi<track::Length, track::TOFExpMom>,
646 track::TOFExpTimeKa<track::Length, track::TOFExpMom>,
647 track::TOFExpTimePr<track::Length, track::TOFExpMom>,
648 track::TOFExpTimeDe<track::Length, track::TOFExpMom>,
649 track::TOFExpTimeTr<track::Length, track::TOFExpMom>,
650 track::TOFExpTimeHe<track::Length, track::TOFExpMom>,
651 track::TOFExpTimeAl<track::Length, track::TOFExpMom>,
652 track::TPCCrossedRowsOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusCrossedRows>,
653 track::TPCFoundOverFindableCls<track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
654 track::TPCFractionSharedCls<track::TPCNClsShared, track::TPCNClsFindable, track::TPCNClsFindableMinusFound>,
655 track::TRDHasCrossing<track::TRDPattern>, track::TRDHasNeighbor<track::TRDPattern>, track::TRDNTracklets<track::TRDPattern>,
656 track::TrackEtaEMCAL, track::TrackPhiEMCAL, track::TrackTime, track::TrackTimeRes);
661 track::v001::DetectorMap);
663 track::v001::DetectorMap);
668 track::ITSSignal, track::ITSSharedClusterMap,
669 track::ITSNSharedCls<track::ITSSharedClusterMap>);
725 [](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 {
726 constexpr int8_t
m = std::numeric_limits<int8_t>::min();
727 return (cY ==
m && cZ ==
m && cSnp ==
m && cTgl ==
m && cQ2Pt ==
m && gY ==
m && gZ ==
m && gSnp ==
m && gTgl ==
m && gQ2Pt ==
m);
732 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
733 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
734 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R);
738 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
739 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
740 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
741 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
742 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
743 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
744 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
747 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
748 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
749 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
750 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
751 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
752 trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ,
753 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
754 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
757 o2::soa::Index<>, trackqa::TrackId, trackqa::TPCTime0, trackqa::TPCdEdxNorm, trackqa::TPCDCAR, trackqa::TPCDCAZ, trackqa::TPCClusterByteMask,
758 trackqa::TPCdEdxMax0R, trackqa::TPCdEdxMax1R, trackqa::TPCdEdxMax2R, trackqa::TPCdEdxMax3R,
759 trackqa::TPCdEdxTot0R, trackqa::TPCdEdxTot1R, trackqa::TPCdEdxTot2R, trackqa::TPCdEdxTot3R,
760 trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
761 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt,
762 trackqa::DeltaTOFdX, trackqa::DeltaTOFdZ,
763 trackqa::IsDummy<trackqa::DeltaRefContParamY, trackqa::DeltaRefContParamZ, trackqa::DeltaRefContParamSnp, trackqa::DeltaRefContParamTgl, trackqa::DeltaRefContParamQ2Pt,
764 trackqa::DeltaRefGloParamY, trackqa::DeltaRefGloParamZ, trackqa::DeltaRefGloParamSnp, trackqa::DeltaRefGloParamTgl, trackqa::DeltaRefGloParamQ2Pt>);
795 [](
float signed1Pt) ->
short {
return (signed1Pt > 0) ? 1 : -1; });
797 [](uint64_t mftClusterSizesAndTrackFlags) ->
bool {
return mftClusterSizesAndTrackFlags & (0x1ULL << 60); });
805 [](
float pt,
float phi) ->
float {
806 return pt * std::cos(phi);
809 [](
float pt,
float phi) ->
float {
810 return pt * std::sin(phi);
813 [](
float pt,
float tgl) ->
float {
817 [](uint32_t midBoards) ->
int {
818 return static_cast<int>(midBoards & 0xFF);
821 [](uint32_t midBoards) ->
int {
822 return static_cast<int>((midBoards >> 8) & 0xFF);
825 [](uint32_t midBoards) ->
int {
826 return static_cast<int>((midBoards >> 16) & 0xFF);
829 [](uint32_t midBoards) ->
int {
830 return static_cast<int>((midBoards >> 24) & 0xFF);
836 [](uint64_t mftClusterSizesAndTrackFlags) -> int8_t {
839 if ((mftClusterSizesAndTrackFlags >> (
layer * 6)) & 0x3F) {
865 aod::fwdtrack::sigmaX* aod::fwdtrack::sigmaX);
867 (aod::fwdtrack::rhoXY / 128.f) * (aod::fwdtrack::sigmaX * aod::fwdtrack::sigmaY));
869 aod::fwdtrack::sigmaY* aod::fwdtrack::sigmaY);
871 (aod::fwdtrack::rhoPhiX / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaX));
873 (aod::fwdtrack::rhoPhiY / 128.f) * (aod::fwdtrack::sigmaPhi * aod::fwdtrack::sigmaY));
875 aod::fwdtrack::sigmaPhi* aod::fwdtrack::sigmaPhi);
877 (aod::fwdtrack::rhoTglX / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaX));
879 (aod::fwdtrack::rhoTglY / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaY));
881 (aod::fwdtrack::rhoTglPhi / 128.f) * (aod::fwdtrack::sigmaTgl * aod::fwdtrack::sigmaPhi));
883 aod::fwdtrack::sigmaTgl* aod::fwdtrack::sigmaTgl);
885 (aod::fwdtrack::rho1PtY / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaY));
887 (aod::fwdtrack::rho1PtX / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaX));
889 (aod::fwdtrack::rho1PtPhi / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaPhi));
891 (aod::fwdtrack::rho1PtTgl / 128.f) * (aod::fwdtrack::sigma1Pt * aod::fwdtrack::sigmaTgl));
893 aod::fwdtrack::sigma1Pt* aod::fwdtrack::sigma1Pt);
899 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
900 fwdtrack::Signed1Pt, fwdtrack::NClusters,
901 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
902 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
903 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
904 fwdtrack::Sign<fwdtrack::Signed1Pt>, fwdtrack::Chi2,
905 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
909 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
910 fwdtrack::Signed1Pt, fwdtrack::v001::NClusters<fwdtrack::MFTClusterSizesAndTrackFlags>, fwdtrack::MFTClusterSizesAndTrackFlags, fwdtrack::IsCA<fwdtrack::MFTClusterSizesAndTrackFlags>,
911 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
912 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
913 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
914 fwdtrack::Sign<fwdtrack::Signed1Pt>, fwdtrack::Chi2,
915 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
931template <aod::is_origin_hash O>
942 fwdtrack::X, fwdtrack::Y, fwdtrack::Z, fwdtrack::Phi, fwdtrack::Tgl,
943 fwdtrack::Signed1Pt, fwdtrack::NClusters, fwdtrack::PDca, fwdtrack::RAtAbsorberEnd,
944 fwdtrack::Px<fwdtrack::Pt, fwdtrack::Phi>,
945 fwdtrack::Py<fwdtrack::Pt, fwdtrack::Phi>,
946 fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
947 fwdtrack::Sign<fwdtrack::Signed1Pt>,
948 fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
949 fwdtrack::MatchScoreMCHMFT, fwdtrack::MFTTrackId, fwdtrack::MCHTrackId,
950 fwdtrack::MCHBitMap, fwdtrack::MIDBitMap, fwdtrack::MIDBoards,
951 fwdtrack::TrackTime, fwdtrack::TrackTimeRes);
959 fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
960 fwdtrack::RhoXY, fwdtrack::RhoPhiY, fwdtrack::RhoPhiX, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
961 fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
967 aod::fwdtrack::CPhiX,
968 aod::fwdtrack::CPhiY,
969 aod::fwdtrack::CPhiPhi,
970 aod::fwdtrack::CTglX,
971 aod::fwdtrack::CTglY,
972 aod::fwdtrack::CTglPhi,
973 aod::fwdtrack::CTglTgl,
974 aod::fwdtrack::C1PtX,
975 aod::fwdtrack::C1PtY,
976 aod::fwdtrack::C1PtPhi,
977 aod::fwdtrack::C1PtTgl,
978 aod::fwdtrack::C1Pt21Pt2);
985 fwdtrack::SigmaX, fwdtrack::SigmaY, fwdtrack::SigmaPhi, fwdtrack::SigmaTgl, fwdtrack::Sigma1Pt,
986 fwdtrack::RhoXY, fwdtrack::RhoPhiX, fwdtrack::RhoPhiY, fwdtrack::RhoTglX, fwdtrack::RhoTglY,
987 fwdtrack::RhoTglPhi, fwdtrack::Rho1PtX, fwdtrack::Rho1PtY, fwdtrack::Rho1PtPhi, fwdtrack::Rho1PtTgl);
993 aod::fwdtrack::CPhiX,
994 aod::fwdtrack::CPhiY,
995 aod::fwdtrack::CPhiPhi,
996 aod::fwdtrack::CTglX,
997 aod::fwdtrack::CTglY,
998 aod::fwdtrack::CTglPhi,
999 aod::fwdtrack::CTglTgl,
1000 aod::fwdtrack::C1PtX,
1001 aod::fwdtrack::C1PtY,
1002 aod::fwdtrack::C1PtPhi,
1003 aod::fwdtrack::C1PtTgl,
1004 aod::fwdtrack::C1Pt21Pt2);
1006using MFTTrack = MFTTracks::iterator;
1012extern template struct Join<aod::FwdTracks, aod::FwdTracksCov>;
1062 fwdtrkcl::FwdTrackId,
1067 fwdtrkcl::DEId<fwdtrkcl::ClInfo>,
1068 fwdtrkcl::IsGoodX<fwdtrkcl::ClInfo>,
1069 fwdtrkcl::IsGoodY<fwdtrkcl::ClInfo>);
1094 hmpid::HMPIDDistance,
1095 hmpid::HMPIDNPhotons,
1106 hmpid::HMPIDNPhotons,
1108 hmpid::HMPIDClusSize,
1110 hmpid::HMPIDPhotsCharge);
1127 calo::Time, calo::CellType, calo::CaloType);
1130namespace calotrigger
1141 calotrigger::LnAmplitude, calotrigger::TriggerBits, calotrigger::CaloType);
1152 return status & 0b00011111;
1155 return 2 + ((status & 0b01100000) >> 5);
1158 return (status & 0b01100000) >> 7;
1163 o2::soa::Index<>, cpvcluster::BCId, cpvcluster::PosX, cpvcluster::PosZ, cpvcluster::Amplitude,
1164 cpvcluster::ClusterStatus, cpvcluster::PadMult<cpvcluster::ClusterStatus>,
1165 cpvcluster::ModuleNumber<cpvcluster::ClusterStatus>, cpvcluster::IsUnfolded<cpvcluster::ClusterStatus>);
1195 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1197 auto thisenergy = -std::numeric_limits<float>::infinity();
1198 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1207 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1208 auto thisenergy = -std::numeric_limits<float>::infinity();
1209 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1218 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1219 auto thisenergy = -std::numeric_limits<float>::infinity();
1220 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1229 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1230 auto thisenergy = -std::numeric_limits<float>::infinity();
1231 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1240 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1241 auto thisenergy = -std::numeric_limits<float>::infinity();
1242 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1251 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) ->
float {
1252 auto thisenergy = -std::numeric_limits<float>::infinity();
1253 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1262 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1264 -std::numeric_limits<float>::infinity(),
1265 -std::numeric_limits<float>::infinity(),
1266 -std::numeric_limits<float>::infinity(),
1267 -std::numeric_limits<float>::infinity()};
1281 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1282 std::array<float, 4> thisenergy = {
1283 -std::numeric_limits<float>::infinity(),
1284 -std::numeric_limits<float>::infinity(),
1285 -std::numeric_limits<float>::infinity(),
1286 -std::numeric_limits<float>::infinity()};
1287 for (uint64_t ie = 0; ie < channelE.size(); ie++) {
1289 thisenergy[0] = energy[ie];
1291 thisenergy[1] = energy[ie];
1293 thisenergy[2] = energy[ie];
1295 thisenergy[3] = energy[ie];
1300 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1302 -std::numeric_limits<float>::infinity(),
1303 -std::numeric_limits<float>::infinity(),
1304 -std::numeric_limits<float>::infinity(),
1305 -std::numeric_limits<float>::infinity()};
1306 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1319 [](gsl::span<const uint8_t> channelE, gsl::span<const float> energy) -> std::array<float, 4> {
1321 -std::numeric_limits<float>::infinity(),
1322 -std::numeric_limits<float>::infinity(),
1323 -std::numeric_limits<float>::infinity(),
1324 -std::numeric_limits<float>::infinity()};
1325 for (uint64_t ie = 0; ie <
channelE.size(); ie++) {
1338 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1339 auto thistime = -std::numeric_limits<float>::infinity();
1340 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1342 thistime =
time[ie];
1349 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1350 auto thistime = -std::numeric_limits<float>::infinity();
1351 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1353 thistime =
time[ie];
1360 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1361 auto thistime = -std::numeric_limits<float>::infinity();
1362 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1364 thistime =
time[ie];
1371 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1372 auto thistime = -std::numeric_limits<float>::infinity();
1373 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1375 thistime =
time[ie];
1382 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1383 auto thistime = -std::numeric_limits<float>::infinity();
1384 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1386 thistime =
time[ie];
1393 [](gsl::span<const uint8_t> channelT, gsl::span<const float>
time) ->
float {
1394 auto thistime = -std::numeric_limits<float>::infinity();
1395 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1397 thistime =
time[ie];
1405 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1406 auto thisamplitude = -std::numeric_limits<float>::infinity();
1407 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1409 thisamplitude = amplitude[ie];
1413 return thisamplitude;
1416 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1417 auto thisamplitude = -std::numeric_limits<float>::infinity();
1418 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1420 thisamplitude = amplitude[ie];
1424 return thisamplitude;
1427 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1428 auto thisamplitude = -std::numeric_limits<float>::infinity();
1429 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1431 thisamplitude = amplitude[ie];
1435 return thisamplitude;
1438 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1439 auto thisamplitude = -std::numeric_limits<float>::infinity();
1440 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1442 thisamplitude = amplitude[ie];
1446 return thisamplitude;
1449 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1450 auto thisamplitude = -std::numeric_limits<float>::infinity();
1451 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1453 thisamplitude = amplitude[ie];
1457 return thisamplitude;
1460 [](gsl::span<const uint8_t> channelT, gsl::span<const float> amplitude) ->
float {
1461 auto thisamplitude = -std::numeric_limits<float>::infinity();
1462 for (uint64_t ie = 0; ie < channelT.size(); ie++) {
1464 thisamplitude = amplitude[ie];
1468 return thisamplitude;
1474 zdc::EnergyCommonZNA, zdc::EnergyCommonZNC, zdc::EnergyCommonZPA, zdc::EnergyCommonZPC,
1475 zdc::EnergySectorZNA, zdc::EnergySectorZNC, zdc::EnergySectorZPA, zdc::EnergySectorZPC,
1476 zdc::TimeZEM1, zdc::TimeZEM2, zdc::TimeZNA, zdc::TimeZNC, zdc::TimeZPA, zdc::TimeZPC);
1480 o2::soa::Index<>, zdc::BCId, zdc::Energy, zdc::ChannelE, zdc::Amplitude, zdc::Time, zdc::ChannelT,
1481 zdc::DyEnergyZEM1<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyZEM2<zdc::ChannelE, zdc::Energy>,
1482 zdc::DyEnergyCommonZNA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyCommonZNC<zdc::ChannelE, zdc::Energy>,
1483 zdc::DyEnergyCommonZPA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergyCommonZPC<zdc::ChannelE, zdc::Energy>,
1484 zdc::DyEnergySectorZNA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergySectorZNC<zdc::ChannelE, zdc::Energy>,
1485 zdc::DyEnergySectorZPA<zdc::ChannelE, zdc::Energy>, zdc::DyEnergySectorZPC<zdc::ChannelE, zdc::Energy>,
1486 zdc::DyTimeZEM1<zdc::ChannelT, zdc::Time>, zdc::DyTimeZEM2<zdc::ChannelT, zdc::Time>,
1487 zdc::DyTimeZNA<zdc::ChannelT, zdc::Time>, zdc::DyTimeZNC<zdc::ChannelT, zdc::Time>,
1488 zdc::DyTimeZPA<zdc::ChannelT, zdc::Time>, zdc::DyTimeZPC<zdc::ChannelT, zdc::Time>,
1489 zdc::DyAmplitudeZEM1<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZEM2<zdc::ChannelT, zdc::Amplitude>,
1490 zdc::DyAmplitudeZNA<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZNC<zdc::ChannelT, zdc::Amplitude>,
1491 zdc::DyAmplitudeZPA<zdc::ChannelT, zdc::Amplitude>, zdc::DyAmplitudeZPC<zdc::ChannelT, zdc::Amplitude>);
1506 o2::soa::Index<>, fv0a::BCId, fv0a::Amplitude, fv0a::Channel, fv0a::Time, fv0a::TriggerMask);
1547 [](
float timeA) ->
bool {
1548 return timeA < 30.f;
1551 [](
float timeC) ->
bool {
1552 return timeC < 30.f;
1559 [](gsl::span<const float> vecAmpA) ->
float {
1560 return std::accumulate(vecAmpA.begin(), vecAmpA.end(), 0.f, [](
auto&&
sum,
auto&& curr) { return sum + (curr > 0 ? curr : 0); });
1563 [](gsl::span<const float> vecAmpC) ->
float {
1564 return std::accumulate(vecAmpC.begin(), vecAmpC.end(), 0.f, [](
auto&&
sum,
auto&& curr) { return sum + (curr > 0 ? curr : 0); });
1571 ft0::AmplitudeA, ft0::ChannelA, ft0::AmplitudeC, ft0::ChannelC, ft0::TimeA, ft0::TimeC,
1572 ft0::TriggerMask, ft0::PosZ<ft0::TimeA, ft0::TimeC>, ft0::CollTime<ft0::TimeA, ft0::TimeC>,
1573 ft0::IsValidTimeA<ft0::TimeA>, ft0::IsValidTimeC<ft0::TimeC>, ft0::IsValidTime<ft0::TimeA, ft0::TimeC>,
1574 ft0::SumAmpA<ft0::AmplitudeA>, ft0::SumAmpC<ft0::AmplitudeC>);
1579 ft0::TimeFT0A, ft0::TimeFT0C);
1601 fdd::AmplitudeA, fdd::AmplitudeC,
1602 fdd::TimeA, fdd::TimeC,
1608 fdd::ChargeA, fdd::ChargeC,
1609 fdd::TimeA, fdd::TimeC,
1617 fdd::TimeFDDA, fdd::TimeFDDC);
1635 trd::TRDQ0s, trd::TRDQ1s, trd::TRDQ2s,
1636 trd::TRDQ0sCorrected, trd::TRDQ1sCorrected, trd::TRDQ2sCorrected,
1637 trd::TRDTgls, trd::TRDPhis);
1648 [](uint8_t V0Type) ->
bool {
return V0Type == 1; });
1650 [](uint8_t V0Type) ->
bool {
return V0Type & (1 << 1); });
1652 [](uint8_t V0Type) ->
bool {
return V0Type & (1 << 2); });
1658 v0::PosTrackId, v0::NegTrackId);
1661 v0::PosTrackId, v0::NegTrackId);
1664 v0::PosTrackId, v0::NegTrackId,
1666 v0::IsStandardV0<v0::V0Type>,
1667 v0::IsPhotonV0<v0::V0Type>,
1668 v0::IsCollinearV0<v0::V0Type>);
1683 o2::soa::Index<>, cascade::CollisionId, cascade::V0Id, cascade::BachelorId);
1697 o2::soa::Index<>, decay3body::CollisionId, decay3body::Track0Id, decay3body::Track1Id, decay3body::Track2Id);
1702namespace strangenesstracking
1726 strangenesstracking::TrackId,
1727 strangenesstracking::ITSTrackId,
1728 strangenesstracking::CascadeId,
1729 strangenesstracking::DecayX,
1730 strangenesstracking::DecayY,
1731 strangenesstracking::DecayZ,
1732 strangenesstracking::XiMass,
1733 strangenesstracking::OmegaMass,
1734 strangenesstracking::MatchingChi2,
1735 strangenesstracking::TopologyChi2,
1736 strangenesstracking::ITSclsSize);
1740 strangenesstracking::TrackId,
1741 strangenesstracking::ITSTrackId,
1742 strangenesstracking::V0Id,
1743 strangenesstracking::DecayX,
1744 strangenesstracking::DecayY,
1745 strangenesstracking::DecayZ,
1746 strangenesstracking::H3Lmass,
1747 strangenesstracking::H4Lmass,
1748 strangenesstracking::MatchingChi2,
1749 strangenesstracking::TopologyChi2,
1750 strangenesstracking::ITSclsSize);
1754 strangenesstracking::TrackId,
1755 strangenesstracking::ITSTrackId,
1756 strangenesstracking::Decay3BodyId,
1757 strangenesstracking::DecayX,
1758 strangenesstracking::DecayY,
1759 strangenesstracking::DecayZ,
1760 strangenesstracking::H3Lmass,
1761 strangenesstracking::He4Lmass,
1762 strangenesstracking::MatchingChi2,
1763 strangenesstracking::TopologyChi2,
1764 strangenesstracking::ITSclsSize);
1839 run2::TriggerMaskNext50, run2::L0TriggerInputMask,
1840 run2::SPDClustersL0, run2::SPDClustersL1,
1841 run2::SPDFiredChipsL0, run2::SPDFiredChipsL1,
1842 run2::SPDFiredFastOrL0, run2::SPDFiredFastOrL1,
1843 run2::V0TriggerChargeA, run2::V0TriggerChargeC);
1847 run2::TriggerMaskNext50, run2::L0TriggerInputMask,
1848 run2::SPDClustersL0, run2::SPDClustersL1,
1849 run2::SPDFiredChipsL0, run2::SPDFiredChipsL1,
1850 run2::SPDFiredFastOrL0, run2::SPDFiredFastOrL1,
1851 run2::V0TriggerChargeA, run2::V0TriggerChargeC,
1852 run2::NTPCClusters, run2::NSDDSSDClusters);
1859 run2::oftv0::CollisionId, run2::oftv0::PosTrackId, run2::oftv0::NegTrackId,
1860 run2::oftv0::Px, run2::oftv0::Py, run2::oftv0::Pz, run2::oftv0::E,
1861 run2::oftv0::Qt, run2::oftv0::Alpha,
1862 run2::oftv0::X, run2::oftv0::Y, run2::oftv0::Z,
1863 run2::oftv0::Chi2NDF, run2::oftv0::PsiPair,
1864 run2::oftv0::DCAr, run2::oftv0::DCAz,
1865 run2::oftv0::MassInMeV);
1871 run2::pmd::Z, run2::pmd::CluADC, run2::pmd::CluPID, run2::pmd::Det,
1872 run2::pmd::Ncell, run2::pmd::Smn, run2::pmd::TrackNo, run2::pmd::TrackPid,
1873 run2::pmd::SigX, run2::pmd::SigY, run2::pmd::ClMatching);
1878namespace mccollision
1900 mccollision::GeneratorsID,
1901 mccollision::PosX, mccollision::PosY, mccollision::PosZ,
1902 mccollision::T, mccollision::Weight,
1903 mccollision::ImpactParameter,
1904 mccollision::GetGeneratorId<mccollision::GeneratorsID>,
1905 mccollision::GetSubGeneratorId<mccollision::GeneratorsID>,
1906 mccollision::GetSourceId<mccollision::GeneratorsID>);
1909 mccollision::GeneratorsID,
1910 mccollision::PosX, mccollision::PosY, mccollision::PosZ,
1911 mccollision::T, mccollision::Weight,
1912 mccollision::ImpactParameter,
1913 mccollision::EventPlaneAngle,
1914 mccollision::GetGeneratorId<mccollision::GeneratorsID>,
1915 mccollision::GetSubGeneratorId<mccollision::GeneratorsID>,
1916 mccollision::GetSourceId<mccollision::GeneratorsID>);
1955 [](
float px,
float py,
float pz) -> std::array<float, 3> {
return std::array<float, 3>{px, py, pz}; });
1960 ifnode((nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1961 aod::mcparticle::py * aod::mcparticle::py +
1962 aod::mcparticle::pz * aod::mcparticle::pz) -
1963 aod::mcparticle::pz) <
static_cast<float>(1e-7),
1964 ifnode(aod::mcparticle::pz < 0.f, -100.f, 100.f),
1965 0.5f * nlog((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) /
1969 (nsqrt(aod::mcparticle::px * aod::mcparticle::px +
1970 aod::mcparticle::py * aod::mcparticle::py +
1971 aod::mcparticle::pz * aod::mcparticle::pz) -
1972 aod::mcparticle::pz))));
1974 nsqrt(aod::mcparticle::px* aod::mcparticle::px +
1975 aod::mcparticle::py * aod::mcparticle::py));
1977 nsqrt(aod::mcparticle::px* aod::mcparticle::px +
1978 aod::mcparticle::py * aod::mcparticle::py +
1979 aod::mcparticle::pz * aod::mcparticle::pz));
1981 ifnode((aod::mcparticle::e - aod::mcparticle::pz) <
static_cast<float>(1e-7),
1982 ifnode(aod::mcparticle::pz < 0.f, -100.f, 100.f),
1983 0.5f * nlog((aod::mcparticle::e + aod::mcparticle::pz) /
1984 (aod::mcparticle::e - aod::mcparticle::pz))));
1989 mcparticle::PdgCode, mcparticle::StatusCode, mcparticle::Flags,
1990 mcparticle::Mother0Id, mcparticle::Mother1Id,
1991 mcparticle::Daughter0Id, mcparticle::Daughter1Id, mcparticle::Weight,
1992 mcparticle::Px, mcparticle::Py, mcparticle::Pz, mcparticle::E,
1993 mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt,
1994 mcparticle::PVector<mcparticle::Px, mcparticle::Py, mcparticle::Pz>,
1995 mcparticle::ProducedByGenerator<mcparticle::Flags>,
1996 mcparticle::FromBackgroundEvent<mcparticle::Flags>,
1997 mcparticle::GetGenStatusCode<mcparticle::Flags, mcparticle::StatusCode>,
1998 mcparticle::GetHepMCStatusCode<mcparticle::Flags, mcparticle::StatusCode>,
1999 mcparticle::GetProcess<mcparticle::Flags, mcparticle::StatusCode>,
2000 mcparticle::IsPhysicalPrimary<mcparticle::Flags>);
2004 mcparticle::PdgCode, mcparticle::StatusCode, mcparticle::Flags,
2005 mcparticle::MothersIds, mcparticle::DaughtersIdSlice, mcparticle::Weight,
2006 mcparticle::Px, mcparticle::Py, mcparticle::Pz, mcparticle::E,
2007 mcparticle::Vx, mcparticle::Vy, mcparticle::Vz, mcparticle::Vt,
2008 mcparticle::PVector<mcparticle::Px, mcparticle::Py, mcparticle::Pz>,
2009 mcparticle::ProducedByGenerator<mcparticle::Flags>,
2010 mcparticle::FromBackgroundEvent<mcparticle::Flags>,
2011 mcparticle::GetGenStatusCode<mcparticle::Flags, mcparticle::StatusCode>,
2012 mcparticle::GetHepMCStatusCode<mcparticle::Flags, mcparticle::StatusCode>,
2013 mcparticle::GetProcess<mcparticle::Flags, mcparticle::StatusCode>,
2014 mcparticle::IsPhysicalPrimary<mcparticle::Flags>);
2033template <aod::is_origin_hash O>
2056namespace mctracklabel
2063 mctracklabel::McParticleId, mctracklabel::McMask);
2066namespace mcmfttracklabel
2073 mcmfttracklabel::McParticleId, mcmfttracklabel::McMask);
2076namespace mcfwdtracklabel
2083 mcfwdtracklabel::McParticleId, mcfwdtracklabel::McMask);
2086namespace mccalolabel
2095 mccalolabel::McParticleId, mccalolabel::McMask);
2097 mccalolabel::McParticleIds, mccalolabel::AmplitudeA);
2101namespace mccollisionlabel
2108 mccollisionlabel::McCollisionId, mccollisionlabel::McMask);
2112namespace hepmcxsection
2126 o2::soa::Index<>, hepmcxsection::McCollisionId, hepmcxsection::GeneratorsID,
2127 hepmcxsection::Accepted, hepmcxsection::Attempted, hepmcxsection::XsectGen,
2128 hepmcxsection::XsectErr, hepmcxsection::PtHard, hepmcxsection::NMPI, hepmcxsection::ProcessId);
2131namespace hepmcpdfinfo
2148 hepmcpdfinfo::Id1, hepmcpdfinfo::Id2,
2149 hepmcpdfinfo::PdfId1, hepmcpdfinfo::PdfId2,
2150 hepmcpdfinfo::X1, hepmcpdfinfo::X2,
2151 hepmcpdfinfo::ScalePdf, hepmcpdfinfo::Pdf1, hepmcpdfinfo::Pdf2);
2154namespace hepmcheavyion
2175 o2::soa::Index<>, hepmcheavyion::McCollisionId, hepmcheavyion::GeneratorsID,
2176 hepmcheavyion::NcollHard, hepmcheavyion::NpartProj, hepmcheavyion::NpartTarg,
2177 hepmcheavyion::Ncoll, hepmcheavyion::NNwoundedCollisions, hepmcheavyion::NwoundedNCollisions,
2178 hepmcheavyion::NwoundedNwoundedCollisions, hepmcheavyion::SpectatorNeutrons,
2179 hepmcheavyion::SpectatorProtons, hepmcheavyion::ImpactParameter, hepmcheavyion::EventPlaneAngle,
2180 hepmcheavyion::Eccentricity, hepmcheavyion::SigmaInelNN, hepmcheavyion::Centrality);
2198#define INDEX_LIST_RUN2 indices::CollisionId, indices::ZdcId, indices::BCId, indices::FT0Id, indices::FV0AId, indices::FV0CId, indices::FDDId
2202#define INDEX_LIST_RUN3 indices::CollisionId, indices::ZdcId, indices::BCId, indices::FT0Id, indices::FV0AId, indices::FDDId
2208 indices::BCId, indices::CollisionId);
2210 indices::BCId, indices::CollisionId);
2213 indices::BCId, indices::CollisionIds);
2215 indices::BCId, indices::CollisionIds);
2218 indices::BCId, indices::ZdcId, indices::FT0Id, indices::FV0AId, indices::FDDId);
2220 indices::BCId, indices::ZdcId, indices::FT0Id, indices::FV0AId, indices::FDDId);
2223 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 ...
float getDeltaTFwd() const
union o2::aod::track::extensions::TPCTimeErrEncoding::TPCDeltaTime encoding
table_t::template iterator_template< DefaultIndexPolicy, self_t, Ts... > iterator