ROOT logo
#ifndef ALITRDDATADCS_H
#define ALITRDDATADCS_H

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

/* $Id$ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Extracts the DCS information                                           //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include <TNamed.h>

class TObjArray;
class TString;

class TGraph;
class AliSplineFit;
class TMap;

class AliTRDDataDCS : public TNamed
{
  
 public :
    
  AliTRDDataDCS ();
  ~AliTRDDataDCS ();
  
  Bool_t ExtractDCS (TMap * aliDCS);
  Bool_t PerformFit ();
  void   ClearFits ();
  void   ClearGraphs ();
  
  UInt_t 	GetNAlias () const {return fNAlias;}
  TString       GetAmandaStr (UInt_t iAlias) const;
  UInt_t 	GetNChannel (UInt_t iAlias) const; 
  
  TGraph * 		GetGraph (UInt_t iAlias, UInt_t iChannel = 0) const;
  AliSplineFit * 	GetFit (UInt_t iAlias, UInt_t iChannel = 0) const;
  
  // Get TGraph
  TGraph * GetGraphChamberByteStatus (UInt_t iSensor) const	        {return GetGraph (kChamberByteStatus, iSensor);}
  TGraph * GetGraphPreTrigger () const 					{return GetGraph (kPreTrigger);}
  TGraph * GetGraphGoofyHv () const			        	{return GetGraph (kGoofyHv);}
  TGraph * GetGraphGoofyPeakPos (UInt_t iSensor) const	                {return GetGraph (kGoofyPeakPos, iSensor);}
  TGraph * GetGraphGoofyPeakArea (UInt_t iSensor) const 	        {return GetGraph (kGoofyPeakArea, iSensor);}
  TGraph * GetGraphGoofyTemp (UInt_t iSensor) const		        {return GetGraph (kGoofyTemp, iSensor);}
  TGraph * GetGraphGoofyPressure () const 				{return GetGraph (kGoofyPressure);}
  TGraph * GetGraphGoofyVelocity () const 				{return GetGraph (kGoofyVelocity);}
  TGraph * GetGraphGoofyGain (UInt_t iSensor) const		        {return GetGraph (kGoofyGain, iSensor);}
  TGraph * GetGraphGoofyCO2 ()  const					{return GetGraph (kGoofyCO2);}
  TGraph * GetGraphGoofyN2 () const 					{return GetGraph (kGoofyN2);}
  TGraph * GetGraphGasO2 () const 					{return GetGraph (kGasO2);}
  TGraph * GetGraphGasOverpressure () const 				{return GetGraph (kGasOverpressure);}
  TGraph * GetGraphEnvTemp (UInt_t iSensor) const			{return GetGraph (kEnvTemp, iSensor);}
  TGraph * GetGraphHvAnodeImon (UInt_t iSensor) const		        {return GetGraph (kHvAnodeImon, iSensor);}
  TGraph * GetGraphHvDriftImon (UInt_t iSensor) const		        {return GetGraph (kHvDriftImon, iSensor);}
  TGraph * GetGraphHvAnodeUmon (UInt_t iSensor) const		        {return GetGraph (kHvAnodeUmon, iSensor);}
  TGraph * GetGraphHvDriftUmon (UInt_t iSensor) const		        {return GetGraph (kHvDriftUmon, iSensor);}
  TGraph * GetGraphAdcClkPhase () const 				{return GetGraph (kAdcClkPhase);}
  TGraph * GetGraphAtmPressure () const 				{return GetGraph (kAtmPressure);}
  TGraph * GetGraphLuminosity () const 					{return GetGraph (kLuminosity);}
  TGraph * GetGraphMagneticField () const				{return GetGraph (kMagneticField);}
  
  AliSplineFit * GetFitChamberByteStatus (UInt_t iSensor) const	        {return GetFit (kChamberByteStatus, iSensor);}
  AliSplineFit * GetFitPreTrigger () const 				{return GetFit (kPreTrigger);}
  AliSplineFit * GetFitGoofyHv () const					{return GetFit (kGoofyHv);}
  AliSplineFit * GetFitGoofyPeakPos (UInt_t iSensor) const	        {return GetFit (kGoofyPeakPos, iSensor);}
  AliSplineFit * GetFitGoofyPeakArea (UInt_t iSensor) const 	        {return GetFit (kGoofyPeakArea, iSensor);}
  AliSplineFit * GetFitGoofyTemp (UInt_t iSensor) const		        {return GetFit (kGoofyTemp, iSensor);}
  AliSplineFit * GetFitGoofyPressure () const 				{return GetFit (kGoofyPressure);}
  AliSplineFit * GetFitGoofyVelocity () const 				{return GetFit (kGoofyVelocity);}
  AliSplineFit * GetFitGoofyGain (UInt_t iSensor) const		        {return GetFit (kGoofyGain, iSensor);}
  AliSplineFit * GetFitGoofyCO2 ()  const				{return GetFit (kGoofyCO2);}
  AliSplineFit * GetFitGoofyN2 () const 				{return GetFit (kGoofyN2);}
  AliSplineFit * GetFitGasO2 () const 					{return GetFit (kGasO2);}
  AliSplineFit * GetFitGasOverpressure () const 			{return GetFit (kGasOverpressure);}
  AliSplineFit * GetFitEnvTemp (UInt_t iSensor) const			{return GetFit (kEnvTemp, iSensor);}
  AliSplineFit * GetFitHvAnodeImon (UInt_t iSensor) const		{return GetFit (kHvAnodeImon, iSensor);}
  AliSplineFit * GetFitHvDriftImon (UInt_t iSensor) const		{return GetFit (kHvDriftImon, iSensor);}
  AliSplineFit * GetFitHvAnodeUmon (UInt_t iSensor) const		{return GetFit (kHvAnodeUmon, iSensor);}
  AliSplineFit * GetFitHvDriftUmon (UInt_t iSensor) const		{return GetFit (kHvDriftUmon, iSensor);}
  AliSplineFit * GetFitAdcClkPhase () const 				{return GetFit (kAdcClkPhase);}
  AliSplineFit * GetFitAtmPressure () const 				{return GetFit (kAtmPressure);}
  AliSplineFit * GetFitLuminosity () const 				{return GetFit (kLuminosity);}
  AliSplineFit * GetFitMagneticField () const				{return GetFit (kMagneticField);}
  
  void Print (const Option_t * const option = "") const;
    
 protected :
          
    TGraph       * FindAndMakeGraph (TMap * const dcsMap
                                   , const char * amandaStr
				   , char dataType);
    AliSplineFit * Fit (const TGraph * const graph,
			Int_t  kMinPoints, Int_t  kIter, 
			Double_t  kMaxDelta, Int_t  kFitReq);
    
    void Init ();
    void InitFits ();
    void InitGraphs ();
    
    void SetConf (UInt_t iAlias, const char * amanda, char dataType, UInt_t nChannel, 
		  Bool_t enableGraph, Bool_t enableFit, Int_t kMinPoints, 
		  Int_t kIter, Double_t kMaxDelta, Int_t kFitReq);
    
 private :
    
    enum { kChamberByteStatus = 0
         , kPreTrigger        = 1
         , kGoofyHv           = 2
         , kGoofyPeakPos      = 3
         , kGoofyPeakArea     = 4
         , kGoofyTemp         = 5
         , kGoofyPressure     = 6
         , kGoofyVelocity     = 7
         , kGoofyGain         = 8
         , kGoofyCO2          = 9
         , kGoofyN2           = 10
         , kGasO2             = 11
         , kGasOverpressure   = 12
         , kEnvTemp           = 13
         , kHvAnodeImon       = 14
         , kHvDriftImon       = 15
         , kHvAnodeUmon       = 16
         , kHvDriftUmon       = 17
         , kAdcClkPhase       = 18
         , kAtmPressure       = 19
         , kLuminosity        = 20
         , kMagneticField     = 21
    };
              
  Bool_t fGraphsAreIni;              // Check whether graphs are initialized
  Bool_t fFitsAreIni;                // Check whether firs are initialized
  UInt_t fNAlias;                    // Number of aliases
      
    class AliTRDDataDCSdata {
     public:
      AliTRDDataDCSdata()
	:fFit(0x0)
        ,fGraph(0x0) { };
      virtual ~AliTRDDataDCSdata() { };
      TObjArray GetFit() const          { return fFit;      }
      TObjArray GetGraph() const        { return fGraph;    }
      TObject*  GetFit(Int_t i) const   { return fFit[i];   }
      TObject*  GetGraph(Int_t i) const { return fGraph[i]; }
     protected:
      TObjArray fFit;			// array of AliSplineFit
      TObjArray fGraph;		        // array of TGraph
    };      

    class AliTRDDataDCSconf {
     public:
      AliTRDDataDCSconf()
	:fAmanda(0)
	,fDataType(0)
	,fNChannel(0)
	,fEnableGraph(0)
	,fEnableFit(0)
	,fMinPoints(0)
	,fIter(0)
	,fMaxDelta(0)
	,fFitReq(0) { };
      virtual ~AliTRDDataDCSconf() { };
      TString  GetAmanda() const        { return fAmanda;      }
      Char_t   GetDataType() const      { return fDataType;    }
      UInt_t   GetNChannel() const      { return fNChannel;    }
      Bool_t   GetEnableGraph() const   { return fEnableGraph; }
      Bool_t   GetEnableFit() const     { return fEnableFit;   }
      Int_t    GetMinPoints() const     { return fMinPoints;   }
      Int_t    GetIter() const          { return fIter;        }
      Double_t GetMaxDelta() const      { return fMaxDelta;    }
      Int_t    GetFitReq() const        { return fFitReq;      }
      void     SetAmanda(TString s)     { fAmanda      = s;    }
      void     SetDataType(Char_t d)    { fDataType    = d;    }
      void     SetNChannel(UInt_t n)    { fNChannel    = n;    }
      void     SetEnableGraph(Bool_t e) { fEnableGraph = e;    }
      void     SetEnableFit(Bool_t e)   { fEnableFit   = e;    }
      void     SetMinPoints(Int_t m)    { fMinPoints   = m;    }
      void     SetIter(Int_t i)         { fIter        = i;    }
      void     SetMaxDelta(Double_t m)  { fMaxDelta    = m;    }
      void     SetFitReq(Int_t f)       { fFitReq      = f;    }
     protected:
        TString   fAmanda;	      	// amanda string
        Char_t    fDataType;		// 'c' for char, 'f' for float
        UInt_t    fNChannel;		// number of channel
        Bool_t    fEnableGraph;		// will be converted in TGraph
        Bool_t    fEnableFit;	        // will be converted in AliSplineFit
        Int_t     fMinPoints;		// minimum number of points per knot in fit
        Int_t     fIter;		// number of iterations for spline fit
        Double_t  fMaxDelta;	        // precision parameter for spline fit
        Int_t     fFitReq;	        // fit requirement, 2 = continuous 2nd derivative
      };      

      AliTRDDataDCSdata fDatas [22];	// configurations	
      AliTRDDataDCSconf fConfs [22];	// data arrays		
      
      ClassDef(AliTRDDataDCS,1)         // TRD calibration class
	
};

#endif
 AliTRDDataDCS.h:1
 AliTRDDataDCS.h:2
 AliTRDDataDCS.h:3
 AliTRDDataDCS.h:4
 AliTRDDataDCS.h:5
 AliTRDDataDCS.h:6
 AliTRDDataDCS.h:7
 AliTRDDataDCS.h:8
 AliTRDDataDCS.h:9
 AliTRDDataDCS.h:10
 AliTRDDataDCS.h:11
 AliTRDDataDCS.h:12
 AliTRDDataDCS.h:13
 AliTRDDataDCS.h:14
 AliTRDDataDCS.h:15
 AliTRDDataDCS.h:16
 AliTRDDataDCS.h:17
 AliTRDDataDCS.h:18
 AliTRDDataDCS.h:19
 AliTRDDataDCS.h:20
 AliTRDDataDCS.h:21
 AliTRDDataDCS.h:22
 AliTRDDataDCS.h:23
 AliTRDDataDCS.h:24
 AliTRDDataDCS.h:25
 AliTRDDataDCS.h:26
 AliTRDDataDCS.h:27
 AliTRDDataDCS.h:28
 AliTRDDataDCS.h:29
 AliTRDDataDCS.h:30
 AliTRDDataDCS.h:31
 AliTRDDataDCS.h:32
 AliTRDDataDCS.h:33
 AliTRDDataDCS.h:34
 AliTRDDataDCS.h:35
 AliTRDDataDCS.h:36
 AliTRDDataDCS.h:37
 AliTRDDataDCS.h:38
 AliTRDDataDCS.h:39
 AliTRDDataDCS.h:40
 AliTRDDataDCS.h:41
 AliTRDDataDCS.h:42
 AliTRDDataDCS.h:43
 AliTRDDataDCS.h:44
 AliTRDDataDCS.h:45
 AliTRDDataDCS.h:46
 AliTRDDataDCS.h:47
 AliTRDDataDCS.h:48
 AliTRDDataDCS.h:49
 AliTRDDataDCS.h:50
 AliTRDDataDCS.h:51
 AliTRDDataDCS.h:52
 AliTRDDataDCS.h:53
 AliTRDDataDCS.h:54
 AliTRDDataDCS.h:55
 AliTRDDataDCS.h:56
 AliTRDDataDCS.h:57
 AliTRDDataDCS.h:58
 AliTRDDataDCS.h:59
 AliTRDDataDCS.h:60
 AliTRDDataDCS.h:61
 AliTRDDataDCS.h:62
 AliTRDDataDCS.h:63
 AliTRDDataDCS.h:64
 AliTRDDataDCS.h:65
 AliTRDDataDCS.h:66
 AliTRDDataDCS.h:67
 AliTRDDataDCS.h:68
 AliTRDDataDCS.h:69
 AliTRDDataDCS.h:70
 AliTRDDataDCS.h:71
 AliTRDDataDCS.h:72
 AliTRDDataDCS.h:73
 AliTRDDataDCS.h:74
 AliTRDDataDCS.h:75
 AliTRDDataDCS.h:76
 AliTRDDataDCS.h:77
 AliTRDDataDCS.h:78
 AliTRDDataDCS.h:79
 AliTRDDataDCS.h:80
 AliTRDDataDCS.h:81
 AliTRDDataDCS.h:82
 AliTRDDataDCS.h:83
 AliTRDDataDCS.h:84
 AliTRDDataDCS.h:85
 AliTRDDataDCS.h:86
 AliTRDDataDCS.h:87
 AliTRDDataDCS.h:88
 AliTRDDataDCS.h:89
 AliTRDDataDCS.h:90
 AliTRDDataDCS.h:91
 AliTRDDataDCS.h:92
 AliTRDDataDCS.h:93
 AliTRDDataDCS.h:94
 AliTRDDataDCS.h:95
 AliTRDDataDCS.h:96
 AliTRDDataDCS.h:97
 AliTRDDataDCS.h:98
 AliTRDDataDCS.h:99
 AliTRDDataDCS.h:100
 AliTRDDataDCS.h:101
 AliTRDDataDCS.h:102
 AliTRDDataDCS.h:103
 AliTRDDataDCS.h:104
 AliTRDDataDCS.h:105
 AliTRDDataDCS.h:106
 AliTRDDataDCS.h:107
 AliTRDDataDCS.h:108
 AliTRDDataDCS.h:109
 AliTRDDataDCS.h:110
 AliTRDDataDCS.h:111
 AliTRDDataDCS.h:112
 AliTRDDataDCS.h:113
 AliTRDDataDCS.h:114
 AliTRDDataDCS.h:115
 AliTRDDataDCS.h:116
 AliTRDDataDCS.h:117
 AliTRDDataDCS.h:118
 AliTRDDataDCS.h:119
 AliTRDDataDCS.h:120
 AliTRDDataDCS.h:121
 AliTRDDataDCS.h:122
 AliTRDDataDCS.h:123
 AliTRDDataDCS.h:124
 AliTRDDataDCS.h:125
 AliTRDDataDCS.h:126
 AliTRDDataDCS.h:127
 AliTRDDataDCS.h:128
 AliTRDDataDCS.h:129
 AliTRDDataDCS.h:130
 AliTRDDataDCS.h:131
 AliTRDDataDCS.h:132
 AliTRDDataDCS.h:133
 AliTRDDataDCS.h:134
 AliTRDDataDCS.h:135
 AliTRDDataDCS.h:136
 AliTRDDataDCS.h:137
 AliTRDDataDCS.h:138
 AliTRDDataDCS.h:139
 AliTRDDataDCS.h:140
 AliTRDDataDCS.h:141
 AliTRDDataDCS.h:142
 AliTRDDataDCS.h:143
 AliTRDDataDCS.h:144
 AliTRDDataDCS.h:145
 AliTRDDataDCS.h:146
 AliTRDDataDCS.h:147
 AliTRDDataDCS.h:148
 AliTRDDataDCS.h:149
 AliTRDDataDCS.h:150
 AliTRDDataDCS.h:151
 AliTRDDataDCS.h:152
 AliTRDDataDCS.h:153
 AliTRDDataDCS.h:154
 AliTRDDataDCS.h:155
 AliTRDDataDCS.h:156
 AliTRDDataDCS.h:157
 AliTRDDataDCS.h:158
 AliTRDDataDCS.h:159
 AliTRDDataDCS.h:160
 AliTRDDataDCS.h:161
 AliTRDDataDCS.h:162
 AliTRDDataDCS.h:163
 AliTRDDataDCS.h:164
 AliTRDDataDCS.h:165
 AliTRDDataDCS.h:166
 AliTRDDataDCS.h:167
 AliTRDDataDCS.h:168
 AliTRDDataDCS.h:169
 AliTRDDataDCS.h:170
 AliTRDDataDCS.h:171
 AliTRDDataDCS.h:172
 AliTRDDataDCS.h:173
 AliTRDDataDCS.h:174
 AliTRDDataDCS.h:175
 AliTRDDataDCS.h:176
 AliTRDDataDCS.h:177
 AliTRDDataDCS.h:178
 AliTRDDataDCS.h:179
 AliTRDDataDCS.h:180
 AliTRDDataDCS.h:181
 AliTRDDataDCS.h:182
 AliTRDDataDCS.h:183
 AliTRDDataDCS.h:184
 AliTRDDataDCS.h:185
 AliTRDDataDCS.h:186
 AliTRDDataDCS.h:187
 AliTRDDataDCS.h:188
 AliTRDDataDCS.h:189
 AliTRDDataDCS.h:190
 AliTRDDataDCS.h:191
 AliTRDDataDCS.h:192
 AliTRDDataDCS.h:193
 AliTRDDataDCS.h:194
 AliTRDDataDCS.h:195
 AliTRDDataDCS.h:196
 AliTRDDataDCS.h:197
 AliTRDDataDCS.h:198
 AliTRDDataDCS.h:199
 AliTRDDataDCS.h:200
 AliTRDDataDCS.h:201
 AliTRDDataDCS.h:202
 AliTRDDataDCS.h:203
 AliTRDDataDCS.h:204
 AliTRDDataDCS.h:205