ROOT logo
#ifndef ALITPCCALIBPEDESTAL_H
#define ALITPCCALIBPEDESTAL_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/////////////////////////////////////////////////////////////////////////////////////////
//                                                                                     //
//                  Implementation of the TPC pedestal calibration                     //
//                                                                                     //
/////////////////////////////////////////////////////////////////////////////////////////

#include <TObjArray.h>
#include "AliTPCCalibRawBase.h"

class TArrayF;
class TH2F;
class TTreeSRedirector;
class AliTPCROC;
class AliTPCCalROC;
class AliRawReader;
class TMap;

struct eventHeaderStruct;

class AliTPCCalibPedestal : public AliTPCCalibRawBase {

public:
  AliTPCCalibPedestal();
  AliTPCCalibPedestal(const AliTPCCalibPedestal &ped);
  AliTPCCalibPedestal(const TMap *config);
  virtual ~AliTPCCalibPedestal();

  AliTPCCalibPedestal& operator = (const  AliTPCCalibPedestal &source);

  virtual Int_t  Update(const Int_t isector, const Int_t iRow, const Int_t iPad,
	        const Int_t iTimeBin, const Float_t signal);
  virtual void   Analyse();
  //
  AliTPCCalROC* GetCalRocPedestal (Int_t sector, Bool_t force=kFALSE);  // get calibration object - sector
  AliTPCCalROC* GetCalRocSigma(Int_t sector, Bool_t force=kFALSE);        // get calibration object - sector
  const TObjArray* GetCalPadPedestal() const {return &fCalRocArrayPedestal;}  // get calibration object
  const TObjArray* GetCalPadSigma() const {return &fCalRocArraySigma;}             // get calibration object

  AliTPCCalROC* GetCalRocMean (Int_t sector, Bool_t force=kFALSE);      // get calibration object - sector
  AliTPCCalROC* GetCalRocRMS(Int_t sector, Bool_t force=kFALSE);        // get calibration object - sector
  const TObjArray* GetCalPadMean() const {return &fCalRocArrayMean;}          // get calibration object
  const TObjArray* GetCalPadRMS()  const {return &fCalRocArrayRMS;}             // get calibration object
  
  TH2F* GetHistoPedestal  (Int_t sector, Bool_t force=kFALSE);          // get refernce histogram
  //
  void  SetTimeAnalysis(Bool_t time = kTRUE);                  // Use ONLY in TPCPEDESTALda on LDC for one sector!
  void  AnalyseTime(Int_t nevents);                            // Makes sense only in TPCPEDESTALda on LDC!
  TArrayF **GetTimePedestals()  const { return fTimeSignal; }  // Get array with time dependent pedestals (for one sector!)
  //
  Int_t   GetAdcMin()       const { return fAdcMin;       }
  Int_t   GetAdcMax()       const { return fAdcMax;       }
  Float_t GetAnaMeanDown()  const { return fAnaMeanDown;  }
  Float_t GetAnaMeanUp()    const { return fAnaMeanUp;    }
  
  void  SetRangeAdc (Int_t aMin, Int_t aMax){ fAdcMin=aMin; fAdcMax=aMax; }  // Set adc range for the pedestal calibration
  void  SetAnalysisTruncationRange(Float_t down, Float_t up) {fAnaMeanDown=down; fAnaMeanUp=up;}    //Set range for truncated mean analysis of the channel information

  void  Merge(AliTPCCalibPedestal * const ped);
  virtual Long64_t Merge(TCollection * const list);
  
  Bool_t TestEvent();  // Test the fast approach to fill histogram - used for test purposes

private:
  Int_t fAdcMin;                    //  min adc channel of pedestal value
  Int_t fAdcMax;                    //  max adc channel of pedestal value

  Float_t fAnaMeanDown;             // Truncated mean channel analysis - lower cut
  Float_t fAnaMeanUp;               // Truncated mean channel analysis - upper cut
  
  Bool_t  fTimeAnalysis;            //! Should we use the time dependent analysis? ONLY ON LDC!

  TObjArray fCalRocArrayPedestal;   //  Array of AliTPCCalROC class for pedestal values from gaus fit
  TObjArray fCalRocArraySigma;      //  Array of AliTPCCalROC class for noise values from gaus fit

  TObjArray fHistoPedestalArray;    //  Calibration histograms for Pedestal distribution

  TArrayF **fTimeSignal;            //! Arrays which hold time dependent signals
  
  TObjArray fCalRocArrayMean;       //  Array of AliTPCCalROC class for pedestal values, simple mean
  TObjArray fCalRocArrayRMS;        //  Array of AliTPCCalROC class for noise values, simple rms

  TH2F* GetHisto(Int_t sector, TObjArray *arr,
		 Int_t nbinsY, Float_t ymin, Float_t ymax,
		 const Char_t *type, Bool_t force);

