Back to home page

sPhenix code displayed by LXR

 
 

    


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 /* class VtxPoint; */
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   /* float meanClusterZDiff()   const override { return m_meanClusterZDiff; }; */
0037   /* float meanClusterPhiDiff() const override { return m_meanClusterPhiDiff; }; */
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   // each match has metrics defined by five unsigned ints: idReco, idTpcSee, idSvtxSeed, nClustersReco, nClusterMatched
0056 
0057  public:
0058   // PHObject virtual overloads
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  // G4TPC_TruthTrack_h