36 const Double_t CutChi2 = 3.5*3.5;
37 const Int_t MaxIter = 3;
45 for( Int_t
i=0;
i<6;
i++ ) C[
i]=0;
47 r[0] = r[1] = r[2] = 0.;
54 C[0] = C[2] = t.
RR/3.5/3.5;
55 C[5] = (t.
dz/2/3.5)*(t.
dz/2/3.5);
64 for( Int_t iteration = 0; iteration < MaxIter; ++iteration ){
68 Double_t r0[3], C0[6];
70 for( Int_t
i=0;
i<3;
i++ ) r0[
i] = r[
i];
71 for( Int_t
i=0;
i<6;
i++ ) C0[
i] = C[
i];
76 C[1] = 0.; C[2] = 100.;
77 C[3] = 0.; C[4] = 0.; C[5] = 100.;
84 for( vector<CbmKFTrackInterface*>::iterator itr = Tracks.begin();
85 itr != Tracks.end() ; ++itr ){
93 std::vector<Double_t> covMatr (V, V + 15);
94 if (iteration == 0) {
for (
unsigned int j = 0; j < covMatr.size(); ++j) covMatr[j] *= 10; };
96 Double_t a = 0, b = 0;
98 Double_t zeta[2] = { r0[0]-
m[0], r0[1]-
m[1] };
103 Double_t S[3] = { (C0[0]+V[0]), -(C0[1]+V[1]), (C0[2]+V[2]) };
104 Double_t s = S[2]*S[0] - S[1]*S[1];
105 Double_t chi2 = zeta[0]*zeta[0]*S[0] + 2*zeta[0]*zeta[1]*S[1]
106 + zeta[1]*zeta[1]*S[2];
107 if( chi2 > s*CutChi2 )
continue;
111 s = V[0]*V[2] - V[1]*V[1];
112 if ( s < 1.E-20 )
continue;
114 a =
m[2] + s*( ( V[3]*V[2] - V[4]*V[1] )*zeta[0]
115 + (- V[3]*V[1] + V[4]*V[0] )*zeta[1] );
116 b =
m[3] + s*( ( V[6]*V[2] - V[7]*V[1] )*zeta[0]
117 + (- V[6]*V[1] + V[7]*V[0] )*zeta[1] );
126 Double_t zeta[2] = {
m[0] - ( r[0] - a*(r[2]-r0[2]) ),
127 m[1] - ( r[1] - b*(r[2]-r0[2]) ) };
131 Double_t CHt[3][2] = { { C[0] - a*C[3], C[1] - b*C[3]},
132 { C[1] - a*C[4], C[2] - b*C[4]},
133 { C[3] - a*C[5], C[4] - b*C[5]} };
137 Double_t S[3] = { V[0] + CHt[0][0] - a*CHt[2][0],
138 V[1] + CHt[1][0] - b*CHt[2][0],
139 V[2] + CHt[1][1] - b*CHt[2][1] };
143 Double_t w = S[0]*S[2] - S[1]*S[1];
144 if ( w < 1.E-20 )
continue;
154 vtx.
GetRefChi2()+= zeta[0]*zeta[0]*S[0] + 2*zeta[0]*zeta[1]*S[1]
156 + zeta[1]*zeta[1]*S[2];
165 for( Int_t
i=0;
i<3; ++
i ){ K[
i][0] = CHt[
i][0]*S[0] + CHt[
i][1]*S[1] ;
166 K[
i][1] = CHt[
i][0]*S[1] + CHt[
i][1]*S[2] ; }
170 for( Int_t
i=0;
i<3; ++
i ) r[
i]+= K[
i][0]*zeta[0] + K[
i][1]*zeta[1];
174 C[0] -= K[0][0]*CHt[0][0] + K[0][1]*CHt[0][1];
175 C[1] -= K[1][0]*CHt[0][0] + K[1][1]*CHt[0][1];
176 C[2] -= K[1][0]*CHt[1][0] + K[1][1]*CHt[1][1];
177 C[3] -= K[2][0]*CHt[0][0] + K[2][1]*CHt[0][1];
178 C[4] -= K[2][0]*CHt[1][0] + K[2][1]*CHt[1][1];
179 C[5] -= K[2][0]*CHt[2][0] + K[2][1]*CHt[2][1];