ROOT logo
#ifndef ALIITSONLINESDDCMN_H
#define ALIITSONLINESDDCMN_H

///////////////////////////////////////////////////////////////////
//                                                               //
// Class used for SDD noise corrected for common mode analysis   //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////
#include "AliITSOnlineSDD.h"

class TH1F;
class TH2F;
class TGraph;
class AliITSOnlineSDDCMN : public AliITSOnlineSDD {

 public:
  AliITSOnlineSDDCMN();
  AliITSOnlineSDDCMN(Int_t nddl, Int_t ncarlos, Int_t sid);
  virtual ~AliITSOnlineSDDCMN();
  void Reset();
  TH2F* GetCleanEvent(const TH2F* hrawd) const;
  void AddEvent(TH2F* hrawd);
  void ValidateAnodes();
  void ReadBaselines();

  void SetMinNoise(Float_t ns=0.001){fMinCorrNoise=ns;}
  void SetMaxNoise(Float_t ns=9.){fMaxCorrNoise=ns;}
  void SetNSigmaNoise(Float_t ns=4.){fNSigmaNoise=ns;}

  Bool_t IsAnodeGood(Int_t iAnode)const{ return fGoodAnode[iAnode];}
  Float_t GetAnodeBaseline(Int_t iAnode) const{ return fBaseline[iAnode];}
  Int_t GetAnodeEqualizedBaseline(Int_t iAnode) const{ return fEqBaseline[iAnode];}
  Int_t GetAnodeBaselineOffset(Int_t iAnode) const{ return fOffsetBaseline[iAnode];}
  Float_t GetAnodeRawNoise(Int_t iAnode) const{ return fRawNoise[iAnode];}
  Float_t GetAnodeCommonMode(Int_t iAnode) const{ return fCMN[iAnode];}
  Float_t GetAnodeCorrNoise(Int_t iAnode) const{
    if(fNEvents>0) return fSumCorrNoise[iAnode]/fNEvents;
    else return 0;
  }

  Float_t CalcMeanNoise() const;
  Int_t GetNEvents() const {return fNEvents;}
  
  TH1F* GetBaselineAnodeHisto() const;
  TH1F* GetRawNoiseAnodeHisto() const;
  TH1F* GetCorrNoiseAnodeHisto() const;
  TH1F* GetCMNCoefAnodeHisto() const;
  TH1F* GetStatusAnodeHisto() const;
  TH1F* GetBaselineHisto() const;
  TH1F* GetRawNoiseHisto() const;
  TH1F* GetCorrNoiseHisto() const;

  void WriteToASCII();
  Bool_t WriteToROOT(TFile *fil);

 protected:

 private:
  Int_t fNEvents;                    // number of events
  Int_t fLowThreshold;             // low threshold for zero supp.
  Int_t fHighThreshold;            // high threshold for zero supp.
  Bool_t fGoodAnode[fgkNAnodes];     // anode quality: good(1) - bad (0)
  Float_t fBaseline[fgkNAnodes];     // array of anode baselines
  Int_t fEqBaseline[fgkNAnodes];     // array of anode baselines after equalization
  Int_t fOffsetBaseline[fgkNAnodes]; // array of offsets for baseline equal.
  Float_t fRawNoise[fgkNAnodes];     // array of anode raw noise
  Float_t fSumCorrNoise[fgkNAnodes]; // corrected noise summed over events
  Float_t fCMN[fgkNAnodes];          // common mode noise coeff.
  Float_t fMinCorrNoise;             // Cut value for minimum corrected noise
  Float_t fMaxCorrNoise;             // Cut value for maximum corrected noise
  Float_t fNSigmaNoise;              // Cut value for corrected noise (n*sigma)

  ClassDef(AliITSOnlineSDDCMN,3);
};
#endif
 AliITSOnlineSDDCMN.h:1
 AliITSOnlineSDDCMN.h:2
 AliITSOnlineSDDCMN.h:3
 AliITSOnlineSDDCMN.h:4
 AliITSOnlineSDDCMN.h:5
 AliITSOnlineSDDCMN.h:6
 AliITSOnlineSDDCMN.h:7
 AliITSOnlineSDDCMN.h:8
 AliITSOnlineSDDCMN.h:9
 AliITSOnlineSDDCMN.h:10
 AliITSOnlineSDDCMN.h:11
 AliITSOnlineSDDCMN.h:12
 AliITSOnlineSDDCMN.h:13
 AliITSOnlineSDDCMN.h:14
 AliITSOnlineSDDCMN.h:15
 AliITSOnlineSDDCMN.h:16
 AliITSOnlineSDDCMN.h:17
 AliITSOnlineSDDCMN.h:18
 AliITSOnlineSDDCMN.h:19
 AliITSOnlineSDDCMN.h:20
 AliITSOnlineSDDCMN.h:21
 AliITSOnlineSDDCMN.h:22
 AliITSOnlineSDDCMN.h:23
 AliITSOnlineSDDCMN.h:24
 AliITSOnlineSDDCMN.h:25
 AliITSOnlineSDDCMN.h:26
 AliITSOnlineSDDCMN.h:27
 AliITSOnlineSDDCMN.h:28
 AliITSOnlineSDDCMN.h:29
 AliITSOnlineSDDCMN.h:30
 AliITSOnlineSDDCMN.h:31
 AliITSOnlineSDDCMN.h:32
 AliITSOnlineSDDCMN.h:33
 AliITSOnlineSDDCMN.h:34
 AliITSOnlineSDDCMN.h:35
 AliITSOnlineSDDCMN.h:36
 AliITSOnlineSDDCMN.h:37
 AliITSOnlineSDDCMN.h:38
 AliITSOnlineSDDCMN.h:39
 AliITSOnlineSDDCMN.h:40
 AliITSOnlineSDDCMN.h:41
 AliITSOnlineSDDCMN.h:42
 AliITSOnlineSDDCMN.h:43
 AliITSOnlineSDDCMN.h:44
 AliITSOnlineSDDCMN.h:45
 AliITSOnlineSDDCMN.h:46
 AliITSOnlineSDDCMN.h:47
 AliITSOnlineSDDCMN.h:48
 AliITSOnlineSDDCMN.h:49
 AliITSOnlineSDDCMN.h:50
 AliITSOnlineSDDCMN.h:51
 AliITSOnlineSDDCMN.h:52
 AliITSOnlineSDDCMN.h:53
 AliITSOnlineSDDCMN.h:54
 AliITSOnlineSDDCMN.h:55
 AliITSOnlineSDDCMN.h:56
 AliITSOnlineSDDCMN.h:57
 AliITSOnlineSDDCMN.h:58
 AliITSOnlineSDDCMN.h:59
 AliITSOnlineSDDCMN.h:60
 AliITSOnlineSDDCMN.h:61
 AliITSOnlineSDDCMN.h:62
 AliITSOnlineSDDCMN.h:63
 AliITSOnlineSDDCMN.h:64
 AliITSOnlineSDDCMN.h:65
 AliITSOnlineSDDCMN.h:66
 AliITSOnlineSDDCMN.h:67
 AliITSOnlineSDDCMN.h:68
 AliITSOnlineSDDCMN.h:69
 AliITSOnlineSDDCMN.h:70
 AliITSOnlineSDDCMN.h:71
 AliITSOnlineSDDCMN.h:72
 AliITSOnlineSDDCMN.h:73
 AliITSOnlineSDDCMN.h:74
 AliITSOnlineSDDCMN.h:75
 AliITSOnlineSDDCMN.h:76