BmnRoot
Loading...
Searching...
No Matches
CbmKFUMeasurement.cxx
Go to the documentation of this file.
1#include "CbmKFUMeasurement.h"
2
3#include <cmath>
4
5void CbmKFUMeasurement::Set( Double_t z_, Double_t u_, Double_t phi_, Double_t sigma2_ ){
6 this->z = z_;
7 this->u = u_;
8 this->phi = phi_;
9 this->sigma2 = sigma2_;
10 phi_s = sin(phi_);
11 phi_c = cos(phi_);
12 phi_ss = phi_s * phi_s;
13 phi_cc = phi_c * phi_c;
14 phi_2sc = 2.* phi_s * phi_c;
15}
16
18
19 Double_t *T = track.GetTrack();
20 Double_t *C = track.GetCovMatrix();
21
22 Double_t W = sigma2+phi_cc*C[0]+phi_2sc*C[1]+phi_ss*C[2];
23 if( !finite(W) || W<1.e-10 ) return 1;
24 W = 1./W;
25 if( !finite(W) ) return 1;
26
27 Double_t zeta = phi_c*T[0] + phi_s*T[1] - u;
28
29 track.GetRefChi2() += zeta * zeta * W;
30 track.GetRefNDF() += 1;
31 Double_t K[5] = { phi_c*C[ 0] + phi_s*C[ 1],
32 phi_c*C[ 1] + phi_s*C[ 2],
33 phi_c*C[ 3] + phi_s*C[ 4],
34 phi_c*C[ 6] + phi_s*C[ 7],
35 phi_c*C[10] + phi_s*C[11] };
36
37 Double_t KW[5] = { K[0]*W,
38 K[1]*W,
39 K[2]*W,
40 K[3]*W,
41 K[4]*W };
42
43 T[0]-= KW[0]*zeta;
44 T[1]-= KW[1]*zeta;
45 T[2]-= KW[2]*zeta;
46 T[3]-= KW[3]*zeta;
47 T[4]-= KW[4]*zeta;
48
49 C[ 0]-= K[0]*KW[0];
50 C[ 1]-= K[1]*KW[0];
51 C[ 2]-= K[1]*KW[1];
52 C[ 3]-= K[2]*KW[0];
53 C[ 4]-= K[2]*KW[1];
54 C[ 5]-= K[2]*KW[2];
55 C[ 6]-= K[3]*KW[0];
56 C[ 7]-= K[3]*KW[1];
57 C[ 8]-= K[3]*KW[2];
58 C[ 9]-= K[3]*KW[3];
59 C[10]-= K[4]*KW[0];
60 C[11]-= K[4]*KW[1];
61 C[12]-= K[4]*KW[2];
62 C[13]-= K[4]*KW[3];
63 C[14]-= K[4]*KW[4];
64 return 0;
65}
vector< Double_t > W(vector< Double_t > dist, Double_t sig)
Definition BmnMath.cxx:878
friend F32vec4 sin(const F32vec4 &a)
Definition P4_F32vec4.h:124
friend F32vec4 cos(const F32vec4 &a)
Definition P4_F32vec4.h:125
virtual Double_t * GetTrack()
Is it electron.
virtual Int_t & GetRefNDF()
Chi^2 after fit.
virtual Double_t * GetCovMatrix()
array[6] of track parameters(x,y,tx,ty,qp,z)
virtual Double_t & GetRefChi2()
array[15] of covariance matrix
void Set(Double_t z, Double_t u, Double_t phi, Double_t sigma2)
Int_t Filter(CbmKFTrackInterface &track)