12#include <Math/Vector3D.h> 
   40    std::vector<std::string> varLabels = {
"omega", 
"phi", 
"theta"};
 
   61      unsigned short init_ClSize = 0;
 
   62      unsigned short defaultValue = 0;
 
   63      cell_index cell(
m_dim, defaultValue);
 
   64      std::vector<cell_index> C(init_ClSize, cell);
 
   67    void setParams(
unsigned short dim)
 
   80      m_C.push_back(nextEntry);
 
   83    void addHit(
unsigned short hit, 
unsigned short weight, 
unsigned short orient)
 
  112    std::vector<cell_index> 
m_C;
 
  140    void setPlaneShape(std::vector<ushort> planeShape)
 
  142      m_dimSize = planeShape.size();
 
  143      m_planeShape = planeShape;
 
  144      m_valMax = std::vector<ushort>(m_planeShape);
 
  145      for (ushort idim = 0; idim < m_dimSize; idim++) {
 
  148      m_valMax.push_back(1);
 
  155      m_houghVals = &houghmapPlain;
 
  156      m_houghVisit = c3array(m_c3shape);
 
  163    bool hasBefore(cell_index entry, ushort dim);
 
  165    cell_index before(cell_index entry, ushort dim);
 
  167    bool hasAfter(cell_index entry, ushort dim);
 
  169    cell_index after(cell_index entry, ushort dim);
 
  171    void blockcheck(std::vector<cell_index>* neighbors, cell_index elem, ushort dim);
 
  173    std::vector<cell_index>  regionQuery(cell_index entry);
 
  175    std::vector<SimpleCluster> dbscan();
 
  177    void expandCluster(std::vector<cell_index>& N, 
SimpleCluster& C);
 
  181    std::pair<cell_index, unsigned long> getGlobalMax();
 
  183    void deleteMax(cell_index maxIndex);
 
  185    std::vector<SimpleCluster> makeClusters();
 
  187    std::pair<SimpleCluster, unsigned long> createCluster(cell_index maxIndex);
 
  189    unsigned long checkSurroundings(cell_index maxIndex);
 
  192    std::string printVector(std::vector<T> vecX)
 
  194      std::stringstream result;
 
  196      for (T& elem : vecX) { result << elem << 
" ";}
 
  204    std::string printCells(std::vector<T> vecX)
 
  206      std::stringstream result;
 
  207      for (T& elem : vecX) { result << 
" {" << printVector(elem) << 
"}";}
 
  213    std::vector<ushort> m_planeShape;
 
  214    std::vector<ushort> m_valMax;
 
  216    boost::array<c3index, 3> m_c3shape =  {{ 40, 384, 9 }};
 
  217    c3array* m_houghVals{0};
 
  218    c3array m_houghVisit = c3array(m_c3shape);
 
void setNewPlane(c3array &houghmapPlain)
Next event initialization: set a new hough space for clustering and track finding.
std::vector< cell_index > getCandidates()
clustererParams m_params
Clusterizend.
bool hasBefore(cell_index entry, ushort dim)
Clustering logic.
void addHit(unsigned short hit, unsigned short weight, unsigned short orient)
Relate a hit to the cluster.
std::vector< unsigned short > getHits()
Get ids of related hits (indices of the TS StoreArray)
std::vector< unsigned short > m_hitWeights
Cluster related hits weights.
unsigned short m_dim
Dimension of the track space (3 for omega, phi, theta)
unsigned short m_orientSum
Sum of related hit orientations (== number of related axials)
std::vector< cell_index > m_C
SimpleCluster.
unsigned long getNAxial()
Get number related axial hits.
unsigned long getNStereo()
Get number related stereo hits.
std::vector< unsigned short > m_hits
Cluster related hits ids.
std::vector< cell_index > getEntries()
Get member cells in the cluster.
std::vector< unsigned short > getWeights()
Get weight contribution of each related hit to the cluster.
void append(cell_index nextEntry)
Add a track-space cell to the cluster.
Abstract base class for different kinds of events.
unsigned char iterations
Number of iterations of the cluster searching for each Hough space.
unsigned char minPts
minimum number of neighbours for a cluster core cell
std::vector< bool > varCyclic
Ordering of track parameters and position of cyclic variable (phi)
bool diagonal
Consider diagonal adjacent cells as neighbors.
unsigned short minTotalWeight
Cut on the total weight of all cells in the 3d volume.
unsigned short minWeight
minimum weight for a cluster cell
unsigned char omegaTrim
Number of deleted cells in omega in each direction of the maximum.
unsigned char thetaTrim
Number of deleted cells in theta in each direction of the maximum.
unsigned short minPeakWeight
Cut on the peak cell weight.
unsigned char phiTrim
Number of deleted cells in phi in each direction of the maximum.