+ //cout<<" Dv e Zv = "<<Dv<<" "<<Zv<<"\n";
+ trackITS.SetDv(Dv); trackITS.SetZv(Zv);
+ trackITS.SetsigmaDv(sigmaDv); trackITS.SetsigmaZv(sigmaZv);
+ result.SetDv(Dv); result.SetZv(Zv);
+ result.SetsigmaDv(sigmaDv); result.SetsigmaZv(sigmaZv);
+ primarytrack.SetDv(Dv); primarytrack.SetZv(Zv);
+ primarytrack.SetsigmaDv(sigmaDv); primarytrack.SetsigmaZv(sigmaZv);
+
+ ////////////////////////////////////////////////////////////////
+
+ primarytrack.PrimaryTrack(rl);
+ TVector d2=primarytrack.Getd2();
+ TVector tgl2=primarytrack.Gettgl2();
+ TVector dtgl=primarytrack.Getdtgl();
+ trackITS.Setd2(d2); trackITS.Settgl2(tgl2); trackITS.Setdtgl(dtgl);
+ result.Setd2(d2); result.Settgl2(tgl2); result.Setdtgl(dtgl);
+ /*
+ trackITS.SetVertex(vertex); trackITS.SetErrorVertex(ervertex);
+ result.SetVertex(vertex); result.SetErrorVertex(ervertex);
+ */
+
+
+ Tracking(trackITS,&result,recPoints,vettid, flagvert,rl);
+ // cout<<" progressive track number = "<<j<<"\r";
+ // cout<<j<<"\r";
+ Int_t NumofCluster=result.GetNumClust();
+ // cout<<" progressive track number = "<<j<<"\n"; // stampa
+ Long_t labITS=result.GetLabel();
+ // cout << " ITS track label = " << labITS << "\n"; // stampa
+ int lab=track->GetLabel();
+ // cout << " TPC track label = " << lab <<"\n"; // stampa
+
+ //propagation to vertex
+
+ Double_t rbeam=3.;
+
+ result.Propagation(rbeam);
+
+ Double_t C00,C10,C11,C20,C21,C22,C30,C31,C32,C33,C40,C41,C42,C43,C44;
+ result.GetCElements(C00,C10,C11,C20,C21,C22,C30,C31,C32,C33,C40,C41,C42,C43,C44);
+ Double_t pt=TMath::Abs(result.GetPt());
+ Double_t Dr=result.GetD();
+ Double_t Z=result.GetZ();
+ Double_t tgl=result.GetTgl();
+ Double_t C=result.GetC();
+ Double_t Cy=C/2.;
+ Double_t Dz=Z-(tgl/Cy)*TMath::ASin(result.arga(rbeam));
+ Dz-=Vgeant(2);
+
+ // cout<<" Dr e dz alla fine = "<<Dr<<" "<<Dz<<"\n"; getchar();
+ Double_t phi=result.Getphi();
+ Double_t phivertex = phi - TMath::ASin(result.argA(rbeam));
+ Double_t duepi=2.*TMath::Pi();
+ if(phivertex>duepi) phivertex-=duepi;
+ if(phivertex<0.) phivertex+=duepi;
+ Double_t Dtot=TMath::Sqrt(Dr*Dr+Dz*Dz);
+
+ /////////////////////////////////////////////////////////////////////
+
+ Int_t idmodule,idpoint;
+ if(NumofCluster >=5) { // cinque - sei
+ //if(NumofCluster ==6) { // cinque - sei
+
+ AliITSiotrack outtrack;
+
+ iotrack=&outtrack;
+
+ iotrack->SetStatePhi(phi);
+ iotrack->SetStateZ(Z);
+ iotrack->SetStateD(Dr);
+ iotrack->SetStateTgl(tgl);
+ iotrack->SetStateC(C);
+ Double_t radius=result.Getrtrack();
+ iotrack->SetRadius(radius);
+ Int_t charge;
+ if(C>0.) charge=-1; else charge=1;
+ iotrack->SetCharge(charge);
+
+
+ iotrack->SetCovMatrix(C00,C10,C11,C20,C21,C22,C30,C31,C32,C33,C40,C41,C42,C43,C44);
+
+ Double_t px=pt*TMath::Cos(phivertex);
+ Double_t py=pt*TMath::Sin(phivertex);
+ Double_t pz=pt*tgl;
+
+ Double_t xtrack=Dr*TMath::Sin(phivertex);
+ Double_t ytrack=Dr*TMath::Cos(phivertex);
+ Double_t ztrack=Dz+Vgeant(2);
+
+
+ iotrack->SetPx(px);
+ iotrack->SetPy(py);
+ iotrack->SetPz(pz);
+ iotrack->SetX(xtrack);
+ iotrack->SetY(ytrack);
+ iotrack->SetZ(ztrack);
+ iotrack->SetLabel(labITS);
+
+ Int_t il;
+ for(il=0;il<6; il++){
+ iotrack->SetIdPoint(il,result.GetIdPoint(il));
+ iotrack->SetIdModule(il,result.GetIdModule(il));
+ } // end for il
+ tracktree1.Fill();
+
+ //cout<<" labITS = "<<labITS<<"\n";
+ //cout<<" phi z Dr tgl C = "<<phi<<" "<<Z<<" "<<Dr<<" "<<tgl<<" "<<C<<"\n"; getchar();
+
+ DataOut(kkk) = ptg; kkk++; DataOut(kkk)=labITS; kkk++; DataOut(kkk)=lab; kkk++;
+
+ for (il=0;il<6;il++) {
+ idpoint=result.GetIdPoint(il);
+ idmodule=result.GetIdModule(il);
+ *(vettid[idmodule]+idpoint)=1;
+ iotrack->SetIdPoint(il,idpoint);
+ iotrack->SetIdModule(il,idmodule);
+ } // end for il
+
+ // cout<<" +++++++++++++ pt e ptg = "<<pt<<" "<<ptg<<" ++++++++++\n";
+ /* /// provvisorio il 23-5-2001
+ Double_t pg=TMath::Sqrt(pxg*pxg+pyg*pyg+pzg*pzg);
+ Double_t cosl=TMath::Sqrt(1./(1.+tgl*tgl));
+ Double_t ptot=pt/cosl;
+ cout<<"ptot e pg = "<<ptot<<" "<<pg<<"\n";
+ Double_t difpt= (ptot-pg)/pg*100.;
+ */
+ ///////////////////////////////
+ Double_t difpt= (pt-ptg)/ptg*100.; //coomentato prov il 23-5-2001
+ DataOut(kkk)=difpt; kkk++;
+ Double_t lambdag=TMath::ATan(pzg/ptg);
+ Double_t lam=TMath::ATan(tgl);
+ Double_t diflam = (lam - lambdag)*1000.;
+ DataOut(kkk) = diflam; kkk++;
+ Double_t phig=TMath::ATan2(pyg,pxg);
+ if(phig<0) phig=2.*TMath::Pi()+phig;
+ Double_t phi=phivertex;
+
+ Double_t difphi = (phi - phig)*1000.;
+ DataOut(kkk)=difphi; kkk++;
+ DataOut(kkk)=Dtot*1.e4; kkk++;
+ DataOut(kkk)=Dr*1.e4; kkk++;
+ DataOut(kkk)=Dz*1.e4; kkk++;
+ Int_t r;
+ for (r=0; r<9; r++) { out<<DataOut(r)<<" ";}
+ out<<"\n";
+ kkk=0;
+
+ } // end if on NumofCluster
+ //gObjectTable->Print(); // stampa memoria
+ } // end for (int j=min_t; j<=max_t; j++)
+
+ out.close();
+ //outprova.close();