]>
Commit | Line | Data |
---|---|---|
b0f5e3fc | 1 | #ifndef ALIITSRESPONSE_H |
2 | #define ALIITSRESPONSE_H | |
ac8cbb66 | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
b0f5e3fc | 7 | |
b0f5e3fc | 8 | #include <TObject.h> |
e8189707 | 9 | |
b0f5e3fc | 10 | #include "AliITSsegmentation.h" |
11 | ||
1ca7869b | 12 | class TF1; |
13 | class TString; | |
b0f5e3fc | 14 | class AliITSgeom; |
15 | ||
16 | //---------------------------------------------- | |
17 | // | |
18 | // ITS response virtual base class | |
19 | // | |
4efc56c1 | 20 | class AliITSresponse : public TObject { |
b0f5e3fc | 21 | public: |
4efc56c1 | 22 | // Default Constructor |
23 | AliITSresponse(); | |
24 | // Standard Constructor | |
25 | AliITSresponse(Double_t Thickness); | |
26 | // Destructor. | |
e8189707 | 27 | virtual ~AliITSresponse() {} |
b0f5e3fc | 28 | // |
29 | // Configuration methods | |
30 | // | |
31 | ||
7551c5b2 | 32 | // Set Electronics |
ac74f489 | 33 | virtual void SetElectronics(Int_t) {} |
7551c5b2 | 34 | // Get Electronics |
ac8cbb66 | 35 | virtual Int_t Electronics() const {return 0;} |
7551c5b2 | 36 | |
b0f5e3fc | 37 | // Set maximum Adc-count value |
ac74f489 | 38 | virtual void SetMaxAdc(Float_t) {} |
b0f5e3fc | 39 | // Get maximum Adc-count value |
ac8cbb66 | 40 | virtual Float_t MaxAdc() const {return 0.;} |
b0f5e3fc | 41 | |
e8189707 | 42 | // Set maximum Adc-top value |
ac74f489 | 43 | virtual void SetDynamicRange(Float_t) {} |
e8189707 | 44 | // Get maximum Adc-top value |
ac8cbb66 | 45 | virtual Float_t DynamicRange() const {return 0.0;} |
7551c5b2 | 46 | |
47 | // Set Charge Loss Linear Coefficient | |
ac74f489 | 48 | virtual void SetChargeLoss(Float_t) {} |
7551c5b2 | 49 | // Get Charge Loss Linear Coefficient |
ac8cbb66 | 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;} | |
b0f5e3fc | 58 | |
59 | // Diffusion coefficient | |
e8189707 | 60 | virtual void SetDiffCoeff(Float_t, Float_t) {} |
61 | // Get diffusion coefficients | |
62 | virtual void DiffCoeff(Float_t &,Float_t &) {} | |
b0f5e3fc | 63 | |
4efc56c1 | 64 | // Temperature in [degree K] |
65 | virtual void SetTemperature(Float_t t=300.0) {fT = t;} | |
66 | // Get temperature [degree K] | |
ac8cbb66 | 67 | virtual Float_t Temperature() const {return fT;} |
b0f5e3fc | 68 | // Type of data - real or simulated |
ac74f489 | 69 | virtual void SetDataType(const char *) {} |
4efc56c1 | 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] | |
ac8cbb66 | 73 | virtual Double_t Impurity() const {return fN;} |
4efc56c1 | 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 | |
ac8cbb66 | 80 | virtual Double_t DistanceOverVoltage() const {return fdv;} |
b0f5e3fc | 81 | // Get data type |
4efc56c1 | 82 | virtual const char *DataType() const {return "";} |
b0f5e3fc | 83 | |
4efc56c1 | 84 | // Set parameters options: "same" or read from "file" or "SetInvalid" or... |
ac74f489 | 85 | virtual void SetParamOptions(const char*,const char*) {} |
e8189707 | 86 | // Set noise parameters |
87 | virtual void SetNoiseParam(Float_t, Float_t) {} | |
b0f5e3fc | 88 | // Number of parameters to be set |
89 | virtual void SetNDetParam(Int_t) {} | |
e8189707 | 90 | // Set detector parameters: gain, coupling ... |
b0f5e3fc | 91 | virtual void SetDetParam(Float_t *) {} |
92 | ||
93 | // Parameters options | |
e8189707 | 94 | virtual void ParamOptions(char *,char*) {} |
ac8cbb66 | 95 | virtual Int_t NDetParam() const {return 0;} |
4efc56c1 | 96 | virtual void GetDetParam(Float_t *) {} |
b0f5e3fc | 97 | virtual void GetNoiseParam(Float_t&, Float_t&) {} |
98 | ||
4efc56c1 | 99 | // Zero-suppression option - could be 1D, 2D or non-ZeroSuppressed |
ac74f489 | 100 | virtual void SetZeroSupp(const char*) {} |
b0f5e3fc | 101 | // Get zero-suppression option |
e8189707 | 102 | virtual const char *ZeroSuppOption() const {return "";} |
b0f5e3fc | 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) {}; | |
ac8cbb66 | 108 | virtual Int_t MinVal() const {return 0;}; |
b0f5e3fc | 109 | |
110 | // Set filenames | |
ac74f489 | 111 | virtual void SetFilenames(const char *,const char *,const char *) {} |
b0f5e3fc | 112 | // Filenames |
e8189707 | 113 | virtual void Filenames(char*,char*,char*) {} |
b0f5e3fc | 114 | |
ac8cbb66 | 115 | virtual Float_t DriftSpeed() const {return 0.;} |
116 | virtual Bool_t OutputOption() const {return kFALSE;} | |
117 | virtual Bool_t Do10to8() const {return kTRUE;} | |
ac74f489 | 118 | virtual void GiveCompressParam(Int_t *) {} |
b0f5e3fc | 119 | |
4efc56c1 | 120 | // |
b0f5e3fc | 121 | // Detector type response methods |
122 | // Set number of sigmas over which cluster disintegration is performed | |
ac74f489 | 123 | virtual void SetNSigmaIntegration(Float_t) {} |
b0f5e3fc | 124 | // Get number of sigmas over which cluster disintegration is performed |
ac8cbb66 | 125 | virtual Float_t NSigmaIntegration() const {return 0.;} |
7551c5b2 | 126 | // Set number of bins for the gaussian lookup table |
ac74f489 | 127 | virtual void SetNLookUp(Int_t) {} |
7551c5b2 | 128 | // Get number of bins for the gaussian lookup table |
ac8cbb66 | 129 | virtual Int_t GausNLookUp() const {return 0;} |
7551c5b2 | 130 | // Get scaling factor for bin i-th from the gaussian lookup table |
ac8cbb66 | 131 | virtual Float_t GausLookUp(Int_t) const {return 0.;} |
b0f5e3fc | 132 | // Set sigmas of the charge spread function |
ac74f489 | 133 | virtual void SetSigmaSpread(Float_t, Float_t) {} |
4efc56c1 | 134 | // Get sigmas for the charge spread |
ac74f489 | 135 | virtual void SigmaSpread(Float_t &,Float_t &) {} |
b0f5e3fc | 136 | |
b0f5e3fc | 137 | // Pulse height from scored quantity (eloss) |
ac8cbb66 | 138 | virtual Float_t IntPH(Float_t) const {return 0.;} |
4efc56c1 | 139 | // Charge disintegration |
ac8cbb66 | 140 | virtual Float_t IntXZ(AliITSsegmentation *) const {return 0.;} |
4efc56c1 | 141 | // Electron mobility in Si. [cm^2/(Volt Sec)]. T in degree K, N in #/cm^3 |
ac8cbb66 | 142 | virtual Double_t MobilityElectronSiEmp() const ; |
4efc56c1 | 143 | // Hole mobility in Si. [cm^2/(Volt Sec)] T in degree K, N in #/cm^3 |
ac8cbb66 | 144 | virtual Double_t MobilityHoleSiEmp() const ; |
4efc56c1 | 145 | // Einstein relation for Diffusion Coefficient of Electrons. [cm^2/sec] |
146 | // T in degree K, N in #/cm^3 | |
ac8cbb66 | 147 | virtual Double_t DiffusionCoefficientElectron() const ; |
4efc56c1 | 148 | // Einstein relation for Diffusion Coefficient of Holes. [cm^2/sec] |
149 | // T in [degree K], N in [#/cm^3] | |
ac8cbb66 | 150 | virtual Double_t DiffusionCoefficientHole() const ; |
4efc56c1 | 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] | |
ac8cbb66 | 154 | virtual Double_t SpeedElectron() const ; |
4efc56c1 | 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] | |
ac8cbb66 | 158 | virtual Double_t SpeedHole() const ; |
4efc56c1 | 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]. | |
ac8cbb66 | 163 | virtual Double_t SigmaDiffusion3D(Double_t) const ; |
4efc56c1 | 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]. | |
ac8cbb66 | 168 | virtual Double_t SigmaDiffusion2D(Double_t) const ; |
4efc56c1 | 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]. | |
ac8cbb66 | 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); | |
4efc56c1 | 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. | |
ac8cbb66 | 183 | Double_t fGeVcharge; // Energy to ionize (free an electron). |
4efc56c1 | 184 | |
185 | ClassDef(AliITSresponse,2) // Detector type response virtual base class | |
b0f5e3fc | 186 | }; |
ac8cbb66 | 187 | // Input and output function for standard C++ input/output. |
188 | ostream& operator<<(ostream &os,AliITSresponse &source); | |
189 | istream& operator>>(istream &os,AliITSresponse &source); | |
b0f5e3fc | 190 | #endif |