File indexing completed on 2025-12-17 09:22:14
0001 #ifndef G4TRACKING_EMBRECOMATCHCONTAINERV1_H
0002 #define G4TRACKING_EMBRECOMATCHCONTAINERV1_H
0003
0004 #include "EmbRecoMatchContainer.h"
0005
0006 #include <vector>
0007
0008 class EmbRecoMatch;
0009
0010 class EmbRecoMatchContainerv1 : public EmbRecoMatchContainer
0011 {
0012 public:
0013 void Reset() override;
0014
0015
0016 unsigned short nMatches() const override { return m_data.size(); };
0017 unsigned short nTruthUnmatched() const override { return m_idsTruthUnmatched.size(); };
0018 std::vector<unsigned short>& ids_TruthUnmatched() override { return m_idsTruthUnmatched; };
0019 std::vector<unsigned short> ids_TruthMatched() const override;
0020 std::vector<unsigned short> ids_RecoMatched() const override;
0021
0022 std::map<unsigned short, unsigned short>& map_nRecoPerTruth() override { return m_nRecoPerTruth; };
0023 std::map<unsigned short, unsigned short>& map_nTruthPerReco() override { return m_nTruthPerReco; };
0024
0025 ConstRange getMatchedRange() const override { return std::make_pair(m_data.begin(), m_data.end()); };
0026 Vector& getMatches() override { return m_data; };
0027
0028 void addMatch(EmbRecoMatch* match) override;
0029 bool hasTruthMatch(unsigned short idtruth) override;
0030 bool hasRecoMatch(unsigned short idreco) override;
0031 EmbRecoMatch* getMatchTruth(unsigned short idtruth, unsigned short offset = 0) override;
0032 EmbRecoMatch* getMatchReco(unsigned short idreco, unsigned short offset = 0) override;
0033
0034
0035 void identify(std::ostream& os = std::cout) const override;
0036
0037 struct CompShortToPair
0038 {
0039 bool operator()(const unsigned short lhs, const std::pair<unsigned short, unsigned short> rhs) const
0040 {
0041 return lhs < rhs.first;
0042 }
0043 bool operator()(const std::pair<unsigned short, unsigned short> lhs, const unsigned short rhs) const
0044 {
0045 return lhs.first < rhs;
0046 }
0047 };
0048
0049 void sort() override;
0050 void checkfill_idsTruthUnmatched(unsigned short) override;
0051
0052 private:
0053 Vector m_data;
0054 std::vector<std::pair<unsigned short, unsigned short>> m_RecoToTruth;
0055 std::vector<unsigned short> m_idsTruthUnmatched;
0056 Map_nMatches m_nRecoPerTruth;
0057 Map_nMatches m_nTruthPerReco;
0058 ClassDefOverride(EmbRecoMatchContainerv1, 1)
0059 };
0060
0061 #endif