* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-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
-
-*/
+/* $Id$ */
#include "AliMUONResponseV0.h"
#include "AliSegmentation.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
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;
}
fKy4*(TMath::ATan(uy2)-TMath::ATan(uy1)));
}
-Int_t AliMUONResponseV0::DigitResponse(Int_t digit)
+Int_t AliMUONResponseV0::DigitResponse(Int_t digit, AliMUONTransientDigit* /*where*/)
{
// 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;