Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #ifndef TRACKBASE_TrkrHitSetTpcv1_H
0002 #define TRACKBASE_TrkrHitSetTpcv1_H
0003 
0004 #include "TrkrHitSetTpc.h"
0005 
0006 #include <utility>  // for pair
0007 #include <vector>
0008 
0009 // forward declaration
0010 class TrkrHit;
0011 
0012 //! Vectorized TPC data time frame storage
0013 class TrkrHitSetTpcv1 final : public TrkrHitSetTpc
0014 {
0015  public:
0016   TrkrHitSetTpcv1() = default;
0017 
0018   TrkrHitSetTpcv1(const uint16_t n_pad, const uint16_t n_tbin)
0019     : TrkrHitSetTpc(n_pad, n_tbin), m_nPads(n_pad), m_nTBins(n_tbin)
0020   {
0021     Resize();
0022   }
0023 
0024   ~TrkrHitSetTpcv1() override
0025   {
0026   }
0027 
0028   void identify(std::ostream& os = std::cout) const override;
0029 
0030   void Resize() override;
0031 
0032   //! For ROOT TClonesArray end of event Operation
0033   void Clear(Option_t* /*option*/ = "") override { Reset(); }
0034 
0035   void Reset() override;
0036 
0037   void setHitSetKey(const TrkrDefs::hitsetkey key) override
0038   {
0039     m_hitSetKey = key;
0040   }
0041 
0042   TrkrDefs::hitsetkey getHitSetKey() const override
0043   {
0044     return m_hitSetKey;
0045   }
0046 
0047   // legacy TrkrDefs::hitkey accesses
0048   using TrkrHitSetTpc::getTpcADC;
0049 
0050   TpcDefs::ADCDataType& getTpcADC(const uint16_t local_pad, const uint16_t local_tbin) override;
0051 
0052   const TpcDefs::ADCDataType& getTpcADC(const uint16_t local_pad, const uint16_t local_tbin) const override;
0053 
0054   ConstIterator addHitSpecificKey(const TrkrDefs::hitkey, TrkrHit*) override;
0055 
0056   void removeHit(TrkrDefs::hitkey) override;
0057 
0058   TrkrHit* getHit(const TrkrDefs::hitkey) const override;
0059 
0060   ConstRange getHits() const override;
0061 
0062   unsigned int size() const override
0063   {
0064     return m_nPads * m_nTBins;
0065   }
0066 
0067   uint16_t getNPads() const override
0068   {
0069     return m_nPads;
0070   }
0071 
0072   void setNPads(uint16_t nPads = 0) override
0073   {
0074     m_nPads = nPads;
0075     Resize();
0076   }
0077 
0078   uint16_t getNTBins() const override
0079   {
0080     return m_nTBins;
0081   }
0082 
0083   void setNTBins(uint16_t tBins = 0) override
0084   {
0085     m_nTBins = tBins;
0086     Resize();
0087   }
0088 
0089   uint16_t getPadIndexStart() const override
0090   {
0091     return m_padIndexStart;
0092   }
0093 
0094   void setPadIndexStart(uint16_t padIndexStart) override
0095   {
0096     m_padIndexStart = padIndexStart;
0097   }
0098 
0099   TpcDefs::BCODataType getStartingBco() const override
0100   {
0101     return m_StartingBCO;
0102   }
0103 
0104   void setStartingBco(TpcDefs::BCODataType startingBco) override
0105   {
0106     m_StartingBCO = startingBco;
0107   }
0108 
0109   uint16_t getTBinIndexStart() const override
0110   {
0111     return m_tBinIndexStart;
0112   }
0113 
0114   void setTBinIndexStart(uint16_t tBinIndexStart) override
0115   {
0116     m_tBinIndexStart = tBinIndexStart;
0117   }
0118 
0119   const TimeFrameADCDataType& getTimeFrameAdcData() const override
0120   {
0121     return m_timeFrameADCData;
0122   }
0123 
0124   TimeFrameADCDataType& getTimeFrameAdcData() override
0125   {
0126     return m_timeFrameADCData;
0127   }
0128 
0129   void setTimeFrameAdcData(const TimeFrameADCDataType& timeFrameAdcData) override
0130   {
0131     m_timeFrameADCData = timeFrameAdcData;
0132   }
0133 
0134  private:
0135   /// unique key for this object
0136   TrkrDefs::hitsetkey m_hitSetKey = TrkrDefs::HITSETKEYMAX;
0137 
0138   /// vector storage of TPC timeframe without zero suppression
0139   // Top level indexes are vectors of pads
0140   // Lower level indexes are vectors of time bin
0141   TimeFrameADCDataType m_timeFrameADCData;
0142 
0143   //! beam collision (BCO) clock counter at the start of the time frame
0144   TpcDefs::BCODataType m_StartingBCO = 0;
0145 
0146   //! local to global index conversion
0147   uint16_t m_padIndexStart = 0;
0148   uint16_t m_tBinIndexStart = 0;
0149 
0150   //! size of the local index
0151   uint16_t m_nPads = 0;
0152   uint16_t m_nTBins = 0;
0153 
0154   ClassDefOverride(TrkrHitSetTpcv1, 1);
0155 };
0156 
0157 #endif  // TRACKBASE_TrkrHitSetTpcv1_H