ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtTrackFinderHC.h
Go to the documentation of this file.
1 /*******************************************************************
2  * Base class for AtTrackFinderHC *
3  * Log: Class started 04-05-2018 *
4  * Author: Y. Ayyad (ayyad@lbl.gov) *
5  ********************************************************************/
6 
7 #ifndef AtTRACKFINDERHC_H
8 #define AtTRACKFINDERHC_H
9 
10 #ifdef _OPENMP
11 #include <omp.h>
12 #endif
13 #include "AtPRA.h" // for AtPRA
14 
15 #include <Rtypes.h> // for THashConsistencyHolder, ClassDef
16 
17 #include <pcl/point_cloud.h> // for PointCloud, PointCloud<>::Ptr
18 #include <pcl/point_types.h> // for PointXYZI
19 
20 #include "cluster.h" // for Cluster
21 #include <stdio.h> // for size_t
22 
23 #include <memory> // for unique_ptr
24 #include <vector> // for vector
25 
26 class AtEvent;
27 class AtPatternEvent;
28 class TBuffer;
29 class TClass;
30 class TMemberInspector;
31 
32 namespace hc {
33 struct triplet;
34 }
35 
36 namespace AtPATTERN {
37 struct hc_params {
38  float s;
39  size_t k;
40  size_t n;
41  size_t m;
42  float r;
43  float a;
44  float t;
45  float _padding;
46 };
47 
48 class AtTrackFinderHC : public AtPRA {
49 private:
50  hc_params inputParams{.s = -1, .k = 19, .n = 3, .m = 8, .r = -1, .a = 0.03, .t = 3.5};
51 
52 public:
54  ~AtTrackFinderHC() = default;
55 
56  std::unique_ptr<AtPatternEvent> FindTracks(AtEvent &event) override;
57 
58  void SetScluster(float s) { inputParams.s = s; }
59  void SetKtriplet(size_t k) { inputParams.k = k; }
60  void SetNtriplet(size_t n) { inputParams.n = n; }
61  void SetMcluster(size_t m) { inputParams.m = m; }
62  void SetRsmooth(float r) { inputParams.r = r; }
63  void SetAtriplet(float a) { inputParams.a = a; }
64  void SetTcluster(float t) { inputParams.t = t; }
65  void SetPadding(size_t padding) { inputParams._padding = padding; }
66 
67 private:
68  Cluster use_hc(pcl::PointCloud<pcl::PointXYZI>::Ptr cloud, std::vector<hc::triplet> triplets, float scale,
69  float cdist, size_t cleanup_min_triplets, int opt_verbose);
70 
71  std::unique_ptr<AtPatternEvent>
72  clustersToTrack(pcl::PointCloud<pcl::PointXYZI>::Ptr cloud, Cluster const cluster, AtEvent &event);
73 
74  void eventToClusters(AtEvent &event, pcl::PointCloud<pcl::PointXYZI>::Ptr cloud);
75 
76  ClassDefOverride(AtTrackFinderHC, 1);
77 };
78 
79 } // namespace AtPATTERN
80 
81 #endif
AtPATTERN::AtTrackFinderHC::SetAtriplet
void SetAtriplet(float a)
Definition: AtTrackFinderHC.h:63
scale
constexpr auto scale
Definition: AtHitCluster.cxx:15
AtPATTERN::AtTrackFinderHC::FindTracks
std::unique_ptr< AtPatternEvent > FindTracks(AtEvent &event) override
Definition: AtTrackFinderHC.cxx:33
AtPatternEvent
Definition: AtPatternEvent.h:19
AtPATTERN::hc_params::_padding
float _padding
Definition: AtTrackFinderHC.h:45
AtPATTERN::AtTrackFinderHC
Definition: AtTrackFinderHC.h:48
AtPATTERN
Definition: AtEventDrawTaskS800.h:41
AtPATTERN::AtTrackFinderHC::AtTrackFinderHC
AtTrackFinderHC()
Definition: AtTrackFinderHC.cxx:31
AtPRA.h
AtPATTERN::AtTrackFinderHC::SetPadding
void SetPadding(size_t padding)
Definition: AtTrackFinderHC.h:65
hc
Definition: AtTrackFinderHC.h:32
AtPATTERN::AtPRA
Find patterns in hit clouds.
Definition: AtPRA.h:32
AtEvent
Definition: AtEvent.h:22
hc::cluster
std::vector< size_t > cluster
Definition: hc.h:25
Cluster
Definition: cluster.h:9
AtPATTERN::AtTrackFinderHC::SetRsmooth
void SetRsmooth(float r)
Definition: AtTrackFinderHC.h:62
AtPATTERN::hc_params::s
float s
Definition: AtTrackFinderHC.h:38
AtPATTERN::hc_params::r
float r
Definition: AtTrackFinderHC.h:42
AtPATTERN::AtTrackFinderHC::SetMcluster
void SetMcluster(size_t m)
Definition: AtTrackFinderHC.h:61
AtPATTERN::hc_params::t
float t
Definition: AtTrackFinderHC.h:44
AtPATTERN::AtTrackFinderHC::~AtTrackFinderHC
~AtTrackFinderHC()=default
AtPATTERN::hc_params
Definition: AtTrackFinderHC.h:37
AtPATTERN::AtTrackFinderHC::SetScluster
void SetScluster(float s)
Definition: AtTrackFinderHC.h:58
AtPATTERN::AtTrackFinderHC::SetNtriplet
void SetNtriplet(size_t n)
Definition: AtTrackFinderHC.h:60
AtPATTERN::hc_params::m
size_t m
Definition: AtTrackFinderHC.h:41
AtPATTERN::AtTrackFinderHC::SetKtriplet
void SetKtriplet(size_t k)
Definition: AtTrackFinderHC.h:59
AtPATTERN::hc_params::a
float a
Definition: AtTrackFinderHC.h:43
AtPATTERN::hc_params::k
size_t k
Definition: AtTrackFinderHC.h:39
AtPATTERN::AtTrackFinderHC::SetTcluster
void SetTcluster(float t)
Definition: AtTrackFinderHC.h:64
AtPATTERN::hc_params::n
size_t n
Definition: AtTrackFinderHC.h:40
hc::triplet
Definition: hc.h:15