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

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  TRD calibration class                                                    //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObject
#  include <TObject.h>
#endif

class TGraphErrors;
class TH1F;
class TObjArray;

class AliTRDPhInfo;
class AliTRDEntriesInfo;
class AliTRDPrfInfo;

class AliTRDCalibraVector : public TObject {

 public: 

  AliTRDCalibraVector();
  AliTRDCalibraVector(const AliTRDCalibraVector &c);
  virtual ~AliTRDCalibraVector();
  virtual Long64_t Merge(const TCollection* list);

  AliTRDCalibraVector& operator = (const  AliTRDCalibraVector &source);

  // Init
  void           TestInit(Int_t i, Int_t detmax);

  // Fill
  Bool_t         UpdateVectorCH(Int_t det, Int_t group, Float_t value);
  Bool_t         UpdateVectorPRF(Int_t det, Int_t group, Float_t x, Float_t y);
  Bool_t         UpdateVectorPH(Int_t det, Int_t group, Int_t time, Float_t value);


  Bool_t         FillVectorCH(Int_t det, Int_t group, Int_t bin, Int_t entries);
  Bool_t         FillVectorPRF(Int_t det, Int_t group, Int_t bin, Int_t entries, Float_t mean, Float_t square);
  Bool_t         FillVectorPH(Int_t det, Int_t group, Int_t bin, Int_t entries, Float_t mean, Float_t square);


  // Add
  Bool_t         Add(AliTRDCalibraVector *calvector);

  AliTRDCalibraVector *AddStatsPerDetectorCH();
  AliTRDCalibraVector *AddStatsPerDetectorPH();
  AliTRDCalibraVector *AddStatsPerDetectorPRF();

  
  // Fit
  TGraphErrors  *ConvertVectorPHTGraphErrors(Int_t det, Int_t group, const Char_t *name);
  TGraphErrors  *ConvertVectorPRFTGraphErrors(Int_t det, Int_t group, const Char_t *name);
  TH1F          *CorrectTheError(const TGraphErrors *hist, Int_t &nbEntries);
  TH1F          *ConvertVectorCHHisto(Int_t det, Int_t group, const Char_t *name);

  // Find
  Int_t          SearchBin(Float_t value, Int_t i) const;  
  Bool_t         FindTheMaxEntries(Int_t i, Int_t &detectormax, Int_t &groupmax);

  //
  // Set and Get methods
  //

  void           SetNumberBinCharge(Short_t numberbincharge)   { fNumberBinCharge = numberbincharge;            } 
  void           SetNumberBinPRF(Short_t numberbinprf)         { fNumberBinPRF    = numberbinprf;               } 
  void           SetTimeMax(Int_t timemax)                     { fTimeMax         = timemax;                    } 
  void           SetPRFRange(Float_t prfrange)                 { fPRFRange        = prfrange;                   }  
  void           SetDetCha0(Int_t i, Short_t total)            { fDetCha0[i]      = total;                      } 
  void           SetDetCha2(Int_t i, Short_t total)            { fDetCha2[i]      = total;                      } 
  void           SetNzNrphi(Int_t i, Int_t nz, Int_t nrphi);    
  void           SetNbGroupPRF(Int_t nbGroup)                  { fNbGroupPRF = (UChar_t) nbGroup;               } 

  Short_t        GetNumberBinCharge()const                     { return fNumberBinCharge;                       }
  Short_t        GetNumberBinPRF()const                        { return fNumberBinPRF;                          }
  Int_t          GetTimeMax()const                             { return fTimeMax;                               } 
  Float_t        GetPRFRange()const                            { return fPRFRange;                              } 
  Short_t        GetDetCha0(Int_t i) const                     { return fDetCha0[i];                            }
  Short_t        GetDetCha2(Int_t i) const                     { return fDetCha2[i];                            }
  TString        GetNamePH() const;    
  TString        GetNamePRF() const;   
  TString        GetNameCH() const;  
  Int_t          GetNz(Int_t i) const;
  Int_t          GetNrphi(Int_t i) const;
  Int_t          GetNbGroupPRF() const                         { return (Int_t)fNbGroupPRF;                     }

  Int_t          GetTotalNumberOfBinsInDetector(Int_t det, Int_t i, Int_t nbBin) const;

  TObject               *GetPHEntries(Int_t det,Bool_t force = kFALSE);
  TObject               *GetPHMean(Int_t det,Bool_t force = kFALSE);
  TObject               *GetPHSquares(Int_t det,Bool_t force = kFALSE);
  
  TObject               *GetPRFEntries(Int_t det,Bool_t force = kFALSE);
  TObject               *GetPRFMean(Int_t det,Bool_t force = kFALSE);
  TObject               *GetPRFSquares(Int_t det,Bool_t force = kFALSE);
  
