Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 09:20:43

0001 #ifndef TRACKBASE_TrkrHitSetContainerv2_H
0002 #define TRACKBASE_TrkrHitSetContainerv2_H
0003 
0004 #include "TrkrDefs.h"
0005 #include "TrkrHitSetContainer.h"
0006 
0007 #include <TClonesArray.h>
0008 #include <iostream>  // for cout, ostream
0009 #include <map>
0010 #include <string>   // for pair
0011 #include <utility>  // for pair
0012 
0013 class TrkrHitSet;
0014 
0015 /**
0016  * IO and memory efficient container using TClonesArray
0017  * TrkrHitSet used in this container must impliment TrkrHitSet::Clear() function for fast reset without calling ~TrkrHitSet()
0018  */
0019 class TrkrHitSetContainerv2 final : public TrkrHitSetContainer
0020 {
0021 public:
0022   //! only used in ROOT IO. Do NOT use this constructor in user code
0023   TrkrHitSetContainerv2() = default;
0024 
0025   TrkrHitSetContainerv2(const std::string& hitsetclass, const size_t estimated_size);
0026 
0027   ~TrkrHitSetContainerv2() override
0028   {
0029   }
0030 
0031   void Reset() override;
0032 
0033   void identify(std::ostream& = std::cout) const override;
0034 
0035   ConstIterator addHitSet(TrkrHitSet*) override;
0036 
0037   ConstIterator addHitSetSpecifyKey(const TrkrDefs::hitsetkey, TrkrHitSet*) override;
0038 
0039   //! Add a TrkrHitSet to TrkrHitSetContainerv2, return the iterater to the newly constructed TrkrHitSet
0040   ConstIterator addHitSetSpecifyKey(const TrkrDefs::hitsetkey key);
0041 
0042   void removeHitSet(TrkrDefs::hitsetkey) override;
0043 
0044   void removeHitSet(TrkrHitSet*) override;
0045 
0046   Iterator findOrAddHitSet(TrkrDefs::hitsetkey key) override;
0047 
0048   ConstRange getHitSets(const TrkrDefs::TrkrId trackerid) const override;
0049 
0050   ConstRange getHitSets(const TrkrDefs::TrkrId trackerid, const uint8_t layer) const override;
0051 
0052   ConstRange getHitSets() const override;
0053 
0054   TrkrHitSet* findHitSet(TrkrDefs::hitsetkey key) override;
0055 
0056   unsigned int size() const override
0057   {
0058     return m_hitArray.GetEntriesFast();
0059   }
0060 
0061  private:
0062   //! endure m_hitmap and m_hitArray are in sync, in particular m_hitmap need rebuild after reading back from the DST
0063   void syncMapArray(void) const;
0064 
0065   //! used for indexing only, not used in storage. syncMapArray(void) rebuilds the map after DST readback
0066   mutable Map m_hitmap;  //!
0067 
0068   TClonesArray m_hitArray;
0069 
0070   ClassDefOverride(TrkrHitSetContainerv2, 1)
0071 };
0072 
0073 #endif  // TRACKBASE_TrkrHitSetContainerv2_H