Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:20:32

0001 #ifndef TRACKBASE_LASERCLUSTERCONTAINER_H
0002 #define TRACKBASE_LASERCLUSTERCONTAINER_H
0003 
0004 /**
0005  * @file trackbase/LaserClusterContainer.h
0006  * @author Ben Kimelman
0007  * @date February 2024
0008  * @brief Laser cluster container base class
0009  */
0010 
0011 #include "TrkrDefs.h"
0012 
0013 #include <phool/PHObject.h>
0014 
0015 #include <map>
0016 #include <iostream>          // for cout, ostream
0017 #include <utility>           // for pair
0018 
0019 class LaserCluster;
0020 
0021 /**
0022  * @brief Cluster container object
0023  */
0024 class LaserClusterContainer : public PHObject
0025 {
0026  public:
0027 
0028   //!@name convenient shortuts
0029   //@{
0030   using Map = std::map<TrkrDefs::cluskey, LaserCluster *>;
0031   using Iterator = Map::iterator;
0032   using ConstIterator = Map::const_iterator;
0033   using Range = std::pair<Iterator, Iterator>;
0034   using ConstRange = std::pair<ConstIterator, ConstIterator>;
0035   //@}
0036 
0037   //! reset method
0038   void Reset() override {}
0039 
0040   //! identify object
0041   void identify(std::ostream &/*os*/ = std::cout) const override {}
0042   
0043   //! add a cluster with specific key
0044   virtual void addClusterSpecifyKey(const TrkrDefs::cluskey, LaserCluster*) = 0;
0045 
0046   //! remove cluster
0047   virtual void removeCluster(TrkrDefs::cluskey) {}
0048   
0049   //! return all clusters
0050   virtual ConstRange getClusters() const = 0;
0051 
0052   //! find cluster matching given key
0053   virtual LaserCluster* findCluster(TrkrDefs::cluskey) const { return nullptr; }
0054 
0055   //! total number of clusters
0056   virtual unsigned int size() const { return 0; }
0057 
0058   protected:
0059   //! constructor
0060   LaserClusterContainer() = default;
0061 
0062   private:
0063 
0064   ClassDefOverride(LaserClusterContainer, 1)
0065 
0066 };
0067 
0068 #endif //TRACKBASE_LASERCLUSTERCONTAINER_H