]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSOnlineSDDBTP.h
Code cleanup: elimination of hard coded numbers
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSDDBTP.h
1 #ifndef ALIITSONLINESDDBTP_H
2 #define ALIITSONLINESDDBTP_H
3
4 ///////////////////////////////////////////////////////////////////
5 //                                                               //
6 // Class used for SDD baseline, noise and gain analysis          //
7 // Origin: F.Prino, Torino, prino@to.infn.it                     //
8 //                                                               //
9 ///////////////////////////////////////////////////////////////////
10 #include "AliITSOnlineSDD.h"
11
12 class TH2F;
13 class TGraph;
14 class AliITSOnlineSDDBTP : public AliITSOnlineSDD {
15
16  public:
17   AliITSOnlineSDDBTP();
18   AliITSOnlineSDDBTP(Int_t mod, Int_t sid);
19   virtual ~AliITSOnlineSDDBTP();
20   void Reset();
21   void AddBaseEvent(TH2F* hrawd);
22   void AddTPEvent(TH2F* hrawd, Float_t xDAC);
23   void ValidateAnodes();
24   void SetMinBaseline(Float_t bas=10.){fMinBaseline=bas;}
25   void SetMaxBaseline(Float_t bas=150.){fMaxBaseline=bas;}
26   void SetMinRawNoise(Float_t ns=0.001){fMinRawNoise=ns;}
27   void SetMaxRawNoise(Float_t ns=9.){fMaxRawNoise=ns;}
28   void SetNSigmaNoise(Float_t ns=4.){fNSigmaNoise=ns;}
29   void SetNSigmaGain(Float_t sig=3.){fNSigmaGain=sig;}
30   Bool_t IsAnodeGood(Int_t iAnode)const{ return fGoodAnode[iAnode];}
31   Float_t GetAnodeBaseline(Int_t iAnode) const{
32     if(fNBaseEvents>0) return fSumBaseline[iAnode]/fNBaseEvents;
33     else return 0;
34   }
35   Float_t GetAnodeRawNoise(Int_t iAnode) const{
36     if(fNBaseEvents>0) return TMath::Sqrt(fSumRawNoise[iAnode]/fNBaseEvents-TMath::Power(GetAnodeBaseline(iAnode),2));
37     
38     else return 0;
39   }
40   Float_t CalcMeanRawNoise();
41   void StatGain(Float_t &mean, Float_t  &rms);
42   Float_t GetAnodeCommonMode(Int_t iAnode) const{
43     if(fNBaseEvents>0) return fSumCMN[iAnode]/fNBaseEvents;
44     else return 0;
45   }
46   Float_t GetChannelGain(Int_t iAnode)const{
47     if(fNTPEvents>0) return fSumTPPeak[iAnode]/fNTPEvents;
48     else return 0;
49   }
50   Int_t GetNBaseEvents() const {return fNBaseEvents;}
51   Int_t GetNTPEvents() const {return fNTPEvents;}
52   void WriteToFXS();
53
54  protected:
55
56  private:
57
58   Int_t fNBaseEvents;
59   Int_t fNTPEvents;
60   Bool_t fGoodAnode[fgkNAnodes];
61   Float_t fSumBaseline[fgkNAnodes];
62   Float_t fSumRawNoise[fgkNAnodes];
63   Float_t fSumCMN[fgkNAnodes];
64   Float_t fSumTPPeak[fgkNAnodes];
65   Float_t fTPPos[fgkNAnodes];
66   Float_t fMinBaseline;
67   Float_t fMaxBaseline;
68   Float_t fMinRawNoise;
69   Float_t fMaxRawNoise;
70   Float_t fNSigmaNoise;
71   Float_t fNSigmaGain;
72
73   ClassDef(AliITSOnlineSDDBTP,1);
74 };
75 #endif