]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Corrected association algortihtm
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Jun 2008 20:35:26 +0000 (20:35 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Jun 2008 20:35:26 +0000 (20:35 +0000)
- Laser track to measured mirror position (Marian, Jens)

TPC/AliTPCLaserTrack.cxx
TPC/AliTPCLaserTrack.h

index ef7737a7c581a551d73cb999c547b851cf87fccc..2fc47edfcc8adddbb9cddecce502ead3fb46c75a 100644 (file)
@@ -106,73 +106,57 @@ void AliTPCLaserTrack::LoadTracks()
     delete f;
 }
 
+
 Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track)
 {
+  //
+  // Find the laser track which is corresponding closest to 'track'
+  // return its id
+  //
+  // 
+  const  Float_t   kMaxdphi=0.1;
+  const  Float_t   kMaxdphiP=0.06;
+  const  Float_t   kMaxdz=50;
+
+  if ( !fgArrLaserTracks ) LoadTracks();
+  TObjArray *arrTracks = GetTracks();
+  
+
+  Double_t lxyz0[3];
+  Double_t lxyz1[3];
+  Double_t pxyz0[3];
+  Double_t pxyz1[3];
+  track->GetXYZ(lxyz0);
+  track->GetPxPyPz(pxyz0);
+  
+  Int_t id = -1;
+  for (Int_t itrack=0; itrack<fgkNLaserTracks; itrack++){
+    AliExternalTrackParam *ltr = (AliExternalTrackParam*)arrTracks->UncheckedAt(itrack);
+    Double_t * kokot = (Double_t*)ltr->GetParameter();
+    kokot[4]=-0.0000000001;
     //
-    // Find the laser track which is corresponding closest to 'track'
-    // return its id
+    ltr->GetXYZ(lxyz1);
+    if ( (lxyz1[2]>0) && lxyz0[2]<0) continue;
+    if ( (lxyz1[2]<0) && lxyz0[2]>0) continue;
+    if (TMath::Abs(lxyz1[2]-lxyz0[2])>kMaxdz) continue;
+    // phi position
+    Double_t phi0 = TMath::ATan2(lxyz0[1],lxyz0[0]);
+    Double_t phi1 = TMath::ATan2(lxyz1[1],lxyz1[0]);
+    if (TMath::Abs(phi0-phi1)>kMaxdphi) continue;
+    // phi direction
+    ltr->GetPxPyPz(pxyz1);
+    Double_t pphi0 = TMath::ATan2(pxyz0[1],pxyz0[0]);
+    Double_t pphi1 = TMath::ATan2(pxyz1[1],pxyz1[0]);
+    Bool_t phimatch = kFALSE;
+    if (TMath::Abs(ltr->GetParameter()[2]-track->GetParameter()[2])>kMaxdphiP)
+      continue;
+  //   if (TMath::Abs(pphi0-pphi1)<kMaxdphiP) phimatch=kTRUE;
+//     if (TMath::Abs(pphi0-pphi1-TMath::Pi())<kMaxdphiP) phimatch=kTRUE;
+//     if (TMath::Abs(pphi0-pphi1+TMath::Pi())<kMaxdphiP) phimatch=kTRUE;
+//     if (!phimatch) continue;
     //
-
-    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;
+    id =itrack;
+  }
+  return id;
 }
 
index 1866c5eeab079c0b467fe6aed917f9396646bc24..f7a97213db484d460abf785f7d7d99028e025e7f 100644 (file)
@@ -33,6 +33,8 @@ public:
     Int_t GetBundle() const {return fBundle; }
     Int_t GetBeam()   const {return fBeam;   }
 
+    
+
     static Int_t GetNLaserTracks() { return fgkNLaserTracks; }
     static Int_t GetNLaserRodsPerSide() { return fgkNRodsPerSide; }
     static Int_t GetNMirrorBundlesPerRod() { return fgkNBundlePerRod; }