File indexing completed on 2025-08-05 08:18:19
0001 #ifndef TRACKBASE_EMBRECOMATCHV1_H
0002 #define TRACKBASE_EMBRECOMATCHV1_H
0003
0004 #include "EmbRecoMatch.h"
0005
0006 #include <array>
0007 #include <iostream>
0008 #include <limits>
0009 #include <vector>
0010
0011
0012 class EmbRecoMatchv1 : public EmbRecoMatch
0013 {
0014 public:
0015 ~EmbRecoMatchv1() override = default;
0016
0017 unsigned short idTruthTrack() const override { return m_idTruthTrack; };
0018 unsigned short nClustersTruth() const override { return m_nClustersTruth; };
0019 unsigned short nMatches() const override { return m_nMatches; };
0020
0021 private:
0022 static constexpr int MATCH_idReco = 0;
0023 static constexpr int MATCH_idTpcSeed = 1;
0024 static constexpr int MATCH_idSvtxSeed = 2;
0025 static constexpr int MATCH_nClustersReco = 3;
0026 static constexpr int MATCH_nClustersMatched = 4;
0027
0028 public:
0029 unsigned short idRecoTrack(unsigned short i = 0) const override { return m_matches[i][MATCH_idReco]; };
0030 unsigned short idTpcTrackSeed(unsigned short i = 0) const override { return m_matches[i][MATCH_idTpcSeed]; };
0031 unsigned short idSvtxTrackSeed(unsigned short i = 0) const override { return m_matches[i][MATCH_idSvtxSeed]; };
0032
0033 unsigned short nClustersReco(unsigned short i = 0) const override { return m_matches[i][MATCH_nClustersReco]; };
0034 unsigned short nClustersMatched(unsigned short i = 0) const override { return m_matches[i][MATCH_nClustersMatched]; };
0035
0036
0037
0038
0039 EmbRecoMatchv1(
0040 unsigned short id_truth = std::numeric_limits<unsigned short>::max(), unsigned short id_reco = std::numeric_limits<unsigned short>::max(), unsigned short nclustruth = std::numeric_limits<unsigned short>::max(), unsigned short nclusreco = std::numeric_limits<unsigned short>::max(), unsigned short nclusmatched = std::numeric_limits<unsigned short>::max(), unsigned short id_tpctrackseed = std::numeric_limits<unsigned short>::max(), unsigned short id_svtxtrackseed = std::numeric_limits<unsigned short>::max())
0041 : m_idTruthTrack{id_truth}
0042 , m_nClustersTruth{nclustruth}
0043 , m_nMatches{1}
0044 , m_matches{{id_reco, id_tpctrackseed, id_svtxtrackseed, nclusreco, nclusmatched}} {};
0045
0046 unsigned short add_match(
0047 unsigned short id_reco = std::numeric_limits<unsigned short>::max(), unsigned short nclusreco = std::numeric_limits<unsigned short>::max(), unsigned short nclusmatched = std::numeric_limits<unsigned short>::max(), unsigned short id_tpctrackseed = std::numeric_limits<unsigned short>::max(), unsigned short id_svtxtrackseed = std::numeric_limits<unsigned short>::max());
0048
0049 private:
0050 unsigned short m_idTruthTrack{std::numeric_limits<unsigned short>::max()};
0051 unsigned short m_nClustersTruth{std::numeric_limits<unsigned short>::max()};
0052 unsigned short m_nMatches{std::numeric_limits<unsigned short>::max()};
0053
0054 std::vector<std::array<unsigned short, 5>> m_matches;
0055
0056
0057 public:
0058
0059 void identify(std::ostream& os = std::cout) const override
0060 {
0061 os << "EmbRecoMatchv1 base class" << std::endl;
0062 };
0063
0064 protected:
0065 ClassDefOverride(EmbRecoMatchv1, 1)
0066 };
0067
0068 #endif