Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:17:03

0001 #ifndef TRACKBASE_TRKRHITSETCONTAINER_H
0002 #define TRACKBASE_TRKRHITSETCONTAINER_H
0003 /**
0004  * @file trackbase/TrkrHitSetContainerv1.h
0005  * @author D. McGlinchey, H. PEREIRA DA COSTA
0006  * @date June 2018
0007  * base class for hitset container
0008  */
0009 
0010 #include "TrkrDefs.h"  // for hitsetkey, TrkrId
0011 
0012 #include <phool/PHObject.h>
0013 
0014 #include <iostream>  // for cout, ostream
0015 #include <map>
0016 #include <utility>  // for pair
0017 
0018 class TrkrHitSet;
0019 
0020 /**
0021  * Container for TrkrHitSet objects
0022  */
0023 class TrkrHitSetContainer : public PHObject
0024 {
0025  public:
0026   using Map = std::map<TrkrDefs::hitsetkey, TrkrHitSet *>;
0027   using Iterator = Map::iterator;
0028   using ConstIterator = Map::const_iterator;
0029   using Range = std::pair<Iterator, Iterator>;
0030   using ConstRange = std::pair<ConstIterator, ConstIterator>;
0031 
0032   //! dtir
0033   ~TrkrHitSetContainer() override = default;
0034 
0035   //! PHObject functions
0036   void Reset() override;
0037 
0038   //! Add a TrkrHitSet to the container
0039   virtual ConstIterator addHitSet(TrkrHitSet *);
0040 
0041   virtual ConstIterator addHitSetSpecifyKey(const TrkrDefs::hitsetkey, TrkrHitSet *);
0042 
0043   //! preferred removal method, key is currently the hit id
0044   virtual void removeHitSet(TrkrDefs::hitsetkey)
0045   {
0046   }
0047 
0048   //! inefficent, use key where possible instead
0049   virtual void removeHitSet(TrkrHitSet *)
0050   {
0051   }
0052 
0053   //! find or add HitSet
0054   virtual Iterator findOrAddHitSet(TrkrDefs::hitsetkey);
0055 
0056   //! return all HitSets matching a given detid
0057   virtual ConstRange getHitSets(const TrkrDefs::TrkrId) const;
0058 
0059   //! return all HitSets matching a given detid, layer
0060   virtual ConstRange getHitSets(const TrkrDefs::TrkrId trackerid, const uint8_t layer) const;
0061 
0062   //! return all HitSets
0063   virtual ConstRange getHitSets() const;
0064 
0065   //! return a given HitSet based on its key
0066   virtual TrkrHitSet *findHitSet(TrkrDefs::hitsetkey)
0067   {
0068     return nullptr;
0069   }
0070 
0071   virtual unsigned int size() const
0072   {
0073     return 0;
0074   }
0075 
0076  protected:
0077   //! ctor
0078   TrkrHitSetContainer() = default;
0079 
0080  private:
0081   ClassDefOverride(TrkrHitSetContainer, 1)
0082 };
0083 
0084 #endif  // TRACKBASE_TRKRHITSETCONTAINER_H