]>
Commit | Line | Data |
---|---|---|
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 | virtual void SetSigmaIntegration(Float_t p1) {fSigmaIntegration=p1;} | |
29 | /// Get number of sigmas over which cluster didintegration is performed | |
30 | virtual Float_t SigmaIntegration() const {return fSigmaIntegration;} | |
31 | /// Set single electron pulse height (ADCcounts/e) | |
32 | virtual void SetChargeSlope(Float_t p1) {fChargeSlope=p1;} | |
33 | /// Get Set single electron pulse height (ADCcounts/e) | |
34 | 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 | {fChargeSpreadX=p1; fChargeSpreadY=p2;} | |
38 | /// Get sigma_X of the charge spread function | |
39 | virtual Float_t ChargeSpreadX() const {return fChargeSpreadX;} | |
40 | /// Get sigma_Y of the charge spread function | |
41 | virtual Float_t ChargeSpreadY() const {return fChargeSpreadY;} | |
42 | /// Set maximum Adc-count value | |
43 | virtual void SetMaxAdc(Int_t p1) {fMaxAdc=p1;} | |
44 | /// Set saturation value | |
45 | virtual void SetSaturation(Int_t p1) {fSaturation=p1;} | |
46 | /// Set zero suppression threshold | |
47 | virtual void SetZeroSuppression(Int_t p1) {fZeroSuppression=p1;} | |
48 | /// Get maximum Adc-count value | |
49 | virtual Int_t MaxAdc() const {return fMaxAdc;} | |
50 | /// Get saturation value | |
51 | virtual Int_t Saturation() const {return fSaturation;} | |
52 | ||
53 | /// Get zero suppression threshold | |
54 | virtual Int_t ZeroSuppression() const {return fZeroSuppression;} | |
55 | /// Set the charge correlation | |
56 | virtual void SetChargeCorrel(Float_t correl){fChargeCorrel = correl;} | |
57 | /// Get the charge correlation | |
58 | virtual Float_t ChargeCorrel() const {return fChargeCorrel;} | |
59 | ||
60 | ||
61 | /// Set anode cathode Pitch | |
62 | virtual Float_t Pitch() const {return fMathieson->Pitch();} | |
63 | /// Get anode cathode Pitch | |
64 | 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 | virtual void SetSqrtKx3(Float_t p1) {fMathieson->SetSqrtKx3(p1);}; | |
72 | /// Mathieson Kx2 | |
73 | virtual void SetKx2(Float_t p1) {fMathieson->SetKx2(p1);}; | |
74 | /// Mathieson Kx4 | |
75 | 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 | virtual void SetSqrtKy3(Float_t p1) {fMathieson->SetSqrtKy3(p1);}; | |
80 | /// Mathieson Ky2 | |
81 | virtual void SetKy2(Float_t p1) {fMathieson->SetKy2(p1);}; | |
82 | /// Mathieson Ky4 | |
83 | 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 | 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 | ClassDef(AliMUONResponseV0,2) // Implementation of detector response | |
118 | }; | |
119 | ||
120 | #endif | |
121 | ||
122 | ||
123 | ||
124 | ||
125 | ||
126 | ||
127 | ||
128 | ||
129 | ||
130 | ||
131 |