From: hristov Date: Tue, 19 Nov 2002 11:57:11 +0000 (+0000) Subject: Uncertainty of the tracking step included (Yu.Belikov) X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=33329428e84916c71d54aa7bcc67e38098cd2942;hp=ddae83186a2eca406cf3addf01e4d1cdc7e9ed0b Uncertainty of the tracking step included (Yu.Belikov) --- diff --git a/ITS/AliITStrackV2.cxx b/ITS/AliITStrackV2.cxx index 9806efb14aa..636038865f0 100644 --- a/ITS/AliITStrackV2.cxx +++ b/ITS/AliITStrackV2.cxx @@ -180,9 +180,9 @@ Double_t AliITStrackV2::GetPredictedChi2(const AliCluster *c) const return 1e10; } Double_t tmp=r00; r00=r11; r11=tmp; r01=-r01; - + Double_t dy=c->GetY() - fP0, dz=c->GetZ() - fP1; - + return (dy*r00*dy + 2*r01*dy*dz + dz*r11*dz)/det; } @@ -270,8 +270,8 @@ Int_t AliITStrackV2::CorrectForMaterial(Double_t d, Double_t x0) { //Multiple scattering****************** if (d!=0) { - //Double_t theta2=14.1*14.1/(beta2*p2*1e6)*TMath::Abs(d); - Double_t theta2=1.0259e-6*14*14/28/(beta2*p2)*TMath::Abs(d)*9.36*2.33; + Double_t theta2=14.1*14.1/(beta2*p2*1e6)*TMath::Abs(d); + //Double_t theta2=1.0259e-6*14*14/28/(beta2*p2)*TMath::Abs(d)*9.36*2.33; fC22 += theta2*(1.- fP2*fP2)*(1. + fP3*fP3); fC33 += theta2*(1. + fP3*fP3)*(1. + fP3*fP3); fC43 += theta2*fP3*fP4*(1. + fP3*fP3); @@ -465,6 +465,7 @@ Int_t AliITStrackV2::Propagate(Double_t alp,Double_t xk) { //------------------------------------------------------------------ //This function propagates a track //------------------------------------------------------------------ + Double_t alpha=fAlpha, x=fX; Double_t p0=fP0,p1=fP1,p2=fP2,p3=fP3,p4=fP4; Double_t c00=fC00; Double_t c10=fC10, c11=fC11; @@ -472,35 +473,43 @@ Int_t AliITStrackV2::Propagate(Double_t alp,Double_t xk) { Double_t c30=fC30, c31=fC31, c32=fC32, c33=fC33; Double_t c40=fC40, c41=fC41, c42=fC42, c43=fC43, c44=fC44; + if (alp < -TMath::Pi()) alp += 2*TMath::Pi(); + else if (alp >= TMath::Pi()) alp -= 2*TMath::Pi(); + Double_t ca=TMath::Cos(alp-fAlpha), sa=TMath::Sin(alp-fAlpha); + Double_t sf=fP2, cf=TMath::Sqrt(1.- fP2*fP2); - Double_t dalp=alp-fAlpha; - - Double_t ca=TMath::Cos(dalp), sa=TMath::Sin(dalp); - Double_t sf=fP2, cf=TMath::Sqrt(1.- fP2*fP2); - - Double_t pp2=fP2*ca - cf*sa; - if (TMath::Abs(pp2) >= 0.9999) { - Int_t n=GetNumberOfClusters(); - if (n>kWARN) - cerr<= TMath::Pi()) fAlpha -= 2*TMath::Pi(); - - Double_t x1=fX, y1=fP0; - - fX = x1*ca + y1*sa; - fP0=-x1*sa + y1*ca; - fP2 = pp2; + fX = x*ca + p0*sa; + fP0= -x*sa + p0*ca; + fP2= sf*ca - cf*sa; + + TMatrixD C(5,5); + C(0,0)=c00; + C(1,0)=c10; C(1,1)=c11; + C(2,0)=c20; C(2,1)=c21; C(2,2)=c22; + C(3,0)=c30; C(3,1)=c31; C(3,2)=c32; C(3,3)=c33; + C(4,0)=c40; C(4,1)=c41; C(4,2)=c42; C(4,3)=c43; C(4,4)=c44; + C(0,1)=C(1,0); + C(0,2)=C(2,0); C(1,2)=C(2,1); + C(0,3)=C(3,0); C(1,3)=C(3,1); C(2,3)=C(3,2); + C(0,4)=C(4,0); C(1,4)=C(4,1); C(2,4)=C(4,2); C(3,4)=C(4,3); - cf=ca + sf*sa/cf; + TMatrixD F(6,5); + F(0,0)=sa; + F(1,0)=ca; + F(2,1)=F(4,3)=F(5,4)=1; + F(3,2)=ca + sf/cf*sa; - if (!Invariant()) return 0; + TMatrixD tmp(C,TMatrixD::kMult,TMatrixD(TMatrixD::kTransposed, F)); + T=new TMatrixD(F,TMatrixD::kMult,tmp); + } - x1=fX; Double_t x2=xk, dx=x2-x1; + // **** translation ****************** + { + Double_t dx=xk-fX; Double_t f1=fP2, f2=f1 + fP4*dx; if (TMath::Abs(f2) >= 0.9999) { Int_t n=GetNumberOfClusters(); @@ -508,72 +517,28 @@ Int_t AliITStrackV2::Propagate(Double_t alp,Double_t xk) { cerr<