Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:08

0001 #include "ClusHitsVerbosev1.h"
0002 
0003 #include <phool/phool.h>
0004 #include <algorithm>
0005 #include <iostream>
0006 
0007 using std::cout;
0008 using std::endl;
0009 
0010 namespace
0011 {
0012   ClusHitsVerbose::Vector dummy_vec;
0013   ClusHitsVerbose::PairVector dummy_pairvec;
0014 }  // namespace
0015 
0016 void ClusHitsVerbosev1::Reset()
0017 {
0018   m_data.clear();
0019   m_stage_phi.clear();
0020   m_stage_z.clear();
0021   m_stage_phiCut.clear();
0022   m_stage_zCut.clear();
0023 }
0024 
0025 bool ClusHitsVerbosev1::hasClusKey(TrkrDefs::cluskey key) const
0026 {
0027   return m_data.find(key) != m_data.end();
0028 }
0029 
0030 ClusHitsVerbose::Vector& ClusHitsVerbosev1::vecBins(TrkrDefs::cluskey key, int which)
0031 {
0032   if (!hasClusKey(key))
0033   {
0034     return dummy_vec;
0035   }
0036   else
0037   {
0038     return m_data[key][which];
0039   }
0040 }
0041 
0042 ClusHitsVerbose::Vector& ClusHitsVerbosev1::phiBins(TrkrDefs::cluskey key)
0043 {
0044   return vecBins(key, 0);
0045 }
0046 
0047 ClusHitsVerbose::Vector& ClusHitsVerbosev1::zBins(TrkrDefs::cluskey key)
0048 {
0049   return vecBins(key, 1);
0050 }
0051 
0052 ClusHitsVerbose::Vector& ClusHitsVerbosev1::phiCutBins(TrkrDefs::cluskey key)
0053 {
0054   return vecBins(key, 2);
0055 }
0056 
0057 ClusHitsVerbose::Vector& ClusHitsVerbosev1::zCutBins(TrkrDefs::cluskey key)
0058 {
0059   return vecBins(key, 3);
0060 }
0061 
0062 ClusHitsVerbose::PairVector ClusHitsVerbosev1::pvecIE(TrkrDefs::cluskey key, int which)
0063 {
0064   if (!hasClusKey(key))
0065   {
0066     return dummy_pairvec;
0067   }
0068 
0069   // unzip the vector<pair<int,int>> into two vectors: vector<int> vector<int>
0070   std::vector<int> vecI{};
0071   std::vector<int> vecE{};
0072   for (auto& entry : m_data[key][which])
0073   {
0074     vecI.push_back(entry.first);
0075     vecE.push_back(entry.second);
0076   }
0077   return {vecI, vecE};
0078 }
0079 
0080 ClusHitsVerbose::PairVector ClusHitsVerbosev1::phiBins_pvecIE(TrkrDefs::cluskey key)
0081 {
0082   return pvecIE(key, 0);
0083 }
0084 
0085 ClusHitsVerbose::PairVector ClusHitsVerbosev1::zBins_pvecIE(TrkrDefs::cluskey key)
0086 {
0087   return pvecIE(key, 1);
0088 }
0089 
0090 ClusHitsVerbose::PairVector ClusHitsVerbosev1::phiCutBins_pvecIE(TrkrDefs::cluskey key)
0091 {
0092   return pvecIE(key, 2);
0093 }
0094 
0095 ClusHitsVerbose::PairVector ClusHitsVerbosev1::zCutBins_pvecIE(TrkrDefs::cluskey key)
0096 {
0097   return pvecIE(key, 3);
0098 }
0099 
0100 void ClusHitsVerbosev1::push_hits(TrkrDefs::cluskey key)
0101 {
0102   m_data[key] = {m_stage_phi, m_stage_z, m_stage_phiCut, m_stage_zCut};
0103   m_stage_phi.clear();
0104   m_stage_z.clear();
0105   m_stage_phiCut.clear();
0106   m_stage_zCut.clear();
0107 }