]>
Commit | Line | Data |
---|---|---|
b0f5e3fc | 1 | #ifndef ALIITSRESPONSE_H |
2 | #define ALIITSRESPONSE_H | |
3 | ||
b0f5e3fc | 4 | #include <TObject.h> |
e8189707 | 5 | |
b0f5e3fc | 6 | #include "AliITSsegmentation.h" |
7 | ||
1ca7869b | 8 | class TF1; |
9 | class TString; | |
b0f5e3fc | 10 | class AliITSgeom; |
11 | ||
12 | //---------------------------------------------- | |
13 | // | |
14 | // ITS response virtual base class | |
15 | // | |
4efc56c1 | 16 | class AliITSresponse : public TObject { |
b0f5e3fc | 17 | public: |
4efc56c1 | 18 | // Default Constructor |
19 | AliITSresponse(); | |
20 | // Standard Constructor | |
21 | AliITSresponse(Double_t Thickness); | |
22 | // Destructor. | |
e8189707 | 23 | virtual ~AliITSresponse() {} |
b0f5e3fc | 24 | // |
25 | // Configuration methods | |
26 | // | |
27 | ||
7551c5b2 | 28 | // Set Electronics |
29 | virtual void SetElectronics(Int_t p1) {} | |
30 | // Get Electronics | |
4efc56c1 | 31 | virtual Int_t Electronics() {return 0;} |
7551c5b2 | 32 | |
b0f5e3fc | 33 | // Set maximum Adc-count value |
34 | virtual void SetMaxAdc(Float_t p1) {} | |
35 | // Get maximum Adc-count value | |
4efc56c1 | 36 | virtual Float_t MaxAdc() {return 0.;} |
b0f5e3fc | 37 | |
e8189707 | 38 | // Set maximum Adc-top value |
7551c5b2 | 39 | virtual void SetDynamicRange(Float_t p1) {} |
e8189707 | 40 | // Get maximum Adc-top value |
4efc56c1 | 41 | virtual Float_t DynamicRange() {return 0.0;} |
7551c5b2 | 42 | |
43 | // Set Charge Loss Linear Coefficient | |
44 | virtual void SetChargeLoss(Float_t p1) {} | |
45 | // Get Charge Loss Linear Coefficient | |
4efc56c1 | 46 | virtual Float_t ChargeLoss() {return 0.0;} |
b0f5e3fc | 47 | |
48 | // Diffusion coefficient | |
e8189707 | 49 | virtual void SetDiffCoeff(Float_t, Float_t) {} |
50 | // Get diffusion coefficients | |
51 | virtual void DiffCoeff(Float_t &,Float_t &) {} | |
b0f5e3fc | 52 | |
4efc56c1 | 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;} | |
b0f5e3fc | 57 | // Type of data - real or simulated |
e8189707 | 58 | virtual void SetDataType(const char *data) {} |
4efc56c1 | 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;} | |
b0f5e3fc | 70 | // Get data type |
4efc56c1 | 71 | virtual const char *DataType() const {return "";} |
b0f5e3fc | 72 | |
4efc56c1 | 73 | // Set parameters options: "same" or read from "file" or "SetInvalid" or... |
e8189707 | 74 | virtual void SetParamOptions(const char* opt1,const char* opt2) {} |
75 | // Set noise parameters | |
76 | virtual void SetNoiseParam(Float_t, Float_t) {} | |
b0f5e3fc | 77 | // Number of parameters to be set |
78 | virtual void SetNDetParam(Int_t) {} | |
e8189707 | 79 | // Set detector parameters: gain, coupling ... |
b0f5e3fc | 80 | virtual void SetDetParam(Float_t *) {} |
81 | ||
82 | // Parameters options | |
e8189707 | 83 | virtual void ParamOptions(char *,char*) {} |
b0f5e3fc | 84 | virtual Int_t NDetParam() {return 0;} |
4efc56c1 | 85 | virtual void GetDetParam(Float_t *) {} |
b0f5e3fc | 86 | virtual void GetNoiseParam(Float_t&, Float_t&) {} |
87 | ||
4efc56c1 | 88 | // Zero-suppression option - could be 1D, 2D or non-ZeroSuppressed |
e8189707 | 89 | virtual void SetZeroSupp(const char* opt) {} |
b0f5e3fc | 90 | // Get zero-suppression option |
e8189707 | 91 | virtual const char *ZeroSuppOption() const {return "";} |
b0f5e3fc | 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 | |
4efc56c1 | 100 | virtual void SetFilenames(const char *f1,const char *f2,const char *f3) {} |
b0f5e3fc | 101 | // Filenames |
e8189707 | 102 | virtual void Filenames(char*,char*,char*) {} |
b0f5e3fc | 103 | |
b0f5e3fc | 104 | virtual Float_t DriftSpeed() {return 0.;} |
105 | virtual Bool_t OutputOption() {return kFALSE;} | |
74d0b35a | 106 | virtual Bool_t Do10to8() {return kTRUE;} |
b0f5e3fc | 107 | virtual void GiveCompressParam(Int_t *x) {} |
108 | ||
4efc56c1 | 109 | // |
b0f5e3fc | 110 | // Detector type response methods |
111 | // Set number of sigmas over which cluster disintegration is performed | |
112 | virtual void SetNSigmaIntegration(Float_t p1) {} | |
113 | // Get number of sigmas over which cluster disintegration is performed | |
114 | virtual Float_t NSigmaIntegration() {return 0.;} | |
7551c5b2 | 115 | // Set number of bins for the gaussian lookup table |
116 | virtual void SetNLookUp(Int_t p1) {} | |
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.;} | |
b0f5e3fc | 121 | // Set sigmas of the charge spread function |
122 | virtual void SetSigmaSpread(Float_t p1, Float_t p2) {} | |
4efc56c1 | 123 | // Get sigmas for the charge spread |
b0f5e3fc | 124 | virtual void SigmaSpread(Float_t &s1, Float_t &s2) {} |
125 | ||
b0f5e3fc | 126 | // Pulse height from scored quantity (eloss) |
127 | virtual Float_t IntPH(Float_t eloss) {return 0.;} | |
4efc56c1 | 128 | // Charge disintegration |
b0f5e3fc | 129 | virtual Float_t IntXZ(AliITSsegmentation *) {return 0.;} |
4efc56c1 | 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 l); | |
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 l); | |
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 l); | |
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 | |
b0f5e3fc | 170 | }; |
171 | #endif |