Back to home page

sPhenix code displayed by LXR

 
 

    


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   //! add a match set
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   // PHObject virtual overload
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;  // add tracks one-by-one and add to m_idsTruthUnmatched if not matched
0051 
0052  private:
0053   Vector m_data;  // using Vector = std::vector<EmbRecoMatch*>;
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  // G4TRACKING_EMBRECOMATCHCONTAINERV1_H