From Andrea Dainese: protection in AliAODTrack::PropagateToDCA for usage in case...
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Oct 2013 12:38:45 +0000 (12:38 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 23 Oct 2013 12:38:45 +0000 (12:38 +0000)
STEER/AOD/AliAODTrack.cxx

index c399861..bbda27e 100644 (file)
@@ -628,15 +628,17 @@ Bool_t AliAODTrack::PropagateToDCA(const AliVVertex *vtx,
   // inside the beam pipe.
   // return kFALSE is something went wrong
 
-  // convert to AliExternalTrackParam
-  AliExternalTrackParam etp; etp.CopyFromVTrack(this);  
-
-  Float_t xstart = etp.GetX();
-  if(xstart>3.) {
+  // allowed only for tracks inside the beam pipe
+  Float_t xstart2 = fPosition[0]*fPosition[0]+fPosition[1]*fPosition[1];
+  if(xstart2 > 3.*3.) { // outside beampipe radius
     AliError("This method can be used only for propagation inside the beam pipe");
     return kFALSE; 
   }
 
+  // convert to AliExternalTrackParam
+  AliExternalTrackParam etp; etp.CopyFromVTrack(this);  
+
+  // propagate
   if(!etp.PropagateToDCA(vtx,b,maxd,dz,covar)) return kFALSE;
 
   // update track position and momentum