BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
VertexFitRefine.h
Go to the documentation of this file.
1/* <===<===<===<===<===<===<===<===<===~===>===>===>===>===>===>===>===>===>
2 * File Name: VertexFitRefine.h
3 * Author: Hao-Kai SUN
4 * Created: 2021-09-07 Tue 23:47:01 CST
5 * <<=====================================>>
6 * Last Updated: 2023-09-29 Thu 13:58:57 CST
7 * By: Hao-Kai SUN
8 * Update #: 87
9 * ============================== CODES ==============================>>> */
10#ifndef VERTEXFITREFINE_VERTEXFITREFINE_H
11#define VERTEXFITREFINE_VERTEXFITREFINE_H
12
13#include "VertexFit/VertexFit.h"
15
16namespace VTXPDGM {
17extern const double& electron;
18extern const double& muon;
19extern const double& pion;
20extern const double& kaon;
21extern const double& proton;
22
23extern const double empikp[5];
24extern const double empikp2[5];
25} // namespace VTXPDGM
26
28{
29 friend class VertexFit;
30
31 public:
32 static VertexFitRefine* instance();
34
35 // initialization, cleanup.
36 void init();
37
38 void AddTrack(const int index, RecMdcKalTrack* p,
39 const RecMdcKalTrack::PidType pid);
40 // for virtual track, Lambda
41 void AddTrack(const int number, const WTrackParameter wtrk);
42
43 // add methods
44 void AddVertex(int number, VertexParameter vpar, std::vector<int> lis);
45 void AddVertex(int number, VertexParameter vpar, int n1, int n2);
46 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3);
47 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
48 int n4);
49 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
50 int n4, int n5);
51 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
52 int n4, int n5, int n6);
53 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
54 int n4, int n5, int n6, int n7);
55 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
56 int n4, int n5, int n6, int n7, int n8);
57 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
58 int n4, int n5, int n6, int n7, int n8, int n9);
59 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
60 int n4, int n5, int n6, int n7, int n8, int n9, int n10);
61 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
62 int n4, int n5, int n6, int n7, int n8, int n9, int n10,
63 int n11);
64 void AddVertex(int number, VertexParameter vpar, int n1, int n2, int n3,
65 int n4, int n5, int n6, int n7, int n8, int n9, int n10,
66 int n11, int n12);
67 void AddBeamFit(int number, VertexParameter vpar, int n);
68
69 // set iteration number and chisq cut
70 void setIterNumber(const int niter = 10);
71 void setChisqCut(const double chicut = 1000, const double chiter = 1.0e-3);
72 void setMagCorrFactor(const double factor = 1.000);
73
74 bool Fit();
75 bool Fit(int n);
76
77 // get
78 double chisq() const;
79 double chisq(int n) const;
80
81 // updated WTrack parameter in vertex fit
82 HepLorentzVector pfit(int n) const;
83 HepPoint3D xfit(int n) const;
84 HepVector w(int n) const;
85 HepSymMatrix Ew(int n) const;
86 WTrackParameter wtrk(int n) const;
87
88 // updated Vertex Parameter in vertex fit
89 HepPoint3D vx(int n) const;
90 HepVector Vx(int n) const;
91 HepSymMatrix Evx(int n) const;
92 double errorVx(int n, int i) const;
93 VertexParameter vpar(int n) const;
94
95 // updated helix for charged daughters
96 HepVector helix(int n) const;
97
98 // virtual particle from Vertex Fit
100
101 // debug
102 int getPath() const;
103
104 private:
105 // Singleton
107 static VertexFitRefine* m_instance;
108
109 VertexFit* vtxfit;
110 VertexExtrapolate* vtxext;
111
112 // static const double beampipe; // = 3.111;
113 static const double obeampipe; // = 3.370 + 0.0130 * 3;
114 // 6.3000 + 0.0130*3 cm inner mdc chamber wall
115 // static const double innerwall; // = 6.290 - 0.0130 * 3;
116 // static const double oinnerwall; // = 6.425 + 0.0130 * 3;
117
118 std::vector<int> m_trkIdxOrigin;
119 std::vector<RecMdcKalTrack*> m_tracksOrigin;
120 std::vector<RecMdcKalTrack::PidType> m_trkPidOrigin;
121 std::vector<WTrackParameter> m_wtrkInfit;
122 std::vector<HepLorentzVector> m_p4Infit;
123 std::vector<HepPoint3D> m_x3Infit;
124
125 std::vector<HepVector> m_helices;
126
127 // int m_vtxidx;
128 std::vector<VertexParameter> m_vtxsOrigin;
129
130 // debug
131 int thePath;
132};
133
134// forward declarations, inline definitions
136
137#endif /* VERTEXFITREFINE_VERTEXFITREFINE_H */
138/* ===================================================================<<< */
139/* ==================== VertexFitRefine.h ends here ===================== */
const Int_t n
double w
int n2
Definition SD0Tag.cxx:55
int n1
Definition SD0Tag.cxx:54
WTrackParameter wVirtualTrack(int n) const
HepSymMatrix Ew(int n) const
HepVector Vx(int n) const
HepLorentzVector pfit(int n) const
double chisq() const
void AddTrack(const int index, RecMdcKalTrack *p, const RecMdcKalTrack::PidType pid)
HepSymMatrix Evx(int n) const
void setChisqCut(const double chicut=1000, const double chiter=1.0e-3)
WTrackParameter wtrk(int n) const
void setMagCorrFactor(const double factor=1.000)
static VertexFitRefine * instance()
void AddBeamFit(int number, VertexParameter vpar, int n)
void setIterNumber(const int niter=10)
HepPoint3D xfit(int n) const
void AddVertex(int number, VertexParameter vpar, std::vector< int > lis)
double errorVx(int n, int i) const
VertexParameter vpar(int n) const
HepVector helix(int n) const
HepPoint3D vx(int n) const
const double & electron
const double & muon
const double & kaon
const double empikp[5]
const double & pion
const double empikp2[5]
const double & proton