ROOT logo
#ifndef AliVZERODataDCS_H
#define AliVZERODataDCS_H

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

#include <TObject.h> 
#include <TClonesArray.h>

class TMap;
class TH2F;
class TGraph;
class TF1;
class TString;
class TH1F;

// AliVZERODataDCS class
// main aim is to process DCS data
// in order to obtain the data to be stored in the OCDB

class AliVZERODataDCS : public TObject {
public:
  enum {kNAliases=240,kNGraphs=64,kNHvChannel=64,kNLvChannel=16,kNCIUBoards = 8};
  enum {kHvMin=0, kHvMax=3000};
  
  AliVZERODataDCS();
  AliVZERODataDCS(Int_t nRun, UInt_t timeCreated, UInt_t timeCompleted, UInt_t daqStart, UInt_t daqEnd, UInt_t ctpStart, UInt_t ctpEnd);
  ~AliVZERODataDCS();
  
  void SetRun(Int_t run) {fRun = run;}
  void SetStartTime(Int_t startTime) {fStartTime = startTime;}
  void SetEndTime(Int_t endTime) {fEndTime = endTime;}
  void SetDaqStartTime(Int_t startTime) {fDaqStartTime = startTime;}
  void SetDaqEndTime(Int_t endTime) {fDaqEndTime = endTime;}
  Int_t GetRun() const {return fRun;}
  Int_t GetStartTime() const {return fStartTime;}
  Int_t GetEndTime() const {return fEndTime;}
  Int_t GetDaqStartTime() const {return fDaqStartTime;}
  Int_t GetDaqEndTime() const {return fDaqEndTime;}
  
  Bool_t ProcessData(TMap& aliasMap);
  
  const char* GetAliasName(Int_t pos) const 
    {return pos<kNAliases ? fAliasNames[pos].Data() : 0;}
  
  void Draw(const Option_t* option);
  
  Float_t* GetMeanHV()    const {return (float*)fMeanHV;}
  Float_t* GetWidthHV()   const {return (float*)fWidthHV;}
  Bool_t * GetDeadMap()   const {return (bool*)fDeadChannel;}
  TMap * GetFEEParameters() const {return fFEEParameters;};
  
// Getter of Offline Channel number as used in aliroot (defined by aliroot 
// numbering convention) from DCS Channel number

    Int_t      GetOfflineChannel(Int_t channel)  const
      { Int_t  fOfflineChannel[64] = {32, 33, 34, 35, 36, 37, 38, 39, 
                                      40, 41, 42, 43, 44, 45, 46, 47, 
			              48, 49, 50, 51, 52, 53, 54, 55, 
			              56, 57, 58, 59, 60, 61, 62, 63,
			               0,  1,  2,  3,  4,  5,  6,  7, 
			               8,  9, 10, 11, 12, 13, 14, 15,
			              16, 17, 18, 19, 20, 21, 22, 23, 
			              24, 25, 26, 27, 28, 29, 30, 31};
               return fOfflineChannel[channel]; }

private:
  AliVZERODataDCS(const AliVZERODataDCS&); // Not implemented
  AliVZERODataDCS& operator=(const AliVZERODataDCS&); // Not implemented

  void Init();
  void Introduce(UInt_t numAlias, const TObjArray* aliasArr) const;
  void CreateGraph(int i, int dim, const Double_t *x, const Double_t *y);
    
  Int_t fRun;       // Run number
  Int_t fStartTime; // start time (time created)
  Int_t fEndTime;   // end time (time completed)
  UInt_t fDaqStartTime; // DAQ start time
  UInt_t fDaqEndTime;   // DAQ end time
  UInt_t fCtpStartTime; // CTP start time
  UInt_t fCtpEndTime;   // CTP end time
  
  TString fAliasNames[kNAliases];        // aliases for DCS data
  TClonesArray fGraphs;		         // Array containing  graphics
  TH1F *fHv[kNHvChannel];                  // High Voltage histograms
  Float_t fMeanHV[kNHvChannel];            // High Voltage mean values
  Float_t fWidthHV[kNHvChannel];           // High Voltage widths
  Bool_t  fDeadChannel[kNHvChannel];       // Dead Map 
  TMap * fFEEParameters;  // TMap holding the FEE parameters of Time Resolution
    
