ROOT logo
#ifndef ALITRDCALIBRAVDRIFTLINEARFIT_H
#define ALITRDCALIBRAVDRIFTLINEARFIT_H

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

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  TRD calibration class for online calibration                             //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

//#include "TObjArray.h"
#include "TObject.h"

//class TVectorD;
class TObjArray;
class TH2S;
class TH2;
class TTreeSRedirector;
class TString;
class TGraphErrors;
class TLinearFitter;
class TTreeSRedirector;

class AliTRDCalibraVdriftLinearFit : public TObject {

 public:

  AliTRDCalibraVdriftLinearFit();
  AliTRDCalibraVdriftLinearFit(const AliTRDCalibraVdriftLinearFit &ped);
  AliTRDCalibraVdriftLinearFit(const TObjArray &obja);
  virtual ~AliTRDCalibraVdriftLinearFit();
  virtual Long64_t Merge(const TCollection* list);
  virtual void Copy(TObject &c) const;

  AliTRDCalibraVdriftLinearFit& operator = (const  AliTRDCalibraVdriftLinearFit &source);

  void            Update(Int_t detector, Float_t tnp, Float_t pars1);
  void            FillPEArray();
  void            FillPEArray2();
  void            SetNameCalibUsed(const char*name)          { fNameCalibUsed = name;};
  const char*     GetNameCalibUsed() const                   { return fNameCalibUsed;};
  void            Add(const AliTRDCalibraVdriftLinearFit *ped);
  TH2S           *GetLinearFitterHisto(Int_t detector, Bool_t force=kFALSE);
  TH2S           *GetLinearFitterHistoForce(Int_t detector);
  TH2S           *GetLinearFitterHistoNoForce(Int_t detector) const   { return (TH2S*)fLinearFitterHistoArray.UncheckedAt(detector);};
  Bool_t          GetParam(Int_t detector, TVectorD *param);
  Bool_t          GetError(Int_t detector, TVectorD *error);
  Int_t           GetMinNumberOfPointsForFit() const         { return fMinNpointsFit;};
  TH2S           *AddAll();
  TGraphErrors   *DrawMS(const TH2 *const h2, Int_t &nEntries);

  TObjArray      *GetPArray()                    { return &fLinearFitterPArray;       };
  TObjArray      *GetEArray()                    { return &fLinearFitterEArray;       };
  TObjArray       GetHistoArray() const          { return fLinearFitterHistoArray;    };
  void            SetRobustFit(Bool_t robustFit) { fRobustFit = robustFit;            };
  void            SetMinNumberOfPointsForFit(Int_t minNpointsFit) { fMinNpointsFit = minNpointsFit;};

  void            SetNbBindx(Short_t nbBindx)    { fNbBindx = nbBindx;                };
  void            SetNbBindy(Short_t nbBindy)    { fNbBindy = nbBindy;                }
  void            SetRangedx(Double_t rangedx)   { fRangedx = rangedx;                };
  void            SetRangedy(Double_t rangedy)   { fRangedy = rangedy;                };

  // Debug
  void     SetDebugLevel(Short_t level)          { fDebugLevel = level;               };
  void     SetSeeDetector(Int_t seeDetector)     { fSeeDetector = seeDetector;        };

private:
  

  Int_t           fVersion;                 // Version of the object
  TString         fNameCalibUsed;           // Info of the version, subversion, firstrun of the calib used

  TObjArray       fLinearFitterHistoArray;  // TObjArray of histo2D for debugging Linear Fitters
  TObjArray       fLinearFitterPArray;      // Array of result parameters from linear fitters for the detectors
  TObjArray       fLinearFitterEArray;      // Array of result errors from linear fitters for the detectors
  Bool_t          fRobustFit;               // Robust fit or not
  Int_t           fMinNpointsFit;           // Min number of points for the fit  

  Short_t         fNbBindx;                 // Nb of bin in x
  Short_t         fNbBindy;                 // Nb of bin in y
  Double_t        fRangedx;                 // Range in x
  Double_t        fRangedy;                 // Range in y
  

 //For debugging
  TTreeSRedirector *fDebugStreamer;         //!Debug streamer
  Short_t           fDebugLevel;            // Flag for debugging
  Int_t             fSeeDetector;           // Detector to see
 
  ClassDef(AliTRDCalibraVdriftLinearFit,5)  // Online Vdrift calibration

};



#endif

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