  AliTPCCalROC* GetCalRoc(Int_t sector, TObjArray* arr, Bool_t force);

  ClassDef(AliTPCCalibPedestal, 7)  // Implementation of the TPC pedestal and noise calibration
};



#endif

 AliTPCCalibPedestal.h:1
 AliTPCCalibPedestal.h:2
 AliTPCCalibPedestal.h:3
 AliTPCCalibPedestal.h:4
 AliTPCCalibPedestal.h:5
 AliTPCCalibPedestal.h:6
 AliTPCCalibPedestal.h:7
 AliTPCCalibPedestal.h:8
 AliTPCCalibPedestal.h:9
 AliTPCCalibPedestal.h:10
 AliTPCCalibPedestal.h:11
 AliTPCCalibPedestal.h:12
 AliTPCCalibPedestal.h:13
 AliTPCCalibPedestal.h:14
 AliTPCCalibPedestal.h:15
 AliTPCCalibPedestal.h:16
 AliTPCCalibPedestal.h:17
 AliTPCCalibPedestal.h:18
 AliTPCCalibPedestal.h:19
 AliTPCCalibPedestal.h:20
 AliTPCCalibPedestal.h:21
 AliTPCCalibPedestal.h:22
 AliTPCCalibPedestal.h:23
 AliTPCCalibPedestal.h:24
 AliTPCCalibPedestal.h:25
 AliTPCCalibPedestal.h:26
 AliTPCCalibPedestal.h:27
 AliTPCCalibPedestal.h:28
 AliTPCCalibPedestal.h:29
 AliTPCCalibPedestal.h:30
 AliTPCCalibPedestal.h:31
 AliTPCCalibPedestal.h:32
 AliTPCCalibPedestal.h:33
 AliTPCCalibPedestal.h:34
 AliTPCCalibPedestal.h:35
 AliTPCCalibPedestal.h:36
 AliTPCCalibPedestal.h:37
 AliTPCCalibPedestal.h:38
 AliTPCCalibPedestal.h:39
 AliTPCCalibPedestal.h:40
 AliTPCCalibPedestal.h:41
 AliTPCCalibPedestal.h:42
 AliTPCCalibPedestal.h:43
 AliTPCCalibPedestal.h:44
 AliTPCCalibPedestal.h:45
 AliTPCCalibPedestal.h:46
 AliTPCCalibPedestal.h:47
 AliTPCCalibPedestal.h:48
 AliTPCCalibPedestal.h:49
 AliTPCCalibPedestal.h:50
 AliTPCCalibPedestal.h:51
 AliTPCCalibPedestal.h:52
 AliTPCCalibPedestal.h:53
 AliTPCCalibPedestal.h:54
 AliTPCCalibPedestal.h:55
 AliTPCCalibPedestal.h:56
 AliTPCCalibPedestal.h:57
 AliTPCCalibPedestal.h:58
 AliTPCCalibPedestal.h:59
 AliTPCCalibPedestal.h:60
 AliTPCCalibPedestal.h:61
 AliTPCCalibPedestal.h:62
 AliTPCCalibPedestal.h:63
 AliTPCCalibPedestal.h:64
 AliTPCCalibPedestal.h:65
 AliTPCCalibPedestal.h:66
 AliTPCCalibPedestal.h:67
 AliTPCCalibPedestal.h:68
 AliTPCCalibPedestal.h:69
 AliTPCCalibPedestal.h:70
 AliTPCCalibPedestal.h:71
 AliTPCCalibPedestal.h:72
 AliTPCCalibPedestal.h:73
 AliTPCCalibPedestal.h:74
 AliTPCCalibPedestal.h:75
 AliTPCCalibPedestal.h:76
 AliTPCCalibPedestal.h:77
 AliTPCCalibPedestal.h:78
 AliTPCCalibPedestal.h:79
 AliTPCCalibPedestal.h:80
 AliTPCCalibPedestal.h:81
 AliTPCCalibPedestal.h:82
 AliTPCCalibPedestal.h:83
 AliTPCCalibPedestal.h:84
 AliTPCCalibPedestal.h:85
 AliTPCCalibPedestal.h:86
 AliTPCCalibPedestal.h:87
 AliTPCCalibPedestal.h:88
 AliTPCCalibPedestal.h:89
 AliTPCCalibPedestal.h:90
 AliTPCCalibPedestal.h:91
 AliTPCCalibPedestal.h:92
 AliTPCCalibPedestal.h:93
 AliTPCCalibPedestal.h:94
 AliTPCCalibPedestal.h:95
 AliTPCCalibPedestal.h:96
 AliTPCCalibPedestal.h:97
 AliTPCCalibPedestal.h:98
 AliTPCCalibPedestal.h:99