Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #include "ClusKeyIter.h"
0002 
0003 #include <trackbase_historic/SvtxTrack.h>
0004 
0005 ClusKeyIter::ClusKeyIter(SvtxTrack* _track)
0006   : track{_track}
0007   , in_silicon{_track->get_silicon_seed() != nullptr}
0008   , has_tpc{_track->get_tpc_seed() != nullptr}
0009   , no_data{!in_silicon && !has_tpc}
0010 {
0011 }
0012 
0013 ClusKeyIter ClusKeyIter::begin()
0014 {
0015   ClusKeyIter iter0{track};
0016   if (iter0.no_data)
0017   {
0018     return iter0;
0019   }
0020   if (iter0.in_silicon)
0021   {
0022     iter0.iter = track->get_silicon_seed()->begin_cluster_keys();
0023     iter0.iter_end_silicon = track->get_silicon_seed()->end_cluster_keys();
0024   }
0025   else if (has_tpc)
0026   {
0027     iter0.iter = track->get_tpc_seed()->begin_cluster_keys();
0028   }
0029   return iter0;
0030 }
0031 
0032 ClusKeyIter ClusKeyIter::end()
0033 {
0034   ClusKeyIter iter0{track};
0035   if (iter0.no_data)
0036   {
0037     return iter0;
0038   }
0039   if (has_tpc)
0040   {
0041     iter0.iter = track->get_tpc_seed()->end_cluster_keys();
0042   }
0043   else if (in_silicon)
0044   {
0045     iter0.iter = track->get_silicon_seed()->end_cluster_keys();
0046   }
0047   return iter0;
0048 }
0049 
0050 void ClusKeyIter::operator++()
0051 {
0052   if (no_data)
0053   {
0054     return;
0055   }
0056   ++iter;
0057   if (in_silicon && has_tpc && iter == iter_end_silicon)
0058   {
0059     in_silicon = false;
0060     iter = track->get_tpc_seed()->begin_cluster_keys();
0061   }
0062 }
0063 
0064 bool ClusKeyIter::operator!=(const ClusKeyIter& rhs)
0065 {
0066   if (no_data)
0067   {
0068     return false;
0069   }
0070   return iter != rhs.iter;
0071 }
0072 
0073 TrkrDefs::cluskey ClusKeyIter::operator*()
0074 {
0075   return *iter;
0076 }