- // Assignes found cluster to the track and updates track information
-
- Bool_t fNoTilt = kTRUE;
- if(TMath::Abs(h01) > 0.003) fNoTilt = kFALSE;
- // add angular effect to the error contribution - MI
- Float_t tangent2 = (fC*fX-fE)*(fC*fX-fE);
- if (tangent2 < 0.90000){
- tangent2 = tangent2/(1.-tangent2);
- }
- Float_t errang = tangent2*0.04; //
- Float_t padlength = TMath::Sqrt(c->GetSigmaZ2()*12.);
-
- Double_t r00=c->GetSigmaY2() +errang, r01=0., r11=c->GetSigmaZ2()*100.;
- r00+=fCyy; r01+=fCzy; r11+=fCzz;
- Double_t det=r00*r11 - r01*r01;
- Double_t tmp=r00; r00=r11/det; r11=tmp/det; r01=-r01/det;
-
- Double_t k00=fCyy*r00+fCzy*r01, k01=fCyy*r01+fCzy*r11;
- Double_t k10=fCzy*r00+fCzz*r01, k11=fCzy*r01+fCzz*r11;
- Double_t k20=fCey*r00+fCez*r01, k21=fCey*r01+fCez*r11;
- Double_t k30=fCty*r00+fCtz*r01, k31=fCty*r01+fCtz*r11;
- Double_t k40=fCcy*r00+fCcz*r01, k41=fCcy*r01+fCcz*r11;
-
- Double_t dy=c->GetY() - fY, dz=c->GetZ() - fZ;
- Double_t cur=fC + k40*dy + k41*dz, eta=fE + k20*dy + k21*dz;
-
-
- if(fNoTilt) {
- if (TMath::Abs(cur*fX-eta) >= 0.90000) {
- // Int_t n=GetNumberOfClusters();
- //if (n>4) cerr<<n<<" AliTRDtrack warning: Filtering failed !\n";
- return 0;
- }
- fY += k00*dy + k01*dz;
- fZ += k10*dy + k11*dz;
- fE = eta;
- //fT += k30*dy + k31*dz;
- fC = cur;
- }
- else {
- Double_t xu_factor = 100.; // empirical factor set by C.Xu
- // in the first tilt version
- dy=c->GetY() - fY; dz=c->GetZ() - fZ;
- dy=dy+h01*dz;
- Float_t add=0;
- if (TMath::Abs(dz)>padlength/2.){
- Float_t dy2 = c->GetY() - fY;
- Float_t sign = (dz>0) ? -1.: 1.;
- dy2+=h01*sign*padlength/2.;
- dy = dy2;
- add = 0;
- }
-
-
-
- r00=c->GetSigmaY2()+errang+add, r01=0., r11=c->GetSigmaZ2()*xu_factor;
- r00+=(fCyy+2.0*h01*fCzy+h01*h01*fCzz);
-
- r01+=(fCzy+h01*fCzz);
- det=r00*r11 - r01*r01;
- tmp=r00; r00=r11/det; r11=tmp/det; r01=-r01/det;
-
- k00=fCyy*r00+fCzy*(r01+h01*r00),k01=fCyy*r01+fCzy*(r11+h01*r01);
- k10=fCzy*r00+fCzz*(r01+h01*r00),k11=fCzy*r01+fCzz*(r11+h01*r01);
- k20=fCey*r00+fCez*(r01+h01*r00),k21=fCey*r01+fCez*(r11+h01*r01);
- k30=fCty*r00+fCtz*(r01+h01*r00),k31=fCty*r01+fCtz*(r11+h01*r01);
- k40=fCcy*r00+fCcz*(r01+h01*r00),k41=fCcy*r01+fCcz*(r11+h01*r01);
-
-
- cur=fC + k40*dy + k41*dz; eta=fE + k20*dy + k21*dz;
- if (TMath::Abs(cur*fX-eta) >= 0.90000) {
- // Int_t n=GetNumberOfClusters();
- //if (n>4) cerr<<n<<" AliTRDtrack warning: Filtering failed !\n";
- return 0;
- }
- fY += k00*dy + k01*dz;
- fZ += k10*dy + k11*dz;
- fE = eta;
- fT += k30*dy + k31*dz;
- fC = cur;
-
- k01+=h01*k00;
- k11+=h01*k10;
- k21+=h01*k20;
- k31+=h01*k30;
- k41+=h01*k40;
-
- }
- Double_t c01=fCzy, c02=fCey, c03=fCty, c04=fCcy;
- Double_t c12=fCez, c13=fCtz, c14=fCcz;
-
-
- fCyy-=k00*fCyy+k01*fCzy; fCzy-=k00*c01+k01*fCzz;
- fCey-=k00*c02+k01*c12; fCty-=k00*c03+k01*c13;
- fCcy-=k00*c04+k01*c14;
-
- fCzz-=k10*c01+k11*fCzz;
- fCez-=k10*c02+k11*c12; fCtz-=k10*c03+k11*c13;
- fCcz-=k10*c04+k11*c14;
-
- fCee-=k20*c02+k21*c12; fCte-=k20*c03+k21*c13;
- fCce-=k20*c04+k21*c14;
-
- fCtt-=k30*c03+k31*c13;
- fCct-=k40*c03+k41*c13;
- //fCct-=k30*c04+k31*c14; // symmetric formula MI
-
- fCcc-=k40*c04+k41*c14;