Adding macros to create Calibration objects
[u/mrichter/AliRoot.git] / TRD / TRDbase / AliTRDCalibraVector.h
CommitLineData
55a288e5 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
18class TGraphErrors;
19class TH1F;
55a288e5 20class TObjArray;
21
e526983e 22class AliTRDPhInfo;
23class AliTRDEntriesInfo;
24class AliTRDPrfInfo;
3a0f6479 25
55a288e5 26class AliTRDCalibraVector : public TObject {
27
28 public:
29
30 AliTRDCalibraVector();
31 AliTRDCalibraVector(const AliTRDCalibraVector &c);
32 virtual ~AliTRDCalibraVector();
c4f91d22 33 virtual Long64_t Merge(const TCollection* list);
55a288e5 34
3a0f6479 35 AliTRDCalibraVector& operator = (const AliTRDCalibraVector &source);
36
e526983e 37 // Init
38 void TestInit(Int_t i, Int_t detmax);
39
3a0f6479 40 // Fill
3a0f6479 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);
e526983e 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);
00a3834d 49
3a0f6479 50
51 // Add
52 Bool_t Add(AliTRDCalibraVector *calvector);
e526983e 53
54 AliTRDCalibraVector *AddStatsPerDetectorCH();
55 AliTRDCalibraVector *AddStatsPerDetectorPH();
56 AliTRDCalibraVector *AddStatsPerDetectorPRF();
57
3a0f6479 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);
e526983e 62 TH1F *CorrectTheError(const TGraphErrors *hist, Int_t &nbEntries);
3a0f6479 63 TH1F *ConvertVectorCHHisto(Int_t det, Int_t group, const Char_t *name);
55a288e5 64
e526983e 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
55a288e5 69 //
70 // Set and Get methods
71 //
72
73 void SetNumberBinCharge(Short_t numberbincharge) { fNumberBinCharge = numberbincharge; }
74 void SetNumberBinPRF(Short_t numberbinprf) { fNumberBinPRF = numberbinprf; }
170c35f1 75 void SetTimeMax(Int_t timemax) { fTimeMax = timemax; }
76 void SetPRFRange(Float_t prfrange) { fPRFRange = prfrange; }
3a0f6479 77 void SetDetCha0(Int_t i, Short_t total) { fDetCha0[i] = total; }
78 void SetDetCha2(Int_t i, Short_t total) { fDetCha2[i] = total; }
e526983e 79 void SetNzNrphi(Int_t i, Int_t nz, Int_t nrphi);
80 void SetNbGroupPRF(Int_t nbGroup) { fNbGroupPRF = (UChar_t) nbGroup; }
55a288e5 81
82 Short_t GetNumberBinCharge()const { return fNumberBinCharge; }
83 Short_t GetNumberBinPRF()const { return fNumberBinPRF; }
84 Int_t GetTimeMax()const { return fTimeMax; }
170c35f1 85 Float_t GetPRFRange()const { return fPRFRange; }
0bc7827a 86 Short_t GetDetCha0(Int_t i) const { return fDetCha0[i]; }
87 Short_t GetDetCha2(Int_t i) const { return fDetCha2[i]; }
e526983e 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);
3a0f6479 106
e526983e 107
108
55a288e5 109 protected:
e526983e 110
3a0f6479 111 // Current data
e526983e 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
55a288e5 137 // Size of the infos
e526983e 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
55a288e5 146 // Some functions
3a0f6479 147
e526983e 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);
55a288e5 153
e526983e 154 AliTRDEntriesInfo *GetEntriesCH(Int_t det, AliTRDEntriesInfo** array, Bool_t force);
155
156 ClassDef(AliTRDCalibraVector,1) // TRD Calibration class
157
158 };
159
55a288e5 160#endif
161