ROOT logo
#ifndef ALIITSONLINESDDTP_H
#define ALIITSONLINESDDTP_H


///////////////////////////////////////////////////////////////////
//                                                               //
// Class used for SDD Test Pulse analysis                        //
// Origin: F.Prino, Torino, prino@to.infn.it                     //
//                                                               //
///////////////////////////////////////////////////////////////////

#include "AliITSOnlineSDD.h"

class TH1F;
class TH2F;
class AliITSOnlineSDDTP : public AliITSOnlineSDD {

 public:
  AliITSOnlineSDDTP();
  AliITSOnlineSDDTP(Int_t nddl, Int_t ncarlos, Int_t sid, Float_t xDAC);
  virtual ~AliITSOnlineSDDTP();
  void Reset();
  void AddEvent(TH2F* hrawd);
  void ValidateAnodes();
  void ReadBaselines();

  void SetNSigmaGain(Float_t sig=3.){fNSigmaGain=sig;}
  void SetNSigmaNoise(Float_t sig=10.){fNSigmaNoise=sig;}
  Bool_t IsModuleGood()const;
  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{return fCorrNoise[iAnode];}
  Float_t GetTimeBinTPPeak(Int_t iAnode) const{    
    if(fNEvents[iAnode]>0) return fTPPos[iAnode]/fNEvents[iAnode];
    else return 0;
  }
  Int_t GetNEvents(Int_t iAnode) const {return fNEvents[iAnode];}
  Float_t GetChannelGain(Int_t iAnode)const{
    if(fNEvents[iAnode]>0) return fSumTPPeak[iAnode]/fNEvents[iAnode]/fDAC;
    else return 0;
  }
  void StatGain(Float_t &mean, Float_t  &rms) const;
  void WriteToASCII();
  Bool_t WriteToROOT(TFile *fil);

  TH1F* GetBaselineAnodeHisto() const;
  TH1F* GetRawNoiseAnodeHisto() const;
  TH1F* GetCorrNoiseAnodeHisto() const;
  TH1F* GetCMNCoefAnodeHisto() const;
  TH1F* GetGainAnodeHisto() const;
  TH1F* GetStatusAnodeHisto() const;

 protected:

 private:
  Int_t fNEvents[fgkNAnodes];      // number of TP events for given anode
  Float_t fDAC;                    // Pascal Test Pulse amplitude (DAC units)
  Int_t fLowThreshold;           // low threshold for zero supp.
  Int_t fHighThreshold;          // high threshold for zero supp.
  Bool_t fGoodAnode[fgkNAnodes];   // array of anode quality (1 good, 0 bad) 
  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 fCMN[fgkNAnodes];        // common mode noise coeff.
  Float_t fCorrNoise[fgkNAnodes];  // array of anode corrected noise
  Float_t fSumTPPeak[fgkNAnodes];  // test pulse amplitude summed over events
  Float_t fTPPos[fgkNAnodes];      // test pulse position
  Float_t fNSigmaGain;             // Cut value for gain (n*sigma)
  Float_t fNSigmaNoise;            // Threshold for TP signal identification
  ClassDef(AliITSOnlineSDDTP,4);
};
#endif
 AliITSOnlineSDDTP.h:1
 AliITSOnlineSDDTP.h:2
 AliITSOnlineSDDTP.h:3
 AliITSOnlineSDDTP.h:4
 AliITSOnlineSDDTP.h:5
 AliITSOnlineSDDTP.h:6
 AliITSOnlineSDDTP.h:7
 AliITSOnlineSDDTP.h:8
 AliITSOnlineSDDTP.h:9
 AliITSOnlineSDDTP.h:10
 AliITSOnlineSDDTP.h:11
 AliITSOnlineSDDTP.h:12
 AliITSOnlineSDDTP.h:13
 AliITSOnlineSDDTP.h:14
 AliITSOnlineSDDTP.h:15
 AliITSOnlineSDDTP.h:16
 AliITSOnlineSDDTP.h:17
 AliITSOnlineSDDTP.h:18
 AliITSOnlineSDDTP.h:19
 AliITSOnlineSDDTP.h:20
 AliITSOnlineSDDTP.h:21
 AliITSOnlineSDDTP.h:22
 AliITSOnlineSDDTP.h:23
 AliITSOnlineSDDTP.h:24
 AliITSOnlineSDDTP.h:25
 AliITSOnlineSDDTP.h:26
 AliITSOnlineSDDTP.h:27
 AliITSOnlineSDDTP.h:28
 AliITSOnlineSDDTP.h:29
 AliITSOnlineSDDTP.h:30
 AliITSOnlineSDDTP.h:31
 AliITSOnlineSDDTP.h:32
 AliITSOnlineSDDTP.h:33
 AliITSOnlineSDDTP.h:34
 AliITSOnlineSDDTP.h:35
 AliITSOnlineSDDTP.h:36
 AliITSOnlineSDDTP.h:37
 AliITSOnlineSDDTP.h:38
 AliITSOnlineSDDTP.h:39
 AliITSOnlineSDDTP.h:40
 AliITSOnlineSDDTP.h:41
 AliITSOnlineSDDTP.h:42
 AliITSOnlineSDDTP.h:43
 AliITSOnlineSDDTP.h:44
 AliITSOnlineSDDTP.h:45
 AliITSOnlineSDDTP.h:46
 AliITSOnlineSDDTP.h:47
 AliITSOnlineSDDTP.h:48
 AliITSOnlineSDDTP.h:49
 AliITSOnlineSDDTP.h:50
 AliITSOnlineSDDTP.h:51
 AliITSOnlineSDDTP.h:52
 AliITSOnlineSDDTP.h:53
 AliITSOnlineSDDTP.h:54
 AliITSOnlineSDDTP.h:55
 AliITSOnlineSDDTP.h:56
 AliITSOnlineSDDTP.h:57
 AliITSOnlineSDDTP.h:58
 AliITSOnlineSDDTP.h:59
 AliITSOnlineSDDTP.h:60
 AliITSOnlineSDDTP.h:61
 AliITSOnlineSDDTP.h:62
 AliITSOnlineSDDTP.h:63
 AliITSOnlineSDDTP.h:64
 AliITSOnlineSDDTP.h:65
 AliITSOnlineSDDTP.h:66
 AliITSOnlineSDDTP.h:67
 AliITSOnlineSDDTP.h:68
 AliITSOnlineSDDTP.h:69
 AliITSOnlineSDDTP.h:70
 AliITSOnlineSDDTP.h:71
 AliITSOnlineSDDTP.h:72
 AliITSOnlineSDDTP.h:73
 AliITSOnlineSDDTP.h:74
 AliITSOnlineSDDTP.h:75
 AliITSOnlineSDDTP.h:76
 AliITSOnlineSDDTP.h:77