ROOT logo
#ifndef __TMbsSetup_h__
#define __TMbsSetup_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           mbssetup/inc/TMbsSetup.h
// Purpose:        Define a MBS setup
// Class:          TMbsSetup            -- base class
// Description:    Class definitions to generate a MBS setup.
// Author:         R. Lutter
// Revision:       $Id: TMbsSetup.h,v 1.9 2006-10-31 15:44:55 Rudolf.Lutter Exp $       
// Date:           
// Keywords:
//////////////////////////////////////////////////////////////////////////////

#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"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMbsSetup
// Purpose:        Define setup and generate files
// Methods:
// Description:    Creates a MBS setup and generates setup files.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMbsSetup : public TMrbEnv {

	public:

		TMbsSetup(const Char_t * SetupFile = ".mbssetup");		// create config

		~TMbsSetup();	 				// explicit dtor

		Bool_t MakeSetupFiles();		// generate all files needed to run MBS

		inline TMbsReadoutProc * FirstReadout() { return((TMbsReadoutProc *) fLofReadouts.First()); };	// get readout
		inline TMbsReadoutProc * NextReadout(TMbsReadoutProc * Readout) {								// get next
					return((TMbsReadoutProc *) fLofReadouts.After((TObject *) Readout));
		};
		TMbsReadoutProc * ReadoutProc(Int_t ReadoutId);	// get readout proc by its number

		Bool_t SetMode(const Char_t * Mode);					// setup mode
		Bool_t SetMode(EMbsSetupMode Mode);
		TMrbNamedX * GetMode();

		Bool_t SetHomeDir(const Char_t * HomeDir);			// home dir (lynx)
		const Char_t * GetHomeDir();

		Bool_t SetPath(const Char_t * Path, Bool_t Create = kFALSE);		// where to put setup files
		const Char_t * GetPath();

		Bool_t SetNofReadouts(Int_t NofReadouts);					// number of readout procs
		Int_t GetNofReadouts();

		inline TMbsEvtBuilder * EvtBuilder() { return(fEvtBuilder); };

		Bool_t CheckSetup();					// check consistency

		void RemoveSetup(); 					// remove entries from setup data base
		void Reset();	 						// reset to default

		const Char_t * RemoteHomeDir();				// get home dir via remote login
		Bool_t SetHomeDirFromRemote();			// set home dir as seen by MBS

		const Char_t * EncodeArray(TArrayI & Data, Int_t NofEntries, Int_t Base = 10);	// convert array data to string
		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);	// expand setup file
		Bool_t CreateNodeList(TString & NodeListFile);				// create node list
		Bool_t WriteRhostsFile(TString & RhostsFile);				// rewrite .rhosts

	public:										// public lists of key words:
		TMrbLofNamedX fLofSetupModes;			// ... setup modes
		TMrbLofNamedX fLofProcs;				// ... processors
		TMrbLofNamedX fLofControllers; 		// ... crate controllers
		TMrbLofNamedX fLofTriggerModules;		// ... trigger modules
		TMrbLofNamedX fLofTriggerModes; 		// ... trigger modes
		TMrbLofNamedX fLofSetupTags;	 		// ... setup tags

	protected:
		Bool_t fVerbose;						// verbose mode

		TString fTemplatePath; 					// where to find template files

		TMbsEvtBuilder * fEvtBuilder;			//! event builder (master)

		TObjArray fLofReadouts; 				// readout processors (slaves)
		TMbsReadoutProc * fReadoutError;		//! ... error

		TEnv * fSettings;						//! settings depending on lynx, mbs, cpu etc.

		TString fHomeDir;						// temp storage: home dir
		TString fPath;							// ... path
		TString fRemoteHome;					// ... remote home dir
		TString fRemoteMbsHome;					// ... as seen from mbs
		TString fArrayString;					// temp storage method EncodeArray()

	ClassDef(TMbsSetup, 1)		// [MBS Setup] Base class to maintain setup data for GSI's MBS system
};

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