PandaRoot
PndFtsHelpers.h
Go to the documentation of this file.
1 //
2 // Created by Bartosz Sobol on 13.05.2020.
3 //
4 
5 #pragma once
6 
7 #include <utility>
8 #include <vector>
9 #include <array>
10 #include <algorithm>
11 
12 #include "PndFtsStraw.h"
13 #include "PndFtsGeom.h"
14 #include "PndFtsSimpleHit.h"
15 
16 namespace PndFtsTrackFinder {
17 
18 struct XZPoint : public TObject {
19  XZPoint() = default;
20 
21  inline explicit XZPoint(const PndFtsStraw &straw) : fX{straw.fX}, fZ{straw.fZ} {};
22 
23  inline XZPoint(const float x, const float z) : fX{x}, fZ{z} {};
24 
25  float fX{};
26  float fZ{};
27 
28  ClassDef(XZPoint, 1);
29 };
30 
31 struct Line : public TObject {
32  Line() = default;
33 
34  Line(float slope, float intercept) : fSlope{slope}, fIntercept{intercept} {}
35 
36  float fSlope{};
37  float fIntercept{};
38 
39  ClassDef(Line, 1);
40 };
41 
42 using TangentLineArray = std::array<Line, 4>;
43 
44 struct Circle : public TObject {
45  Circle() = default;
46 
47  Circle(float radius, XZPoint origin) : fRadius{radius}, fOrigin{std::move(origin)} {}
48 
49  float fRadius{};
50  XZPoint fOrigin{};
51 
52  ClassDef(Circle, 1);
53 };
54 
55 struct Point2D {
56  inline Point2D(float abscissa, float ordinate) : fAbscissa(abscissa), fOrdinate(ordinate) {}
57 
58  float fAbscissa;
59  float fOrdinate;
60 };
61 
62 using Point2DVector = std::vector<Point2D>;
63 
64 struct YZVirtualHit {
65  YZVirtualHit() = default;
66 
67  inline YZVirtualHit(const PndFtsSimpleHit &baseHit, float y, float z) : fBaseHit{baseHit}, fY{y}, fZ{z} {};
68 
69  PndFtsSimpleHit fBaseHit;
70  float fY;
71  float fZ;
72 };
73 
74 using ZYVirtualHitVector = std::vector<YZVirtualHit>;
75 using ZYVirtualHitVectorPair = std::pair<ZYVirtualHitVector, ZYVirtualHitVector>;
76 using ZYVirtualHitPair = std::pair<YZVirtualHit, YZVirtualHit>;
77 using ZYVirtualHitPairVector = std::vector<ZYVirtualHitPair>;
78 
79 struct TrackRange {
80  uint32_t fBegin;
81  uint32_t fNTracks;
82 };
83 
84 } // namespace PndFtsTrackFinder
Circle(float radius, XZPoint origin)
Definition: PndFtsHelpers.h:47
YZVirtualHit(const PndFtsSimpleHit &baseHit, float y, float z)
Definition: PndFtsHelpers.h:67
std::vector< ZYVirtualHitPair > ZYVirtualHitPairVector
Definition: PndFtsHelpers.h:77
Point2D(float abscissa, float ordinate)
Definition: PndFtsHelpers.h:56
std::vector< YZVirtualHit > ZYVirtualHitVector
Definition: PndFtsHelpers.h:74
XZPoint(const float x, const float z)
Definition: PndFtsHelpers.h:23
Line(float slope, float intercept)
Definition: PndFtsHelpers.h:34
std::pair< YZVirtualHit, YZVirtualHit > ZYVirtualHitPair
Definition: PndFtsHelpers.h:76
std::vector< Point2D > Point2DVector
Definition: PndFtsHelpers.h:62
std::array< Line, 4 > TangentLineArray
Definition: PndFtsHelpers.h:42
std::pair< ZYVirtualHitVector, ZYVirtualHitVector > ZYVirtualHitVectorPair
Definition: PndFtsHelpers.h:75
XZPoint(const PndFtsStraw &straw)
Definition: PndFtsHelpers.h:21