Line data Source code
1 : #ifndef ALIMUONRESPONSEV0_H
2 : #define ALIMUONRESPONSEV0_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 : * See cxx source for full Copyright notice */
5 :
6 : /* $Id$ */
7 : // Revision of includes 07/05/2004
8 :
9 : /// \ingroup sim
10 : /// \class AliMUONResponseV0
11 : /// \brief Implementation of Mathieson response
12 :
13 : #include "AliMUONResponse.h"
14 : #include "AliMUONMathieson.h"
15 :
16 : class AliMUONResponseV0 : public AliMUONResponse
17 : {
18 : public:
19 : AliMUONResponseV0();
20 : AliMUONResponseV0(const AliMUONResponseV0& rhs);
21 : AliMUONResponseV0& operator = (const AliMUONResponseV0& rhs);
22 : virtual ~AliMUONResponseV0();
23 :
24 : //
25 : // Configuration methods
26 : //
27 : /// Set number of sigmas over which cluster didintegration is performed
28 4 : virtual void SetSigmaIntegration(Float_t p1) {fSigmaIntegration=p1;}
29 : /// Get number of sigmas over which cluster didintegration is performed
30 332 : virtual Float_t SigmaIntegration() const {return fSigmaIntegration;}
31 : /// Set single electron pulse height (ADCcounts/e)
32 4 : virtual void SetChargeSlope(Float_t p1) {fChargeSlope=p1;}
33 : /// Get Set single electron pulse height (ADCcounts/e)
34 0 : virtual Float_t ChargeSlope() const {return fChargeSlope;}
35 : /// Set sigmas of the charge spread function
36 : virtual void SetChargeSpread(Float_t p1, Float_t p2)
37 4 : {fChargeSpreadX=p1; fChargeSpreadY=p2;}
38 : /// Get sigma_X of the charge spread function
39 166 : virtual Float_t ChargeSpreadX() const {return fChargeSpreadX;}
40 : /// Get sigma_Y of the charge spread function
41 166 : virtual Float_t ChargeSpreadY() const {return fChargeSpreadY;}
42 : /// Set maximum Adc-count value
43 4 : virtual void SetMaxAdc(Int_t p1) {fMaxAdc=p1;}
44 : /// Set saturation value
45 4 : virtual void SetSaturation(Int_t p1) {fSaturation=p1;}
46 : /// Set zero suppression threshold
47 4 : virtual void SetZeroSuppression(Int_t p1) {fZeroSuppression=p1;}
48 : /// Get maximum Adc-count value
49 0 : virtual Int_t MaxAdc() const {return fMaxAdc;}
50 : /// Get saturation value
51 0 : virtual Int_t Saturation() const {return fSaturation;}
52 :
53 : /// Get zero suppression threshold
54 0 : virtual Int_t ZeroSuppression() const {return fZeroSuppression;}
55 : /// Set the charge correlation
56 20 : virtual void SetChargeCorrel(Float_t correl){fChargeCorrel = correl;}
57 : /// Get the charge correlation
58 166 : virtual Float_t ChargeCorrel() const {return fChargeCorrel;}
59 :
60 :
61 : /// Set anode cathode Pitch
62 332 : virtual Float_t Pitch() const {return fMathieson->Pitch();}
63 : /// Get anode cathode Pitch
64 4 : virtual void SetPitch(Float_t p1) {fMathieson->SetPitch(p1);};
65 :
66 : /// Set Mathieson parameters
67 : /// Mathieson sqrt{Kx3} and derived Kx2 and Kx4
68 : /// passing pointer to class Mathieson for backward compatibility
69 : virtual void SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3);
70 : /// Mathieson sqrt{Kx3}
71 0 : virtual void SetSqrtKx3(Float_t p1) {fMathieson->SetSqrtKx3(p1);};
72 : /// Mathieson Kx2
73 0 : virtual void SetKx2(Float_t p1) {fMathieson->SetKx2(p1);};
74 : /// Mathieson Kx4
75 0 : virtual void SetKx4(Float_t p1) {fMathieson->SetKx4(p1);};
76 : /// Mathieson sqrt{Ky3} and derived Ky2 and Ky4
77 : virtual void SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3);
78 : /// Mathieson sqrt{Ky3}
79 0 : virtual void SetSqrtKy3(Float_t p1) {fMathieson->SetSqrtKy3(p1);};
80 : /// Mathieson Ky2
81 0 : virtual void SetKy2(Float_t p1) {fMathieson->SetKy2(p1);};
82 : /// Mathieson Ky4
83 0 : virtual void SetKy4(Float_t p1) {fMathieson->SetKy4(p1);};
84 : //
85 : // Chamber response methods
86 : // Pulse height from scored quantity (eloss)
87 : virtual Float_t IntPH(Float_t eloss) const;
88 :
89 : /// Parametrised tail effect in resolution histogram
90 2 : virtual void SetTailEffect(Bool_t isTail) {fIsTailEffect=isTail;}
91 :
92 : virtual Float_t GetAnod(Float_t x) const;
93 :
94 : virtual void DisIntegrate(const AliMUONHit& hit, TList& digits, Float_t timeDif);
95 :
96 : virtual void Print(Option_t* opt="") const;
97 :
98 : private:
99 : void CopyTo(AliMUONResponseV0& other) const;
100 :
101 : private:
102 :
103 : Float_t fChargeSlope; ///< Slope of the charge distribution
104 : Float_t fChargeSpreadX; ///< Width of the charge distribution in x
105 : Float_t fChargeSpreadY; ///< Width of the charge distribution in y
106 : Float_t fSigmaIntegration; ///< Number of sigma's used for charge distribution
107 : Int_t fMaxAdc; ///< Maximum ADC channel
108 : Int_t fSaturation; ///< Pad saturation in ADC channel
109 : Int_t fZeroSuppression; ///< Zero suppression threshold
110 : Float_t fChargeCorrel; ///< \brief amplitude of charge correlation on 2 cathods
111 : /// is RMS of ln(q1/q2)
112 : AliMUONMathieson* fMathieson; ///< pointer to mathieson fct
113 : Float_t fChargeThreshold; ///< Charges below this threshold are = 0
114 : Bool_t fIsTailEffect; ///< switch to turn on/off the tail effect
115 :
116 :
117 992 : ClassDef(AliMUONResponseV0,2) // Implementation of detector response
118 : };
119 :
120 : #endif
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
131 :
|