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