]>
Commit | Line | Data |
---|---|---|
cd2a0045 | 1 | #ifndef ALIITSSIMUPARAM_H |
2 | #define ALIITSSIMUPARAM_H | |
3 | /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id:$ */ | |
7 | ||
8 | /////////////////////////////////////////////////////////////////// | |
9 | // // | |
10 | // Class to store the parameters used in the simulation of // | |
11 | // SPD, SDD and SSD detectors // | |
12 | // Origin: F.Prino, Torino, prino@to.infn.it // | |
13 | // // | |
14 | /////////////////////////////////////////////////////////////////// | |
15 | ||
16 | #include<TObject.h> | |
17 | #include <TString.h> | |
18 | #include <TArrayF.h> | |
19 | ||
20 | class AliITSSimuParam : public TObject { | |
21 | ||
22 | public: | |
23 | AliITSSimuParam(); | |
24 | AliITSSimuParam(const AliITSSimuParam& simpar); | |
25 | // assignment operator | |
26 | AliITSSimuParam& operator=(const AliITSSimuParam& source); | |
27 | ~AliITSSimuParam(); | |
28 | ||
29 | ||
30 | void SetGeVToCharge(Double_t gc=3.6e-9){fGeVcharge = gc;} | |
31 | Double_t GetGeVToCharge() const {return fGeVcharge;} | |
32 | Double_t GeVToCharge(Double_t gev) const {return gev/fGeVcharge;} | |
33 | ||
34 | void SetDistanceOverVoltage(Double_t d,Double_t v){fDOverV = d/v;} | |
35 | void SetDistanceOverVoltage(Double_t dv=0.000375){fDOverV = dv;} | |
36 | Double_t GetDistanceOverVoltage() const {return fDOverV;} | |
37 | ||
38 | ||
39 | ||
40 | void SetSPDBiasVoltage(Double_t bias=18.182) {fSPDBiasVoltage=bias;} | |
41 | Double_t GetSPDBiasVoltage() const {return fSPDBiasVoltage;} | |
42 | ||
43 | void SetSPDThresholds(Double_t thresh, Double_t sigma) | |
44 | {fSPDThresh=thresh; fSPDSigma=sigma;} | |
45 | void Thresholds(Double_t &thresh, Double_t &sigma) const | |
46 | {thresh=fSPDThresh; sigma=fSPDSigma;} | |
47 | ||
48 | void SetSPDCouplingOption(const char *opt) {fSPDCouplOpt=opt;} | |
49 | void GetSPDCouplingOption(char *opt) const {strcpy(opt,fSPDCouplOpt.Data());} | |
50 | ||
51 | void SetSPDCouplingParam(Double_t col, Double_t row) | |
52 | {fSPDCouplCol = col; fSPDCouplRow = row;} | |
53 | void GetSPDCouplingParam(Double_t &col, Double_t &row) const | |
54 | {col = fSPDCouplCol; row = fSPDCouplRow;} | |
55 | ||
56 | void SetSPDSigmaDiffusionAsymmetry(Double_t ecc) {fSPDEccDiff=ecc;} | |
57 | void GetSPDSigmaDiffusionAsymmetry(Double_t &ecc) const {ecc=fSPDEccDiff;} | |
58 | ||
59 | void SetSDDElectronics(Int_t p1=1) {fSDDElectronics=p1; } | |
60 | Int_t GetSDDElectronics() const {return fSDDElectronics;} | |
61 | ||
62 | void SetSDDDiffCoeff(Float_t p1, Float_t p2) { | |
63 | fSDDDiffCoeff=p1; fSDDDiffCoeff1=p2;} | |
64 | void GetSDDDiffCoeff(Float_t &diff,Float_t &diff1) const { | |
65 | diff=fSDDDiffCoeff; diff1=fSDDDiffCoeff1;} | |
66 | ||
67 | void SetSDDJitterError(Float_t jitter) {fSDDJitterError=jitter;} | |
68 | Float_t GetSDDJitterError() const {return fSDDJitterError;} | |
69 | ||
70 | void SetSDDDynamicRange(Double_t p1) {fSDDDynamicRange = p1;} | |
71 | Float_t GetSDDDynamicRange() const {return fSDDDynamicRange;} | |
72 | ||
73 | void SetSDDMaxAdc(Double_t p1) {fSDDMaxAdc=p1;} | |
74 | Float_t GetSDDMaxAdc() const {return fSDDMaxAdc;} | |
75 | ||
76 | void SetSDDChargeLoss(Double_t p1) {fSDDChargeLoss=p1;} | |
77 | Float_t GetSDDChargeLoss() const {return fSDDChargeLoss;} | |
78 | ||
79 | ||
80 | void SetSSDADCpereV(Double_t a=120./24888.9){fSSDADCpereV = a;} | |
81 | Double_t GetSSDDEvToADC(Double_t eV) const {return eV*fSSDADCpereV;} | |
82 | Int_t GetSSDIEvToADC(Double_t eV) const { | |
83 | return ((Int_t) GetSSDDEvToADC(eV)); } | |
84 | ||
85 | void SetSSDCouplings(Double_t pr, Double_t pl, Double_t nr, Double_t nl) { | |
86 | fSSDCouplingPR=pr; fSSDCouplingPL=pl; fSSDCouplingNR=nr; fSSDCouplingNL=nl; } | |
87 | Double_t GetSSDCouplingPR() const {return fSSDCouplingPR;} | |
88 | Double_t GetSSDCouplingPL() const {return fSSDCouplingPL;} | |
89 | Double_t GetSSDCouplingNR() const {return fSSDCouplingNR;} | |
90 | Double_t GetSSDCouplingNL() const {return fSSDCouplingNL;} | |
91 | ||
92 | void SetNSigmaIntegration(Double_t p1) {fNsigmas=p1;} | |
93 | Float_t GetNSigmaIntegration() const {return fNsigmas;} | |
94 | void SetNLookUp(Int_t p1); | |
95 | Int_t GetGausNLookUp() const {return fNcomps;} | |
96 | Float_t GetGausLookUp(Int_t i) { | |
97 | if (!fGaus) SetNLookUp(fgkNcompsDefault); | |
98 | if(i<0 || i>=fNcomps) return 0.;return fGaus->At(i); | |
99 | } | |
100 | ||
101 | void PrintParameters() const; | |
102 | ||
103 | protected: | |
104 | ||
105 | static const Float_t fgkSPDBiasVoltageDefault;//default for fSPDBiasVoltage | |
106 | static const Double_t fgkSPDThreshDefault; //default for fThresh | |
107 | static const Double_t fgkSPDSigmaDefault; //default for fSigma | |
108 | static const TString fgkSPDCouplingOptDefault; // type of pixel Coupling (old or new) | |
109 | static const Double_t fgkSPDCouplColDefault; //default for fSPDCouplCol | |
110 | static const Double_t fgkSPDCouplRowDefault; //default for fSPDCouplRow | |
111 | static const Float_t fgkSPDEccDiffDefault;//default for fSPDEccDiff | |
112 | static const Float_t fgkSDDDiffCoeffDefault; // default for fSDDDiffCoeff | |
113 | static const Float_t fgkSDDDiffCoeff1Default; // default for fSDDDiffCoeff1 | |
114 | static const Float_t fgkSDDJitterErrorDefault; // default for fSDDJitterError | |
115 | static const Float_t fgkSDDDynamicRangeDefault; // default for fSDDDynamicRange | |
116 | static const Int_t fgkSDDMaxAdcDefault; // default for fSDDMaxAdc | |
117 | static const Float_t fgkSDDChargeLossDefault; // default for fSDDChargeLoss | |
118 | ||
119 | static const Double_t fgkSSDCouplingPRDefault; // default values | |
120 | static const Double_t fgkSSDCouplingPLDefault; // for the | |
121 | static const Double_t fgkSSDCouplingNRDefault; // various SSD | |
122 | static const Double_t fgkSSDCouplingNLDefault; // couplings | |
123 | static const Int_t fgkSSDZSThresholdDefault; // default for fSSDZSThreshold | |
124 | ||
125 | static const Float_t fgkNsigmasDefault; //default for fNsigmas | |
126 | static const Int_t fgkNcompsDefault; //default for fNcomps | |
127 | ||
128 | private: | |
129 | Double_t fGeVcharge; // Energy to ionize (free an electron) in GeV | |
130 | Double_t fDOverV; // The parameter d/v where d is the disance over which the | |
131 | // the potential v is applied d/v [cm/volts] | |
132 | ||
133 | ||
134 | Double_t fSPDBiasVoltage; // Bias Voltage for the SPD | |
135 | Double_t fSPDThresh; // SPD Threshold value | |
136 | Double_t fSPDSigma; // SPD Noise + threshold fluctuations value | |
137 | TString fSPDCouplOpt; // SPD Coupling Option | |
138 | Double_t fSPDCouplCol; // SPD Coupling parameter along the cols | |
139 | Double_t fSPDCouplRow; // SPD Coupling parameter along the rows | |
140 | Float_t fSPDEccDiff; // Eccentricity (i.e. asymmetry parameter) in the | |
141 | // Gaussian diffusion for SPD | |
142 | ||
143 | Int_t fSDDElectronics; // SDD Electronics Pascal (1) or OLA (2) | |
144 | Float_t fSDDDiffCoeff; // SDD Diffusion Coefficient (scaling the time) | |
145 | Float_t fSDDDiffCoeff1; // SDD Diffusion Coefficient (constant term) | |
146 | Float_t fSDDJitterError; // SDD jitter error | |
147 | Float_t fSDDDynamicRange; // SDD Dynamic Range | |
148 | Float_t fSDDMaxAdc; // SDD ADC saturation value | |
149 | Float_t fSDDChargeLoss; // Set Linear Coefficient for Charge Loss | |
150 | ||
151 | Double_t fSSDADCpereV; // Constant to convert eV to ADC for SSD. | |
152 | Double_t fSSDCouplingPR; // SSD couplings | |
153 | Double_t fSSDCouplingPL; // SSD couplings | |
154 | Double_t fSSDCouplingNR; // SSD couplings | |
155 | Double_t fSSDCouplingNL; // SSD couplings | |
156 | Int_t fSSDZSThreshold; // SSD threshold for the zero suppresion | |
157 | ||
158 | Float_t fNsigmas; // Number of sigmas over which charge disintegration | |
159 | // is performed | |
160 | Int_t fNcomps; // Number of samplings along the gaussian | |
161 | TArrayF *fGaus; // Gaussian lookup table for signal generation | |
162 | ||
163 | ClassDef(AliITSSimuParam,1); | |
164 | }; | |
165 | #endif |