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 */
10 #include "AliITSsegmentation.h"
16 //----------------------------------------------
18 // ITS response virtual base class
20 class AliITSresponse : public TObject {
22 // Default Constructor
24 // Standard Constructor
25 AliITSresponse(Double_t Thickness);
27 virtual ~AliITSresponse() {}
29 // Configuration methods
33 virtual void SetElectronics(Int_t) {}
35 virtual Int_t Electronics() const {return 0;}
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.;}
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;}
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;}
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;}
59 // Diffusion coefficient
60 virtual void SetDiffCoeff(Float_t, Float_t) {}
61 // Get diffusion coefficients
62 virtual void DiffCoeff(Float_t &,Float_t &) {}
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;}
82 virtual const char *DataType() const {return "";}
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 *) {}
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&) {}
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 "";}
104 virtual void SetThresholds(Float_t, Float_t) {}
105 virtual void Thresholds(Float_t &, Float_t &) {}
107 virtual void SetMinVal(Int_t) {};
108 virtual Int_t MinVal() const {return 0;};
111 virtual void SetFilenames(const char *,const char *,const char *) {}
113 virtual void Filenames(char*,char*,char*) {}
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 *) {}
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 &) {}
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],
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],
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);
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).
185 ClassDef(AliITSresponse,2) // Detector type response virtual base class
187 // Input and output function for standard C++ input/output.
188 ostream& operator<<(ostream &os,AliITSresponse &source);
189 istream& operator>>(istream &os,AliITSresponse &source);