#ifndef ALIITSONLINESPDFO_H
#define ALIITSONLINESPDFO_H
#include <TString.h>
#include <THashList.h>
class TFile;
class TArrayS;
class AliITSOnlineSPDfoInfo;
class AliITSOnlineSPDfo {
public:
AliITSOnlineSPDfo();
AliITSOnlineSPDfo(TString inputfile, Int_t runNr, Int_t eqId);
AliITSOnlineSPDfo(const AliITSOnlineSPDfo &c);
virtual ~AliITSOnlineSPDfo(){ delete fArray; delete fDACnames;}
enum {kFOPOL=0, kCONVPOL=1, kCOMPREF=2, kCGPOL =3, kPreVTH=4, kIdFOPOL=20, kIdCONVPOL=17, kIdCOMPREF=16, kIdCGPOL=14, kIdPreVTH=39};
void AddMeasurement(const TArrayS dac, Short_t measure[3], Int_t hs, Int_t chipId);
Int_t CheckDACEntry(const TArrayS dac);
TString CreateDACEntry(const TArrayS dacs) const;
TArrayS CreateDACArray(const TArrayS dacs, const TArrayS dacId) const;
void CreateOutputFile();
void WriteToFile();
void SetNdacs(UInt_t ndacs) {fNdacs=ndacs;}
void SetFOscanParams(AliITSOnlineSPDfoInfo *info) {fInfo=info;}
void SetFile(TString inputfile);
void SetDACArray(TObjArray *obj) {if(!fArray) fArray = obj; else printf("The fArray is alreay available, no need to set it again.\n");}
TFile* GetFile() const {return fFile;}
UInt_t GetNdacs() const {return fNdacs;}
TObjArray *GetDACArray() const {return fArray;}
THashList * GetDACnameList() const {return fDACnames;}
TArrayI GetDACscanParams() const;
AliITSOnlineSPDfoInfo * GetFOscanInfo() const {return fInfo;}
Int_t *GetDACvalues(TString s, const Int_t ndacs) const;
Double_t *GetDACvaluesD(TString s, const Int_t ndacs) const;
protected:
Int_t fRunNr;
Int_t fNdacs;
TString fFileName;
TFile *fFile;
AliITSOnlineSPDfoInfo *fInfo;
THashList *fDACnames;
TObjArray *fArray;
Double_t fCheckIndex;
Int_t fIndex;
TString fInitialConfiguration;
private:
AliITSOnlineSPDfo& operator= (const AliITSOnlineSPDfo& c);
ClassDef(AliITSOnlineSPDfo,1)
};
#endif