Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TpcClusterizer.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file TpcClusterizer.h
1 #ifndef TPC_TPCCLUSTERIZER_H
2 #define TPC_TPCCLUSTERIZER_H
3 
4 #include <fun4all/SubsysReco.h>
7 
8 #include <map>
9 #include <vector>
10 #include <string>
11 
12 class ClusHitsVerbosev1;
13 class PHCompositeNode;
14 class TrkrHitSet;
16 class RawHitSet;
17 class RawHitSetContainer;
23 
24 //typedef std::pair<int, int> iphiz;
25 //typedef std::pair<double, iphiz> ihit;
26 typedef std::pair<unsigned short, unsigned short> iphiz;
27 typedef std::pair<unsigned short, iphiz> ihit;
28 
29 class TpcClusterizer : public SubsysReco
30 {
31  public:
32  TpcClusterizer(const std::string &name = "TpcClusterizer");
33  ~TpcClusterizer() override = default;
34 
35  int InitRun(PHCompositeNode *topNode) override;
36  int process_event(PHCompositeNode *topNode) override;
37  int End(PHCompositeNode *topNode) override;
38 
39  void set_sector_fiducial_cut(const double cut){SectorFiducialCut = cut; }
40  void set_store_hits(bool store_hits) { _store_hits = store_hits; }
41  void set_use_nn(bool use_nn) { _use_nn = use_nn; }
42  void set_do_hit_association(bool do_assoc){do_hit_assoc = do_assoc;}
43  void set_do_wedge_emulation(bool do_wedge){ do_wedge_emulation = do_wedge;}
44  void set_do_sequential(bool do_seq){ do_sequential = do_seq;}
45  void set_do_split(bool split){ do_split = split;}
46  void set_pedestal(float val) { pedestal = val;}
47  void set_seed_threshold(float val) { seed_threshold = val;}
48  void set_edge_threshold(float val) { edge_threshold = val;}
49  void set_min_err_squared(float val) { min_err_squared = val;}
50  void set_min_clus_size(float val) { min_clus_size = val;}
51  void set_min_adc_sum(float val) { min_adc_sum = val;}
52  void set_remove_singles(bool do_sing){ do_singles = do_sing;}
53  void set_read_raw(bool read_raw){ do_read_raw = read_raw;}
56 
57  void set_ClusHitsVerbose(bool set=true) { record_ClusHitsVerbose = set; };
60  set_do_split(false);
61  set_pedestal(0);
66  set_min_adc_sum(5);
67  set_remove_singles(true);
70  };
72 
73  private:
74  bool is_in_sector_boundary(int phibin, int sector, PHG4TpcCylinderGeom *layergeom) const;
75  bool record_ClusHitsVerbose { false };
76 
82  bool _store_hits = false;
83  bool _use_nn = false;
84  bool do_hit_assoc = true;
85  bool do_wedge_emulation = false;
86  bool do_sequential = false;
87  bool do_read_raw = false;
88  bool do_singles = false;
89  bool do_split = true;
90  double pedestal = 74.4;
91  double seed_threshold = 5;
92  double edge_threshold = 0;
93  double min_err_squared = 0.01;
94  double min_clus_size = 1;
95  double min_adc_sum = 10;
96  double SectorFiducialCut = 0.5;
97  unsigned short MaxClusterHalfSizePhi = 3;
98  unsigned short MaxClusterHalfSizeT = 5;
99 
100  double m_tdriftmax = 0;
101  double AdcClockPeriod = 53.0; // ns
102 
103  // TPC shaping offset correction parameter
104  // From Tony Frawley July 5, 2022
105  double m_sampa_tbias = 39.6; // ns
106 
108 };
109 
110 #endif