Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 /**
0002  * @file trackbase/TrkrHitSetTpcv1.cc
0003  * @author D. McGlinchey
0004  * @date June 2018
0005  * @brief Implementation of TrkrHitSetTpcv1
0006  */
0007 #include "TrkrHitSetTpcv1.h"
0008 #include "TrkrHit.h"
0009 
0010 #include <algorithm>
0011 #include <cassert>
0012 #include <cstdlib>  // for exit
0013 #include <iostream>
0014 #include <type_traits>  // for __decay_and_strip<>::__type
0015 
0016 void TrkrHitSetTpcv1::Reset()
0017 {
0018   // not resetting properties as the hitset are used in the next events
0019   //  m_hitSetKey = TrkrDefs::HITSETKEYMAX;
0020   //  m_StartingBCO = 0;
0021   //  m_padIndexStart = 0;
0022   //  m_tBinIndexStart = 0;
0023 
0024   // ADC 2D array is zeroed but intentionally NOT deleted,
0025   // which potentially save memory allocation-deallocation ops in the next event
0026   for (auto& pad : m_timeFrameADCData)
0027   {
0028     std::fill(pad.begin(), pad.end(), 0);
0029   }
0030 }
0031 void TrkrHitSetTpcv1::Resize()
0032 {
0033   const uint16_t n_pad = getNPads();
0034   const uint16_t n_tbin = getNTBins();
0035 
0036   if (n_pad != m_timeFrameADCData.size())
0037     m_timeFrameADCData.resize(n_pad);
0038 
0039   for (auto& pad : m_timeFrameADCData)
0040   {
0041     if (n_tbin != pad.size())
0042     {
0043       pad.reserve(n_tbin);
0044       pad.resize(n_tbin, 0);
0045     }
0046   }
0047 }
0048 
0049 void TrkrHitSetTpcv1::identify(std::ostream& os) const
0050 {
0051   const uint16_t layer = TrkrDefs::getLayer(m_hitSetKey);
0052   const uint16_t trkrid = TrkrDefs::getTrkrId(m_hitSetKey);
0053 
0054   os
0055       << "TrkrHitSetTpcv1: "
0056       << "       hitsetkey " << getHitSetKey()
0057       << " TrkrId: " << trkrid
0058       << " layer: " << layer
0059       << " m_nPads: " << m_nPads
0060       << " n_tBins: " << m_nTBins
0061       << " m_padIndexStart: " << m_padIndexStart
0062       << " m_tBinIndexStart: " << m_tBinIndexStart
0063       << " m_StartingBCO: " << m_StartingBCO
0064       << std::endl;
0065 
0066   //  for( const auto& entry : m_hits )
0067   //  {
0068   //    std::cout << " hitkey " << entry.first << std::endl;
0069   //    (entry.second)->identify(os);
0070   //  }
0071 
0072   for (uint16_t i = 0; i < m_nPads; ++i)
0073   {
0074     if (m_timeFrameADCData[i].size() == 0)
0075     {
0076       os << "Pad " << i << " ADC vector is zero-sized" << std::endl;
0077       continue;
0078     }
0079 
0080     // skip empty pads
0081     if (*std::max_element(m_timeFrameADCData[i].begin(), m_timeFrameADCData[i].end()) == 0) continue;
0082 
0083     os << "Pad " << i << ":";
0084 
0085     int j = 0;
0086     for (const auto& adc : m_timeFrameADCData[i])
0087     {
0088       if (adc)
0089       {
0090         os << "\t[" << j << "]:" << adc;
0091       }
0092       ++j;
0093     }
0094     os << std::endl;
0095   }
0096 }
0097 
0098 TpcDefs::ADCDataType& TrkrHitSetTpcv1::getTpcADC(const uint16_t pad, const uint16_t tbin)
0099 {
0100   assert(pad < m_nPads);
0101   assert(tbin < m_nTBins);
0102   assert(m_timeFrameADCData.size() == m_nPads);
0103   assert(m_timeFrameADCData[pad].size() == m_nTBins);
0104 
0105   return m_timeFrameADCData[pad][tbin];
0106 }
0107 
0108 const TpcDefs::ADCDataType& TrkrHitSetTpcv1::getTpcADC(const uint16_t pad, const uint16_t tbin) const
0109 {
0110   assert(pad < m_nPads);
0111   assert(tbin < m_nTBins);
0112   assert(m_timeFrameADCData.size() == m_nPads);
0113   assert(m_timeFrameADCData[pad].size() == m_nTBins);
0114 
0115   return m_timeFrameADCData[pad][tbin];
0116 }
0117 
0118 void TrkrHitSetTpcv1::removeHit(TrkrDefs::hitkey key)
0119 {
0120   getTpcADC(key) = 0;
0121 }
0122 
0123 TrkrHitSetTpcv1::ConstIterator
0124 TrkrHitSetTpcv1::addHitSpecificKey(const TrkrDefs::hitkey key, TrkrHit* hit)
0125 {
0126   std::cout << __PRETTY_FUNCTION__
0127             << " : This function is deprecated! Please use getTpcADC(TrkrDefs::hitkey key)" << std::endl;
0128 
0129   exit(1);
0130 
0131   return TrkrHitSetTpc::addHitSpecificKey(key, hit);
0132 }
0133 
0134 TrkrHit*
0135 TrkrHitSetTpcv1::getHit(const TrkrDefs::hitkey key) const
0136 {
0137   std::cout << __PRETTY_FUNCTION__
0138             << " : This function is deprecated! Please use getTpcADC(TrkrDefs::hitkey key)" << std::endl;
0139 
0140   exit(1);
0141 
0142   return TrkrHitSetTpc::getHit(key);
0143 }
0144 
0145 TrkrHitSetTpcv1::ConstRange
0146 TrkrHitSetTpcv1::getHits() const
0147 {
0148   std::cout << __PRETTY_FUNCTION__
0149             << " : This function is deprecated! Please use getTpcADC(TrkrDefs::hitkey key)" << std::endl;
0150 
0151   exit(1);
0152 
0153   return TrkrHitSetTpc::getHits();
0154 }