  TObject               *GetCHEntries(Int_t det,Bool_t force = kFALSE);

   
  
 protected:
  
  // Current data
  
  AliTRDEntriesInfo     *fPHEntries[540];                //  PH entries
  AliTRDPhInfo          *fPHMean[540];                   //  PH Mean
  AliTRDPhInfo          *fPHSquares[540];                //  PH Squares
  
  AliTRDEntriesInfo     *fPRFEntries[540];               //  PRF entries
  AliTRDPrfInfo         *fPRFMean[540];                  //  PRF Mean
  AliTRDPrfInfo         *fPRFSquares[540];               //  PRF Squares
  
  AliTRDEntriesInfo     *fCHEntries[540];                //  CH entries
  
  UChar_t      fModeCH;                         //  Calibration mode
  UChar_t      fModePH;                         //  Calibration mode
  UChar_t      fModePRF;                        //  Calibration mode
  UChar_t      fNbGroupPRF;                     //  Nb of group PRD
  
  
  Int_t            fDetectorPH;                //!  Current detector
  Int_t            fDetectorCH;                //!  Current detector
  Int_t            fDetectorPRF;               //!  Current detector
  Bool_t           fStopFillCH;                //!  To know if we stop to fill
  TH1F            *fHisto;                     //!  Histo to be fitted
  TGraphErrors    *fGraph;                     //!  TGraphError
  AliTRDCalibraVector *fCalVector;             //!  AliTRDCalibraVector
  
  // Size of the infos
  
  Short_t          fNumberBinCharge;          // Number of bins for the gain factor
  Short_t          fNumberBinPRF;             // Number of bin for the PRF
  Int_t            fTimeMax;                  // Number of time bins
  Float_t          fPRFRange;                 // Range PRF
  Short_t          fDetCha0[3];               // Number of XBins for chamber != 2
  Short_t          fDetCha2[3];               // Number of Xbins for chamber 2
  
  // Some functions
  
  AliTRDEntriesInfo  *GetEntriesPH(Int_t det, AliTRDEntriesInfo** array, Bool_t force);
  AliTRDPhInfo       *GetMeanSquaresPH(Int_t det, AliTRDPhInfo** array, Bool_t force);
  
  AliTRDEntriesInfo  *GetEntriesPRF(Int_t det, AliTRDEntriesInfo** array, Bool_t force);
  AliTRDPrfInfo      *GetMeanSquaresPRF(Int_t det, AliTRDPrfInfo** array, Bool_t force);
  
  AliTRDEntriesInfo  *GetEntriesCH(Int_t det, AliTRDEntriesInfo** array, Bool_t force);

  ClassDef(AliTRDCalibraVector,1)                   // TRD Calibration class
    
    };
    
