Skip to content
Snippets Groups Projects
HcalClusteringAlg.h 1.1 KiB
Newer Older
#ifndef HCALCLUSTERING_ALG_H
#define HCALCLUSTERING_ALG_H

#include "Tools/Algorithm.h"

using namespace Cyber;

class HcalClusteringAlg : public Cyber::Algorithm{
public: 

  HcalClusteringAlg(){};
  ~HcalClusteringAlg(){};
 
  class Factory : public Cyber::AlgorithmFactory
  {
  public:
    Cyber::Algorithm* CreateAlgorithm() const{ return new HcalClusteringAlg(); }
 
  };
 
  StatusCode ReadSettings(Cyber::Settings& m_settings); 
  StatusCode Initialize( CyberDataCol& m_datacol );
  StatusCode RunAlgorithm( CyberDataCol& m_datacol );
  StatusCode ClearAlgorithm();
  
  template<typename T1, typename T2> StatusCode Clustering(std::vector<T1*>& m_input, std::vector<std::shared_ptr<T2>>& m_output);
  StatusCode LongiConeLinking( const std::map<int, std::vector<Cyber::CaloHit*> >& orderedHit, std::vector<std::shared_ptr<Cyber::Calo3DCluster> >& ClusterCol );
  StatusCode MergeToCluster( std::vector<const Cyber::CaloHit*>& m_isohits, std::vector<std::shared_ptr<Cyber::Calo3DCluster>>& m_clusters );
private:

//   std::vector<std::shared_ptr<Cyber::CaloHit>> m_hcalHits;
};
#endif