1 #ifndef ALIITSCALIBRATIONSPD_H
2 #define ALIITSCALIBRATIONSPD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 #include "AliITSCalibration.h"
10 #include "AliITSresponseSPD.h"
13 ////////////////////////////////////////////////////
15 // ITS response class for SPD //
16 ////////////////////////////////////////////////////
17 class AliITSCalibrationSPD : public AliITSCalibration {
19 AliITSCalibrationSPD(); // default constructor
20 virtual ~AliITSCalibrationSPD() {;} // destructror
22 // Set Threshold and noise + threshold fluctuations parameter values
23 virtual void SetThresholds(Double_t thresh, Double_t sigma)
24 {fThresh=thresh; fSigma=sigma;}
25 // Get Threshold and noise + threshold fluctuations parameter values
26 virtual void Thresholds(Double_t &thresh, Double_t &sigma) const
27 {thresh=fThresh; sigma=fSigma;}
28 // Set Bias Voltage parameter
29 virtual void SetBiasVoltage(Double_t bias=18.182) {fBiasVoltage=bias;}
30 Double_t GetBiasVoltage() const {return fBiasVoltage;}
31 //Returns just baseline value
32 Double_t GetBaseline() const {return fBaseline;}
33 // Set noise and baseline in one (abstract method of AliITSCalibration)
34 virtual void SetNoiseParam(Double_t n,Double_t b)
35 {fNoise = n;fBaseline = b;}
36 // Get noise and baseline in one (abstract method of AliITSCalibration)
37 virtual void GetNoiseParam(Double_t &n,Double_t &b) const
38 {n =fNoise;b = fBaseline;}
39 // Returns just noise value
40 Double_t GetNoise() const {return fNoise;}
41 //Declaration of member functions peculiar to this class
42 // Applies a random noise and addes the baseline
43 Double_t ApplyBaselineAndNoise() const {return fBaseline+
44 fNoise*gRandom->Gaus();}
45 // Set coupling parameters
46 virtual void SetCouplingParam(Double_t col, Double_t row)
47 {fCouplCol = col; fCouplRow = row;}
48 // Get coupling parameters
49 virtual void GetCouplingParam(Double_t &col, Double_t &row) const
50 {col = fCouplCol; row = fCouplRow;}
53 virtual void GiveCompressParam(Int_t *) const
54 {NotImplemented("GiveCompressParam");}
55 virtual void SetDetParam(Double_t *)
56 {NotImplemented("SetDetParam");}
57 virtual void GetDetParam(Double_t *) const
58 {NotImplemented("GetDetParam");}
59 virtual void SetNDetParam(Int_t /* n */)
60 {NotImplemented("SetNDetParam");}
61 virtual Int_t NDetParam() const
62 {NotImplemented("NDetParam"); return 0;}
63 virtual void SetSigmaSpread(Double_t, Double_t)
64 {NotImplemented("SetSigmaSpread");}
65 virtual void SigmaSpread(Double_t & /* p1 */,Double_t & /* p2 */) const
66 {NotImplemented("SigmaSpread");}
68 virtual void GetCouplingOption(char *opt) const {((AliITSresponseSPD*)fResponse)->CouplingOption(opt);}
69 virtual void SetCouplingOption(const char* opt) {((AliITSresponseSPD*)fResponse)->SetCouplingOption(opt);}
70 virtual void SetParamOptions(const char* a,const char* b) {((AliITSresponseSPD*)fResponse)->SetParamOptions(a,b);}
71 virtual void GetParamOptions(char *a,char* b) const {((AliITSresponseSPD*)fResponse)->ParamOptions(a,b);}
72 virtual void SetSigmaDiffusionAsymmetry(Double_t ecc) {((AliITSresponseSPD*)fResponse)->SetSigmaDiffusionAsymmetry(ecc);}
73 virtual void GetSigmaDiffusionAsymmetry(Double_t &ecc) const {((AliITSresponseSPD*)fResponse)->GetSigmaDiffusionAsymmetry(ecc);}
75 void AddDead(UInt_t col, UInt_t row);
76 Int_t GetNrDead() const {return fNrDead;}
77 Int_t GetDeadColAt(UInt_t index); //returns -1 if out of bounds
78 Int_t GetDeadRowAt(UInt_t index); //returns -1 if out of bounds
79 void ClearDead() {fDeadChannels.Reset(); fNrDead=0;}
80 Bool_t IsPixelDead(Int_t col, Int_t row) const ;
82 void AddNoisy(UInt_t col, UInt_t row);
83 Int_t GetNrNoisy() const {return fNrNoisy;}
84 Int_t GetNoisyColAt(UInt_t index); //returns -1 if out of bounds
85 Int_t GetNoisyRowAt(UInt_t index); //returns -1 if out of bounds
86 void ClearNoisy() {fNoisyChannels.Reset(); fNrNoisy=0;}
87 Bool_t IsPixelNoisy(Int_t col, Int_t row) const ;
89 void SetDeadList(TArrayI deadlist) {fDeadChannels=deadlist;}
90 void SetNoisyList(TArrayI noisylist) {fNoisyChannels=noisylist;}
91 void SetNrDead(UInt_t nr) {fNrDead=nr;}
92 void SetNrNoisy(UInt_t nr) {fNrNoisy=nr;}
95 // static const Double_t fgkDiffCoeffDefault; //default for fDiffCoeff
96 static const Double_t fgkThreshDefault; //default for fThresh
97 static const Double_t fgkSigmaDefault; //default for fSigma
98 static const Double_t fgkCouplColDefault; //default for fCouplCol
99 static const Double_t fgkCouplRowDefault; //default for fCouplRow
100 static const Double_t fgkBiasVoltageDefault; //default for fBiasVoltage
101 Double_t fBaseline; // Base-line value
102 Double_t fNoise; // Gaussian noise scale
103 Double_t fThresh; // Threshold value
104 Double_t fSigma; // Noise + threshold fluctuations value
105 Double_t fCouplCol; // Coupling parameter along the cols
106 Double_t fCouplRow; // Coupling parameter along the rows
107 Double_t fBiasVoltage; // Bias Voltage for the SPD (used to compute DistanceOverVoltage)
108 UInt_t fNrDead; // Nr of dead pixels
109 TArrayI fDeadChannels; // Array with dead channels info (col0,row0,col1...rowN) N = fNrDead
110 UInt_t fNrNoisy; // Nr of noisy pixels
111 TArrayI fNoisyChannels; // Array with noisy channels info (col0,row0,col1...rowN) N = fNrNoisy
113 ClassDef(AliITSCalibrationSPD,4) // SPD response