fix bugs add new features
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSDDTP.h
index b1052d7..0fef276 100644 (file)
@@ -9,15 +9,15 @@
 //                                                               //
 ///////////////////////////////////////////////////////////////////
 
-#include"AliITSOnlineSDD.h"
+#include "AliITSOnlineSDD.h"
 
+class TH1F;
 class TH2F;
-class TGraph;
 class AliITSOnlineSDDTP : public AliITSOnlineSDD {
 
  public:
   AliITSOnlineSDDTP();
-  AliITSOnlineSDDTP(Int_t mod, Int_t sid,Float_t xDAQ);
+  AliITSOnlineSDDTP(Int_t nddl, Int_t ncarlos, Int_t sid, Float_t xDAC);
   virtual ~AliITSOnlineSDDTP();
   void Reset();
   void AddEvent(TH2F* hrawd);
@@ -25,26 +25,53 @@ class AliITSOnlineSDDTP : public AliITSOnlineSDD {
   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];}
-  Int_t GetNEvents() const {return fNEvents;}
+  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>0) return fSumTPPeak[iAnode]/fNEvents/fDAQ;
+    if(fNEvents[iAnode]>0) return fSumTPPeak[iAnode]/fNEvents[iAnode]/fDAC;
     else return 0;
   }
-  void StatGain(Float_t &mean, Float_t  &rms);
-  void WriteToFXS();
+  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;
-  Float_t fDAQ;
-  Bool_t fGoodAnode[fgkNAnodes];
-  Float_t fBaseline[fgkNAnodes];
-  Float_t fSumTPPeak[fgkNAnodes];
-  Float_t fTPPos[fgkNAnodes];
-  Float_t fNSigmaGain;
-
-  ClassDef(AliITSOnlineSDDTP,1);
+  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