next50 trigger mask in AliHLTGlobalEsdConverterComponent
[u/mrichter/AliRoot.git] / TRD / AliTRDDataDCS.h
1 #ifndef ALITRDDATADCS_H
2 #define ALITRDDATADCS_H
3
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
15 #include <TNamed.h>
16
17 class TObjArray;
18 class TString;
19
20 class TGraph;
21 class AliSplineFit;
22 class TMap;
23
24 class AliTRDDataDCS : public TNamed
25 {
26   
27  public :
28     
29   AliTRDDataDCS ();
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
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);}
67   
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);}
90   
91   void Print (const Option_t * const option = "") const;
92     
93  protected :
94           
95     TGraph       * FindAndMakeGraph (TMap * const dcsMap
96                                    , const char * amandaStr
97                                    , char dataType);
98     AliSplineFit * Fit (const TGraph * const graph,
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     
110  private :
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               
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
139       
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          
200       
201       ClassDef(AliTRDDataDCS,1)         // TRD calibration class
202         
203 };
204
205 #endif