]>
Commit | Line | Data |
---|---|---|
cd4fc278 | 1 | #ifndef ALITRDDATADCS_H |
2 | #define ALITRDDATADCS_H | |
a5e1169e | 3 | |
67b87932 | 4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /* $Id$ */ | |
8 | ||
9 | //////////////////////////////////////////////////////////////////////////// | |
10 | // // | |
11 | // Extracts the DCS information // | |
12 | // // | |
13 | //////////////////////////////////////////////////////////////////////////// | |
14 | ||
a5e1169e | 15 | #include <TNamed.h> |
54d68e69 | 16 | |
17 | class TObjArray; | |
18 | class TString; | |
a5e1169e | 19 | |
20 | class TGraph; | |
21 | class AliSplineFit; | |
22 | class TMap; | |
23 | ||
a5e1169e | 24 | class AliTRDDataDCS : public TNamed |
25 | { | |
26 | ||
acc49af9 | 27 | public : |
a5e1169e | 28 | |
acc49af9 | 29 | AliTRDDataDCS (); |
a5e1169e | 30 | ~AliTRDDataDCS (); |
31 | ||
32 | Bool_t ExtractDCS (TMap * aliDCS); | |
33 | Bool_t PerformFit (); | |
34 | void ClearFits (); | |
35 | void ClearGraphs (); | |
36 | ||
37 | UInt_t GetNAlias () const {return fNAlias;} | |
38 | TString GetAmandaStr (UInt_t iAlias) const; | |
39 | UInt_t GetNChannel (UInt_t iAlias) const; | |
40 | ||
41 | TGraph * GetGraph (UInt_t iAlias, UInt_t iChannel = 0) const; | |
42 | AliSplineFit * GetFit (UInt_t iAlias, UInt_t iChannel = 0) const; | |
43 | ||
44 | // Get TGraph | |
54d68e69 | 45 | TGraph * GetGraphChamberByteStatus (UInt_t iSensor) const {return GetGraph (kChamberByteStatus, iSensor);} |
46 | TGraph * GetGraphPreTrigger () const {return GetGraph (kPreTrigger);} | |
47 | TGraph * GetGraphGoofyHv () const {return GetGraph (kGoofyHv);} | |
48 | TGraph * GetGraphGoofyPeakPos (UInt_t iSensor) const {return GetGraph (kGoofyPeakPos, iSensor);} | |
49 | TGraph * GetGraphGoofyPeakArea (UInt_t iSensor) const {return GetGraph (kGoofyPeakArea, iSensor);} | |
50 | TGraph * GetGraphGoofyTemp (UInt_t iSensor) const {return GetGraph (kGoofyTemp, iSensor);} | |
51 | TGraph * GetGraphGoofyPressure () const {return GetGraph (kGoofyPressure);} | |
52 | TGraph * GetGraphGoofyVelocity () const {return GetGraph (kGoofyVelocity);} | |
53 | TGraph * GetGraphGoofyGain (UInt_t iSensor) const {return GetGraph (kGoofyGain, iSensor);} | |
54 | TGraph * GetGraphGoofyCO2 () const {return GetGraph (kGoofyCO2);} | |
55 | TGraph * GetGraphGoofyN2 () const {return GetGraph (kGoofyN2);} | |
56 | TGraph * GetGraphGasO2 () const {return GetGraph (kGasO2);} | |
57 | TGraph * GetGraphGasOverpressure () const {return GetGraph (kGasOverpressure);} | |
58 | TGraph * GetGraphEnvTemp (UInt_t iSensor) const {return GetGraph (kEnvTemp, iSensor);} | |
59 | TGraph * GetGraphHvAnodeImon (UInt_t iSensor) const {return GetGraph (kHvAnodeImon, iSensor);} | |
60 | TGraph * GetGraphHvDriftImon (UInt_t iSensor) const {return GetGraph (kHvDriftImon, iSensor);} | |
61 | TGraph * GetGraphHvAnodeUmon (UInt_t iSensor) const {return GetGraph (kHvAnodeUmon, iSensor);} | |
62 | TGraph * GetGraphHvDriftUmon (UInt_t iSensor) const {return GetGraph (kHvDriftUmon, iSensor);} | |
63 | TGraph * GetGraphAdcClkPhase () const {return GetGraph (kAdcClkPhase);} | |
64 | TGraph * GetGraphAtmPressure () const {return GetGraph (kAtmPressure);} | |
65 | TGraph * GetGraphLuminosity () const {return GetGraph (kLuminosity);} | |
66 | TGraph * GetGraphMagneticField () const {return GetGraph (kMagneticField);} | |
a5e1169e | 67 | |
54d68e69 | 68 | AliSplineFit * GetFitChamberByteStatus (UInt_t iSensor) const {return GetFit (kChamberByteStatus, iSensor);} |
69 | AliSplineFit * GetFitPreTrigger () const {return GetFit (kPreTrigger);} | |
70 | AliSplineFit * GetFitGoofyHv () const {return GetFit (kGoofyHv);} | |
71 | AliSplineFit * GetFitGoofyPeakPos (UInt_t iSensor) const {return GetFit (kGoofyPeakPos, iSensor);} | |
72 | AliSplineFit * GetFitGoofyPeakArea (UInt_t iSensor) const {return GetFit (kGoofyPeakArea, iSensor);} | |
73 | AliSplineFit * GetFitGoofyTemp (UInt_t iSensor) const {return GetFit (kGoofyTemp, iSensor);} | |
74 | AliSplineFit * GetFitGoofyPressure () const {return GetFit (kGoofyPressure);} | |
75 | AliSplineFit * GetFitGoofyVelocity () const {return GetFit (kGoofyVelocity);} | |
76 | AliSplineFit * GetFitGoofyGain (UInt_t iSensor) const {return GetFit (kGoofyGain, iSensor);} | |
77 | AliSplineFit * GetFitGoofyCO2 () const {return GetFit (kGoofyCO2);} | |
78 | AliSplineFit * GetFitGoofyN2 () const {return GetFit (kGoofyN2);} | |
79 | AliSplineFit * GetFitGasO2 () const {return GetFit (kGasO2);} | |
80 | AliSplineFit * GetFitGasOverpressure () const {return GetFit (kGasOverpressure);} | |
81 | AliSplineFit * GetFitEnvTemp (UInt_t iSensor) const {return GetFit (kEnvTemp, iSensor);} | |
82 | AliSplineFit * GetFitHvAnodeImon (UInt_t iSensor) const {return GetFit (kHvAnodeImon, iSensor);} | |
83 | AliSplineFit * GetFitHvDriftImon (UInt_t iSensor) const {return GetFit (kHvDriftImon, iSensor);} | |
84 | AliSplineFit * GetFitHvAnodeUmon (UInt_t iSensor) const {return GetFit (kHvAnodeUmon, iSensor);} | |
85 | AliSplineFit * GetFitHvDriftUmon (UInt_t iSensor) const {return GetFit (kHvDriftUmon, iSensor);} | |
86 | AliSplineFit * GetFitAdcClkPhase () const {return GetFit (kAdcClkPhase);} | |
87 | AliSplineFit * GetFitAtmPressure () const {return GetFit (kAtmPressure);} | |
88 | AliSplineFit * GetFitLuminosity () const {return GetFit (kLuminosity);} | |
89 | AliSplineFit * GetFitMagneticField () const {return GetFit (kMagneticField);} | |
a5e1169e | 90 | |
c893147d | 91 | void Print (const Option_t * const option = "") const; |
a5e1169e | 92 | |
acc49af9 | 93 | protected : |
54d68e69 | 94 | |
c893147d | 95 | TGraph * FindAndMakeGraph (TMap * const dcsMap |
96 | , const char * amandaStr | |
97 | , char dataType); | |
98 | AliSplineFit * Fit (const TGraph * const graph, | |
a5e1169e | 99 | Int_t kMinPoints, Int_t kIter, |
100 | Double_t kMaxDelta, Int_t kFitReq); | |
101 | ||
102 | void Init (); | |
103 | void InitFits (); | |
104 | void InitGraphs (); | |
105 | ||
106 | void SetConf (UInt_t iAlias, const char * amanda, char dataType, UInt_t nChannel, | |
107 | Bool_t enableGraph, Bool_t enableFit, Int_t kMinPoints, | |
108 | Int_t kIter, Double_t kMaxDelta, Int_t kFitReq); | |
109 | ||
acc49af9 | 110 | private : |
54d68e69 | 111 | |
112 | enum { kChamberByteStatus = 0 | |
113 | , kPreTrigger = 1 | |
114 | , kGoofyHv = 2 | |
115 | , kGoofyPeakPos = 3 | |
116 | , kGoofyPeakArea = 4 | |
117 | , kGoofyTemp = 5 | |
118 | , kGoofyPressure = 6 | |
119 | , kGoofyVelocity = 7 | |
120 | , kGoofyGain = 8 | |
121 | , kGoofyCO2 = 9 | |
122 | , kGoofyN2 = 10 | |
123 | , kGasO2 = 11 | |
124 | , kGasOverpressure = 12 | |
125 | , kEnvTemp = 13 | |
126 | , kHvAnodeImon = 14 | |
127 | , kHvDriftImon = 15 | |
128 | , kHvAnodeUmon = 16 | |
129 | , kHvDriftUmon = 17 | |
130 | , kAdcClkPhase = 18 | |
131 | , kAtmPressure = 19 | |
132 | , kLuminosity = 20 | |
133 | , kMagneticField = 21 | |
134 | }; | |
135 | ||
acc49af9 | 136 | Bool_t fGraphsAreIni; // Check whether graphs are initialized |
137 | Bool_t fFitsAreIni; // Check whether firs are initialized | |
138 | UInt_t fNAlias; // Number of aliases | |
a5e1169e | 139 | |
54d68e69 | 140 | class AliTRDDataDCSdata { |
141 | public: | |
142 | AliTRDDataDCSdata() | |
143 | :fFit(0x0) | |
144 | ,fGraph(0x0) { }; | |
145 | virtual ~AliTRDDataDCSdata() { }; | |
146 | TObjArray GetFit() const { return fFit; } | |
147 | TObjArray GetGraph() const { return fGraph; } | |
148 | TObject* GetFit(Int_t i) const { return fFit[i]; } | |
149 | TObject* GetGraph(Int_t i) const { return fGraph[i]; } | |
150 | protected: | |
151 | TObjArray fFit; // array of AliSplineFit | |
152 | TObjArray fGraph; // array of TGraph | |
153 | }; | |
154 | ||
155 | class AliTRDDataDCSconf { | |
156 | public: | |
157 | AliTRDDataDCSconf() | |
158 | :fAmanda(0) | |
159 | ,fDataType(0) | |
160 | ,fNChannel(0) | |
161 | ,fEnableGraph(0) | |
162 | ,fEnableFit(0) | |
163 | ,fMinPoints(0) | |
164 | ,fIter(0) | |
165 | ,fMaxDelta(0) | |
166 | ,fFitReq(0) { }; | |
167 | virtual ~AliTRDDataDCSconf() { }; | |
168 | TString GetAmanda() const { return fAmanda; } | |
169 | Char_t GetDataType() const { return fDataType; } | |
170 | UInt_t GetNChannel() const { return fNChannel; } | |
171 | Bool_t GetEnableGraph() const { return fEnableGraph; } | |
172 | Bool_t GetEnableFit() const { return fEnableFit; } | |
173 | Int_t GetMinPoints() const { return fMinPoints; } | |
174 | Int_t GetIter() const { return fIter; } | |
175 | Double_t GetMaxDelta() const { return fMaxDelta; } | |
176 | Int_t GetFitReq() const { return fFitReq; } | |
177 | void SetAmanda(TString s) { fAmanda = s; } | |
178 | void SetDataType(Char_t d) { fDataType = d; } | |
179 | void SetNChannel(UInt_t n) { fNChannel = n; } | |
180 | void SetEnableGraph(Bool_t e) { fEnableGraph = e; } | |
181 | void SetEnableFit(Bool_t e) { fEnableFit = e; } | |
182 | void SetMinPoints(Int_t m) { fMinPoints = m; } | |
183 | void SetIter(Int_t i) { fIter = i; } | |
184 | void SetMaxDelta(Double_t m) { fMaxDelta = m; } | |
185 | void SetFitReq(Int_t f) { fFitReq = f; } | |
186 | protected: | |
187 | TString fAmanda; // amanda string | |
188 | Char_t fDataType; // 'c' for char, 'f' for float | |
189 | UInt_t fNChannel; // number of channel | |
190 | Bool_t fEnableGraph; // will be converted in TGraph | |
191 | Bool_t fEnableFit; // will be converted in AliSplineFit | |
192 | Int_t fMinPoints; // minimum number of points per knot in fit | |
193 | Int_t fIter; // number of iterations for spline fit | |
194 | Double_t fMaxDelta; // precision parameter for spline fit | |
195 | Int_t fFitReq; // fit requirement, 2 = continuous 2nd derivative | |
196 | }; | |
197 | ||
198 | AliTRDDataDCSdata fDatas [22]; // configurations | |
199 | AliTRDDataDCSconf fConfs [22]; // data arrays | |
a5e1169e | 200 | |
54d68e69 | 201 | ClassDef(AliTRDDataDCS,1) // TRD calibration class |
a5e1169e | 202 | |
54d68e69 | 203 | }; |
a5e1169e | 204 | |
205 | #endif |