Skip to content

Commit d38ea06

Browse files
committed
Common/Core: disentangle fwdtrackUtilities.h from ASoA.h
1 parent 22dfa17 commit d38ea06

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

Common/Core/fwdtrackUtilities.h

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#ifndef COMMON_CORE_FWDTRACKUTILITIES_H_
1919
#define COMMON_CORE_FWDTRACKUTILITIES_H_
2020

21-
#include <Framework/AnalysisDataModel.h>
2221
#include <Framework/DataTypes.h>
2322
#include <GlobalTracking/MatchGlobalFwd.h>
2423
#include <MCHTracking/TrackExtrap.h>
@@ -48,22 +47,32 @@ using SMatrix55 = ROOT::Math::SMatrix<double, 5, 5, ROOT::Math::MatRepSym<double
4847
using SMatrix55Std = ROOT::Math::SMatrix<double, 5>;
4948
using SMatrix5 = ROOT::Math::SVector<double, 5>;
5049

50+
template <typename T>
51+
concept is_fwd_track = requires(T t) {
52+
{ t.rAtAbsorberEnd() } -> std::same_as<float>;
53+
};
54+
55+
template <typename T>
56+
concept is_fwd_cov = requires(T t) {
57+
{ t.sigmaX() } -> std::same_as<float>;
58+
};
59+
5160
/// Produce TrackParCovFwds for MFT and FwdTracks, w/ or w/o cov, with z shift
5261
template <typename TFwdTrack, typename... TCovariance>
5362
o2::track::TrackParCovFwd getTrackParCovFwdShift(TFwdTrack const& track, float zshift, TCovariance const&... covOpt)
5463
{
5564
double chi2 = track.chi2();
5665
if constexpr (sizeof...(covOpt) == 0) {
5766
// No covariance passed
58-
if constexpr (std::is_same_v<std::decay_t<TFwdTrack>, aod::FwdTracks::iterator>) {
67+
if constexpr (is_fwd_track<TFwdTrack>) {
5968
if (track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
6069
chi2 = track.chi2() * (2.f * track.nClusters() - 5.f);
6170
}
6271
}
6372
} else {
6473
// Covariance passed
6574
using TCov = std::decay_t<decltype((covOpt, ...))>;
66-
if constexpr (std::is_same_v<TCov, aod::FwdTracksCov::iterator>) {
75+
if constexpr (is_fwd_cov<TCov>) {
6776
if (track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
6877
chi2 = track.chi2() * (2.f * track.nClusters() - 5.f);
6978
}

0 commit comments

Comments
 (0)