#ifndef __TMbsSetup_h__
#define __TMbsSetup_h__
#include "TSystem.h"
#include "TString.h"
#include "TArrayI.h"
#include "TObjArray.h"
#include "TMrbNamedX.h"
#include "TMrbLofNamedX.h"
#include "TMrbEnv.h"
#include "TMbsSetupCommon.h"
#include "TMbsEvtBuilder.h"
#include "TMbsReadoutProc.h"
class TMbsSetup : public TMrbEnv {
public:
TMbsSetup(const Char_t * SetupFile = ".mbssetup");
~TMbsSetup();
Bool_t MakeSetupFiles();
inline TMbsReadoutProc * FirstReadout() { return((TMbsReadoutProc *) fLofReadouts.First()); };
inline TMbsReadoutProc * NextReadout(TMbsReadoutProc * Readout) {
return((TMbsReadoutProc *) fLofReadouts.After((TObject *) Readout));
};
TMbsReadoutProc * ReadoutProc(Int_t ReadoutId);
Bool_t SetMode(const Char_t * Mode);
Bool_t SetMode(EMbsSetupMode Mode);
TMrbNamedX * GetMode();
Bool_t SetHomeDir(const Char_t * HomeDir);
const Char_t * GetHomeDir();
Bool_t SetPath(const Char_t * Path, Bool_t Create = kFALSE);
const Char_t * GetPath();
Bool_t SetNofReadouts(Int_t NofReadouts);
Int_t GetNofReadouts();
inline TMbsEvtBuilder * EvtBuilder() { return(fEvtBuilder); };
Bool_t CheckSetup();
void RemoveSetup();
void Reset();
const Char_t * RemoteHomeDir();
Bool_t SetHomeDirFromRemote();
const Char_t * EncodeArray(TArrayI & Data, Int_t NofEntries, Int_t Base = 10);
const Char_t * EncodeArray(Int_t Data, Int_t Index, Int_t NofEntries, Int_t Base = 10);
inline Bool_t IsVerbose() { return(fVerbose); };
inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };
protected:
Bool_t GetRcVal(UInt_t & RcValue, const Char_t * Resource, const Char_t * ContrlType = "*", const Char_t * ProcType = "*", const Char_t * Mode = "*", const Char_t * MbsVersion = "*", const Char_t * LynxVersion = "*");
Bool_t ExpandFile(Int_t ProcID, TString & TemplatePath, TString & SetupFile, TString & DestPath, TString & DestFile);
Bool_t CreateNodeList(TString & NodeListFile);
Bool_t WriteRhostsFile(TString & RhostsFile);
public:
TMrbLofNamedX fLofSetupModes;
TMrbLofNamedX fLofProcs;
TMrbLofNamedX fLofControllers;
TMrbLofNamedX fLofTriggerModules;
TMrbLofNamedX fLofTriggerModes;
TMrbLofNamedX fLofSetupTags;
protected:
Bool_t fVerbose;
TString fTemplatePath;
TMbsEvtBuilder * fEvtBuilder;
TObjArray fLofReadouts;
TMbsReadoutProc * fReadoutError;
TEnv * fSettings;
TString fHomeDir;
TString fPath;
TString fRemoteHome;
TString fRemoteMbsHome;
TString fArrayString;
ClassDef(TMbsSetup, 1)
};
#endif