Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TRD / AliTRDCalibraVector.h
1 #ifndef ALITRDCALIBRAVECTOR_H
2 #define ALITRDCALIBRAVECTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///////////////////////////////////////////////////////////////////////////////
9 //                                                                           //
10 //  TRD calibration class                                                    //
11 //                                                                           //
12 ///////////////////////////////////////////////////////////////////////////////
13
14 #ifndef ROOT_TObject
15 #  include <TObject.h>
16 #endif
17
18 class TGraphErrors;
19 class TH1F;
20 class TObjArray;
21
22 class AliTRDPhInfo;
23 class AliTRDEntriesInfo;
24 class AliTRDPrfInfo;
25
26 class AliTRDCalibraVector : public TObject {
27
28  public: 
29
30   AliTRDCalibraVector();
31   AliTRDCalibraVector(const AliTRDCalibraVector &c);
32   virtual ~AliTRDCalibraVector();
33   virtual Long64_t Merge(const TCollection* list);
34
35   AliTRDCalibraVector& operator = (const  AliTRDCalibraVector &source);
36
37   // Init
38   void           TestInit(Int_t i, Int_t detmax);
39
40   // Fill
41   Bool_t         UpdateVectorCH(Int_t det, Int_t group, Float_t value);
42   Bool_t         UpdateVectorPRF(Int_t det, Int_t group, Float_t x, Float_t y);
43   Bool_t         UpdateVectorPH(Int_t det, Int_t group, Int_t time, Float_t value);
44
45
46   Bool_t         FillVectorCH(Int_t det, Int_t group, Int_t bin, Int_t entries);
47   Bool_t         FillVectorPRF(Int_t det, Int_t group, Int_t bin, Int_t entries, Float_t mean, Float_t square);
48   Bool_t         FillVectorPH(Int_t det, Int_t group, Int_t bin, Int_t entries, Float_t mean, Float_t square);
49
50
51   // Add
52   Bool_t         Add(AliTRDCalibraVector *calvector);
53
54   AliTRDCalibraVector *AddStatsPerDetectorCH();
55   AliTRDCalibraVector *AddStatsPerDetectorPH();
56   AliTRDCalibraVector *AddStatsPerDetectorPRF();
57
58   
59   // Fit
60   TGraphErrors  *ConvertVectorPHTGraphErrors(Int_t det, Int_t group, const Char_t *name);
61   TGraphErrors  *ConvertVectorPRFTGraphErrors(Int_t det, Int_t group, const Char_t *name);
62   TH1F          *CorrectTheError(const TGraphErrors *hist, Int_t &nbEntries);
63   TH1F          *ConvertVectorCHHisto(Int_t det, Int_t group, const Char_t *name);
64
65   // Find
66   Int_t          SearchBin(Float_t value, Int_t i) const;  
67   Bool_t         FindTheMaxEntries(Int_t i, Int_t &detectormax, Int_t &groupmax);
68
69   //
70   // Set and Get methods
71   //
72
73   void           SetNumberBinCharge(Short_t numberbincharge)   { fNumberBinCharge = numberbincharge;            } 
74   void           SetNumberBinPRF(Short_t numberbinprf)         { fNumberBinPRF    = numberbinprf;               } 
75   void           SetTimeMax(Int_t timemax)                     { fTimeMax         = timemax;                    } 
76   void           SetPRFRange(Float_t prfrange)                 { fPRFRange        = prfrange;                   }  
77   void           SetDetCha0(Int_t i, Short_t total)            { fDetCha0[i]      = total;                      } 
78   void           SetDetCha2(Int_t i, Short_t total)            { fDetCha2[i]      = total;                      } 
79   void           SetNzNrphi(Int_t i, Int_t nz, Int_t nrphi);    
80   void           SetNbGroupPRF(Int_t nbGroup)                  { fNbGroupPRF = (UChar_t) nbGroup;               } 
81
82   Short_t        GetNumberBinCharge()const                     { return fNumberBinCharge;                       }
83   Short_t        GetNumberBinPRF()const                        { return fNumberBinPRF;                          }
84   Int_t          GetTimeMax()const                             { return fTimeMax;                               } 
85   Float_t        GetPRFRange()const                            { return fPRFRange;                              } 
86   Short_t        GetDetCha0(Int_t i) const                     { return fDetCha0[i];                            }
87   Short_t        GetDetCha2(Int_t i) const                     { return fDetCha2[i];                            }
88   TString        GetNamePH() const;    
89   TString        GetNamePRF() const;   
90   TString        GetNameCH() const;  
91   Int_t          GetNz(Int_t i) const;
92   Int_t          GetNrphi(Int_t i) const;
93   Int_t          GetNbGroupPRF() const                         { return (Int_t)fNbGroupPRF;                     }
94
95   Int_t          GetTotalNumberOfBinsInDetector(Int_t det, Int_t i, Int_t nbBin) const;
96
97   TObject               *GetPHEntries(Int_t det,Bool_t force = kFALSE);
98   TObject               *GetPHMean(Int_t det,Bool_t force = kFALSE);
99   TObject               *GetPHSquares(Int_t det,Bool_t force = kFALSE);
100   
101   TObject               *GetPRFEntries(Int_t det,Bool_t force = kFALSE);
102   TObject               *GetPRFMean(Int_t det,Bool_t force = kFALSE);
103   TObject               *GetPRFSquares(Int_t det,Bool_t force = kFALSE);
104   
105   TObject               *GetCHEntries(Int_t det,Bool_t force = kFALSE);
106
107    
108   
109  protected:
110   
111   // Current data
112   
113   AliTRDEntriesInfo     *fPHEntries[540];                //  PH entries
114   AliTRDPhInfo          *fPHMean[540];                   //  PH Mean
115   AliTRDPhInfo          *fPHSquares[540];                //  PH Squares
116   
117   AliTRDEntriesInfo     *fPRFEntries[540];               //  PRF entries
118   AliTRDPrfInfo         *fPRFMean[540];                  //  PRF Mean
119   AliTRDPrfInfo         *fPRFSquares[540];               //  PRF Squares
120   
121   AliTRDEntriesInfo     *fCHEntries[540];                //  CH entries
122   
123   UChar_t      fModeCH;                         //  Calibration mode
124   UChar_t      fModePH;                         //  Calibration mode
125   UChar_t      fModePRF;                        //  Calibration mode
126   UChar_t      fNbGroupPRF;                     //  Nb of group PRD
127   
128   
129   Int_t            fDetectorPH;                //!  Current detector
130   Int_t            fDetectorCH;                //!  Current detector
131   Int_t            fDetectorPRF;               //!  Current detector
132   Bool_t           fStopFillCH;                //!  To know if we stop to fill
133   TH1F            *fHisto;                     //!  Histo to be fitted
134   TGraphErrors    *fGraph;                     //!  TGraphError
135   AliTRDCalibraVector *fCalVector;             //!  AliTRDCalibraVector
136   
137   // Size of the infos
138   
139   Short_t          fNumberBinCharge;          // Number of bins for the gain factor
140   Short_t          fNumberBinPRF;             // Number of bin for the PRF
141   Int_t            fTimeMax;                  // Number of time bins
142   Float_t          fPRFRange;                 // Range PRF
143   Short_t          fDetCha0[3];               // Number of XBins for chamber != 2
144   Short_t          fDetCha2[3];               // Number of Xbins for chamber 2
145   
146   // Some functions
147   
148   AliTRDEntriesInfo  *GetEntriesPH(Int_t det, AliTRDEntriesInfo** array, Bool_t force);
149   AliTRDPhInfo       *GetMeanSquaresPH(Int_t det, AliTRDPhInfo** array, Bool_t force);
150   
151   AliTRDEntriesInfo  *GetEntriesPRF(Int_t det, AliTRDEntriesInfo** array, Bool_t force);
152   AliTRDPrfInfo      *GetMeanSquaresPRF(Int_t det, AliTRDPrfInfo** array, Bool_t force);
153   
154   AliTRDEntriesInfo  *GetEntriesCH(Int_t det, AliTRDEntriesInfo** array, Bool_t force);
155
156   ClassDef(AliTRDCalibraVector,1)                   // TRD Calibration class
157     
158     };
159     
160 #endif
161