Removing the circular dependency between the ESD and STEER libraries by moving the...
authorbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 22 Dec 2008 21:18:30 +0000 (21:18 +0000)
committerbelikov <belikov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 22 Dec 2008 21:18:30 +0000 (21:18 +0000)
STEER/AliExternalTrackParam.cxx
STEER/AliExternalTrackParam.h
STEER/AliMathBase.cxx
STEER/AliMathBase.h

index 810764d..62714db 100644 (file)
@@ -30,7 +30,6 @@
 #include <TVector3.h>
 
 #include "AliExternalTrackParam.h"
-#include "AliMathBase.h"
 #include "AliVVertex.h"
 #include "AliLog.h"
 
@@ -442,6 +441,77 @@ Bool_t AliExternalTrackParam::CorrectForMaterial
   return kTRUE;
 }
 
+Double_t AliExternalTrackParam::BetheBlochAleph(Double_t bg,
+         Double_t kp1,
+         Double_t kp2,
+         Double_t kp3,
+         Double_t kp4,
+         Double_t kp5) {
+  //
+  // This is the empirical ALEPH parameterization of the Bethe-Bloch formula.
+  // It is normalized to 1 at the minimum.
+  //
+  // bg - beta*gamma
+  // 
+  // The default values for the kp* parameters are for ALICE TPC.
+  // The returned value is in MIP units
+  //
+
+  Double_t beta = bg/TMath::Sqrt(1.+ bg*bg);
+
+  Double_t aa = TMath::Power(beta,kp4);
+  Double_t bb = TMath::Power(1./bg,kp5);
+
+  bb=TMath::Log(kp3+bb);
+  
+  return (kp2-aa-bb)*kp1/aa;
+}
+
+Double_t AliExternalTrackParam::BetheBlochGeant(Double_t bg,
+         Double_t kp0,
+         Double_t kp1,
+         Double_t kp2,
+         Double_t kp3,
+         Double_t kp4) {
+  //
+  // This is the parameterization of the Bethe-Bloch formula inspired by Geant.
+  //
+  // bg  - beta*gamma
+  // kp0 - density [g/cm^3]
+  // kp1 - density effect first junction point
+  // kp2 - density effect second junction point
+  // kp3 - mean excitation energy [GeV]
+  // kp4 - mean Z/A
+  //
+  // The default values for the kp* parameters are for silicon. 
+  // The returned value is in [GeV/(g/cm^2)].
+  // 
+
+  const Double_t mK  = 0.307075e-3; // [GeV*cm^2/g]
+  const Double_t me  = 0.511e-3;    // [GeV/c^2]
+  const Double_t rho = kp0;
+  const Double_t x0  = kp1*2.303;
+  const Double_t x1  = kp2*2.303;
+  const Double_t mI  = kp3;
+  const Double_t mZA = kp4;
+  const Double_t bg2 = bg*bg;
+  const Double_t maxT= 2*me*bg2;    // neglecting the electron mass
+  
+  //*** Density effect
+  Double_t d2=0.; 
+  const Double_t x=TMath::Log(bg);
+  const Double_t lhwI=TMath::Log(28.816*1e-9*TMath::Sqrt(rho*mZA)/mI);
+  if (x > x1) {
+    d2 = lhwI + x - 0.5;
+  } else if (x > x0) {
+    const Double_t r=(x1-x)/(x1-x0);
+    d2 = lhwI + x - 0.5 + (0.5 - lhwI - x0)*r*r*r;
+  }
+
+  return mK*mZA*(1+bg2)/bg2*
+         (0.5*TMath::Log(2*me*bg2*maxT/(mI*mI)) - bg2/(1+bg2) - d2);
+}
+
 Double_t AliExternalTrackParam::BetheBlochSolid(Double_t bg) {
   //------------------------------------------------------------------
   // This is an approximation of the Bethe-Bloch formula, 
@@ -450,7 +520,7 @@ Double_t AliExternalTrackParam::BetheBlochSolid(Double_t bg) {
   // The returned value is in [GeV]
   //------------------------------------------------------------------
 
-  return AliMathBase::BetheBlochGeant(bg);
+  return BetheBlochGeant(bg);
 }
 
 Double_t AliExternalTrackParam::BetheBlochGas(Double_t bg) {
@@ -467,7 +537,7 @@ Double_t AliExternalTrackParam::BetheBlochGas(Double_t bg) {
   const Double_t mI  = 140.e-9;
   const Double_t mZA = 0.49555;
 
-  return AliMathBase::BetheBlochGeant(bg,rho,x0,x1,mI,mZA);
+  return BetheBlochGeant(bg,rho,x0,x1,mI,mZA);
 }
 
 Bool_t AliExternalTrackParam::Rotate(Double_t alpha) {
index dc44232..86b4902 100644 (file)
@@ -126,6 +126,24 @@ class AliExternalTrackParam: public AliVTrack {
         Double_t mass,  Bool_t anglecorr=kFALSE,
        Double_t (*f)(Double_t)=AliExternalTrackParam::BetheBlochSolid);
 
+  //
+  // Bethe-Bloch formula parameterizations
+  //
+  static Double_t BetheBlochAleph(Double_t bg,
+                                  Double_t kp1=0.76176e-1,
+                                  Double_t kp2=10.632,
+                                  Double_t kp3=0.13279e-4,
+                                  Double_t kp4=1.8631,
+                                  Double_t kp5=1.9479
+                                 );
+  static Double_t BetheBlochGeant(Double_t bg,
+                                  Double_t kp0=2.33,
+                                  Double_t kp1=0.20,
+                                  Double_t kp2=3.00,
+                                  Double_t kp3=173e-9,
+                                  Double_t kp4=0.49848
+                                 );
+    
   static Double_t BetheBlochSolid(Double_t bg);
   static Double_t BetheBlochGas(Double_t bg);
 
index 03e2b41..21bee1a 100644 (file)
@@ -29,6 +29,8 @@
 #include "TF1.h"
 #include "TLinearFitter.h"
 
+#include "AliExternalTrackParam.h"
+
 //
 // includes neccessary for test functions
 //
@@ -768,57 +770,5 @@ Double_t AliMathBase::BetheBlochAleph(Double_t bg,
   // The returned value is in MIP units
   //
 
-  Double_t beta = bg/TMath::Sqrt(1.+ bg*bg);
-
-  Double_t aa = TMath::Power(beta,kp4);
-  Double_t bb = TMath::Power(1./bg,kp5);
-
-  bb=TMath::Log(kp3+bb);
-  
-  return (kp2-aa-bb)*kp1/aa;
-}
-
-Double_t AliMathBase::BetheBlochGeant(Double_t bg,
-         Double_t kp0,
-         Double_t kp1,
-         Double_t kp2,
-         Double_t kp3,
-         Double_t kp4) {
-  //
-  // This is the parameterization of the Bethe-Bloch formula inspired by Geant.
-  //
-  // bg  - beta*gamma
-  // kp0 - density [g/cm^3]
-  // kp1 - density effect first junction point
-  // kp2 - density effect second junction point
-  // kp3 - mean excitation energy [GeV]
-  // kp4 - mean Z/A
-  //
-  // The default values for the kp* parameters are for silicon. 
-  // The returned value is in [GeV/(g/cm^2)].
-  // 
-
-  const Double_t mK  = 0.307075e-3; // [GeV*cm^2/g]
-  const Double_t me  = 0.511e-3;    // [GeV/c^2]
-  const Double_t rho = kp0;
-  const Double_t x0  = kp1*2.303;
-  const Double_t x1  = kp2*2.303;
-  const Double_t mI  = kp3;
-  const Double_t mZA = kp4;
-  const Double_t bg2 = bg*bg;
-  const Double_t maxT= 2*me*bg2;    // neglecting the electron mass
-  
-  //*** Density effect
-  Double_t d2=0.; 
-  const Double_t x=TMath::Log(bg);
-  const Double_t lhwI=TMath::Log(28.816*1e-9*TMath::Sqrt(rho*mZA)/mI);
-  if (x > x1) {
-    d2 = lhwI + x - 0.5;
-  } else if (x > x0) {
-    const Double_t r=(x1-x)/(x1-x0);
-    d2 = lhwI + x - 0.5 + (0.5 - lhwI - x0)*r*r*r;
-  }
-
-  return mK*mZA*(1+bg2)/bg2*
-         (0.5*TMath::Log(2*me*bg2*maxT/(mI*mI)) - bg2/(1+bg2) - d2);
+  return AliExternalTrackParam::BetheBlochAleph(bg,kp1,kp2,kp3,kp4,kp5);
 }
index 7fb2d40..3b16daa 100644 (file)
@@ -50,13 +50,6 @@ class AliMathBase : public TObject
                                   Double_t kp4=1.8631,
                                   Double_t kp5=1.9479
                                  );
-  static Double_t BetheBlochGeant(Double_t bg,
-                                  Double_t kp0=2.33,
-                                  Double_t kp1=0.20,
-                                  Double_t kp2=3.00,
-                                  Double_t kp3=173e-9,
-                                  Double_t kp4=0.49848
-                                 );
     
  ClassDef(AliMathBase,0) // Various mathematical tools for physics analysis - which are not included in ROOT TMath