]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCLaserTrack.cxx
Removing obsolete mapping macro
[u/mrichter/AliRoot.git] / TPC / AliTPCLaserTrack.cxx
index 2fc47edfcc8adddbb9cddecce502ead3fb46c75a..5c65ceb050095b480105deaf01dd761cafab244d 100644 (file)
@@ -32,7 +32,8 @@ AliTPCLaserTrack::AliTPCLaserTrack() :
   fSide(-1),
   fRod(-1),
   fBundle(-1),
-  fBeam(-1)
+  fBeam(-1),
+  fRayLength(0)
 {
   //
   // Default constructor
@@ -40,13 +41,14 @@ AliTPCLaserTrack::AliTPCLaserTrack() :
 
 }
 
-AliTPCLaserTrack::AliTPCLaserTrack(AliTPCLaserTrack &ltr) :
+AliTPCLaserTrack::AliTPCLaserTrack(const AliTPCLaserTrack &ltr) :
   AliExternalTrackParam(ltr),
   fId(ltr.fId),
   fSide(ltr.fSide),
   fRod(ltr.fRod),
   fBundle(ltr.fBundle),
-  fBeam(ltr.fBeam)
+  fBeam(ltr.fBeam),
+  fRayLength(ltr.fRayLength)
 {
   //
   // Default constructor
@@ -58,19 +60,31 @@ AliTPCLaserTrack::AliTPCLaserTrack(const Int_t id, const Int_t side, const Int_t
                     const Int_t bundle, const Int_t beam,
                     Double_t x, Double_t alpha,
                     const Double_t param[5],
-                    const Double_t covar[15]) :
+                    const Double_t covar[15], const Float_t rayLength) :
   AliExternalTrackParam(x,alpha,param,covar),
   fId(id),
   fSide(side),
   fRod(rod),
   fBundle(bundle),
-  fBeam(beam)
+  fBeam(beam),
+  fRayLength(rayLength)
 {
   //
   // create laser track from arguments
   //
 
 }
+//_____________________________________________________________________
+AliTPCLaserTrack& AliTPCLaserTrack::operator = (const  AliTPCLaserTrack &source)
+{
+  //
+  // assignment operator
+  //
+  if (&source == this) return *this;
+  new (this) AliTPCLaserTrack(source);
+  
+  return *this;
+}
 
 void AliTPCLaserTrack::LoadTracks()
 {
@@ -114,30 +128,28 @@ Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track)
   // return its id
   //
   // 
-  const  Float_t   kMaxdphi=0.1;
-  const  Float_t   kMaxdphiP=0.06;
-  const  Float_t   kMaxdz=50;
+  const  Float_t   kMaxdphi=0.2;
+  const  Float_t   kMaxdphiP=0.05;
+  const  Float_t   kMaxdz=40;
 
   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);
-  
+  //
+  Float_t mindist=40; // maxima minimal distance
   Int_t id = -1;
+  AliExternalTrackParam*  ltr0= (AliExternalTrackParam*)arrTracks->UncheckedAt(0);
   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;
     //
     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]);
@@ -145,17 +157,26 @@ Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track)
     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;
+    Float_t distdir = (ltr->GetParameter()[2]-track->GetParameter()[2])*90; //distance at entrance
     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;
     //
-    id =itrack;
+    Float_t dist=0;
+    dist+=TMath::Abs(lxyz1[0]-lxyz0[0]);
+    dist+=TMath::Abs(lxyz1[1]-lxyz0[1]);
+    dist+=TMath::Abs(lxyz1[2]-lxyz0[2]);
+    dist+=distdir;
+    //    
+    if (id<0)  {
+      id =itrack; 
+      mindist=dist; 
+      ltr0=ltr;
+      continue;
+    }
+    if (dist>mindist) continue;
+    id = itrack;
+    mindist=dist;
+    ltr0=ltr;
   }
   return id;
 }