Update for Ds
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSDDBase.h
CommitLineData
348f80b7 1#ifndef ALIITSONLINESDDBASE_H
2#define ALIITSONLINESDDBASE_H
3
4///////////////////////////////////////////////////////////////////
5// //
6// Class used for SDD baseline and noise analysis //
7// Origin: F.Prino, Torino, prino@to.infn.it //
8// //
9///////////////////////////////////////////////////////////////////
0e5e647a 10#include "AliITSOnlineSDD.h"
11#include <TMath.h>
348f80b7 12
13class TH2F;
14class TGraph;
15class AliITSOnlineSDDBase : public AliITSOnlineSDD {
16
17 public:
18 AliITSOnlineSDDBase();
979b5a5f 19 AliITSOnlineSDDBase(Int_t nddl, Int_t ncarlos, Int_t sid);
348f80b7 20 virtual ~AliITSOnlineSDDBase();
21 void Reset();
22 void AddEvent(TH2F* hrawd);
23 void ValidateAnodes();
24
25 void SetMinBaseline(Float_t bas=10.){fMinBaseline=bas;}
26 void SetMaxBaseline(Float_t bas=150.){fMaxBaseline=bas;}
1f8a8566 27 void SetMinRawNoise(Float_t ns=0.5){fMinRawNoise=ns;}
348f80b7 28 void SetMaxRawNoise(Float_t ns=9.){fMaxRawNoise=ns;}
29 void SetNSigmaNoise(Float_t ns=4.){fNSigmaNoise=ns;}
e7610d19 30 void SetGoldenBaselineValue(Float_t val=20.){fGoldenBaseline=val;}
31 void SetZeroSuppThresholds(Float_t vall=2.2,Float_t valh=4.){
32 fLowThrFact=vall;
33 fHighThrFact=valh;
34 }
348f80b7 35
36 Bool_t IsAnodeGood(Int_t iAnode)const{ return fGoodAnode[iAnode];}
37 Float_t GetAnodeBaseline(Int_t iAnode) const{
38 if(fNEvents>0) return fSumBaseline[iAnode]/fNEvents;
39 else return 0;
40 }
e7610d19 41 void GetMinAndMaxBaseline(Float_t &basMin, Float_t &basMax) const;
d8303ac8 42 Float_t GetMinimumBaseline() const;
776c19a3 43 Float_t GetAnodeRawNoise(Int_t iAnode) const;
348f80b7 44
116c6c50 45 Int_t CountGoodAnodes() const{
46 Int_t nGdAn=0;
47 for(Int_t ian=0;ian<fgkNAnodes;ian++) if(fGoodAnode[ian]) nGdAn++;
48 return nGdAn;
49 }
beb262b4 50 Float_t CalcMeanRawNoise() const;
348f80b7 51 Float_t GetAnodeCommonMode(Int_t iAnode) const{
52 if(fNEvents>0) return fSumCMN[iAnode]/fNEvents;
53 else return 0;
54 }
55 Int_t GetNEvents() const {return fNEvents;}
e44f571c 56 void WriteToASCII();
348f80b7 57
58 protected:
59
60 private:
e7610d19 61 static const Int_t fgkMaxCorr; // maximum baseline correction in AMBRA (=63)
62
beb262b4 63 Int_t fNEvents; // number of events
64 Bool_t fGoodAnode[fgkNAnodes]; // anode quality: good(1) - bad (0)
65 Float_t fSumBaseline[fgkNAnodes]; // baseline summed over events
66 Float_t fSumRawNoise[fgkNAnodes]; // noise summed over events
67 Float_t fSumCMN[fgkNAnodes]; // common mode noise coeff.
68 Float_t fMinBaseline; // Cut value for minimum baseline
69 Float_t fMaxBaseline; // Cut value for maximum baseline
70 Float_t fMinRawNoise; // Cut value for minimum noise
71 Float_t fMaxRawNoise; // Cut value for maximum noise
72 Float_t fNSigmaNoise; // Cut value for noise (n*sigma)
e7610d19 73 Float_t fGoldenBaseline; // golden value for equalizing baselines
74 Float_t fLowThrFact; // factor for low threshold
75 Float_t fHighThrFact; // factor for high threshold
348f80b7 76
e7610d19 77 ClassDef(AliITSOnlineSDDBase,2);
348f80b7 78};
776c19a3 79
80inline Float_t AliITSOnlineSDDBase::GetAnodeRawNoise(Int_t iAnode) const{
81 // compute raw noise for given anode
82 Float_t noise2=0.;
83 if(fNEvents>0) noise2=fSumRawNoise[iAnode]/fNEvents-fSumBaseline[iAnode]*fSumBaseline[iAnode]/fNEvents/fNEvents;
84 if(noise2>0.) return TMath::Sqrt(noise2);
85 else return 0;
86}
87
348f80b7 88#endif