]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTrackExtrap.cxx
Removing unused variable
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackExtrap.cxx
index c0aae90b7862e9ba38bb26cd264616b8aa8fed51..24c2f1e3c5afa42903f4bdcc25a1be8be5c83fc8 100644 (file)
 
 /* $Id$ */
 
-///////////////////////////////////////////////////
-//
-// Tools
-// for
-// track
-// extrapolation
-// in
-// ALICE
-// dimuon
-// spectrometer
-//
-///////////////////////////////////////////////////
+//-----------------------------------------------------------------------------
+// Class AliMUONTrackExtrap
+// ------------------------
+// Tools for track extrapolation in ALICE dimuon spectrometer
+// Author: Philippe Pillot
+//-----------------------------------------------------------------------------
 
 #include "AliMUONTrackExtrap.h" 
 #include "AliMUONTrackParam.h"
@@ -94,6 +88,34 @@ Double_t AliMUONTrackExtrap::GetBendingMomentumFromImpactParam(Double_t impactPa
   Double_t simpleBValue = (Double_t) b[0];
   
   return (-0.0003 * simpleBValue * simpleBLength * simpleBPosition / impactParam);
+}
+
+  //__________________________________________________________________________
+void AliMUONTrackExtrap::LinearExtrapToZ(AliMUONTrackParam* trackParam, Double_t zEnd)
+{
+  /// Track parameters (and their covariances if any) linearly extrapolated to the plane at "zEnd".
+  /// On return, results from the extrapolation are updated in trackParam.
+  
+  if (trackParam->GetZ() == zEnd) return; // nothing to be done if same z
+  
+  // Compute track parameters
+  Double_t dZ = zEnd - trackParam->GetZ();
+  trackParam->SetNonBendingCoor(trackParam->GetNonBendingCoor() + trackParam->GetNonBendingSlope() * dZ);
+  trackParam->SetBendingCoor(trackParam->GetBendingCoor() + trackParam->GetBendingSlope() * dZ);
+  trackParam->SetZ(zEnd);
+  
+  // Update track parameters covariances if any
+  if (trackParam->CovariancesExist()) {
+    TMatrixD paramCov(trackParam->GetCovariances());
+    paramCov(0,0) += dZ * dZ * paramCov(1,1) + 2. * dZ * paramCov(0,1);
+    paramCov(0,1) += dZ * paramCov(1,1);
+    paramCov(1,0) = paramCov(0,1);
+    paramCov(2,2) += dZ * dZ * paramCov(3,3) + 2. * dZ * paramCov(2,3);
+    paramCov(2,3) += dZ * paramCov(3,3);
+    paramCov(3,2) = paramCov(2,3);
+    trackParam->SetCovariances(paramCov);
+  }
+  
 }
 
   //__________________________________________________________________________