]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONResponseV0.cxx
Use access methods to hit data.
[u/mrichter/AliRoot.git] / MUON / AliMUONResponseV0.cxx
index 4a7f347c404aba1d098d486827b0d2c5e17dcf18..3a5ac7476ff54b3cff89a2a0170cb0b0236c0d4a 100644 (file)
 
 /*
 $Log$
+Revision 1.5  2000/11/21 13:47:55  gosset
+All Mathieson parameters (Sqrt(K3), K2 and K4) set in one function,
+SetSqrtKx3AndDeriveKx2Kx4 or SetSqrtKx3AndDeriveKx2Kx4,
+for each cathode plane
+
+Revision 1.4  2000/10/25 10:41:52  morsch
+IntPH(..): Protec Log against random numbers equal to 0.
+
+Revision 1.3  2000/07/03 11:54:57  morsch
+AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHitMap in STEER
+The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
+
+Revision 1.2  2000/06/15 07:58:48  morsch
+Code from MUON-dev joined
+
 Revision 1.1.2.1  2000/06/09 21:33:35  morsch
 AliMUONResponse code  from  AliMUONSegResV0.cxx
 
 */
 
 #include "AliMUONResponseV0.h"
-#include "AliMUONSegmentation.h"
+#include "AliSegmentation.h"
 #include <TMath.h>
 #include <TRandom.h>
 
 
-ClassImp(AliMUONResponseV0)    
+ClassImp(AliMUONResponseV0)
+       
+  //__________________________________________________________________________
+void AliMUONResponseV0::SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3)
+{
+  // Set to "SqrtKx3" the Mathieson parameter K3 ("fSqrtKx3")
+  // in the X direction, perpendicular to the wires,
+  // and derive the Mathieson parameters K2 ("fKx2") and K4 ("fKx4")
+  // in the same direction
+  fSqrtKx3 = SqrtKx3;
+  fKx2 = TMath::Pi() / 2. * (1. - 0.5 * fSqrtKx3);
+  Float_t cx1 = fKx2 * fSqrtKx3 / 4. / TMath::ATan(Double_t(fSqrtKx3));
+  fKx4 = cx1 / fKx2 / fSqrtKx3;
+}
+       
+  //__________________________________________________________________________
+void AliMUONResponseV0::SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3)
+{
+  // Set to "SqrtKy3" the Mathieson parameter K3 ("fSqrtKy3")
+  // in the Y direction, along the wires,
+  // and derive the Mathieson parameters K2 ("fKy2") and K4 ("fKy4")
+  // in the same direction
+  fSqrtKy3 = SqrtKy3;
+  fKy2 = TMath::Pi() / 2. * (1. - 0.5 * fSqrtKy3);
+  Float_t cy1 = fKy2 * fSqrtKy3 / 4. / TMath::ATan(Double_t(fSqrtKy3));
+  fKy4 = cy1 / fKy2 / fSqrtKy3;
+}
+
 Float_t AliMUONResponseV0::IntPH(Float_t eloss)
 {
   // Calculate charge from given ionization energy loss
@@ -35,13 +77,15 @@ Float_t AliMUONResponseV0::IntPH(Float_t eloss)
   Float_t charge=0;
   if (nel == 0) nel=1;
   for (Int_t i=1;i<=nel;i++) {
-    charge -= fChargeSlope*TMath::Log(gRandom->Rndm());    
+      Float_t arg=0.;
+      while(!arg) arg = gRandom->Rndm();
+      charge -= fChargeSlope*TMath::Log(arg);    
   }
   return charge;
 }
 // -------------------------------------------
 
-Float_t AliMUONResponseV0::IntXY(AliMUONSegmentation * segmentation)
+Float_t AliMUONResponseV0::IntXY(AliSegmentation * segmentation)
 {
 // Calculate charge on current pad according to Mathieson distribution
 // 
@@ -71,7 +115,10 @@ Float_t AliMUONResponseV0::IntXY(AliMUONSegmentation * segmentation)
 Int_t  AliMUONResponseV0::DigitResponse(Int_t digit)
 {
     // add white noise and do zero-suppression and signal truncation
-    Float_t meanNoise = gRandom->Gaus(1, 0.2);
+//     Float_t meanNoise = gRandom->Gaus(1, 0.2);
+    // correct noise for slat chambers;
+    // one more field to add to AliMUONResponseV0 to allow different noises ????
+    Float_t meanNoise = gRandom->Gaus(1.5, 0.2);
     Float_t noise     = gRandom->Gaus(0, meanNoise);
     digit+=(Int_t)noise; 
     if ( digit <= ZeroSuppression()) digit = 0;