removed obsolete AliMUONAlignmentRecord classes (AliMillePedeRecord is now used,...
[u/mrichter/AliRoot.git] / MUON / AliMUONResponseV0.h
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