#endif

 AliTRDCalibraVector.h:1
 AliTRDCalibraVector.h:2
 AliTRDCalibraVector.h:3
 AliTRDCalibraVector.h:4
 AliTRDCalibraVector.h:5
 AliTRDCalibraVector.h:6
 AliTRDCalibraVector.h:7
 AliTRDCalibraVector.h:8
 AliTRDCalibraVector.h:9
 AliTRDCalibraVector.h:10
 AliTRDCalibraVector.h:11
 AliTRDCalibraVector.h:12
 AliTRDCalibraVector.h:13
 AliTRDCalibraVector.h:14
 AliTRDCalibraVector.h:15
 AliTRDCalibraVector.h:16
 AliTRDCalibraVector.h:17
 AliTRDCalibraVector.h:18
 AliTRDCalibraVector.h:19
 AliTRDCalibraVector.h:20
 AliTRDCalibraVector.h:21
 AliTRDCalibraVector.h:22
 AliTRDCalibraVector.h:23
 AliTRDCalibraVector.h:24
 AliTRDCalibraVector.h:25
 AliTRDCalibraVector.h:26
 AliTRDCalibraVector.h:27
 AliTRDCalibraVector.h:28
 AliTRDCalibraVector.h:29
 AliTRDCalibraVector.h:30
 AliTRDCalibraVector.h:31
 AliTRDCalibraVector.h:32
 AliTRDCalibraVector.h:33
 AliTRDCalibraVector.h:34
 AliTRDCalibraVector.h:35
 AliTRDCalibraVector.h:36
 AliTRDCalibraVector.h:37
 AliTRDCalibraVector.h:38
 AliTRDCalibraVector.h:39
 AliTRDCalibraVector.h:40
 AliTRDCalibraVector.h:41
 AliTRDCalibraVector.h:42
 AliTRDCalibraVector.h:43
 AliTRDCalibraVector.h:44
 AliTRDCalibraVector.h:45
 AliTRDCalibraVector.h:46
 AliTRDCalibraVector.h:47
 AliTRDCalibraVector.h:48
 AliTRDCalibraVector.h:49
 AliTRDCalibraVector.h:50
 AliTRDCalibraVector.h:51
 AliTRDCalibraVector.h:52
 AliTRDCalibraVector.h:53
 AliTRDCalibraVector.h:54
 AliTRDCalibraVector.h:55
 AliTRDCalibraVector.h:56
 AliTRDCalibraVector.h:57
 AliTRDCalibraVector.h:58
 AliTRDCalibraVector.h:59
 AliTRDCalibraVector.h:60
 AliTRDCalibraVector.h:61
 AliTRDCalibraVector.h:62
 AliTRDCalibraVector.h:63
 AliTRDCalibraVector.h:64
 AliTRDCalibraVector.h:65
 AliTRDCalibraVector.h:66
 AliTRDCalibraVector.h:67
 AliTRDCalibraVector.h:68
 AliTRDCalibraVector.h:69
 AliTRDCalibraVector.h:70
 AliTRDCalibraVector.h:71
 AliTRDCalibraVector.h:72
 AliTRDCalibraVector.h:73
 AliTRDCalibraVector.h:74
 AliTRDCalibraVector.h:75
 AliTRDCalibraVector.h:76
 AliTRDCalibraVector.h:77
 AliTRDCalibraVector.h:78
 AliTRDCalibraVector.h:79
 AliTRDCalibraVector.h:80
 AliTRDCalibraVector.h:81
 AliTRDCalibraVector.h:82
 AliTRDCalibraVector.h:83
 AliTRDCalibraVector.h:84
 AliTRDCalibraVector.h:85
 AliTRDCalibraVector.h:86
 AliTRDCalibraVector.h:87
 AliTRDCalibraVector.h:88
 AliTRDCalibraVector.h:89
 AliTRDCalibraVector.h:90
 AliTRDCalibraVector.h:91
 AliTRDCalibraVector.h:92
 AliTRDCalibraVector.h:93
 AliTRDCalibraVector.h:94
 AliTRDCalibraVector.h:95
 AliTRDCalibraVector.h:96
 AliTRDCalibraVector.h:97
 AliTRDCalibraVector.h:98
 AliTRDCalibraVector.h:99
 AliTRDCalibraVector.h:100
 AliTRDCalibraVector.h:101
 AliTRDCalibraVector.h:102
 AliTRDCalibraVector.h:103
 AliTRDCalibraVector.h:104
 AliTRDCalibraVector.h:105
 AliTRDCalibraVector.h:106
 AliTRDCalibraVector.h:107
 AliTRDCalibraVector.h:108
 AliTRDCalibraVector.h:109
 AliTRDCalibraVector.h:110
 AliTRDCalibraVector.h:111
 AliTRDCalibraVector.h:112
 AliTRDCalibraVector.h:113
 AliTRDCalibraVector.h:114
 AliTRDCalibraVector.h:115
 AliTRDCalibraVector.h:116
 AliTRDCalibraVector.h:117
 AliTRDCalibraVector.h:118
 AliTRDCalibraVector.h:119
 AliTRDCalibraVector.h:120
 AliTRDCalibraVector.h:121
 AliTRDCalibraVector.h:122
 AliTRDCalibraVector.h:123
 AliTRDCalibraVector.h:124
 AliTRDCalibraVector.h:125
 AliTRDCalibraVector.h:126
 AliTRDCalibraVector.h:127
 AliTRDCalibraVector.h:128
 AliTRDCalibraVector.h:129
 AliTRDCalibraVector.h:130
 AliTRDCalibraVector.h:131
 AliTRDCalibraVector.h:132
 AliTRDCalibraVector.h:133
 AliTRDCalibraVector.h:134
 AliTRDCalibraVector.h:135
 AliTRDCalibraVector.h:136
 AliTRDCalibraVector.h:137
 AliTRDCalibraVector.h:138
 AliTRDCalibraVector.h:139
 AliTRDCalibraVector.h:140
 AliTRDCalibraVector.h:141
 AliTRDCalibraVector.h:142
 AliTRDCalibraVector.h:143
 AliTRDCalibraVector.h:144
 AliTRDCalibraVector.h:145
 AliTRDCalibraVector.h:146
 AliTRDCalibraVector.h:147
 AliTRDCalibraVector.h:148
 AliTRDCalibraVector.h:149
 AliTRDCalibraVector.h:150
 AliTRDCalibraVector.h:151
 AliTRDCalibraVector.h:152
 AliTRDCalibraVector.h:153
 AliTRDCalibraVector.h:154
 AliTRDCalibraVector.h:155
 AliTRDCalibraVector.h:156
 AliTRDCalibraVector.h:157
 AliTRDCalibraVector.h:158
 AliTRDCalibraVector.h:159
 AliTRDCalibraVector.h:160
 AliTRDCalibraVector.h:161