  Bool_t fIsProcessed;                   // bool to know processing status
  
  ClassDef(AliVZERODataDCS, 7);
};

#endif
 AliVZERODataDCS.h:1
 AliVZERODataDCS.h:2
 AliVZERODataDCS.h:3
 AliVZERODataDCS.h:4
 AliVZERODataDCS.h:5
 AliVZERODataDCS.h:6
 AliVZERODataDCS.h:7
 AliVZERODataDCS.h:8
 AliVZERODataDCS.h:9
 AliVZERODataDCS.h:10
 AliVZERODataDCS.h:11
 AliVZERODataDCS.h:12
 AliVZERODataDCS.h:13
 AliVZERODataDCS.h:14
 AliVZERODataDCS.h:15
 AliVZERODataDCS.h:16
 AliVZERODataDCS.h:17
 AliVZERODataDCS.h:18
 AliVZERODataDCS.h:19
 AliVZERODataDCS.h:20
 AliVZERODataDCS.h:21
 AliVZERODataDCS.h:22
 AliVZERODataDCS.h:23
 AliVZERODataDCS.h:24
 AliVZERODataDCS.h:25
 AliVZERODataDCS.h:26
 AliVZERODataDCS.h:27
 AliVZERODataDCS.h:28
 AliVZERODataDCS.h:29
 AliVZERODataDCS.h:30
 AliVZERODataDCS.h:31
 AliVZERODataDCS.h:32
 AliVZERODataDCS.h:33
 AliVZERODataDCS.h:34
 AliVZERODataDCS.h:35
 AliVZERODataDCS.h:36
 AliVZERODataDCS.h:37
 AliVZERODataDCS.h:38
 AliVZERODataDCS.h:39
 AliVZERODataDCS.h:40
 AliVZERODataDCS.h:41
 AliVZERODataDCS.h:42
 AliVZERODataDCS.h:43
 AliVZERODataDCS.h:44
 AliVZERODataDCS.h:45
 AliVZERODataDCS.h:46
 AliVZERODataDCS.h:47
 AliVZERODataDCS.h:48
 AliVZERODataDCS.h:49
 AliVZERODataDCS.h:50
 AliVZERODataDCS.h:51
 AliVZERODataDCS.h:52
 AliVZERODataDCS.h:53
 AliVZERODataDCS.h:54
 AliVZERODataDCS.h:55
 AliVZERODataDCS.h:56
 AliVZERODataDCS.h:57
 AliVZERODataDCS.h:58
 AliVZERODataDCS.h:59
 AliVZERODataDCS.h:60
 AliVZERODataDCS.h:61
 AliVZERODataDCS.h:62
 AliVZERODataDCS.h:63
 AliVZERODataDCS.h:64
 AliVZERODataDCS.h:65
 AliVZERODataDCS.h:66
 AliVZERODataDCS.h:67
 AliVZERODataDCS.h:68
 AliVZERODataDCS.h:69
 AliVZERODataDCS.h:70
 AliVZERODataDCS.h:71
 AliVZERODataDCS.h:72
 AliVZERODataDCS.h:73
 AliVZERODataDCS.h:74
 AliVZERODataDCS.h:75
 AliVZERODataDCS.h:76
 AliVZERODataDCS.h:77
 AliVZERODataDCS.h:78
 AliVZERODataDCS.h:79
 AliVZERODataDCS.h:80
 AliVZERODataDCS.h:81
 AliVZERODataDCS.h:82
 AliVZERODataDCS.h:83
 AliVZERODataDCS.h:84
 AliVZERODataDCS.h:85
 AliVZERODataDCS.h:86
 AliVZERODataDCS.h:87
 AliVZERODataDCS.h:88
 AliVZERODataDCS.h:89
 AliVZERODataDCS.h:90
 AliVZERODataDCS.h:91
 AliVZERODataDCS.h:92
 AliVZERODataDCS.h:93
 AliVZERODataDCS.h:94
 AliVZERODataDCS.h:95
 AliVZERODataDCS.h:96