forked from sPHENIX-Collaboration/coresoftware
/
PHTpcTracker.h
81 lines (63 loc) · 2.14 KB
/
PHTpcTracker.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*!
* \file PHTpcTracker.h
* \brief
* \author Dmitry Arkhipkin <arkhipkin@gmail.com>
*/
#ifndef PHTPCTRACKER_H_
#define PHTPCTRACKER_H_
// sPHENIX includes
#include <trackreco/PHTrackSeeding.h>
#include <cmath> // for M_PI
#include <cstddef> // for size_t
#include <string> // for string
class PHCompositeNode;
class PHField;
class TGeoManager;
class PHTpcSeedFinder;
class PHTpcTrackFollower;
class PHTpcVertexFinder;
class PHTpcEventExporter;
class PHTpcLookup;
namespace PHGenFit2
{
class Fitter;
}
/// \class PHTpcTracker
///
/// \brief
///
class PHTpcTracker : public PHTrackSeeding
{
public:
PHTpcTracker(const std::string& name = "PHTpcTracker");
~PHTpcTracker() override;
void set_seed_finder_options(double maxdistance1 = 3.0, double tripletangle1 = M_PI / 8, size_t minhits1 = 10,
double maxdistance2 = 6.0, double tripletangle2 = M_PI / 8, size_t minhits2 = 5, size_t nthreads = 1);
void set_seed_finder_optimization_remove_loopers(bool opt = false, double minr = 10.0, double maxr = 70.0);
void set_track_follower_optimization_helix(bool opt = false);
void set_track_follower_optimization_precise_fit(bool opt = true);
PHTpcSeedFinder* get_seed_finder() { return mSeedFinder; }
PHTpcTrackFollower* get_track_follower() { return mTrackFollower; }
PHTpcVertexFinder* get_vertex_finder() { return mVertexFinder; }
PHTpcEventExporter* get_event_exporter() { return mEventExporter; }
void enable_vertexing(bool opt = false) { mEnableVertexing = opt; }
void enable_json_export(bool opt = false) { mEnableJsonExport = opt; }
protected:
int Setup(PHCompositeNode* topNode) override;
int Process(PHCompositeNode* topNode) override;
int End() override {return 0;}
PHField* getMagField(PHCompositeNode* topNode, double& B);
private:
PHTpcSeedFinder* mSeedFinder;
PHTpcTrackFollower* mTrackFollower;
PHTpcVertexFinder* mVertexFinder;
PHTpcEventExporter* mEventExporter;
PHTpcLookup* mLookup;
PHGenFit2::Fitter* mFitter;
TGeoManager* mTGeoManager;
PHField* mField;
double mB;
bool mEnableVertexing;
bool mEnableJsonExport;
};
#endif /* __PHTPCTRACKER_H */