Set Getters to be const and general fixed up and added some extra setters
[u/mrichter/AliRoot.git] / ITS / AliITSresponse.h
1 #ifndef ALIITSRESPONSE_H
2 #define ALIITSRESPONSE_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
8 #include <TObject.h>
9
10 #include "AliITSsegmentation.h"
11
12 class TF1;
13 class TString;
14 class AliITSgeom;
15
16 //----------------------------------------------
17 //
18 // ITS response virtual base class
19 //
20 class AliITSresponse : public TObject {
21  public:
22     // Default Constructor
23     AliITSresponse();
24     // Standard Constructor
25     AliITSresponse(Double_t Thickness);
26     // Destructor.
27     virtual ~AliITSresponse() {}
28     //
29     // Configuration methods
30     //
31
32     // Set Electronics
33     virtual void    SetElectronics(Int_t) {}
34     // Get Electronics
35     virtual Int_t Electronics() const {return 0;}
36
37     // Set maximum Adc-count value
38     virtual void    SetMaxAdc(Float_t) {}
39     // Get maximum Adc-count value
40     virtual Float_t MaxAdc() const {return 0.;}
41
42     // Set maximum Adc-top value
43     virtual void    SetDynamicRange(Float_t) {}
44     // Get maximum Adc-top value
45     virtual Float_t DynamicRange() const {return 0.0;}
46
47     // Set Charge Loss Linear Coefficient
48     virtual void    SetChargeLoss(Float_t) {}
49     // Get Charge Loss Linear Coefficient
50     virtual Float_t ChargeLoss() const {return 0.0;}
51
52     // Set GeVcharge value
53     virtual void SetGeVToCharge(Float_t gc=2.778E+8){fGeVcharge = gc;}
54     // Returns the value fGeVcharge
55     virtual Float_t GetGeVToCharge() const {return fGeVcharge;}
56     // Converts deposited energy to number of electrons liberated
57     virtual Float_t GeVToCharge(Float_t gev) const {return gev*fGeVcharge;}
58
59     // Diffusion coefficient
60     virtual void    SetDiffCoeff(Float_t, Float_t) {}
61     // Get diffusion coefficients
62     virtual void    DiffCoeff(Float_t &,Float_t &) {}
63
64     // Temperature in [degree K]
65     virtual void    SetTemperature(Float_t t=300.0) {fT = t;}
66     // Get temperature [degree K]
67     virtual Float_t Temperature() const {return fT;}
68     // Type of data - real or simulated
69     virtual void    SetDataType(const char *) {}
70     // Set the impurity concentrations in [#/cm^3]
71     virtual void SetImpurity(Double_t n=0.0){fN = n;}
72     // Returns the impurity consentration in [#/cm^3]
73     virtual Double_t Impurity() const {return fN;}
74     // Sets the applied ratio distance/voltage [cm/volt]
75     virtual void SetDistanceOverVoltage(Double_t d,Double_t v){fdv = d/v;}
76     // Sets the applied ration distance/voltage [cm/volt]. Default value
77     // is 300E-4cm/80 volts = 0.000375 cm/volts
78     virtual void SetDistanceOverVoltage(Double_t dv=0.000375){fdv = dv;}
79     // Returns the ration distance/voltage
80     virtual Double_t DistanceOverVoltage() const {return fdv;}
81     // Get data type
82     virtual const char  *DataType() const {return "";}
83  
84     // Set parameters options: "same" or read from "file" or "SetInvalid" or...
85     virtual void   SetParamOptions(const char*,const char*) {}
86     // Set noise parameters 
87     virtual void   SetNoiseParam(Float_t, Float_t) {}
88     // Number of parameters to be set
89     virtual  void   SetNDetParam(Int_t) {}
90     // Set detector parameters: gain, coupling ...
91     virtual  void   SetDetParam(Float_t *) {}
92
93     // Parameters options
94     virtual void   ParamOptions(char *,char*) {}
95     virtual Int_t  NDetParam() const {return 0;}
96     virtual void   GetDetParam(Float_t *) {}
97     virtual void   GetNoiseParam(Float_t&, Float_t&) {}
98
99     // Zero-suppression option - could be 1D, 2D or non-ZeroSuppressed
100     virtual void   SetZeroSupp(const char*) {}
101     // Get zero-suppression option
102     virtual const char *ZeroSuppOption() const {return "";}
103      // Set thresholds
104     virtual void   SetThresholds(Float_t, Float_t) {}
105     virtual void   Thresholds(Float_t &, Float_t &) {}
106     // Set min val
107     virtual void   SetMinVal(Int_t) {};
108     virtual Int_t  MinVal() const {return 0;};
109
110     // Set filenames
111     virtual void SetFilenames(const char *,const char *,const char *) {}
112     // Filenames
113     virtual void   Filenames(char*,char*,char*) {}
114
115     virtual Float_t DriftSpeed() const {return 0.;}
116     virtual Bool_t  OutputOption() const {return kFALSE;}
117     virtual Bool_t  Do10to8() const {return kTRUE;}
118     virtual void    GiveCompressParam(Int_t *) {}
119
120     //
121     // Detector type response methods
122     // Set number of sigmas over which cluster disintegration is performed
123     virtual void    SetNSigmaIntegration(Float_t) {}
124     // Get number of sigmas over which cluster disintegration is performed
125     virtual Float_t NSigmaIntegration() const {return 0.;}
126     // Set number of bins for the gaussian lookup table
127     virtual void    SetNLookUp(Int_t) {}
128     // Get number of bins for the gaussian lookup table
129     virtual Int_t GausNLookUp() const {return 0;}
130     // Get scaling factor for bin i-th from the gaussian lookup table
131     virtual Float_t GausLookUp(Int_t) const {return 0.;}
132     // Set sigmas of the charge spread function
133     virtual void    SetSigmaSpread(Float_t, Float_t) {}
134     // Get sigmas for the charge spread
135     virtual void    SigmaSpread(Float_t &,Float_t &) {}
136
137     // Pulse height from scored quantity (eloss)
138     virtual Float_t IntPH(Float_t) const {return 0.;}
139     // Charge disintegration
140     virtual Float_t IntXZ(AliITSsegmentation *) const {return 0.;}
141     // Electron mobility in Si. [cm^2/(Volt Sec)]. T in degree K, N in #/cm^3
142     virtual Double_t MobilityElectronSiEmp() const ;
143     // Hole mobility in Si. [cm^2/(Volt Sec)]  T in degree K, N in #/cm^3
144     virtual Double_t MobilityHoleSiEmp() const ;
145     // Einstein relation for Diffusion Coefficient of Electrons. [cm^2/sec]
146     //  T in degree K, N in #/cm^3
147     virtual Double_t DiffusionCoefficientElectron() const ;
148     // Einstein relation for Diffusion Coefficient of Holes. [cm^2/sec]
149     //  T in [degree K], N in [#/cm^3]
150     virtual Double_t DiffusionCoefficientHole() const ;
151     // Electron <speed> under an applied electric field E=Volts/cm. [cm/sec]
152     // d distance-thickness in [cm], v in [volts], T in [degree K],
153     // N in [#/cm^3]
154     virtual Double_t SpeedElectron() const ;
155     // Holes <speed> under an applied electric field E=Volts/cm. [cm/sec]
156     // d distance-thickness in [cm], v in [volts], T in [degree K],
157     // N in [#/cm^3]
158     virtual Double_t SpeedHole() const ;
159     // Returns the Gaussian sigma == <x^2+z^2> [cm^2] due to the defusion of
160     // electrons or holes through a distance l [cm] caused by an applied
161     // voltage v [volt] through a distance d [cm] in any material at a
162     // temperature T [degree K].
163     virtual Double_t SigmaDiffusion3D(Double_t) const ;
164     // Returns the Gaussian sigma == <x^2 +y^2+z^2> [cm^2] due to the
165     // defusion of electrons or holes through a distance l [cm] caused by an
166     // applied voltage v [volt] through a distance d [cm] in any material at a
167     // temperature T [degree K].
168     virtual Double_t SigmaDiffusion2D(Double_t) const ;
169     // Returns the Gaussian sigma == <x^2+z^2> [cm^2] due to the defusion of
170     // electrons or holes through a distance l [cm] caused by an applied
171     // voltage v [volt] through a distance d [cm] in any material at a
172     // temperature T [degree K].
173     virtual Double_t SigmaDiffusion1D(Double_t) const ;
174     // Prints out the content of this class in ASCII format.
175     virtual void Print(ostream *os);
176     // Reads in the content of this class in the format of Print
177     virtual void Read(istream *is);
178  private:
179     Double_t fdv;  // The parameter d/v where d is the disance over which the
180                    // the potential v is applied d/v [cm/volts]
181     Double_t fN;   // the impurity consentration of the material in #/cm^3
182     Double_t fT;   // The temperature of the Si in Degree K.
183     Double_t fGeVcharge; // Energy to ionize (free an electron).
184
185     ClassDef(AliITSresponse,2) // Detector type response virtual base class 
186 };
187 // Input and output function for standard C++ input/output.
188 ostream& operator<<(ostream &os,AliITSresponse &source);
189 istream& operator>>(istream &os,AliITSresponse &source);
190 #endif