]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSSimuParam.h
New check for bad SDD modules (F. Prino)
[u/mrichter/AliRoot.git] / ITS / AliITSSimuParam.h
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