New method Invert() for changing alpha by pi (forbiden operation via Rotate())
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 Mar 2012 17:02:03 +0000 (17:02 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 Mar 2012 17:02:03 +0000 (17:02 +0000)
STEER/STEERBase/AliExternalTrackParam.cxx
STEER/STEERBase/AliExternalTrackParam.h

index d69137b..243f867 100644 (file)
@@ -733,6 +733,28 @@ Bool_t AliExternalTrackParam::Rotate(Double_t alpha) {
   return kTRUE;
 }
 
+Bool_t AliExternalTrackParam::Invert() {
+  //------------------------------------------------------------------
+  // Transform this track to the local coord. system rotated by 180 deg. 
+  //------------------------------------------------------------------
+  fX = -fX;
+  fAlpha += TMath::Pi();
+  while (fAlpha < -TMath::Pi()) fAlpha += 2*TMath::Pi();
+  while (fAlpha >= TMath::Pi()) fAlpha -= 2*TMath::Pi();
+  //
+  fP[0] = -fP[0];
+  fP[2] = -fP[2];
+  fP[3] = -fP[3];
+  fP[4] = -fP[4];
+  //
+  fC[1] = -fC[1]; // since the Z coordinate is not inverted, the covariances with Z should be inverted
+  fC[4] = -fC[4];
+  fC[7] = -fC[7];
+  fC[11] = -fC[11]; 
+  //
+  return kTRUE;
+}
+
 Bool_t AliExternalTrackParam::PropagateTo(Double_t xk, Double_t b) {
   //----------------------------------------------------------------
   // Propagate this track to the plane X=xk (cm) in the field "b" (kG)
index 60cc184..8b8f5f1 100644 (file)
@@ -186,6 +186,7 @@ class AliExternalTrackParam: public AliVTrack {
   Double_t *GetResiduals(Double_t *p,Double_t *cov,Bool_t updated=kTRUE) const;
   Bool_t Update(Double_t p[2],Double_t cov[3]);
   Bool_t Rotate(Double_t alpha);
+  Bool_t Invert();
   Bool_t PropagateTo(Double_t x, Double_t b);
   Bool_t Propagate(Double_t alpha, Double_t x, Double_t b);
   Bool_t PropagateBxByBz(Double_t alpha, Double_t x, Double_t b[3]);