Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #ifndef TRACKBASE_TRKRCLUSTERCONTAINER_H
0002 #define TRACKBASE_TRKRCLUSTERCONTAINER_H
0003 
0004 /**
0005  * @file trackbase/TrkrClusterContainer.h
0006  * @author D. McGlinchey, Hugo Pereira Da Costa
0007  * @date June 2018
0008  * @brief Cluster container base class
0009  */
0010 
0011 #include "TrkrDefs.h"
0012 
0013 #include <phool/PHObject.h>
0014 
0015 #include <iostream>  // for cout, ostream
0016 #include <map>
0017 #include <utility>  // for pair
0018 
0019 class TrkrCluster;
0020 
0021 /**
0022  * @brief Cluster container object
0023  */
0024 class TrkrClusterContainer : public PHObject
0025 {
0026  public:
0027   //!@name convenient shortuts
0028   //@{
0029   using Map = std::map<TrkrDefs::cluskey, TrkrCluster*>;
0030   using Iterator = Map::iterator;
0031   using ConstIterator = Map::const_iterator;
0032   using Range = std::pair<Iterator, Iterator>;
0033   using ConstRange = std::pair<ConstIterator, ConstIterator>;
0034 
0035   using HitSetKeyList = std::vector<TrkrDefs::hitsetkey>;
0036 
0037   //@}
0038 
0039   //! reset method
0040   void Reset() override {}
0041 
0042   //! identify object
0043   void identify(std::ostream& /*os*/ = std::cout) const override {}
0044 
0045   //! add a cluster with specific key
0046   virtual void addClusterSpecifyKey(const TrkrDefs::cluskey, TrkrCluster*) {}
0047 
0048   //! remove cluster
0049   virtual void removeCluster(TrkrDefs::cluskey) {}
0050 
0051   //! delete and remove all the clusters matching a given hitsetkey
0052   virtual void removeClusters( TrkrDefs::hitsetkey )
0053   {}
0054 
0055   //! return all clusters
0056   virtual ConstRange getClusters() const;
0057 
0058   //! get all clusters matching hitset
0059   virtual ConstRange getClusters(TrkrDefs::hitsetkey);
0060 
0061   //! find cluster matching given key
0062   virtual TrkrCluster* findCluster(TrkrDefs::cluskey) const { return nullptr; }
0063 
0064   //! get hitset key list
0065   virtual HitSetKeyList getHitSetKeys() const
0066   {
0067     return HitSetKeyList();
0068   }
0069 
0070   //! get hitset key list for a given detector
0071   virtual HitSetKeyList getHitSetKeys(const TrkrDefs::TrkrId) const
0072   {
0073     return HitSetKeyList();
0074   }
0075 
0076   //! get hitset key list for a given detector and layer
0077   virtual HitSetKeyList getHitSetKeys(const TrkrDefs::TrkrId, const uint8_t /* layer */) const
0078   {
0079     return HitSetKeyList();
0080   }
0081 
0082   //! total number of clusters
0083   virtual unsigned int size() const { return 0; }
0084 
0085  protected:
0086   //! constructor
0087   TrkrClusterContainer() = default;
0088 
0089  private:
0090   ClassDefOverride(TrkrClusterContainer, 1)
0091 };
0092 
0093 #endif  // TRACKBASE_TRKRCLUSTERCONTAINER_H