]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSresponse.h
Radiator to Pad goes static.
[u/mrichter/AliRoot.git] / ITS / AliITSresponse.h
CommitLineData
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 12class TF1;
13class TString;
b0f5e3fc 14class AliITSgeom;
15
16//----------------------------------------------
17//
18// ITS response virtual base class
19//
4efc56c1 20class 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.
188ostream& operator<<(ostream &os,AliITSresponse &source);
189istream& operator>>(istream &os,AliITSresponse &source);
b0f5e3fc 190#endif