X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITStrack.cxx;h=07195827f1e9c0c26c025bb8f954255fbf4767a9;hb=df831521a97c25aeed189ef01a09e16097440113;hp=5c9702d42223cd41fc004e075e8c271b7ab7d675;hpb=dce1757b8d2d3180314596bc70cba50203c1f03f;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITStrack.cxx b/ITS/AliITStrack.cxx index 5c9702d4222..07195827f1e 100644 --- a/ITS/AliITStrack.cxx +++ b/ITS/AliITStrack.cxx @@ -7,6 +7,8 @@ #include "AliITS.h" #include "AliRun.h" #include "AliITStrack.h" +#include "AliGenerator.h" +#include "AliITSRad.h" ClassImp(AliITStrack) @@ -15,8 +17,7 @@ AliITStrack::AliITStrack() { //Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it // default constructor - fvTrack.ResizeTo(5); - fmCovariance = new TMatrix(5,5); + fC00=fC10=fC11=fC20=fC21=fC22=fC30=fC31=fC32=fC33=fC40=fC41=fC42=fC43=fC44=0.; flistCluster = new TObjArray; fNumClustInTrack =0; fChi2=-1; @@ -25,10 +26,10 @@ AliITStrack::AliITStrack() { fErrorVertex.ResizeTo(3); fLayer = -1; ClusterInTrack = new TMatrix(6,9); - for(Int_t i=0; i<6; i++) (*ClusterInTrack)(i,6)=(*ClusterInTrack)(i,7)= + Int_t i; + for(i=0; i<6; i++) (*ClusterInTrack)(i,6)=(*ClusterInTrack)(i,7)= (*ClusterInTrack)(i,8)=-1.; rtrack=0.; - //alphaprov=-50.; //provvisorio d2.ResizeTo(6); tgl2.ResizeTo(6); dtgl.ResizeTo(6); @@ -39,10 +40,9 @@ AliITStrack::AliITStrack() { AliITStrack::AliITStrack(const AliITStrack &cobj) { //Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it - fvTrack.ResizeTo(5); - fmCovariance = new TMatrix(5,5); ClusterInTrack = new TMatrix(6,9); - for(Int_t i=0; i<6; i++) (*ClusterInTrack)(i,6)=(*ClusterInTrack)(i,7)= + Int_t i; + for(i=0; i<6; i++) (*ClusterInTrack)(i,6)=(*ClusterInTrack)(i,7)= (*ClusterInTrack)(i,8)=-1.; flistCluster = new TObjArray; fVertex.ResizeTo(3); @@ -54,7 +54,7 @@ AliITStrack::AliITStrack(const AliITStrack &cobj) { fTPCtrack = cobj.fTPCtrack; fNumClustInTrack = cobj.fNumClustInTrack; fChi2= cobj.fChi2; - fvTrack = cobj.fvTrack; + fX0=cobj.fX0; fX1=cobj.fX1; fX2=cobj.fX2; fX3=cobj.fX3; fX4=cobj.fX4; rtrack=cobj.rtrack; Dv=cobj.Dv; Zv=cobj.Zv; @@ -66,13 +66,14 @@ AliITStrack::AliITStrack(const AliITStrack &cobj) { d2=cobj.d2; tgl2=cobj.tgl2; dtgl=cobj.dtgl; - //alphaprov=cobj.alphaprov; //provvisorio - - *fmCovariance = *cobj.fmCovariance; + + fC00=cobj.fC00; fC10=cobj.fC10; fC11=cobj.fC11; fC20=cobj.fC20; fC21=cobj.fC21; + fC22=cobj.fC22; fC30=cobj.fC30; fC31=cobj.fC31; fC32=cobj.fC32; fC33=cobj.fC33; + fC40=cobj.fC40; fC41=cobj.fC41; fC42=cobj.fC42; fC43=cobj.fC43; fC44=cobj.fC44; *ClusterInTrack = *cobj.ClusterInTrack; - for(Int_t i=0; iGetSize(); i++) + for(i=0; iGetSize(); i++) flistCluster->AddLast(cobj.flistCluster->At(i)); } @@ -82,7 +83,6 @@ AliITStrack::AliITStrack(AliTPCtrack &obj) //Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it fTPCtrack = &obj; - fvTrack.ResizeTo(5); fVertex.ResizeTo(3); fErrorVertex.ResizeTo(3); @@ -99,9 +99,11 @@ AliITStrack::AliITStrack(AliTPCtrack &obj) fVertex(2)=(Double_t)Vzg; fLayer = 7; - fmCovariance = new TMatrix(5,5); + //fmCovariance = new TMatrix(5,5); ClusterInTrack = new TMatrix(6,9); - for(Int_t i=0; i<6; i++) (*ClusterInTrack)(i,6)=(*ClusterInTrack)(i,7)= + + Int_t i; + for(i=0; i<6; i++) (*ClusterInTrack)(i,6)=(*ClusterInTrack)(i,7)= (*ClusterInTrack)(i,8)=-1.; flistCluster = new TObjArray; fNumClustInTrack = 0; @@ -109,17 +111,40 @@ AliITStrack::AliITStrack(AliTPCtrack &obj) } + AliITStrack::~AliITStrack() { //destructor - - if(fmCovariance) delete fmCovariance; + if(flistCluster) delete flistCluster; if(ClusterInTrack) delete ClusterInTrack; } +void AliITStrack::PutCElements(Double_t C00, Double_t C10, Double_t C11, Double_t C20, Double_t C21, +Double_t C22, Double_t C30, Double_t C31, Double_t C32, Double_t C33, Double_t C40, +Double_t C41, Double_t C42, Double_t C43, Double_t C44){ + fC00=C00; fC10=C10; fC11=C11; fC20=C20; fC21=C21; fC22=C22; fC30=C30; fC31=C31; fC32=C32; fC33=C33; + fC40=C40; fC41=C41; fC42=C42; fC43=C43; fC44=C44; +} + +void AliITStrack::GetCElements(Double_t &C00, Double_t &C10, Double_t &C11, Double_t &C20, Double_t &C21, +Double_t &C22, Double_t &C30, Double_t &C31, Double_t &C32, Double_t &C33, Double_t &C40, +Double_t &C41, Double_t &C42, Double_t &C43, Double_t &C44){ + + C00=fC00; C10=fC10; C11=fC11; C20=fC20; C21=fC21; C22=fC22; C30=fC30; C31=fC31; C32=fC32; C33=fC33; + C40=fC40; C41=fC41; C42=fC42; C43=fC43; C44=fC44; + +} + +void AliITStrack::GetXElements(Double_t &X0, Double_t &X1, Double_t &X2, Double_t &X3, Double_t &X4) { + X0=fX0; X1=fX1; X2=fX2; X3=fX3; X4=fX4; +} + +void AliITStrack::PutXElements(Double_t X0, Double_t X1, Double_t X2, Double_t X3, Double_t X4){ + fX0=X0; fX1=X1; fX2=X2; fX3=X3; fX4=X4; +} void AliITStrack::LmTPC() { @@ -127,44 +152,44 @@ void AliITStrack::LmTPC() { // The covariance matrix is also modified accordingly //Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it - - TVector tpctrack(5); + Double_t Alpha = fTPCtrack->GetAlpha(); //printf("LmTPC: Alpha %f\n",Alpha); - tpctrack(0) = fTPCtrack->GetY(); - tpctrack(1) = fTPCtrack->GetZ(); - tpctrack(2) = fTPCtrack->GetC(); - tpctrack(3) = fTPCtrack->GetEta(); - tpctrack(4) = fTPCtrack->GetTgl(); - //cout<< " tpctracks = "<GetY(); + Double_t ZTPC = fTPCtrack->GetZ(); + Double_t CTPC = fTPCtrack->GetC(); + Double_t EtaTPC = fTPCtrack->GetEta(); + Double_t TglTPC = fTPCtrack->GetTgl(); + Double_t xm, ym, zm; Double_t sina = TMath::Sin(Alpha); Double_t cosa = TMath::Cos(Alpha); Double_t xl= fTPCtrack->GetX(); - xm = xl * cosa - tpctrack(0)*sina; - ym = xl * sina + tpctrack(0)*cosa; - zm = tpctrack(1); + xm = xl * cosa - YTPC*sina; + ym = xl * sina + YTPC*cosa; + zm = ZTPC; //cout<<" xl e alpha = "<0.) phi=0.; @@ -188,110 +213,80 @@ void AliITStrack::LmTPC() { }; if(phi<0. || phi>(2*pigre)) {cout<<"attention error on phi in AliITStrack:LmTPC \n"; getchar();} - fvTrack(0)= phi; - fvTrack(1)=zm; - fvTrack(3)=tpctrack(4); - fvTrack(4)=tpctrack(2); - /* - //provvisorio - alphaprov=pigre-PhiDef(x0m,y0m)-PhiDef(fVertex(0),fVertex(1)); - if(alphaprov<0.) alphaprov=alphaprov+2.*pigre; - //cout<<" PhiDef(x0m,y0m) ="<0) signdd=1.; else signdd=-1.; - fvTrack(2)=signdd*dd-R; + fX2=signdd*dd-R; //cout<<" fvertex = "<GetCovariance(cov); - localM(0,0)=cov[0]; - localM(1,1)=cov[2]; - localM(2,2)=cov[5]; - localM(3,3)=cov[9]; - localM(4,4)=cov[14]; - localM(1,0)=localM(0,1)=cov[1]; - localM(2,0)=localM(0,2)=cov[3]; - localM(2,1)=localM(1,2)=cov[4]; - localM(3,0)=localM(0,3)=cov[6]; - localM(3,1)=localM(1,3)=cov[7]; - localM(3,2)=localM(2,3)=cov[8]; - localM(4,0)=localM(0,4)=cov[10]; - localM(4,1)=localM(1,4)=cov[11]; - localM(4,2)=localM(2,4)=cov[12]; - localM(4,3)=localM(3,4)=cov[13]; - - TMatrix F(5,5); - + Double_t dfidy, dDdy, dDdC, dDdeta; dfidy=(xm*cosa+ym*sina)/(rtrack*rtrack); dDdy=signdd*((y0m-fVertex(1))*cosa-(x0m-fVertex(0))*sina)/dd; - Double_t dyodr=signy*(R+(xl-Xo)*tpctrack(3))/TMath::Sqrt(R*R-(xl-Xo)*(xl-Xo)); - Double_t dyomdr=sina*tpctrack(3)+cosa*dyodr; - Double_t dxomdr=cosa*tpctrack(3)-sina*dyodr; + Double_t dyodr=signy*(R+(xl-Xo)*EtaTPC)/TMath::Sqrt(R*R-(xl-Xo)*(xl-Xo)); + Double_t dyomdr=sina*EtaTPC+cosa*dyodr; + Double_t dxomdr=cosa*EtaTPC-sina*dyodr; Double_t ddddR=((x0m-fVertex(0))*dxomdr+(y0m-fVertex(1))*dyomdr)/dd; dDdC=-R*R*(signdd*ddddR-1.); Double_t dyoldxol=signy*(xl-Xo)/TMath::Sqrt(R*R-(xl-Xo)*(xl-Xo)); Double_t dxomdeta=R*(cosa-sina*dyoldxol); Double_t dyomdeta=R*(sina+cosa*dyoldxol); dDdeta=signdd*((x0m-fVertex(0))*dxomdeta+(y0m-fVertex(1))*dyomdeta)/dd; - F(0,0)=dfidy; - F(0,1)=F(0,2)=F(0,3)=F(0,4)=0.; - F(1,1)=1.; - F(1,0)=F(1,2)=F(1,3)=F(1,4)=0.; - F(2,0)=dDdy; - F(2,2)=dDdC; - F(2,3)=dDdeta; - F(2,1)=F(2,4)=0.; - F(3,0)=F(3,1)=F(3,2)=F(3,3)=0.; - F(3,4)=1.; - F(4,0)=F(4,1)=F(4,3)=F(4,4)=0.; - F(4,2)=1.; -// cout<<" Matrice F \n"; -// F.Print(); getchar(); - TMatrix Ft(TMatrix::kTransposed,F); - TMatrix temp(localM); - temp*=Ft; - TMatrix B(F); - B*=temp; // B=F*localM*Ft -// cout<<" Matrice C\n"; -// B.Print(); getchar(); - *fmCovariance = B; + + Double_t F00=dfidy; + Double_t F20=dDdy; + Double_t F22=dDdC; + Double_t F23=dDdeta; + + Double_t T00=cov[0]*F00; + Double_t T02=cov[0]*F20+cov[6]*F22+cov[3]*F23; + Double_t T20=cov[6]*F00; + Double_t T22=cov[6]*F20+cov[9]*F22+cov[8]*F23; + + fC00=F00*T00; + fC10=cov[1]*F00; + fC11=cov[2]; + fC20=F20*T00+F22*T20+F23*cov[3]*F00; + fC21=F20*cov[1]+F22*cov[7]+F23*cov[4]; + fC22=F20*T02+F22*T22+F23*(cov[3]*F20+cov[8]*F22+cov[5]*F23); + fC30=cov[10]*F00; + fC31=cov[11]; + fC32=cov[10]*F20+cov[13]*F22+cov[12]*F23; + fC33=cov[14]; + fC40=T20; + fC41=cov[7]; + fC42=T22; + fC43=cov[13]; + fC44=cov[9]; + + //cout<<" C32 e C44 = "<GetSize(); i++) flistCluster->AddLast(obj.flistCluster->At(i)); + Int_t i; + for(i=0; iGetSize(); i++) flistCluster->AddLast(obj.flistCluster->At(i)); return *this; @@ -331,7 +330,8 @@ void AliITStrack::GetClusters() { TMatrix A(*ClusterInTrack); TMatrix B(6,3); - for(Int_t i=0;i<6; i++){ + Int_t i; + for(i=0;i<6; i++){ B(i,0)=A(i,6); B(i,1)=A(i,7); B(i,2)=A(i,8); } A.Print(); @@ -353,19 +353,20 @@ void AliITStrack::Search(TVector VecTotLabref, Long_t &labref, Int_t &freq){ // define label Int_t vecfreq[18]; - - for(Int_t i=0; i<18; i++) vecfreq[i]=0; - for(Int_t i=0; i<18; i++) { - for(Int_t j=0; j<18; j++) { - if(VecTotLabref(i) == 0.) VecTotLabref(i)=-3.; + Int_t i,j; + for(i=0; i<18; i++) vecfreq[i]=0; + + for(i=0; i<18; i++) { + for(j=0; j<18; j++) { + // if(VecTotLabref(i) == 0.) VecTotLabref(i)=-3.; //commentato il 5-3-2001 if( (VecTotLabref(i)>=0.) && (VecTotLabref(i)==VecTotLabref(j)) ) vecfreq[i]++; } } Int_t imax=-1000; Long_t labdefault= (Long_t)1000000.; freq=0; - for(Int_t i=0; i<18; i++) { + for(i=0; i<18; i++) { if(vecfreq[i]>freq) {freq=vecfreq[i]; imax=i;} } if(imax<0) labref=labdefault; else labref=(Long_t) VecTotLabref(imax); @@ -382,49 +383,119 @@ void AliITStrack::Propagation(Double_t rk) { // Double_t Ak=argA(rk), Akm1=argA(rkm1); Double_t ak=arga(rk), akm1=arga(rkm1); - fvTrack(0)+=TMath::ASin(Ak)-TMath::ASin(Akm1); - if(fvTrack(0)>duepi) fvTrack(0)-=duepi; - if(fvTrack(0)<0.) fvTrack(0)+=duepi; + fX0+=TMath::ASin(Ak)-TMath::ASin(Akm1); + + if(fX0>duepi) fX0-=duepi; + if(fX0<0.) fX0+=duepi; - Double_t tgl=fvTrack(3); - Double_t C=fvTrack(4); - Double_t D=fvTrack(2); + Double_t tgl=fX3; + Double_t C=fX4; + Double_t D=fX2; Double_t Cy=C/2; - fvTrack(1)+=tgl/Cy*(TMath::ASin(ak)-TMath::ASin(akm1)); + fX1+=tgl/Cy*(TMath::ASin(ak)-TMath::ASin(akm1)); rtrack=rk; -//cout<<"fvTrack(0) fvTrack(1) e rtrack dentro Propagation = "<6.1 ) s(5)=s(5)+0.012; // to take into account rail + if(phi>2.96 && phi<3.31 ) s(5)=s(5)+0.012; + + + Double_t tgl=fX3; + Double_t theta=((TMath::Pi())/2.)-TMath::ATan(tgl); + //phi*=180./TMath::Pi(); + //theta*=180./TMath::Pi(); + //Double_t rad90=(TMath::Pi())/2.; + Double_t rad40=(TMath::Pi())*40./180.; + Double_t rad100=(TMath::Pi())*100/180; + Double_t rad360=(TMath::Pi())*2.; + Int_t imax=rl->Getimax(); + Int_t jmax=rl->Getjmax(); + Int_t i=(Int_t) ( (theta-rad40)/rad100*imax); + Int_t j=(Int_t) ( phi/rad360*jmax ); + //Int_t i=(Int_t)( ((theta-((TMath::Pi())/4.))/((TMath::Pi())/2.))*imax ); + //Int_t j=(Int_t)( (phi/((TMath::Pi())*2.))*jmax ); + if(i<0) i=0; + if(i>=imax) i=imax-1; + if(j<0) j=0; + if(j>=jmax) j=jmax-1; + /* + s(0) = 0.0028/TMath::Sin(theta)+( rl->GetRadMatrix1() )(i,j); // 0.0028 takes into account the beam pipe + s(1) = ( rl->GetRadMatrix2() )(i,j); + s(2) = ( rl->GetRadMatrix3() )(i,j); + s(3) = ( rl->GetRadMatrix4() )(i,j); + s(4) = ( rl->GetRadMatrix5() )(i,j); + s(5) = ( rl->GetRadMatrix6() )(i,j); + + + */ + + //for(int k=0; k<6; k++) cout<60) {cout<<" phi = "<135) {cout<<" theta = "<duepi) fvTrack(0)-=duepi; - if(fvTrack(0)<0.) fvTrack(0)+=duepi; + fX0+=TMath::ASin(Ak)-TMath::ASin(Akm1); + if(fX0>duepi) fX0-=duepi; + if(fX0<0.) fX0+=duepi; - Double_t tgl=fvTrack(3); - Double_t C=fvTrack(4); + Double_t tgl=fX3; + Double_t C=fX4; Double_t Cy=C/2; - fvTrack(1)+=tgl/Cy*(TMath::ASin(ak)-TMath::ASin(akm1)); + fX1+=tgl/Cy*(TMath::ASin(ak)-TMath::ASin(akm1)); rtrack=rk; } -void AliITStrack::AddMS() { +void AliITStrack::AddMS(AliITSRad *rl) { ////////// Modification of the covariance matrix to take into account multiple scattering /////////// //Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it @@ -480,52 +552,66 @@ void AliITStrack::AddMS() { TVector s(6); s(0)=0.0026+0.00283; s(1)=0.018; s(2)=0.0094; s(3)=0.0095; s(4)=0.0091; s(5)=0.0087; -//0.00277 is added in the first layer to take into account the energy loss in the beam pipe +//0.00277 is added in the first layer to take into account the energy loss in the beam pipe + + for(int k=0; k<6; k++) s(k)=s(k)*1.6; + + Double_t phi=fX0; + if(phi<0.174 ) s(5)=s(5)+0.012; //aggiunta provvisoria + if(phi>6.1 ) s(5)=s(5)+0.012; //aggiunta provvisoria + if(phi>2.96 && phi< 3.31) s(5)=s(5)+0.012; //aggiunta provvisoria + + Double_t tgl=fX3; + Double_t theta=((TMath::Pi())/2.)-TMath::ATan(tgl); + Double_t rad40=(TMath::Pi())*40./180.; // rivedere + Double_t rad100=(TMath::Pi())*100/180; + Double_t rad360=(TMath::Pi())*2.; + Int_t imax=rl->Getimax(); + Int_t jmax=rl->Getjmax(); + Int_t i=(Int_t) ( (theta-rad40)/rad100*imax); + Int_t j=(Int_t) ( phi/rad360*jmax); + + if(i<0) i=0; + if(i>=imax) i=imax-1; + if(j<0) j=0; + if(j>=jmax) j=jmax-1; + /* + s(0) = 0.0028/TMath::Sin(theta)+( rl->GetRadMatrix1() )(i,j); // 0.0028 takes into account the beam pipe + s(1) = ( rl->GetRadMatrix2() )(i,j); + s(2) = ( rl->GetRadMatrix3() )(i,j); + s(3) = ( rl->GetRadMatrix4() )(i,j); + s(4) = ( rl->GetRadMatrix5() )(i,j); + s(5) = ( rl->GetRadMatrix6() )(i,j); + */ Double_t mass=0.1396; Int_t layer=(Int_t)GetLayer(); - Double_t tgl=fvTrack(3); Double_t cosl=TMath::Cos(TMath::ATan(tgl)); - Double_t D=fvTrack(2); - Double_t C=fvTrack(4); + Double_t D=fX2; + Double_t C=fX4; Double_t Cy=C/2.; Double_t Q20=1./(cosl*cosl); Double_t Q30=C*tgl; Double_t Q40=Cy*(rtrack*rtrack-D*D)/(1.+ 2.*Cy*D); Double_t dd=D+Cy*D*D-Cy*rtrack*rtrack; - Double_t Q41=-1./cosl*TMath::Sqrt(rtrack*rtrack - dd*dd)/(1.+ 2.*Cy*D); - - /* - Double_t xk=rtrack*TMath::Cos(fvTrack(0)); - Double_t yk=rtrack*TMath::Sin(fvTrack(0)); - Double_t rvertex=TMath::Sqrt((xk-fVertex(0))*(xk-fVertex(0)) + (yk-fVertex(1))*(yk-fVertex(1))); - Double_t Q40=Cy*(rvertex*rvertex-D*D)/(1.+ 2.*Cy*D); - Double_t dd=D+Cy*D*D-Cy*rvertex*rvertex; - Double_t Q41=-1./cosl*TMath::Sqrt(rvertex*rvertex - dd*dd)/(1.+ 2.*Cy*D); - */ - - TMatrix J(5,2); - J(0,0)=0.; J(0,1)=0.; - J(1,0)=0.; J(1,1)=0.; - J(2,0)=Q40; - J(2,1)=Q41; - J(3,0)=Q20; J(3,1)=0.; - J(4,0)=Q30; J(4,1)=0.; - + Double_t dprova=rtrack*rtrack - dd*dd; + Double_t Q41=0.; + if(dprova>0.) Q41=-1./cosl*TMath::Sqrt(dprova)/(1.+ 2.*Cy*D); + Double_t p2=(GetPt()*GetPt())/(cosl*cosl); Double_t beta2=p2/(p2+mass*mass); - Double_t theta2=14.1*14.1/(beta2*p2*1.e6)*(s(layer-1)/cosl); - - TMatrix Jt(TMatrix::kTransposed,J); - TMatrix Q(J,TMatrix::kMult,Jt); - Q*=theta2; - - (*fmCovariance)+=Q; - + Double_t theta2=14.1*14.1/(beta2*p2*1.e6)*(s(layer-1)/cosl); + + fC22+=theta2*(Q40*Q40+Q41*Q41); + fC32+=theta2*Q20*Q40; + fC33+=theta2*Q20*Q20; + fC42+=theta2*Q30*Q40; + fC43+=theta2*Q30*Q20; + fC44+=theta2*Q30*Q30; + } - -void AliITStrack::PrimaryTrack() { +void AliITStrack::PrimaryTrack(AliITSRad *rl) { //Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it // calculation of part of covariance matrix for vertex constraint @@ -534,52 +620,52 @@ void AliITStrack::PrimaryTrack() { Rlayer[0]=4.; Rlayer[1]=7.; Rlayer[2]=14.9; Rlayer[3]=23.8; Rlayer[4]=39.1; Rlayer[5]=43.6; - Double_t Cy=fvTrack(4)/2.; - Double_t tgl=(fvTrack(1)-Zv)*Cy/TMath::ASin(Cy*rtrack); + Double_t Cy=fX4/2.; + Double_t tgl=(fX1-Zv)*Cy/TMath::ASin(Cy*rtrack); Double_t rtrack=1.; - fvTrack(0)=0.; - fvTrack(1)=rtrack*tgl; - fvTrack(2)=Dv; - fvTrack(3)=tgl; - - TMatrix newC(5,5); - newC(4,4)=(*fmCovariance)(4,4); - (*fmCovariance)=newC; - AddEL(1.,1); + fX0=0.; + fX1=rtrack*tgl; + fX2=Dv; + fX3=tgl; + + fC00=fC10=fC11=fC20=fC21=fC22=fC30=fC31=fC32=fC33=fC40=fC41=fC42=fC43=0.; + + AddEL(rl,1.,1); fLayer=0; - for (Int_t i=0; i<6; i++) { + Int_t i; + for (i=0; i<6; i++) { Propagation(Rlayer[i]); fLayer++; - d2(i)=(*fmCovariance)(2,2); - tgl2(i)=(*fmCovariance)(3,3); - dtgl(i)=(*fmCovariance)(2,3); - AddMS(); - AddEL(-1,0); + d2(i)=fC22; + tgl2(i)=fC33; + dtgl(i)=fC32; + AddMS(rl); + AddEL(rl,-1,0); } } Int_t AliITStrack::DoNotCross(Double_t rk) const{ - Double_t C=fvTrack(4); - Double_t D=fvTrack(2); + Double_t C=fX4; + Double_t D=fX2; Double_t Cy=C/2.; return (TMath::Abs((Cy*rk+(1.+Cy*D)*D/rk)/(1.+2.*Cy*D))>=1.)?1:0; } Double_t AliITStrack::argA(Double_t rk) const { - Double_t C=fvTrack(4); - Double_t D=fvTrack(2); + Double_t C=fX4; + Double_t D=fX2; Double_t Cy=C/2.; Double_t arg=(Cy*rk + (1 + Cy*D)*D/rk)/(1.+ 2.*Cy*D); if (TMath::Abs(arg) < 1.) return arg; //cout<<"class AliITSTrack: argA out of range !\n";/* getchar();*/ - return (arg>0) ? 1. : -1.; + return (arg>0) ? 0.99999999999 : -0.9999999999; } Double_t AliITStrack::arga(Double_t rk) const { - Double_t C=fvTrack(4); - Double_t D=fvTrack(2); + Double_t C=fX4; + Double_t D=fX2; Double_t Cy=C/2.; Double_t arg=(rk*rk - D*D)/(1.+ 2.*Cy*D); if (arg<0.) {/*cout<<"class AliITSTrack: arga out of range !\n";*/ arg=0.;} @@ -587,22 +673,22 @@ Double_t AliITStrack::arga(Double_t rk) const { } Double_t AliITStrack::argB(Double_t rk) const { - Double_t C=fvTrack(4); - Double_t D=fvTrack(2); + Double_t C=fX4; + Double_t D=fX2; Double_t Cy=C/2.; return (rk*rk - D*D)/(rk*(1.+ 2.*Cy*D)*(1.+ 2.*Cy*D)); } Double_t AliITStrack::argC(Double_t rk) const { - Double_t C=fvTrack(4); - Double_t D=fvTrack(2); + Double_t C=fX4; + Double_t D=fX2; Double_t Cy=C/2.; return (1./rk - 2.*Cy*argA(rk)/(1.+ 2.*Cy*D)); } -/* + Double_t AliITStrack::PhiDef(Double_t x, Double_t y){ Double_t pigre= TMath::Pi(); - Double_t phi; + Double_t phi=10000.; if(y == 0. || x == 0.) { if(y == 0. && x == 0.) { cout << " Error in AliITStracking::PhiDef x=0 and y=0 \n"; getchar(); @@ -623,4 +709,4 @@ Double_t AliITStrack::PhiDef(Double_t x, Double_t y){ } return phi; } -*/ +