]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONResponseV0.cxx
cleanup
[u/mrichter/AliRoot.git] / MUON / AliMUONResponseV0.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 #include <TMath.h>
19 #include <TRandom.h>
20
21 #include "AliMUONResponseV0.h"
22 #include "AliSegmentation.h"
23 #include "AliMUONGeometrySegmentation.h"
24
25 ClassImp(AliMUONResponseV0)
26         
27 //__________________________________________________________________________
28 AliMUONResponseV0::AliMUONResponseV0()
29   : AliMUONResponse()
30 {
31 // Default constructor
32
33   fMathieson = new AliMUONMathieson();
34   fChargeCorrel = 0;
35 }
36    //__________________________________________________________________________
37 AliMUONResponseV0::~AliMUONResponseV0()
38 {
39   delete fMathieson;
40 }
41   //__________________________________________________________________________
42 void AliMUONResponseV0::SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3)
43 {
44   // Set to "SqrtKx3" the Mathieson parameter K3 ("fSqrtKx3")
45   // in the X direction, perpendicular to the wires,
46   // and derive the Mathieson parameters K2 ("fKx2") and K4 ("fKx4")
47   // in the same direction
48   fMathieson->SetSqrtKx3AndDeriveKx2Kx4(SqrtKx3);
49 }
50         
51   //__________________________________________________________________________
52 void AliMUONResponseV0::SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3)
53 {
54   // Set to "SqrtKy3" the Mathieson parameter K3 ("fSqrtKy3")
55   // in the Y direction, along the wires,
56   // and derive the Mathieson parameters K2 ("fKy2") and K4 ("fKy4")
57   // in the same direction
58   fMathieson->SetSqrtKy3AndDeriveKy2Ky4(SqrtKy3);
59 }
60   //__________________________________________________________________________
61 Float_t AliMUONResponseV0::IntPH(Float_t eloss)
62 {
63   // Calculate charge from given ionization energy loss
64   Int_t nel;
65   nel= Int_t(eloss*1.e9/27.4);
66   Float_t charge=0;
67   if (nel == 0) nel=1;
68   for (Int_t i=1;i<=nel;i++) {
69       Float_t arg=0.;
70       while(!arg) arg = gRandom->Rndm();
71       charge -= fChargeSlope*TMath::Log(arg);    
72   }
73   return charge;
74 }
75   //-------------------------------------------
76 Float_t AliMUONResponseV0::IntXY(AliSegmentation * segmentation)
77 {
78   // Calculate charge on current pad according to Mathieson distribution
79
80   return fMathieson->IntXY(segmentation);
81
82 }
83   //-------------------------------------------
84 Float_t AliMUONResponseV0::IntXY(Int_t idDE, AliMUONGeometrySegmentation* segmentation)
85 {
86  // Calculate charge on current pad according to Mathieson distribution
87
88   return fMathieson->IntXY(idDE, segmentation);
89 }
90   //-------------------------------------------
91 Int_t  AliMUONResponseV0::DigitResponse(Int_t digit, AliMUONTransientDigit* /*where*/)
92 {
93     // add white noise and do zero-suppression and signal truncation
94 //     Float_t meanNoise = gRandom->Gaus(1, 0.2);
95     // correct noise for slat chambers;
96     // one more field to add to AliMUONResponseV0 to allow different noises ????
97     Float_t meanNoise = gRandom->Gaus(1., 0.2);
98     Float_t noise     = gRandom->Gaus(0., meanNoise);
99     digit += TMath::Nint(noise); 
100     if ( digit <= ZeroSuppression()) digit = 0;
101     // if ( digit >  MaxAdc())          digit=MaxAdc();
102     if ( digit >  Saturation())          digit=Saturation();
103
104     return digit;
105 }
106
107
108
109
110
111
112
113
114