Include the bug fixes by Oliver in the TR simulation
[u/mrichter/AliRoot.git] / TRD / AliTRDv1.cxx
index 383c8e20778a6a47aabe93024a0c7a00ca4fc4f1..b6b4cd13790822b0b27ac2a888dfa7132cc6b4c7 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.41  2003/04/23 15:19:48  cblume
+Fix bug in absorbtion length of photons
+
 Revision 1.40  2003/04/08 08:14:53  morsch
 AddTrackReference moved to AliModule.
 
@@ -336,27 +339,37 @@ void AliTRDv1::CreateTRhit(Int_t det)
       // Take the absorbtion in the entrance window into account
       Double_t muMy = fTR->GetMuMy(energyMeV);
       sigma = muMy * fFoilDensity;
-      absLength = gRandom->Exp(-sigma);
-      if (absLength < AliTRDgeometry::MyThick()) continue;
+      if (sigma > 0.0) {
+        absLength = gRandom->Exp(1.0/sigma);
+        if (absLength < AliTRDgeometry::MyThick()) continue;
+      }
+      else {
+        continue;
+      }
 
       // The absorbtion cross sections in the drift gas
       if (fGasMix == 1) {
         // Gas-mixture (Xe/CO2)
         Double_t muXe = fTR->GetMuXe(energyMeV);
         Double_t muCO = fTR->GetMuCO(energyMeV);
-        sigma = (0.85 * muXe + 0.15 * muCO) * fGasDensity;
+        sigma = (0.85 * muXe + 0.15 * muCO) * fGasDensity * fTR->GetTemp();
       }
       else {
         // Gas-mixture (Xe/Isobutane) 
         Double_t muXe = fTR->GetMuXe(energyMeV);
         Double_t muBu = fTR->GetMuBu(energyMeV);
-        sigma = (0.97 * muXe + 0.03 * muBu) * fGasDensity;
+        sigma = (0.97 * muXe + 0.03 * muBu) * fGasDensity * fTR->GetTemp();
       }
 
       // The distance after which the energy of the TR photon
       // is deposited.
-      absLength = gRandom->Exp(-sigma);
-      if (absLength > AliTRDgeometry::DrThick()) continue;
+      if (sigma > 0.0) {
+        absLength = gRandom->Exp(1.0/sigma);
+        if (absLength > AliTRDgeometry::DrThick()) continue;
+      }
+      else {
+        continue;
+      }
 
       // The position of the absorbtion
       Float_t posHit[3];