Fixed calculation of fluctuations of energy loss in absrber.
authorihrivnac <Ivana.Hrivnacova@cern.ch>
Thu, 18 Sep 2014 15:08:43 +0000 (17:08 +0200)
committerihrivnac <Ivana.Hrivnacova@cern.ch>
Thu, 18 Sep 2014 15:10:50 +0000 (17:10 +0200)
(Philippe P.)

MUON/AliMUONTrackExtrap.cxx
MUON/AliMUONTrackExtrap.h

index 72e9b3a..45dcc35 100644 (file)
@@ -616,6 +616,7 @@ Bool_t AliMUONTrackExtrap::GetAbsorberCorrectionParam(Double_t trackXYZIn[3], Do
   Double_t atomicZoverA = 0.; // Z/A of material
   Double_t localPathLength = 0;
   Double_t remainingPathLength = pathLength;
+  Double_t sigmaELoss = 0.;
   Double_t zB = trackXYZIn[2];
   Double_t zE, dzB, dzE;
   do {
@@ -671,7 +672,7 @@ Bool_t AliMUONTrackExtrap::GetAbsorberCorrectionParam(Double_t trackXYZIn[3], Do
     f2 += (dzE*dzE*dzE - dzB*dzB*dzB) / b[2] / b[2] / b[2] / x0 / 3.;
     meanRho += localPathLength * rho;
     totalELoss += BetheBloch(pTotal, localPathLength, rho, atomicZ, atomicZoverA);
-    sigmaELoss2 += EnergyLossFluctuation2(pTotal, localPathLength, rho, atomicZoverA);
+    sigmaELoss += EnergyLossFluctuation(pTotal, localPathLength, rho, atomicZoverA);
     
     // prepare next step
     zB = zE;
@@ -679,6 +680,7 @@ Bool_t AliMUONTrackExtrap::GetAbsorberCorrectionParam(Double_t trackXYZIn[3], Do
   } while (remainingPathLength > TGeoShape::Tolerance());
   
   meanRho /= pathLength;
+  sigmaELoss2 = sigmaELoss*sigmaELoss;
   
   return kTRUE;
 }
@@ -963,7 +965,7 @@ Double_t AliMUONTrackExtrap::BetheBloch(Double_t pTotal, Double_t pathLength, Do
 }
 
 //__________________________________________________________________________
-Double_t AliMUONTrackExtrap::EnergyLossFluctuation2(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZoverA)
+Double_t AliMUONTrackExtrap::EnergyLossFluctuation(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZoverA)
 {
   /// Returns the total momentum energy loss fluctuation of muon with total momentum='pTotal'
   /// in the absorber layer of lenght='pathLength', density='rho', A='atomicA' and Z='atomicZ'
@@ -974,11 +976,11 @@ Double_t AliMUONTrackExtrap::EnergyLossFluctuation2(Double_t pTotal, Double_t pa
   Double_t beta2=p2/(p2 + muMass*muMass);
   
   Double_t fwhm = 2. * k * rho * pathLength * atomicZoverA / beta2; // FWHM of the energy loss Landau distribution
-  Double_t sigma2 = fwhm * fwhm / (8.*log(2.)); // gaussian: fwmh = 2 * srqt(2*ln(2)) * sigma (i.e. fwmh = 2.35 * sigma)
+  Double_t sigma = fwhm / TMath::Sqrt(8.*log(2.)); // gaussian: fwmh = 2 * srqt(2*ln(2)) * sigma (i.e. fwmh = 2.35 * sigma)
   
   //sigma2 = k * rho * pathLength * atomicZ / atomicA * eMass; // sigma2 of the energy loss gaussian distribution
   
-  return sigma2;
+  return sigma;
 }
 
 //__________________________________________________________________________
index 809c469..0648468 100644 (file)
@@ -115,7 +115,7 @@ class AliMUONTrackExtrap : public TObject
                                            Double_t &meanRho, Double_t &totalELoss, Double_t &sigmaELoss2);
   
   static Double_t BetheBloch(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZ, Double_t atomicZoverA);
-  static Double_t EnergyLossFluctuation2(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZoverA);
+  static Double_t EnergyLossFluctuation(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZoverA);
   
   static void Cov2CovP(const TMatrixD &param, TMatrixD &cov);
   static void CovP2Cov(const TMatrixD &param, TMatrixD &cov);