]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSresponse.h
cluster information
[u/mrichter/AliRoot.git] / ITS / AliITSresponse.h
CommitLineData
b0f5e3fc 1#ifndef ALIITSRESPONSE_H
2#define ALIITSRESPONSE_H
3
b0f5e3fc 4#include <TObject.h>
e8189707 5
b0f5e3fc 6#include "AliITSsegmentation.h"
7
1ca7869b 8class TF1;
9class TString;
b0f5e3fc 10class AliITSgeom;
11
12//----------------------------------------------
13//
14// ITS response virtual base class
15//
4efc56c1 16class 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
ac74f489 29 virtual void SetElectronics(Int_t) {}
7551c5b2 30 // Get Electronics
4efc56c1 31 virtual Int_t Electronics() {return 0;}
7551c5b2 32
b0f5e3fc 33 // Set maximum Adc-count value
ac74f489 34 virtual void SetMaxAdc(Float_t) {}
b0f5e3fc 35 // Get maximum Adc-count value
4efc56c1 36 virtual Float_t MaxAdc() {return 0.;}
b0f5e3fc 37
e8189707 38 // Set maximum Adc-top value
ac74f489 39 virtual void SetDynamicRange(Float_t) {}
e8189707 40 // Get maximum Adc-top value
4efc56c1 41 virtual Float_t DynamicRange() {return 0.0;}
7551c5b2 42
43 // Set Charge Loss Linear Coefficient
ac74f489 44 virtual void SetChargeLoss(Float_t) {}
7551c5b2 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
ac74f489 58 virtual void SetDataType(const char *) {}
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...
ac74f489 74 virtual void SetParamOptions(const char*,const char*) {}
e8189707 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
ac74f489 89 virtual void SetZeroSupp(const char*) {}
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
ac74f489 100 virtual void SetFilenames(const char *,const char *,const char *) {}
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;}
ac74f489 107 virtual void GiveCompressParam(Int_t *) {}
b0f5e3fc 108
4efc56c1 109 //
b0f5e3fc 110 // Detector type response methods
111 // Set number of sigmas over which cluster disintegration is performed
ac74f489 112 virtual void SetNSigmaIntegration(Float_t) {}
b0f5e3fc 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
ac74f489 116 virtual void SetNLookUp(Int_t) {}
7551c5b2 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
ac74f489 122 virtual void SetSigmaSpread(Float_t, Float_t) {}
4efc56c1 123 // Get sigmas for the charge spread
ac74f489 124 virtual void SigmaSpread(Float_t &,Float_t &) {}
b0f5e3fc 125
b0f5e3fc 126 // Pulse height from scored quantity (eloss)
ac74f489 127 virtual Float_t IntPH(Float_t) {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].
ac74f489 152 virtual Double_t SigmaDiffusion3D(Double_t);
4efc56c1 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].
ac74f489 157 virtual Double_t SigmaDiffusion2D(Double_t);
4efc56c1 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].
ac74f489 162 virtual Double_t SigmaDiffusion1D(Double_t);
4efc56c1 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