-
- LoadTracks();
- TObjArray *arrTracks = GetTracks();
-
- Double_t phitr=0;
- Double_t philtr=0;
- Double_t xltr[3];
- Double_t xtr[3];
- Double_t vtr[3];
-
- track->GetXYZ(xtr);
- track->GetDirection(vtr);
- phitr=track->Phi();
-
- Int_t id = -1;
- Double_t dcaMin=3; // 3 sigma is the minimum weighted dca accepted
- for (Int_t itrack=0; itrack<fgkNLaserTracks; itrack++){
- AliExternalTrackParam *ltr = (AliExternalTrackParam*)arrTracks->UncheckedAt(itrack);
- philtr=ltr->Phi();
- Double_t phiadd=0;
- Double_t dphi=TMath::Abs(phitr-philtr);
- if (dphi>TMath::Pi()) phiadd=TMath::Pi();
- dphi-=phiadd;
- if (dphi>2*TMath::DegToRad()) continue; //only 2 degree in phi
-
- //printf("itrack: %d; dphi: %f\n",itrack,dphi/TMath::DegToRad());
-
- ltr->GetXYZ(xltr);
-
- Double_t l=0;
- Double_t d2=0;
- Double_t d=0;
- for (Int_t i=0; i<2; i++)
- l+=(xltr[i]-xtr[i])*vtr[i];
- for (Int_t i=0; i<2; i++)
- d2+=(xltr[i]-xtr[i]-l*vtr[i])*(xltr[i]-xtr[i]-l*vtr[i]);
- d=TMath::Sqrt(d2);
-
- //printf("itrack: %d; d-xy: %f\n",itrack,d);
-
-
- //only 3mm in x-y
- if ( d>.3 ) continue;
-
-
- Double_t dz=TMath::Abs(xltr[2] - xtr[2]);
- //printf("itrack: %d; d-z: %f\n",itrack,dz);
- //30 cm in z
- if ( dz > 30. ) continue;
-
- //if ( id!=-1 ) printf("Warnig: Track (%d) already identified before (%d)\n", itrack, id);
- id=itrack;
-// Double_t relDistX
-// Double_t xtr=0;
-// Double_t xltr=0;
-// Double_t dca=track->GetDCA(ltr,0,xtr,xltr);
-// if ( dca<dcaMin ){
-// id=itrack;
-// dcaMin=dca;
-// }
- }
- return id;