Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 #ifndef TRACKBASE_TRKRCLUSTERCONTAINERV4_H
0002 #define TRACKBASE_TRKRCLUSTERCONTAINERV4_H
0003 
0004 /**
0005  * @file trackbase/TrkrClusterContainerv4.h
0006  * @author D. McGlinchey, Hugo Pereira Da Costa
0007  * @date June 2018
0008  * @brief Cluster container object
0009  */
0010 
0011 #include "TrkrClusterContainer.h"
0012 
0013 #include <phool/PHObject.h>
0014 
0015 class TrkrCluster;
0016 
0017 /**
0018  * @brief Cluster container object
0019  */
0020 class TrkrClusterContainerv4 : public TrkrClusterContainer
0021 {
0022  public:
0023   TrkrClusterContainerv4() = default;
0024 
0025   /**
0026    * delete and remove all stored clusters
0027    * effectively leaving the container empty
0028    */
0029   void Reset() override;
0030 
0031   void identify(std::ostream& os = std::cout) const override;
0032 
0033   void addClusterSpecifyKey(const TrkrDefs::cluskey, TrkrCluster*) override;
0034 
0035   //! remove cluster matching a given cluster key
0036   void removeCluster(TrkrDefs::cluskey) override;
0037 
0038   //! delete and remove all the clusters matching a given key
0039   void removeClusters(TrkrDefs::hitsetkey) override;
0040 
0041   ConstRange getClusters() const override;  // deprecated
0042 
0043   ConstRange getClusters(TrkrDefs::hitsetkey) override;
0044 
0045   TrkrCluster* findCluster(TrkrDefs::cluskey) const override;
0046 
0047   HitSetKeyList getHitSetKeys() const override;
0048 
0049   HitSetKeyList getHitSetKeys(const TrkrDefs::TrkrId) const override;
0050 
0051   HitSetKeyList getHitSetKeys(const TrkrDefs::TrkrId, const uint8_t /* layer */) const override;
0052 
0053   unsigned int size(void) const override;
0054 
0055  private:
0056   /// convenient alias
0057   using Vector = std::vector<TrkrCluster*>;
0058 
0059   /// the actual container
0060   std::map<TrkrDefs::hitsetkey, Vector> m_clusmap;
0061 
0062   /// temporary map
0063   /**
0064    * the map is transient. It must not be written to the output.
0065    * To do this one adds //! after the declaration
0066    * see https://root.cern.ch/root/htmldoc/guides/users-guide/InputOutput.html for details
0067    */
0068   Map m_tmpmap;  //! transient. The temporary map does not get written to the output
0069 
0070   ClassDefOverride(TrkrClusterContainerv4, 1)
0071 };
0072 
0073 #endif  // TRACKBASE_TrkrClusterContainerv4_H