ROOT logo
#ifndef __TMrbConfig_h__
#define __TMrbConfig_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           expconf/inc/TMrbConfig.h
// Purpose:        Define experimental configuration for MARaBOU
// Class:          TMrbConfig           -- generate MARaBOU configuration
// Description:    Class definitions to implement a configuration front-end for MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbConfig.h,v 1.102 2011-12-15 16:33:23 Marabou Exp $
// Date:
// Keywords:
//////////////////////////////////////////////////////////////////////////////

namespace std {} using namespace std;

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <fstream>

#include "Rtypes.h"
#include "TSystem.h"
#include "TObject.h"
#include "TNamed.h"
#include "TString.h"
#include "TObjString.h"
#include "TArrayI.h"

#include "TMrbNamedX.h"
#include "TMrbLofNamedX.h"
#include "TMrbTemplate.h"

#include "TMrbCNAF.h"
#include "TMrbLogger.h"

class TMrbEvent;
class TMrbSubevent;
class TMrbModule;
class TMrbModuleChannel;
class TMrbScaler;
class TMrbMesytec_Mux16;

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           packNames
//////////////////////////////////////////////////////////////////////////////

class packNames : public TObject {
	public:
		packNames(const Char_t * f, const Char_t * t, const Char_t * x, const Char_t * c, Int_t b = -1) : F(f), T(t), X(x), C(c), B(b) {};
		~packNames() {};
		inline const TString & GetF() const { return(F); };
		inline const TString & GetT() const { return(T); };
		inline const TString & GetX() const { return(X); };
		inline const TString & GetC() const { return(C); };
		inline Int_t GetB() const { return(B); };
	protected:
		TString F; TString T; TString X; TString C; Int_t B;
};

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbConfig
// Purpose:        Define configuration and generate code
// Description:    Creates an experimental configuration and generates code
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbConfig : public TNamed {

	public:
		enum EMrbReadoutTag 	{	kRdoPath			=	1,			// readout tags
									kRdoFile,
									kRdoInclude,
									kRdoLibs,
									kRdoPosix,
									kRdoPosixLib,
									kRdoLynxPlatform,
									kRdoAlign64,
									kRdoDebug,
									kRdoNameLC,
									kRdoNameUC,
									kRdoCreationDate,
									kRdoAuthor,
									kRdoUser,
									kRdoTitle,
									kRdoSetup,
									kRdoCamacController,
									kRdoDefineTriggers,
									kRdoDefinePointers,
									kRdoDeviceTables,
									kRdoInitPointers,
									kRdoInitEnvironment,
									kRdoInitCommonCode,
									kRdoInitModules,
									kRdoOnStartAcquisition,
									kRdoOnStopAcquisition,
									kRdoOnTriggerXX,
									kRdoIgnoreTriggerXX,
									kRdoWriteSetup,
									kRdoIncludesAndDefs,
									kRdoUtilities,
									kRdoDefinePrototypes,
									kRdoDefineGlobals,
									kRdoDefineGlobalsOnce,
									kRdoDefineLocalVarsInit,
									kRdoDefineLocalVarsReadout,
									kRdoUserDefinedDefines,
									kRdoClearModule
								};

		enum EMrbAnalyzeTag 	{	kAnaFile			=	1,			// analyze tags
									kAnaNameLC,
									kAnaNameUC,
									kAnaTitle,
									kAnaCreationDate,
									kAnaAuthor,
									kAnaUser,
									kAnaHtmlMakeSetup,
									kAnaIncludeXhitDefs,
									kAnaIncludesAndDefs,
									kAnaPragmaLinkClasses,
									kAnaClassImp,
									kAnaReservedEvents,
									kAnaMakeClassNames,
									kAnaInitializeLists,
									kAnaModuleTimeOffset,
									kAnaAddUserEnv,
									kAnaFindVars,
									kAnaEventClassDef,
									kAnaEventClassMethods,
									kAnaEventUserClassMethods,
									kAnaEventClassInstance,
									kAnaEventUserClassInstance,
									kAnaEventDefinePointers,
									kAnaEventNameLC,
									kAnaEventNameUC,
									kAnaEventTitle,
									kAnaEventAutoSave,
									kAnaEventTrigger,
									kAnaEventIdEnum,
									kAnaEventPrivateData,
									kAnaEventUserMethods,
									kAnaEventUserData,
									kAnaEventMethodToProcessEvent,
									kAnaEventDispatchOverTrigger,
									kAnaEventIgnoreTrigger,
									kAnaEventTriggerStartAcq,
									kAnaEventTriggerStopAcq,
									kAnaEventReplayEvent,
									kAnaEventBookParams,
									kAnaEventBookHistograms,
									kAnaEventFillHistograms,
									kAnaEventFillRateHistograms,
									kAnaEventSetupSevtList,
									kAnaEventAllocHitBuffer,
									kAnaEventSetFakeMode,
									kAnaEventCreateTree,
									kAnaEventAddBranches,
									kAnaEventSetScaleDown,
									kAnaEventInitializeTree,
									kAnaEventSetReplayMode,
									kAnaEventSetWriteTree,
									kAnaEventInitializeBranches,
									kAnaEventSetBranchStatus,
									kAnaEventReplayTree,
									kAnaEventFirstSubevent,
									kAnaEventAnalyze,
									kAnaEvtResetData,
									kAnaEvtBaseClass,
									kAnaSevtNameLC,
									kAnaSevtNameUC,
									kAnaSevtInheritsFrom,
									kAnaSevtTitle,
									kAnaSevtSetName,
									kAnaSevtSerial,
									kAnaSevtNofParams,
									kAnaSevtNofModules,
									kAnaSevtSerialEnum,
									kAnaSevtBitsEnum,
									kAnaSevtIndicesEnum,
									kAnaSevtClassDef,
									kAnaSevtClassMethods,
									kAnaSevtClassInstance,
									kAnaSevtGetAddr,
									kAnaSevtUserMethods,
									kAnaSevtUserData,
									kAnaSevtFriends,
									kAnaSevtCtor,
									kAnaSevtDispatchOverType,
									kAnaSevtDispatchOverSerial,
									kAnaSevtDefineAddr,
									kAnaSevtPrivateData,
									kAnaSevtPrivateHistograms,
									kAnaSevtFillSubevent,
									kAnaSevtBookParams,
									kAnaSevtBookHistograms,
									kAnaSevtFillHistograms,
									kAnaSevtFillHistogramsHB,
									kAnaSevtInitializeBranch,
									kAnaSevtXhitClass,
									kAnaSevtResetData,
									kAnaModuleIdEnum,
									kAnaModuleSerialEnum,
									kAnaModuleSpecialEnum,
									kAnaHistoDefinePointers,
									kAnaHistoInitializeArrays,
									kAnaHistoBookUserDefined,
									kAnaHistoFillArrays,
									kAnaVarDefinePointers,
									kAnaVarClassInstance,
									kAnaVarArrDefinePointers,
									kAnaVarArrClassInstance,
									kAnaWdwDefinePointers,
									kAnaWdwClassInstance,
									kAnaWdwAdjustPointers,
									kAnaFctClassInstance,
									kAnaFctDefinePointers,
									kAnaFctAdjustPointers,
									kAnaUserInitializeBeforeHB,
									kAnaUserInitializeAfterHB,
									kAnaUserReloadParams,
									kAnaUserFinishRun,
									kAnaUserBookParams,
									kAnaUserBookHistograms,
									kAnaUserGlobals,
									kAnaUserUtilities,
									kAnaUserMessages,
									kAnaUserDummyMethods,
									kAnaUsingNameSpace,
									kAnaUserDefinedGlobals,
									kAnaUserDefinedEnums,
									kAnaUserDefinedDefines,
									kAnaMakeUserCxxFlags,
									kAnaMakeUserHeaders,
									kAnaMakeUlibHeaders,
									kAnaMakeUserCode,
									kAnaMakeUserLibs,
									kAnaMakeUserRules,
									kAnaMakeUlibRules,
									kAnaMakeAll,
									kAnaMakeClean,
									kAnaMakeLibNew,
									kAnaIncludeEvtSevtModGlobals,
									kAnaInitializeEvtSevtMods,
									kAnaLoadUserLibs
								};

		enum EMrbConfigTag  	{	kCfgFile				=	1,		// config tags
									kCfgNameLC,
									kCfgNameUC,
									kCfgTitle,
									kCfgAuthor,
									kCfgCreationDate,
									kCfgCreateConfig,
									kCfgDefineEvents,
									kCfgDefineSubevents,
									kCfgDefineModules,
									kCfgAssignParams,
									kCfgConnectToEvent,
									kCfgWriteTimeStamp,
									kCfgWriteDeadTime,
									kCfgDefineVariables,
									kCfgDefineWindows,
									kCfgDefineFunctions,
									kCfgDefineScalers,
									kCfgMakeCode
								};

		enum EMrbRcFileTag  	{	kRcExpData				=	1,		// rc file tags
									kRcEvtData,
									kRcSevtData,
									kRcModuleData,
									kRcModuleSettings,
									kRcUserGlobals
								};

		enum EMrbUserMacroTag  	{	kUmaFile				=	1,		// user macro tags
									kUmaNameLC,
									kUmaNameUC,
									kUmaTitle,
									kUmaAuthor,
									kUmaCreationDate
								};

		enum EMrbUserEventTag  	{	kUevFile				=	1,		// user event tags
									kUevNameLC,
									kUevNameUC,
									kUevConfigLC,
									kUevConfigUC,
									kUevTitle,
									kUevAuthor,
									kUevCreationDate
								};

		enum EMrbXhitTag 		 {	kXhitFile				=	1,		// extended hit tags
									kXhitNameLC,
									kXhitNameUC,
									kXhitConfigLC,
									kXhitConfigUC,
									kXhitTitle,
									kXhitAuthor,
									kXhitCreationDate,
									kXhitDataLength
								};

		enum					{	kNoOptionSpecified		= 0x80000000	};

		enum EMrbReadoutOptions	{	kRdoOptOverwrite		=	BIT(0),
									kRdoOptVerbose			=	BIT(1)		};		// readout options
		enum					{	kRdoOptDefault			=	0			};

		enum EMrbAnalyzeOptions	{	kAnaOptSubevents		=	BIT(0),		// analyze options
									kAnaOptParamsByName 	=	BIT(1),
									kAnaOptHistograms		=	BIT(2),
									kAnaOptLeaves			=	BIT(3),
									kAnaOptOverwrite		=	BIT(4),
									kAnaOptReplayMode		=	BIT(5),
									kAnaOptVerbose			=	BIT(7)
								};
		enum					{	kAnaOptDefault			=	kAnaOptSubevents |
																kAnaOptParamsByName |
																kAnaOptHistograms};

		enum EMrbConfigOptions	{	kCfgOptOverwrite		=	BIT(0),		// config options
									kCfgOptVerbose			=	BIT(1)
								};
		enum					{	kCfgOptDefault			=	0	};

		enum EMrbRcFileOptions	{	kRcOptOverwrite			=	BIT(0),		// rc file options
									kRcOptByName			=	BIT(1),
									kRcOptVerbose			=	BIT(2)
								};
		enum					{	kRcOptDefault			=	kRcOptByName	};

		enum EMrbIncludeOptions	{	kIclOptHeaderFile			=	BIT(0),		// include options
									kIclOptUserMethod			=	BIT(1),
									kIclOptClassTMrbAnalyze		=	BIT(2),
									kIclOptClassTUsrEvent		=	BIT(3),
									kIclOptUserLib				=	BIT(4),
									kIclOptUserClass			=	BIT(5),
									kIclOptInitialize			=	kIclOptUserMethod | kIclOptClassTMrbAnalyze | BIT(6),
									kIclOptReloadParams			=	kIclOptUserMethod | kIclOptClassTMrbAnalyze | BIT(7),
									kIclOptFinishRun			=	kIclOptUserMethod | kIclOptClassTMrbAnalyze | BIT(8),
									kIclOptHandleMessages		=	kIclOptUserMethod | kIclOptClassTMrbAnalyze | BIT(9),
									kIclOptBookHistograms		=	kIclOptUserMethod | kIclOptClassTUsrEvent | BIT(10),
									kIclOptBookParams			=	kIclOptUserMethod | kIclOptClassTUsrEvent | BIT(11),
									kIclOptProcessEvent			=	kIclOptUserMethod | kIclOptClassTUsrEvent | BIT(12),
									kIclOptEventMethod			=	kIclOptUserMethod | kIclOptClassTUsrEvent | BIT(13),
									kIclOptUserDefinedEvent		=	kIclOptUserClass | BIT(14),
									kIclOptUtilities			=	BIT(15)
								};

		enum					{	kNofCrates			=	100			};	// max number of crates
		enum					{	kNofControllers		=	2			};	// max number of camac controllers
		enum					{	kNofTriggers		=	16			};	// max number of triggers
		enum					{	kAutoSave			=	10000000	};	// auto save after 10 MB

		enum EMrbTriggerStatus	{	kTriggerUnused			=	0,		// trigger status
									kTriggerAssigned,
									kTriggerPattern,
									kTriggerReserved,
									kTriggerIgnored,
									kTriggerOutOfRange
								};

		enum EMrbReservedTriggers	{
									kTriggerStartAcq	=	14, 	// reserved trigger numbers
									kTriggerStopAcq 	=	15
								};

		enum					{	kRdoOptEvtDefault	=	0	};					// default readout options
		enum					{	kAnaOptEvtDefault	=	kAnaOptSubevents | kAnaOptHistograms	};	// default analyze options
		enum					{	kCfgOptEvtDefault	=	0	};					// default config options

		enum					{	kRdoOptSevtDefault	=	0	};										// default readout options
		enum					{	kAnaOptSevtDefault	=	kAnaOptParamsByName | kAnaOptHistograms };	// default analyze options
		enum					{	kCfgOptSevtDefault	=	0	};										// default config options
		enum EMrbModuleTag	 	{	kModuleDefs			=	1,	// special readout tags
									kModuleInitCommonCode,
									kModuleInitModule,
									kModuleInitBLT,
									kModuleInitChannel,
									kModuleReadChannel,
									kModuleIncrementChannel,
									kModuleSkipChannels,
									kModuleWriteSubaddr,
									kModuleStoreData,
									kModuleClearModule,
									kModuleReadModule,
									kModuleSetupReadout,
									kModuleFinishReadout,
									kModuleStartAcquisition,
									kModuleStopAcquisition,
									kModuleStartAcquisitionGroup,
									kModuleStopAcquisitionGroup,
									kModuleUtilities,
									kModuleDefineGlobals,
									kModuleDefineGlobalsOnce,
									kModuleDefineLocalVarsInit,
									kModuleDefineLocalVarsReadout,
									kModuleDefinePrototypes,
									kModuleDefineIncludePaths,
									kModuleDefineLibraries,

								};

		enum EMrbChannelStatus	{
									kChannelSingle  	=	1,			// camac channel status
									kChannelArray,
									kChannelArrElem
								};

		enum EMrbDataType		{	kDataChar			=	BIT(0),			// data types
									kDataUShort 		=	BIT(1),
									kDataUInt			=	BIT(2),
									kDataULong			=	BIT(3),
									kDataFloat 			=	BIT(4)
								};

		enum EMrbGlobalType		{	kGlobInt			=	0,			// global types
									kGlobFloat,
									kGlobDouble,
									kGlobBool,
									kGlobString,
									kGlobObject
								};

		enum EMrbCrateType  	{	kCrateUnused		=	0,			// crate types
									kCrateCamac 		=	BIT(0),
									kCrateVME			=	BIT(1),
									kCrateAny			=	kCrateCamac | kCrateVME
								};

		enum EMrbControllerType {	kControllerUnused	=	0,			// controller types (camac)
									kControllerCBV 		=	5,			// (see MBS manual!)
									kControllerCC32		=	11
								};

		enum EMrbVMEMapping	 {	kVMEMappingUndef	=	0,			// vme mapping
									kVMEMappingDirect	=	BIT(0),
									kVMEMappingStatic	=	BIT(1),
									kVMEMappingDynamic	=	BIT(2),
									kVMEMappingHasBLT	=	BIT(10),
									kVMEMappingHasMBLT	=	BIT(11)
								};

		enum EMrbHistoType  	{	kHistoTH1			=	BIT(10), 	// histogram types
									kHistoTH2			=	BIT(11),
									kHistoTH3			=	BIT(12),
									kHistoTHC			=	BIT(1),
									kHistoTHS			=	BIT(2),
									kHistoTHI			=	BIT(3),
									kHistoTHF			=	BIT(4),
									kHistoTHD			=	BIT(5),
									kHistoTHR			=	BIT(6),
									kHistoTH1C			=	kHistoTH1 | kHistoTHC,
									kHistoTH1S			=	kHistoTH1 | kHistoTHS,
									kHistoTH1F			=	kHistoTH1 | kHistoTHF,
									kHistoTH1D			=	kHistoTH1 | kHistoTHD,
									kHistoTH2C			=	kHistoTH2 | kHistoTHC,
									kHistoTH2I			=	kHistoTH2 | kHistoTHI,
									kHistoTH2S			=	kHistoTH2 | kHistoTHS,
									kHistoTH2F			=	kHistoTH2 | kHistoTHF,
									kHistoTH2D			=	kHistoTH2 | kHistoTHD,
									kHistoTH3C			=	kHistoTH3 | kHistoTHC,
									kHistoTH3S			=	kHistoTH3 | kHistoTHS,
									kHistoTH3F			=	kHistoTH3 | kHistoTHF,
									kHistoTH3D			=	kHistoTH3 | kHistoTHD,
									kHistoRate			=	kHistoTH1 | kHistoTHF | kHistoTHR
								};

		enum EMrbModuleType  	{	kModuleCamac		=	TMrbConfig::kCrateCamac,
									kModuleVME			=	TMrbConfig::kCrateVME,
									kModuleRaw			=	BIT(2),
									kModuleListMode		=	BIT(3),
									kModuleSingleMode	=	BIT(4),
									kModuleMultiEvent	=	BIT(5),
									kModuleTimeStamp	=	BIT(6),
									kModuleAdc			=	BIT(7),
									kModuleTdc			=	BIT(8),
									kModuleQdc			=	BIT(9),
									kModuleDig			=	BIT(10),
									kModulePatternUnit	=	BIT(11),
									kModuleScaler		=	BIT(12),
									kModuleIOReg		=	BIT(13),
									kModuleControl		=	BIT(14)
								};

		enum EMrbManufacturers	{	kManufactOther		=	0,
									kManufactSilena 	=	BIT(12),
									kManufactOrtec		=	BIT(13),
									kManufactLeCroy 	=	BIT(14),
									kManufactSen		=	BIT(15),
									kManufactTUM		=	BIT(16),
									kManufactNE 		=	BIT(17),
									kManufactCaen		=	BIT(18),
									kManufactGanelec	=	BIT(19),
									kManufactXia		=	BIT(20),
									kManufactAcromag	=	BIT(21),
									kManufactKinetics	=	BIT(22),
									kManufactMpiHD		=	BIT(23),
									kManufactSis		=	BIT(24),
									kManufactCologne	=	BIT(25),
									kManufactISN		=	BIT(26),
									kManufactMesytec	=	BIT(27),
									kManufactGSI		=	BIT(28)
								};

		enum EMrbModuleID		{	kModuleSilena4418V		=   kManufactSilena + 0x1,  // modules ids *** insert new modules at end of list !!! ***
									kModuleSilena4418T		=	kManufactSilena + 0x2,
									kModuleUct8904			=	kManufactTUM + 0x3,
									kModuleSen16P2047		=	kManufactSen + 0x4,
									kModuleSilena7420Smdw	=	kManufactSilena + 0x5,
									kModuleLeCroy2228A		=	kManufactLeCroy + 0x6,
									kModuleLeCroy4434		=	kManufactLeCroy + 0x7,
									kModuleAdcd9701 		=	kManufactTUM + 0x8,
									kModuleSen2010			=	kManufactSen + 0x9,
									kModuleNE9041			=	kManufactNE + 0xa,
									kModuleCaenV260 		=	kManufactCaen + 0xb,
									kModuleCaenV556 		=	kManufactCaen + 0xc,
									kModuleCaenV785 		=	kManufactCaen + 0xd,
									kModuleGanelec_Q1612F 	=	kManufactGanelec + 0xe,
									kModuleOrtec_413A	 	=	kManufactOrtec + 0xf,
									kModuleXia_DGF_4C	 	=	kManufactXia + 0x10,
									kModuleAcromag_IP341	 =	kManufactAcromag + 0x11,
									kModuleLeCroy4432		 =	kManufactLeCroy + 0x12,
									kModuleLeCroy4448		 =	kManufactLeCroy + 0x13,
									kModuleKinetics3655		 =	kManufactKinetics + 0x14,
									kModuleCaenV775 		=	kManufactCaen + 0x15,
									kModuleCaenV820 		=	kManufactCaen + 0x16,
									kModuleMpiHD_IOReg 		=	kManufactMpiHD + 0x17,
									kModuleSis_3600 		=	kManufactSis + 0x18,
									kModuleSis_3801 		=	kManufactSis + 0x19,
									kModuleLeCroy_1176		=	kManufactLeCroy + 0x1a,
									kModuleLeCroy_2280		=	kManufactLeCroy + 0x1b,
									kModuleCologne_CPTM		=	kManufactCologne + 0x1c,
									kModuleCaenV879 		=	kManufactCaen + 0x1d,
									kModuleSis_3820 		=	kManufactSis + 0x1e,
									kModuleSis_3300 		=	kManufactSis + 0x1f,
									kModuleCaenV965 		=	kManufactCaen + 0x20,
									kModuleISN4481	 		=	kManufactISN + 0x21,
									kModuleMesytecMux16	 	=	kManufactMesytec + 0x22,
									kModuleSis_3302 		=	kManufactSis + 0x23,
									kModuleMesytecMadc32	=	kManufactMesytec + 0x24,
									kModuleCaenV1X90	    =   kManufactCaen + 0x25,
									kModuleVulomTB		    =   kManufactGSI + 0x26,
									kModuleMesytecMqdc32	=	kManufactMesytec + 0x27,
									kModuleGassiplex		=	kManufactTUM + 0x28,
									kModuleMesytecMtdc32	=	kManufactMesytec + 0x29,
									kModuleMesytecMdpp16	=	kManufactMesytec + 0x2a,
									kModuleUserDefined	 	=	kManufactOther,
									kModuleSoftModule	 	=	kManufactOther + 1
								};

		enum EMrbScalerMode  	{	kScalerCamac		=	TMrbConfig::kCrateCamac,		// scaler types
									kScalerVME			=	TMrbConfig::kCrateVME,
									kScalerListMode		=	TMrbConfig::kModuleListMode,
									kScalerSingleMode	=	TMrbConfig::kModuleSingleMode,
									kScalerDeadTime 	=	BIT(8),
									kScalerExternalGate =	BIT(9)
								};

		enum EMrbModuleFunction {	kModuleFctInit		=	0,		// module functions
									kModuleFctClear,
									kModuleFctRead,
									kModulerFctWrite,
									kNofModuleFunctions
								};

		enum					{	kRdoHeaderBit		=	BIT(31)	};

		enum					{	kMbsSevtSize		=	0x1000 };
		enum					{	kMbsPipeSegLength_RIO2	=	0x0100000 };	// 1MB
		enum					{	kMbsPipeSegLength_RIO3	=	0x2000000 };	// 16MB
		enum					{	kMbsPipeSegLength_RIO4	=	0x8000000 };	// 64MB
		enum					{	kMbsPipeLengthMax	=	1000 };
		enum					{	kMbsPipeLengthMin	=	100 };
		enum					{	kMbsEventBufferSize	=	0x4000 };
		enum					{	kMbsNofEventBuffers	=	8 };
		enum					{	kMbsNofStreams		=	8 };

	public:

		TMrbConfig() {};										// default ctor

		TMrbConfig(const Char_t * CfgName, const Char_t * CfgTitle = "");	// create config

		~TMrbConfig() { 										// dtor
			fLofEvents.Delete();								// delete objects stored in TMrbLofNamedXs
//			fLofSubevents.Delete();
			fLofModules.Delete();
			fLofScalers.Delete();
			fLofMuxs.Delete();
			fLofReadoutTags.Delete();
			fLofAnalyzeTags.Delete();
			fLofConfigTags.Delete();
			fCNAFNames.Delete();
			fLofModuleTags.Delete();
			fLofModuleIDs.Delete();
			fLofOnceOnlyTags.Delete();
			fLofUserIncludes.Delete();
			fLofUserLibs.Delete();
			fLofUserClasses.Delete();
		};

		TMrbConfig(const TMrbConfig &) : TNamed() {};				// default copy ctor

														// generate user-defined readout code
		Bool_t MakeReadoutCode(const Char_t * CodeFile = "", Option_t * Options = "");

 														// generate class defs and methods
		Bool_t MakeAnalyzeCode(const Char_t * CodeFile = "", Option_t * Options = "Subevents:byName:Histograms");
		Bool_t MakeAnalyzeCode(ofstream & AnaStrm, TMrbConfig::EMrbAnalyzeTag TagIndex,
											UInt_t VarType, TMrbTemplate & Template, const Char_t * Prefix = NULL);

														// include class specific code
		Bool_t MakeAnalyzeCode(ofstream & AnaStrm, TObject * Class, const Char_t * CodeFile,
											TMrbConfig::EMrbAnalyzeTag TagIndex, const Char_t * Extension);

 														// generate config file from memory
		Bool_t MakeConfigCode(const Char_t * CodeFile = "", Option_t * Options = "");

 														// generate rc file
		Bool_t MakeRcFile(const Char_t * CodeFile = "", const Char_t * ResourceName = "", Option_t * Options = "byName");

		Bool_t CallUserMacro(const Char_t * MacroName = "", Bool_t AclicFlag = kTRUE);				// call user macro
		Bool_t ExecUserMacro(ofstream * Strm, TObject * CfgObject, const Char_t * TagWord) const;

		Bool_t CompileReadoutCode(const Char_t * Host, Bool_t CleanFlag = kTRUE) const;	// compile readout code
		Bool_t CompileAnalyzeCode(Bool_t CleanFlag = kTRUE) const;						// compile analysis code

		inline void SetSevtSize(Int_t Size = kMbsSevtSize, Int_t PipeSegLength = -1) { fSevtSize = Size; fPipeSegLength = PipeSegLength; }; 	// set size of subevent (for all events/triggers)
		inline Int_t GetSevtSize() { return(fSevtSize); }

		inline void SetMbsBuffers(Int_t Size = kMbsEventBufferSize, Int_t NofBuffers = kMbsNofEventBuffers, Int_t NofStreams = kMbsNofStreams) {
			fEventBufferSize = Size; fNofEventBuffers = NofBuffers; fNofStreams = NofStreams;
		};

		Bool_t UpdateMbsSetup();									// update .mbssetup database if online mode

		Bool_t CopyHistoLists(const Char_t * HistoDir = "");		// copy .histlist files to directory where histo files reside
		
		Bool_t ExecRootMacro(const Char_t * Macro);

  		void Print(Option_t * Option) const { TNamed::Print(Option); };
		void Print(ostream & OutStrm, const Char_t * Prefix = "") const;			// show data
		inline virtual void Print() const { Print(cout, ""); };
		void PrintToFile(Char_t * File) const;
		Int_t GetNofErrors() const;							// number of errors
		Int_t PrintErrors(Bool_t ErrorsOnly = kFALSE) const; // print error summary

		void AddEvent(TMrbEvent * Evt);

		inline TMrbEvent * FindEvent(const Char_t * EvtName) const {				// find an event
			return ((TMrbEvent *) fLofEvents.FindObject(EvtName));
		};

		TMrbEvent * FindEvent(Int_t Trigger) const;								// find event by its trigger

		inline Int_t GetNofEvents() { return(fNofEvents); };			// add a new event

		void AddSubevent(TMrbSubevent * Sevt);							// add a new subevent

		inline TMrbSubevent * NextSubevent(TMrbSubevent * After = NULL) const {					// get next subevent from list
			return((After == NULL) ? (TMrbSubevent *) fLofSubevents.First() : (TMrbSubevent *) fLofSubevents.After((TObject *) After));
		};

		inline TMrbSubevent * FindSubevent(const Char_t * SevtName) const {			// find a subevent
			return ((TMrbSubevent *) fLofSubevents.FindObject(SevtName));
		};

		TMrbSubevent * FindSubevent(TClass * Class, TMrbSubevent * After = NULL) const;		// find a subevent by class type

		TMrbSubevent * FindSubevent(Int_t SevtSerial) const;							// find subevent by its serial number

		inline Int_t AssignSevtSerial() const { return(fNofSubevents + 1); }; 	// get unique serial number for a subevent

		inline void AddModule(TMrbModule * Module) { 							// add a new module
			fLofModules.Add((TObject *) Module);
			fNofModules++;
		};

		inline TMrbModule * NextModule(TMrbModule * After = NULL) const {						// get next module from list
			return((After == NULL) ? (TMrbModule *) fLofModules.First() : (TMrbModule *) fLofModules.After((TObject *) After));
		};

		inline TMrbModule * FindModule(const Char_t * ModuleName) const {			// find module by its name
			return ((TMrbModule *) fLofModules.FindObject(ModuleName));
		};

		TMrbModule * FindModuleByID(TMrbConfig::EMrbModuleID ModuleID, TMrbModule * After = NULL) const; 		// find (next) module by its id
		TMrbModule * FindModuleByType(UInt_t ModuleType, TMrbModule * After = NULL) const; 	// find (next) module by its type
		TMrbModule * FindModuleByCrate(Int_t Crate, TMrbModule * After = NULL) const;		// find (next) module by crate number
		TMrbModule * FindModuleBySerial(Int_t ModuleSerial) const;						// find module by its unique serial

		inline Int_t AssignModuleSerial() const { return(fNofModules + 1); }; 		// set unique serial number for a module

		Bool_t CheckModuleAddress(TMrbModule * Module, Bool_t WrnOnly = kTRUE) const;	// check if module address or position legal

		inline Bool_t HasCamacModules() const { return(FindModuleByType(TMrbConfig::kModuleCamac) != NULL); };	// camac?
		inline Bool_t HasVMEModules() const { return(FindModuleByType(TMrbConfig::kModuleVME) != NULL); };		// vme?

		void AddScaler(TMrbModule * Scaler);				// add a scaler to list
		void AddMux(TMrbModule * Multiplexer);				// add a multiplexer to list

		Bool_t WriteMuxConfig(const Char_t * CfgFile);				// write multiplexer config

		Bool_t SetMbsBranch(TMrbNamedX & MbsBranch, Int_t MbsBranchNo, const Char_t * MbsBranchName = NULL);	// mbs branch
		Int_t CheckMbsBranchSettings();
		inline Bool_t IsMultiBranch() { return (fLofMbsBranches.GetEntriesFast() > 0); };
		inline Bool_t IsSingleBranch() { return (fLofMbsBranches.GetEntriesFast() == 0); };
		inline Int_t GetNofBranches() { return fLofMbsBranches.GetEntriesFast(); };
		
		TMrbModuleChannel * FindParam(const Char_t * ParamName) const;							// find a param

		Bool_t HistogramExists(const Char_t * HistoName) const;						// check if histo exists

		inline TMrbModule * FindScaler(const Char_t * ScalerName) const {				// find a scaler
			return((TMrbModule *) fLofScalers.FindObject(ScalerName));
		};
		TMrbModule * FindScalerByCrate(Int_t Crate, TMrbModule * After = NULL) const;		// find (next) scaler in a given crate

		const Char_t * GetAuthor();				// author's name
		const Char_t * GetMailAddr();			// author's mail addr

		inline UInt_t GetReadoutOptions() const { return(fReadoutOptions); }; // return MakeReadoutCode() options
		inline UInt_t GetAnalyzeOptions() const { return(fAnalyzeOptions); }; // return MakeAnalyzeCode() options
		inline UInt_t GetConfigOptions() const { return(fConfigOptions); };	// return MakeConfigCode() options
		inline UInt_t GetRcFileOptions() const { return(fRcFileOptions); };	// return MakeRcFile() options

		inline Bool_t IsVerbose() const { return(fVerboseMode); }; 			// verbose mode?

		Bool_t DefineVariables(const Char_t * VarType, const Char_t * VarDefs); 	// define a set of variables
		Bool_t DefineVariables(const Char_t * VarType, Int_t Value, const Char_t * VarDefs);
		Bool_t DefineVariables(const Char_t * VarType, Double_t Value, const Char_t * VarDefs);
		Bool_t DefineVariables(const Char_t * VarType, const Char_t * Value, const Char_t * VarDefs);

		Bool_t DefineWindows(const Char_t * WdwType, const Char_t * WdwDefs);	 	// define windows
		Bool_t DefineWindows(const Char_t * WdwType, Int_t Xlower, Int_t Xupper, const Char_t * WdwDefs);
		Bool_t DefineWindows(const Char_t * WdwType, Double_t Xlower, Double_t Xupper, const Char_t * WdwDefs);
		Bool_t DefineWindows(const Char_t * WdwType, Int_t Npoints, Double_t * X, Double_t * Y, const Char_t * WdwDefs);

		Bool_t DefineFunctions(const Char_t * FctType, const Char_t * FctDefs);			// define functions

		inline Bool_t LongParamNamesToBeUsed() const { return(fLongParamNames); };	// long names to guarantee uniqueness?
		inline void UseLongParamNames(Bool_t Flag = kTRUE) { fLongParamNames = Flag; };

		inline void WriteTimeStamp() { fWriteTimeStamp = kTRUE; };	// write a time stamp
		inline Bool_t TimeStampToBeWritten() const { return(fWriteTimeStamp); };

		Bool_t WriteDeadTime(const Char_t * Scaler, Int_t Interval = 1000);				// write a dead time events
		inline Bool_t DeadTimeToBeWritten() const { return(fDeadTimeInterval > 0); }; 	// check if dead time enabled
		inline Int_t GetDeadTimeInterval() const { return(fDeadTimeInterval); };			// get interval
		inline TMrbModule * GetDeadTimeScaler() const { return(fDeadTimeScaler); };			// get scaler def

		Int_t WriteCalibrationFile(Char_t * CalFile, Char_t * Modules, Char_t * CalType, Int_t Degree = 0);	// write/update calibration file

																					// include user-specific code
		Bool_t IncludeUserCode(const Char_t * IclPath, const Char_t * UserFile, Bool_t AutoGenFlag = kFALSE);
		inline Bool_t IncludeUserCode(const Char_t * UserFile, Bool_t AutoGenFlag = kFALSE) {
			return(this->IncludeUserCode("", UserFile, AutoGenFlag));
		};
		inline Bool_t UserCodeToBeIncluded() const { return(fLofUserIncludes.Last() >= 0); };

		Bool_t IncludeUserLib(const Char_t * IclPath, const Char_t * UserLib, Bool_t MakeIt = kFALSE);
		inline Bool_t IncludeUserLib(const Char_t * UserLib, Bool_t MakeIt = kFALSE) {
			return(this->IncludeUserLib("", UserLib, MakeIt));
		}
		inline Bool_t UserLibsToBeIncluded() const { return(fLofUserLibs.Last() >= 0); };

		Bool_t IncludeUserClass(const Char_t * IclPath, const Char_t * UserClass,
								Bool_t UserDefinedEvent = kFALSE);
		inline Bool_t IncludeUserClass(const Char_t * UserClass, Bool_t UserDefinedEvent = kFALSE) {
			return(this->IncludeUserClass("", UserClass, UserDefinedEvent));
		}
		inline Bool_t UserClassesToBeIncluded() const { return(fLofUserClasses.Last() >= 0); };

		inline void AddUserClass(EMrbIncludeOptions Opt, const Char_t * Name, const Char_t * Path = NULL) { 							// add a user class
			if (fLofUserClasses.FindByName(Name) == NULL) fLofUserClasses.AddNamedX((Int_t) Opt, Name, Path);
		};
		inline void AddUserClass(const Char_t * Name) { this->AddUserClass((EMrbIncludeOptions) 0, Name); };

		inline TMrbLogger * GetMessageLogger() const { return(fMessageLogger); };

		void Version() const;																// output welcome tex

		TMrbConfig * ReadFromFile(const Char_t * ConfigFile = "", Option_t * Options = ""); // read config from root file
		Bool_t WriteToFile(const Char_t * ConfigFile = "", Option_t * Options = "");		// write config objects to root file

		void SetGlobalAddress();							// set global address gMrbConfig

		inline void UseMapFile(Bool_t MapFlag = kTRUE) { fUseMapFile = MapFlag; };

		inline void  SetMultiBorC(TMrbCNAF::EMrbCNAF MultiBorC) { 	// store multi branch/crate status
			fMultiBorC |= MultiBorC;
		};

		inline void SetCrateType(Int_t Crate, EMrbCrateType CrateType) { fCrateTable[Crate] = CrateType; };
		inline EMrbCrateType GetCrateType(Int_t Crate) const { return((EMrbCrateType) fCrateTable[Crate]); };
		Int_t FindCrate(Int_t After = -1) const;												// find next crate
		Int_t GetNofCrates(EMrbCrateType CrateType = kCrateAny) const;															// return number of crates
		UInt_t GetCratePattern(EMrbCrateType CrateType = kCrateAny) const;														// return crate numbers as bit pattern

		Bool_t SetControllerType(Int_t Crate, const Char_t * Type);
		Bool_t SetControllerType(const Char_t * Crate, const Char_t * Type);
		inline void SetControllerType(Int_t Crate, EMrbControllerType Type) { fControllerTable[Crate] = Type; };
		inline EMrbControllerType GetControllerType(Int_t Crate) const { return((EMrbControllerType) fControllerTable[Crate]); };
																	// handle trigger patterns
		Bool_t HandleMultipleTriggers(Int_t T1 = 0, Int_t T2 = 0, Int_t T3 = 0, Int_t T4 = 0, Int_t T5 = 0);
		TMrbConfig::EMrbTriggerStatus GetTriggerStatus(Int_t Trigger) const; 		// get trigger status
		void UpdateTriggerTable(Int_t Trigger = 0);		// update trigger table: valid patterns, overlapping, etc.

		void AddToTagList(const Char_t * CodeFile, Int_t TagIndex); 		// add file:tag to be processed once
		Bool_t TagToBeProcessed(const Char_t * CodeFile, Int_t TagIndex) const;	// check if tag has already been processed

		Bool_t BookHistogram(const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Xbin, Double_t Xlow, Double_t Xup, const Char_t * Condition = NULL);
		Bool_t BookHistogram(const Char_t * ArrayName, const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Xbin, Double_t Xlow, Double_t Xup, const Char_t * Condition = NULL);

		Bool_t BookHistogram(const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Xbin, Double_t Xlow, Double_t Xup,
									Int_t Ybin, Double_t Ylow, Double_t Yup, const Char_t * Condition = NULL);
		Bool_t BookHistogram(const Char_t * ArrayName, const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Xbin, Double_t Xlow, Double_t Xup,
									Int_t Ybin, Double_t Ylow, Double_t Yup, const Char_t * Condition = NULL);

		Bool_t BookHistogram(const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Xbin, Double_t Xlow, Double_t Xup,
									Int_t Ybin, Double_t Ylow, Double_t Yup,
									Int_t Zbin, Double_t Zlow, Double_t Zup, const Char_t * Condition = NULL);
		Bool_t BookHistogram(const Char_t * ArrayName, const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Xbin, Double_t Xlow, Double_t Xup,
									Int_t Ybin, Double_t Ylow, Double_t Yup,
									Int_t Zbin, Double_t Zlow, Double_t Zup, const Char_t * Condition = NULL);

		Bool_t BookHistogram(const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									const Char_t * Args, const Char_t * Condition);

		Bool_t BookHistogram(const Char_t * ArrayName, const Char_t * HistoType, const Char_t * HistoName, const Char_t * HistoTitle,
									const Char_t * Args, const Char_t * Condition);

		Bool_t BookRateHistogram(const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Scale, Int_t Range, Bool_t Loop = kFALSE, const Char_t * Condition = NULL);
		Bool_t BookRateHistogram(const Char_t * ArrayName, const Char_t * HistoName, const Char_t * HistoTitle,
									Int_t Scale, Int_t Range, Bool_t Loop = kFALSE, const Char_t * Condition = NULL);

		TMrbNamedX * AddHistoToArray(const Char_t * ArrayName, const Char_t * HistoName);
		TMrbNamedX * FindHistoArray(const Char_t * HistoName, TMrbNamedX * After = NULL) const;	// find array histo is to be assigned to

		inline Int_t GetNofModules() const { return(fNofModules); };
		Int_t GetNofModules(const Char_t * Pattern) const;

		inline TObjArray * GetLofEvents() { return(&fLofEvents); };		// get address of ...
		inline TObjArray * GetLofSubevents() { return(&fLofSubevents); };
		inline TObjArray * GetLofModules() { return(&fLofModules); };
		const Char_t * GetLofEventsAsString(TString & LofEvents) const;
		const Char_t * GetLofSubeventsAsString(TString & LofSubevents) const;
		const Char_t * GetLofModulesAsString(TString & LofModules) const;
		inline TObjArray * GetLofScalers(){ return(&fLofScalers); };
		inline TObjArray * GetLofMuxs(){ return(&fLofMuxs); };
		inline TObjArray * GetLofUserHistograms() { return(&fLofUserHistograms); };
		inline TObjArray * GetLofXhits(){ return(&fLofXhits); };
		inline TObjArray * GetLofRdoIncludes(){ return(&fLofRdoIncludes); };
		inline TObjArray * GetLofRdoLibs(){ return(&fLofRdoLibs); };
		inline TMrbLofNamedX * GetLofModuleIDs() { return(&fLofModuleIDs); };
		inline TMrbLofNamedX * GetLofModuleTypes() { return(&fLofModuleTypes); };
		inline TMrbLofNamedX * GetLofDataTypes() { return(&fLofDataTypes); };
		inline TMrbLofNamedX * GetLofHistoTypes() { return(&fLofHistoTypes); };
		inline TMrbLofNamedX * GetLofGlobals() { return(&fLofGlobals); };
		inline TMrbLofNamedX * GetLofUserIncludes() { return(&fLofUserIncludes); };
		inline TMrbLofNamedX * GetLofUserClasses() { return(&fLofUserClasses); };
		inline TMrbLofNamedX * GetLofUserLibs() { return(&fLofUserLibs); };

		Bool_t NameNotLegal(const Char_t * ObjType, const Char_t * ObjName) const;	// check if name is legal within MARaBOU

		inline void MakeGlobal(const Char_t * Name, Int_t * IntVar, const Char_t * Comment = "") { fLofGlobals.AddNamedX(new TMrbNamedX(kGlobInt, Name, Comment, (TObject *) IntVar)); };
		inline void MakeGlobal(const Char_t * Name, Float_t * FloatVar, const Char_t * Comment = "") { fLofGlobals.AddNamedX(new TMrbNamedX(kGlobFloat, Name, Comment, (TObject *) FloatVar)); };
		inline void MakeGlobal(const Char_t * Name, Double_t * DblVar, const Char_t * Comment = "") { fLofGlobals.AddNamedX(new TMrbNamedX(kGlobDouble, Name, Comment, (TObject *) DblVar)); };
		inline void MakeGlobal(const Char_t * Name, Bool_t * BoolVar, const Char_t * Comment = "") { fLofGlobals.AddNamedX(new TMrbNamedX(kGlobBool, Name, Comment, (TObject *) BoolVar)); };
		inline void MakeGlobal(const Char_t * Name, TString & Str, const Char_t * Comment = "") { fLofGlobals.AddNamedX(new TMrbNamedX(kGlobString, Name, Comment, (TObject *) &Str)); };

		void MakeGlobal(const Char_t * Name, Int_t IntVal, const Char_t * Comment = "");
		void MakeGlobal(const Char_t * Name, Float_t FloatVal, const Char_t * Comment = "");
		void MakeGlobal(const Char_t * Name, Double_t DblVal, const Char_t * Comment = "");
		void MakeGlobal(const Char_t * Name, Bool_t BoolVal, const Char_t * Comment = "");
		void MakeGlobal(const Char_t * Name, const Char_t * Str, const Char_t * Comment = "");

		Bool_t GetGlobal(const Char_t * Name, Int_t & IntVar) const;
		Bool_t GetGlobal(const Char_t * Name, Float_t & FloatVar) const;
		Bool_t GetGlobal(const Char_t * Name, Double_t & DblVar) const;
		Bool_t GetGlobal(const Char_t * Name, Bool_t & BoolVar) const;
		Bool_t GetGlobal(const Char_t * Name, TString & Str) const;
		Int_t GetGlobI(const Char_t * Name) const;
		Float_t GetGlobF(const Char_t * Name) const;
		Double_t GetGlobD(const Char_t * Name) const;
		Bool_t GetGlobB(const Char_t * Name) const;
		const Char_t * GetGlobStr(const Char_t * Name) const;

		void PrintGlobals(const Char_t * File);
		void PrintGlobals(ostream & Out);
		inline void PrintGlobals() { this->PrintGlobals(cout); };

		void MakeDefined(const Char_t * Name, Int_t Value, const Char_t * Comment = "");
		void MakeDefined(const Char_t * Name, Bool_t Defined = kTRUE, const Char_t * Comment = "");
		Bool_t IsDefined(const Char_t * Name, Int_t & Value) const;
		Bool_t IsDefined(const Char_t * Name) const;

		Bool_t CreateUserMacro();
		Bool_t CreateUserEvent(ofstream & OutStrm, const Char_t * UserEvent, Bool_t CreateProto, Bool_t SystemPart);
		Bool_t CreateXhit(TMrbNamedX * Xhit);

		const Char_t * GetMbsVersion(TString & MbsVersion, Int_t BranchNo = -1, Bool_t Vformat = kTRUE, Bool_t Verbose = kFALSE);
		const Char_t * GetLynxVersion(TString & LynxVersion, Int_t BranchNo = -1, Bool_t Verbose = kFALSE);
		const Char_t * GetProcType(TString & ProcType, Int_t BranchNo = -1, Bool_t Verbose = kFALSE);

		inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };

	public: 									// public lists of key words:
		TMrbLofNamedX fLofDataTypes;			//! ... data types
		TMrbLofNamedX fLofCrateTypes;			//! ... crate types
		TMrbLofNamedX fLofControllerTypes;		//! ... camac controllers
		TMrbLofNamedX fLofModuleTypes;			//! ... module types
		TMrbLofNamedX fLofReadoutTags;			//! ... readout tags
		TMrbLofNamedX fLofAnalyzeTags;			//! ... analyze tags
		TMrbLofNamedX fLofConfigTags;			//! ... config tags
		TMrbLofNamedX fLofRcFileTags;			//! ... rc file tags
		TMrbLofNamedX fLofUserMacroTags;		//! ... user macro tags
		TMrbLofNamedX fLofUserEventTags;		//! ... user event tags
		TMrbLofNamedX fLofXhitTags;				//! ... special hit tags
		TMrbLofNamedX fCNAFNames;				//! ... cnaf key words
		TMrbLofNamedX fLofModuleTags;			//! ... camac tags
		TMrbLofNamedX fLofModuleIDs;			//! ... camac modules available
		TMrbLofNamedX fLofHistoTypes;			//! ... histogram types
		TMrbLofNamedX fLofGlobals;				//! list of global vars
		TMrbLofNamedX fLofDefines;				//! list of #define statements
		TMrbLofNamedX fLofMbsBranches;			//! list of mbs branches

	protected:
		Bool_t DefineVarOrWdw(TMrbNamedX * VarType, TObject * VarProto, const Char_t * VarDefs);
		Bool_t WriteUtilityProtos();
		Bool_t CheckConfig();
		Bool_t CreateHistoArrays();

	protected:
		Bool_t fVerboseMode;				// verbose flag
		TMrbLogger * fMessageLogger;		//! addr of message logger

		Int_t fNofEvents;					// list of events
		TObjArray fLofEvents;

		TArrayI fCrateTable;				// crate table (camac and VME)
		TArrayI fControllerTable;			// controller table (camac only)

		Int_t fNofSubevents;				// list of subevents
		TObjArray fLofSubevents;

		Int_t fNofModules;					// list of modules
		TObjArray fLofModules;

		Bool_t fLongParamNames; 			// use long param names: i.e. <subevent><param>

		Bool_t fUseMapFile; 				// kTRUE if TMap should be used

		Int_t fNofScalers;					// list of scalers
		TObjArray fLofScalers;

		Int_t fNofMuxs;						// list of multiplexers
		TObjArray fLofMuxs;

		UInt_t fMultiBorC;					// multi branch? multi crate?

		UInt_t fReadoutOptions; 			// options used in MakeReadoutCode()
		UInt_t fAnalyzeOptions; 			// ... in MakeAnalyzeCode()
		UInt_t fConfigOptions;  			// ... in MakeConfigCode()
		UInt_t fRcFileOptions;  			// ... in MakeRcFile()

		TMrbLofNamedX fLofUserIncludes;		// list of user-specific files to be included
		TMrbLofNamedX fLofUserLibs; 		// list of user-specific libraries to be included
		TMrbLofNamedX fLofUserClasses; 		// list of classes added by user

		Bool_t fWriteTimeStamp; 			// kTRUE if user wants a time stamp to be added to each event

		Int_t fDeadTimeInterval;			// number of events a new dead time event will be created
		TMrbModule * fDeadTimeScaler;	 	// dead-time scaler

		TString fCreationDate;				// creation date & time
		TString fUser;						// user name
		TString fAuthor;					// ...
		TString fMailAddr;					// user's mail address

		UInt_t fTriggerMask;				// trigger bits defined so far
		Bool_t fSingleBitTriggersOnly;		// triggers 1,2,4, or 8 only
		TArrayI fTriggersToBeHandled;		// trigger patterns to be handled

		Int_t fSevtSize;					// subevent size to be used in .mbssetup
		Int_t fPipeSegLength;					// length of subevent pipe
		Int_t fEventBufferSize;			// mbs event size
		Int_t fNofEventBuffers;			// number of buffers
		Int_t fNofStreams;			// numer of streams

		Bool_t fUserMacroToBeCalled;		// call user macro
		TString fUserMacro; 				// macro name
		TString fUserMacroCmd;				// ... command

		TObjArray fLofOnceOnlyTags; 		// list of tags already processed
		TObjArray fLofUserHistograms;		// list of user-defined histograms
		TObjArray fLofHistoArrays;			// list of histogram arrays
		TObjArray fLofHistoConditions;		// list of histogram booking conds
		TObjArray fLofXhits;				// list of special hit objects
		TObjArray fLofRdoIncludes;			// list of inlude paths for MBS
		TObjArray fLofRdoLibs;				// list of special libraries for MBS

		Bool_t fConfigChecked;				// kTRUE if consistency check done
		Bool_t fConfigOk;					// kTRUE config consistent

		TString fMbsVVersion;				// MBS version, format vNN

	ClassDef(TMrbConfig, 1) 	// [Config] Base class to describe an experimental setup in MARaBOU
};

#endif
 TMrbConfig.h:1
 TMrbConfig.h:2
 TMrbConfig.h:3
 TMrbConfig.h:4
 TMrbConfig.h:5
 TMrbConfig.h:6
 TMrbConfig.h:7
 TMrbConfig.h:8
 TMrbConfig.h:9
 TMrbConfig.h:10
 TMrbConfig.h:11
 TMrbConfig.h:12
 TMrbConfig.h:13
 TMrbConfig.h:14
 TMrbConfig.h:15
 TMrbConfig.h:16
 TMrbConfig.h:17
 TMrbConfig.h:18
 TMrbConfig.h:19
 TMrbConfig.h:20
 TMrbConfig.h:21
 TMrbConfig.h:22
 TMrbConfig.h:23
 TMrbConfig.h:24
 TMrbConfig.h:25
 TMrbConfig.h:26
 TMrbConfig.h:27
 TMrbConfig.h:28
 TMrbConfig.h:29
 TMrbConfig.h:30
 TMrbConfig.h:31
 TMrbConfig.h:32
 TMrbConfig.h:33
 TMrbConfig.h:34
 TMrbConfig.h:35
 TMrbConfig.h:36
 TMrbConfig.h:37
 TMrbConfig.h:38
 TMrbConfig.h:39
 TMrbConfig.h:40
 TMrbConfig.h:41
 TMrbConfig.h:42
 TMrbConfig.h:43
 TMrbConfig.h:44
 TMrbConfig.h:45
 TMrbConfig.h:46
 TMrbConfig.h:47
 TMrbConfig.h:48
 TMrbConfig.h:49
 TMrbConfig.h:50
 TMrbConfig.h:51
 TMrbConfig.h:52
 TMrbConfig.h:53
 TMrbConfig.h:54
 TMrbConfig.h:55
 TMrbConfig.h:56
 TMrbConfig.h:57
 TMrbConfig.h:58
 TMrbConfig.h:59
 TMrbConfig.h:60
 TMrbConfig.h:61
 TMrbConfig.h:62
 TMrbConfig.h:63
 TMrbConfig.h:64
 TMrbConfig.h:65
 TMrbConfig.h:66
 TMrbConfig.h:67
 TMrbConfig.h:68
 TMrbConfig.h:69
 TMrbConfig.h:70
 TMrbConfig.h:71
 TMrbConfig.h:72
 TMrbConfig.h:73
 TMrbConfig.h:74
 TMrbConfig.h:75
 TMrbConfig.h:76
 TMrbConfig.h:77
 TMrbConfig.h:78
 TMrbConfig.h:79
 TMrbConfig.h:80
 TMrbConfig.h:81
 TMrbConfig.h:82
 TMrbConfig.h:83
 TMrbConfig.h:84
 TMrbConfig.h:85
 TMrbConfig.h:86
 TMrbConfig.h:87
 TMrbConfig.h:88
 TMrbConfig.h:89
 TMrbConfig.h:90
 TMrbConfig.h:91
 TMrbConfig.h:92
 TMrbConfig.h:93
 TMrbConfig.h:94
 TMrbConfig.h:95
 TMrbConfig.h:96
 TMrbConfig.h:97
 TMrbConfig.h:98
 TMrbConfig.h:99
 TMrbConfig.h:100
 TMrbConfig.h:101
 TMrbConfig.h:102
 TMrbConfig.h:103
 TMrbConfig.h:104
 TMrbConfig.h:105
 TMrbConfig.h:106
 TMrbConfig.h:107
 TMrbConfig.h:108
 TMrbConfig.h:109
 TMrbConfig.h:110
 TMrbConfig.h:111
 TMrbConfig.h:112
 TMrbConfig.h:113
 TMrbConfig.h:114
 TMrbConfig.h:115
 TMrbConfig.h:116
 TMrbConfig.h:117
 TMrbConfig.h:118
 TMrbConfig.h:119
 TMrbConfig.h:120
 TMrbConfig.h:121
 TMrbConfig.h:122
 TMrbConfig.h:123
 TMrbConfig.h:124
 TMrbConfig.h:125
 TMrbConfig.h:126
 TMrbConfig.h:127
 TMrbConfig.h:128
 TMrbConfig.h:129
 TMrbConfig.h:130
 TMrbConfig.h:131
 TMrbConfig.h:132
 TMrbConfig.h:133
 TMrbConfig.h:134
 TMrbConfig.h:135
 TMrbConfig.h:136
 TMrbConfig.h:137
 TMrbConfig.h:138
 TMrbConfig.h:139
 TMrbConfig.h:140
 TMrbConfig.h:141
 TMrbConfig.h:142
 TMrbConfig.h:143
 TMrbConfig.h:144
 TMrbConfig.h:145
 TMrbConfig.h:146
 TMrbConfig.h:147
 TMrbConfig.h:148
 TMrbConfig.h:149
 TMrbConfig.h:150
 TMrbConfig.h:151
 TMrbConfig.h:152
 TMrbConfig.h:153
 TMrbConfig.h:154
 TMrbConfig.h:155
 TMrbConfig.h:156
 TMrbConfig.h:157
 TMrbConfig.h:158
 TMrbConfig.h:159
 TMrbConfig.h:160
 TMrbConfig.h:161
 TMrbConfig.h:162
 TMrbConfig.h:163
 TMrbConfig.h:164
 TMrbConfig.h:165
 TMrbConfig.h:166
 TMrbConfig.h:167
 TMrbConfig.h:168
 TMrbConfig.h:169
 TMrbConfig.h:170
 TMrbConfig.h:171
 TMrbConfig.h:172
 TMrbConfig.h:173
 TMrbConfig.h:174
 TMrbConfig.h:175
 TMrbConfig.h:176
 TMrbConfig.h:177
 TMrbConfig.h:178
 TMrbConfig.h:179
 TMrbConfig.h:180
 TMrbConfig.h:181
 TMrbConfig.h:182
 TMrbConfig.h:183
 TMrbConfig.h:184
 TMrbConfig.h:185
 TMrbConfig.h:186
 TMrbConfig.h:187
 TMrbConfig.h:188
 TMrbConfig.h:189
 TMrbConfig.h:190
 TMrbConfig.h:191
 TMrbConfig.h:192
 TMrbConfig.h:193
 TMrbConfig.h:194
 TMrbConfig.h:195
 TMrbConfig.h:196
 TMrbConfig.h:197
 TMrbConfig.h:198
 TMrbConfig.h:199
 TMrbConfig.h:200
 TMrbConfig.h:201
 TMrbConfig.h:202
 TMrbConfig.h:203
 TMrbConfig.h:204
 TMrbConfig.h:205
 TMrbConfig.h:206
 TMrbConfig.h:207
 TMrbConfig.h:208
 TMrbConfig.h:209
 TMrbConfig.h:210
 TMrbConfig.h:211
 TMrbConfig.h:212
 TMrbConfig.h:213
 TMrbConfig.h:214
 TMrbConfig.h:215
 TMrbConfig.h:216
 TMrbConfig.h:217
 TMrbConfig.h:218
 TMrbConfig.h:219
 TMrbConfig.h:220
 TMrbConfig.h:221
 TMrbConfig.h:222
 TMrbConfig.h:223
 TMrbConfig.h:224
 TMrbConfig.h:225
 TMrbConfig.h:226
 TMrbConfig.h:227
 TMrbConfig.h:228
 TMrbConfig.h:229
 TMrbConfig.h:230
 TMrbConfig.h:231
 TMrbConfig.h:232
 TMrbConfig.h:233
 TMrbConfig.h:234
 TMrbConfig.h:235
 TMrbConfig.h:236
 TMrbConfig.h:237
 TMrbConfig.h:238
 TMrbConfig.h:239
 TMrbConfig.h:240
 TMrbConfig.h:241
 TMrbConfig.h:242
 TMrbConfig.h:243
 TMrbConfig.h:244
 TMrbConfig.h:245
 TMrbConfig.h:246
 TMrbConfig.h:247
 TMrbConfig.h:248
 TMrbConfig.h:249
 TMrbConfig.h:250
 TMrbConfig.h:251
 TMrbConfig.h:252
 TMrbConfig.h:253
 TMrbConfig.h:254
 TMrbConfig.h:255
 TMrbConfig.h:256
 TMrbConfig.h:257
 TMrbConfig.h:258
 TMrbConfig.h:259
 TMrbConfig.h:260
 TMrbConfig.h:261
 TMrbConfig.h:262
 TMrbConfig.h:263
 TMrbConfig.h:264
 TMrbConfig.h:265
 TMrbConfig.h:266
 TMrbConfig.h:267
 TMrbConfig.h:268
 TMrbConfig.h:269
 TMrbConfig.h:270
 TMrbConfig.h:271
 TMrbConfig.h:272
 TMrbConfig.h:273
 TMrbConfig.h:274
 TMrbConfig.h:275
 TMrbConfig.h:276
 TMrbConfig.h:277
 TMrbConfig.h:278
 TMrbConfig.h:279
 TMrbConfig.h:280
 TMrbConfig.h:281
 TMrbConfig.h:282
 TMrbConfig.h:283
 TMrbConfig.h:284
 TMrbConfig.h:285
 TMrbConfig.h:286
 TMrbConfig.h:287
 TMrbConfig.h:288
 TMrbConfig.h:289
 TMrbConfig.h:290
 TMrbConfig.h:291
 TMrbConfig.h:292
 TMrbConfig.h:293
 TMrbConfig.h:294
 TMrbConfig.h:295
 TMrbConfig.h:296
 TMrbConfig.h:297
 TMrbConfig.h:298
 TMrbConfig.h:299
 TMrbConfig.h:300
 TMrbConfig.h:301
 TMrbConfig.h:302
 TMrbConfig.h:303
 TMrbConfig.h:304
 TMrbConfig.h:305
 TMrbConfig.h:306
 TMrbConfig.h:307
 TMrbConfig.h:308
 TMrbConfig.h:309
 TMrbConfig.h:310
 TMrbConfig.h:311
 TMrbConfig.h:312
 TMrbConfig.h:313
 TMrbConfig.h:314
 TMrbConfig.h:315
 TMrbConfig.h:316
 TMrbConfig.h:317
 TMrbConfig.h:318
 TMrbConfig.h:319
 TMrbConfig.h:320
 TMrbConfig.h:321
 TMrbConfig.h:322
 TMrbConfig.h:323
 TMrbConfig.h:324
 TMrbConfig.h:325
 TMrbConfig.h:326
 TMrbConfig.h:327
 TMrbConfig.h:328
 TMrbConfig.h:329
 TMrbConfig.h:330
 TMrbConfig.h:331
 TMrbConfig.h:332
 TMrbConfig.h:333
 TMrbConfig.h:334
 TMrbConfig.h:335
 TMrbConfig.h:336
 TMrbConfig.h:337
 TMrbConfig.h:338
 TMrbConfig.h:339
 TMrbConfig.h:340
 TMrbConfig.h:341
 TMrbConfig.h:342
 TMrbConfig.h:343
 TMrbConfig.h:344
 TMrbConfig.h:345
 TMrbConfig.h:346
 TMrbConfig.h:347
 TMrbConfig.h:348
 TMrbConfig.h:349
 TMrbConfig.h:350
 TMrbConfig.h:351
 TMrbConfig.h:352
 TMrbConfig.h:353
 TMrbConfig.h:354
 TMrbConfig.h:355
 TMrbConfig.h:356
 TMrbConfig.h:357
 TMrbConfig.h:358
 TMrbConfig.h:359
 TMrbConfig.h:360
 TMrbConfig.h:361
 TMrbConfig.h:362
 TMrbConfig.h:363
 TMrbConfig.h:364
 TMrbConfig.h:365
 TMrbConfig.h:366
 TMrbConfig.h:367
 TMrbConfig.h:368
 TMrbConfig.h:369
 TMrbConfig.h:370
 TMrbConfig.h:371
 TMrbConfig.h:372
 TMrbConfig.h:373
 TMrbConfig.h:374
 TMrbConfig.h:375
 TMrbConfig.h:376
 TMrbConfig.h:377
 TMrbConfig.h:378
 TMrbConfig.h:379
 TMrbConfig.h:380
 TMrbConfig.h:381
 TMrbConfig.h:382
 TMrbConfig.h:383
 TMrbConfig.h:384
 TMrbConfig.h:385
 TMrbConfig.h:386
 TMrbConfig.h:387
 TMrbConfig.h:388
 TMrbConfig.h:389
 TMrbConfig.h:390
 TMrbConfig.h:391
 TMrbConfig.h:392
 TMrbConfig.h:393
 TMrbConfig.h:394
 TMrbConfig.h:395
 TMrbConfig.h:396
 TMrbConfig.h:397
 TMrbConfig.h:398
 TMrbConfig.h:399
 TMrbConfig.h:400
 TMrbConfig.h:401
 TMrbConfig.h:402
 TMrbConfig.h:403
 TMrbConfig.h:404
 TMrbConfig.h:405
 TMrbConfig.h:406
 TMrbConfig.h:407
 TMrbConfig.h:408
 TMrbConfig.h:409
 TMrbConfig.h:410
 TMrbConfig.h:411
 TMrbConfig.h:412
 TMrbConfig.h:413
 TMrbConfig.h:414
 TMrbConfig.h:415
 TMrbConfig.h:416
 TMrbConfig.h:417
 TMrbConfig.h:418
 TMrbConfig.h:419
 TMrbConfig.h:420
 TMrbConfig.h:421
 TMrbConfig.h:422
 TMrbConfig.h:423
 TMrbConfig.h:424
 TMrbConfig.h:425
 TMrbConfig.h:426
 TMrbConfig.h:427
 TMrbConfig.h:428
 TMrbConfig.h:429
 TMrbConfig.h:430
 TMrbConfig.h:431
 TMrbConfig.h:432
 TMrbConfig.h:433
 TMrbConfig.h:434
 TMrbConfig.h:435
 TMrbConfig.h:436
 TMrbConfig.h:437
 TMrbConfig.h:438
 TMrbConfig.h:439
 TMrbConfig.h:440
 TMrbConfig.h:441
 TMrbConfig.h:442
 TMrbConfig.h:443
 TMrbConfig.h:444
 TMrbConfig.h:445
 TMrbConfig.h:446
 TMrbConfig.h:447
 TMrbConfig.h:448
 TMrbConfig.h:449
 TMrbConfig.h:450
 TMrbConfig.h:451
 TMrbConfig.h:452
 TMrbConfig.h:453
 TMrbConfig.h:454
 TMrbConfig.h:455
 TMrbConfig.h:456
 TMrbConfig.h:457
 TMrbConfig.h:458
 TMrbConfig.h:459
 TMrbConfig.h:460
 TMrbConfig.h:461
 TMrbConfig.h:462
 TMrbConfig.h:463
 TMrbConfig.h:464
 TMrbConfig.h:465
 TMrbConfig.h:466
 TMrbConfig.h:467
 TMrbConfig.h:468
 TMrbConfig.h:469
 TMrbConfig.h:470
 TMrbConfig.h:471
 TMrbConfig.h:472
 TMrbConfig.h:473
 TMrbConfig.h:474
 TMrbConfig.h:475
 TMrbConfig.h:476
 TMrbConfig.h:477
 TMrbConfig.h:478
 TMrbConfig.h:479
 TMrbConfig.h:480
 TMrbConfig.h:481
 TMrbConfig.h:482
 TMrbConfig.h:483
 TMrbConfig.h:484
 TMrbConfig.h:485
 TMrbConfig.h:486
 TMrbConfig.h:487
 TMrbConfig.h:488
 TMrbConfig.h:489
 TMrbConfig.h:490
 TMrbConfig.h:491
 TMrbConfig.h:492
 TMrbConfig.h:493
 TMrbConfig.h:494
 TMrbConfig.h:495
 TMrbConfig.h:496
 TMrbConfig.h:497
 TMrbConfig.h:498
 TMrbConfig.h:499
 TMrbConfig.h:500
 TMrbConfig.h:501
 TMrbConfig.h:502
 TMrbConfig.h:503
 TMrbConfig.h:504
 TMrbConfig.h:505
 TMrbConfig.h:506
 TMrbConfig.h:507
 TMrbConfig.h:508
 TMrbConfig.h:509
 TMrbConfig.h:510
 TMrbConfig.h:511
 TMrbConfig.h:512
 TMrbConfig.h:513
 TMrbConfig.h:514
 TMrbConfig.h:515
 TMrbConfig.h:516
 TMrbConfig.h:517
 TMrbConfig.h:518
 TMrbConfig.h:519
 TMrbConfig.h:520
 TMrbConfig.h:521
 TMrbConfig.h:522
 TMrbConfig.h:523
 TMrbConfig.h:524
 TMrbConfig.h:525
 TMrbConfig.h:526
 TMrbConfig.h:527
 TMrbConfig.h:528
 TMrbConfig.h:529
 TMrbConfig.h:530
 TMrbConfig.h:531
 TMrbConfig.h:532
 TMrbConfig.h:533
 TMrbConfig.h:534
 TMrbConfig.h:535
 TMrbConfig.h:536
 TMrbConfig.h:537
 TMrbConfig.h:538
 TMrbConfig.h:539
 TMrbConfig.h:540
 TMrbConfig.h:541
 TMrbConfig.h:542
 TMrbConfig.h:543
 TMrbConfig.h:544
 TMrbConfig.h:545
 TMrbConfig.h:546
 TMrbConfig.h:547
 TMrbConfig.h:548
 TMrbConfig.h:549
 TMrbConfig.h:550
 TMrbConfig.h:551
 TMrbConfig.h:552
 TMrbConfig.h:553
 TMrbConfig.h:554
 TMrbConfig.h:555
 TMrbConfig.h:556
 TMrbConfig.h:557
 TMrbConfig.h:558
 TMrbConfig.h:559
 TMrbConfig.h:560
 TMrbConfig.h:561
 TMrbConfig.h:562
 TMrbConfig.h:563
 TMrbConfig.h:564
 TMrbConfig.h:565
 TMrbConfig.h:566
 TMrbConfig.h:567
 TMrbConfig.h:568
 TMrbConfig.h:569
 TMrbConfig.h:570
 TMrbConfig.h:571
 TMrbConfig.h:572
 TMrbConfig.h:573
 TMrbConfig.h:574
 TMrbConfig.h:575
 TMrbConfig.h:576
 TMrbConfig.h:577
 TMrbConfig.h:578
 TMrbConfig.h:579
 TMrbConfig.h:580
 TMrbConfig.h:581
 TMrbConfig.h:582
 TMrbConfig.h:583
 TMrbConfig.h:584
 TMrbConfig.h:585
 TMrbConfig.h:586
 TMrbConfig.h:587
 TMrbConfig.h:588
 TMrbConfig.h:589
 TMrbConfig.h:590
 TMrbConfig.h:591
 TMrbConfig.h:592
 TMrbConfig.h:593
 TMrbConfig.h:594
 TMrbConfig.h:595
 TMrbConfig.h:596
 TMrbConfig.h:597
 TMrbConfig.h:598
 TMrbConfig.h:599
 TMrbConfig.h:600
 TMrbConfig.h:601
 TMrbConfig.h:602
 TMrbConfig.h:603
 TMrbConfig.h:604
 TMrbConfig.h:605
 TMrbConfig.h:606
 TMrbConfig.h:607
 TMrbConfig.h:608
 TMrbConfig.h:609
 TMrbConfig.h:610
 TMrbConfig.h:611
 TMrbConfig.h:612
 TMrbConfig.h:613
 TMrbConfig.h:614
 TMrbConfig.h:615
 TMrbConfig.h:616
 TMrbConfig.h:617
 TMrbConfig.h:618
 TMrbConfig.h:619
 TMrbConfig.h:620
 TMrbConfig.h:621
 TMrbConfig.h:622
 TMrbConfig.h:623
 TMrbConfig.h:624
 TMrbConfig.h:625
 TMrbConfig.h:626
 TMrbConfig.h:627
 TMrbConfig.h:628
 TMrbConfig.h:629
 TMrbConfig.h:630
 TMrbConfig.h:631
 TMrbConfig.h:632
 TMrbConfig.h:633
 TMrbConfig.h:634
 TMrbConfig.h:635
 TMrbConfig.h:636
 TMrbConfig.h:637
 TMrbConfig.h:638
 TMrbConfig.h:639
 TMrbConfig.h:640
 TMrbConfig.h:641
 TMrbConfig.h:642
 TMrbConfig.h:643
 TMrbConfig.h:644
 TMrbConfig.h:645
 TMrbConfig.h:646
 TMrbConfig.h:647
 TMrbConfig.h:648
 TMrbConfig.h:649
 TMrbConfig.h:650
 TMrbConfig.h:651
 TMrbConfig.h:652
 TMrbConfig.h:653
 TMrbConfig.h:654
 TMrbConfig.h:655
 TMrbConfig.h:656
 TMrbConfig.h:657
 TMrbConfig.h:658
 TMrbConfig.h:659
 TMrbConfig.h:660
 TMrbConfig.h:661
 TMrbConfig.h:662
 TMrbConfig.h:663
 TMrbConfig.h:664
 TMrbConfig.h:665
 TMrbConfig.h:666
 TMrbConfig.h:667
 TMrbConfig.h:668
 TMrbConfig.h:669
 TMrbConfig.h:670
 TMrbConfig.h:671
 TMrbConfig.h:672
 TMrbConfig.h:673
 TMrbConfig.h:674
 TMrbConfig.h:675
 TMrbConfig.h:676
 TMrbConfig.h:677
 TMrbConfig.h:678
 TMrbConfig.h:679
 TMrbConfig.h:680
 TMrbConfig.h:681
 TMrbConfig.h:682
 TMrbConfig.h:683
 TMrbConfig.h:684
 TMrbConfig.h:685
 TMrbConfig.h:686
 TMrbConfig.h:687
 TMrbConfig.h:688
 TMrbConfig.h:689
 TMrbConfig.h:690
 TMrbConfig.h:691
 TMrbConfig.h:692
 TMrbConfig.h:693
 TMrbConfig.h:694
 TMrbConfig.h:695
 TMrbConfig.h:696
 TMrbConfig.h:697
 TMrbConfig.h:698
 TMrbConfig.h:699
 TMrbConfig.h:700
 TMrbConfig.h:701
 TMrbConfig.h:702
 TMrbConfig.h:703
 TMrbConfig.h:704
 TMrbConfig.h:705
 TMrbConfig.h:706
 TMrbConfig.h:707
 TMrbConfig.h:708
 TMrbConfig.h:709
 TMrbConfig.h:710
 TMrbConfig.h:711
 TMrbConfig.h:712
 TMrbConfig.h:713
 TMrbConfig.h:714
 TMrbConfig.h:715
 TMrbConfig.h:716
 TMrbConfig.h:717
 TMrbConfig.h:718
 TMrbConfig.h:719
 TMrbConfig.h:720
 TMrbConfig.h:721
 TMrbConfig.h:722
 TMrbConfig.h:723
 TMrbConfig.h:724
 TMrbConfig.h:725
 TMrbConfig.h:726
 TMrbConfig.h:727
 TMrbConfig.h:728
 TMrbConfig.h:729
 TMrbConfig.h:730
 TMrbConfig.h:731
 TMrbConfig.h:732
 TMrbConfig.h:733
 TMrbConfig.h:734
 TMrbConfig.h:735
 TMrbConfig.h:736
 TMrbConfig.h:737
 TMrbConfig.h:738
 TMrbConfig.h:739
 TMrbConfig.h:740
 TMrbConfig.h:741
 TMrbConfig.h:742
 TMrbConfig.h:743
 TMrbConfig.h:744
 TMrbConfig.h:745
 TMrbConfig.h:746
 TMrbConfig.h:747
 TMrbConfig.h:748
 TMrbConfig.h:749
 TMrbConfig.h:750
 TMrbConfig.h:751
 TMrbConfig.h:752
 TMrbConfig.h:753
 TMrbConfig.h:754
 TMrbConfig.h:755
 TMrbConfig.h:756
 TMrbConfig.h:757
 TMrbConfig.h:758
 TMrbConfig.h:759
 TMrbConfig.h:760
 TMrbConfig.h:761
 TMrbConfig.h:762
 TMrbConfig.h:763
 TMrbConfig.h:764
 TMrbConfig.h:765
 TMrbConfig.h:766
 TMrbConfig.h:767
 TMrbConfig.h:768
 TMrbConfig.h:769
 TMrbConfig.h:770
 TMrbConfig.h:771
 TMrbConfig.h:772
 TMrbConfig.h:773
 TMrbConfig.h:774
 TMrbConfig.h:775
 TMrbConfig.h:776
 TMrbConfig.h:777
 TMrbConfig.h:778
 TMrbConfig.h:779
 TMrbConfig.h:780
 TMrbConfig.h:781
 TMrbConfig.h:782
 TMrbConfig.h:783
 TMrbConfig.h:784
 TMrbConfig.h:785
 TMrbConfig.h:786
 TMrbConfig.h:787
 TMrbConfig.h:788
 TMrbConfig.h:789
 TMrbConfig.h:790
 TMrbConfig.h:791
 TMrbConfig.h:792
 TMrbConfig.h:793
 TMrbConfig.h:794
 TMrbConfig.h:795
 TMrbConfig.h:796
 TMrbConfig.h:797
 TMrbConfig.h:798
 TMrbConfig.h:799
 TMrbConfig.h:800
 TMrbConfig.h:801
 TMrbConfig.h:802
 TMrbConfig.h:803
 TMrbConfig.h:804
 TMrbConfig.h:805
 TMrbConfig.h:806
 TMrbConfig.h:807
 TMrbConfig.h:808
 TMrbConfig.h:809
 TMrbConfig.h:810
 TMrbConfig.h:811
 TMrbConfig.h:812
 TMrbConfig.h:813
 TMrbConfig.h:814
 TMrbConfig.h:815
 TMrbConfig.h:816
 TMrbConfig.h:817
 TMrbConfig.h:818
 TMrbConfig.h:819
 TMrbConfig.h:820
 TMrbConfig.h:821
 TMrbConfig.h:822
 TMrbConfig.h:823
 TMrbConfig.h:824
 TMrbConfig.h:825
 TMrbConfig.h:826
 TMrbConfig.h:827
 TMrbConfig.h:828
 TMrbConfig.h:829
 TMrbConfig.h:830
 TMrbConfig.h:831
 TMrbConfig.h:832
 TMrbConfig.h:833
 TMrbConfig.h:834
 TMrbConfig.h:835
 TMrbConfig.h:836
 TMrbConfig.h:837
 TMrbConfig.h:838
 TMrbConfig.h:839
 TMrbConfig.h:840
 TMrbConfig.h:841
 TMrbConfig.h:842
 TMrbConfig.h:843
 TMrbConfig.h:844
 TMrbConfig.h:845
 TMrbConfig.h:846
 TMrbConfig.h:847
 TMrbConfig.h:848
 TMrbConfig.h:849
 TMrbConfig.h:850
 TMrbConfig.h:851
 TMrbConfig.h:852
 TMrbConfig.h:853
 TMrbConfig.h:854
 TMrbConfig.h:855
 TMrbConfig.h:856
 TMrbConfig.h:857
 TMrbConfig.h:858
 TMrbConfig.h:859
 TMrbConfig.h:860
 TMrbConfig.h:861
 TMrbConfig.h:862
 TMrbConfig.h:863
 TMrbConfig.h:864
 TMrbConfig.h:865
 TMrbConfig.h:866
 TMrbConfig.h:867
 TMrbConfig.h:868
 TMrbConfig.h:869
 TMrbConfig.h:870
 TMrbConfig.h:871
 TMrbConfig.h:872
 TMrbConfig.h:873
 TMrbConfig.h:874
 TMrbConfig.h:875
 TMrbConfig.h:876
 TMrbConfig.h:877
 TMrbConfig.h:878
 TMrbConfig.h:879
 TMrbConfig.h:880
 TMrbConfig.h:881
 TMrbConfig.h:882
 TMrbConfig.h:883
 TMrbConfig.h:884
 TMrbConfig.h:885
 TMrbConfig.h:886
 TMrbConfig.h:887
 TMrbConfig.h:888
 TMrbConfig.h:889
 TMrbConfig.h:890
 TMrbConfig.h:891
 TMrbConfig.h:892
 TMrbConfig.h:893
 TMrbConfig.h:894
 TMrbConfig.h:895
 TMrbConfig.h:896
 TMrbConfig.h:897
 TMrbConfig.h:898
 TMrbConfig.h:899
 TMrbConfig.h:900
 TMrbConfig.h:901
 TMrbConfig.h:902
 TMrbConfig.h:903
 TMrbConfig.h:904
 TMrbConfig.h:905
 TMrbConfig.h:906
 TMrbConfig.h:907
 TMrbConfig.h:908
 TMrbConfig.h:909
 TMrbConfig.h:910
 TMrbConfig.h:911
 TMrbConfig.h:912
 TMrbConfig.h:913
 TMrbConfig.h:914
 TMrbConfig.h:915
 TMrbConfig.h:916
 TMrbConfig.h:917
 TMrbConfig.h:918
 TMrbConfig.h:919
 TMrbConfig.h:920
 TMrbConfig.h:921
 TMrbConfig.h:922
 TMrbConfig.h:923
 TMrbConfig.h:924
 TMrbConfig.h:925
 TMrbConfig.h:926
 TMrbConfig.h:927
 TMrbConfig.h:928
 TMrbConfig.h:929
 TMrbConfig.h:930
 TMrbConfig.h:931
 TMrbConfig.h:932
 TMrbConfig.h:933
 TMrbConfig.h:934
 TMrbConfig.h:935
 TMrbConfig.h:936
 TMrbConfig.h:937
 TMrbConfig.h:938
 TMrbConfig.h:939
 TMrbConfig.h:940
 TMrbConfig.h:941
 TMrbConfig.h:942
 TMrbConfig.h:943
 TMrbConfig.h:944
 TMrbConfig.h:945
 TMrbConfig.h:946
 TMrbConfig.h:947
 TMrbConfig.h:948
 TMrbConfig.h:949
 TMrbConfig.h:950
 TMrbConfig.h:951
 TMrbConfig.h:952
 TMrbConfig.h:953
 TMrbConfig.h:954
 TMrbConfig.h:955
 TMrbConfig.h:956
 TMrbConfig.h:957
 TMrbConfig.h:958
 TMrbConfig.h:959
 TMrbConfig.h:960
 TMrbConfig.h:961
 TMrbConfig.h:962
 TMrbConfig.h:963
 TMrbConfig.h:964
 TMrbConfig.h:965
 TMrbConfig.h:966
 TMrbConfig.h:967
 TMrbConfig.h:968
 TMrbConfig.h:969
 TMrbConfig.h:970
 TMrbConfig.h:971
 TMrbConfig.h:972
 TMrbConfig.h:973
 TMrbConfig.h:974
 TMrbConfig.h:975
 TMrbConfig.h:976
 TMrbConfig.h:977
 TMrbConfig.h:978
 TMrbConfig.h:979
 TMrbConfig.h:980
 TMrbConfig.h:981
 TMrbConfig.h:982
 TMrbConfig.h:983
 TMrbConfig.h:984
 TMrbConfig.h:985
 TMrbConfig.h:986
 TMrbConfig.h:987
 TMrbConfig.h:988
 TMrbConfig.h:989
 TMrbConfig.h:990
 TMrbConfig.h:991
 TMrbConfig.h:992
 TMrbConfig.h:993
 TMrbConfig.h:994
 TMrbConfig.h:995
 TMrbConfig.h:996
 TMrbConfig.h:997
 TMrbConfig.h:998
 TMrbConfig.h:999
 TMrbConfig.h:1000
 TMrbConfig.h:1001
 TMrbConfig.h:1002
 TMrbConfig.h:1003
 TMrbConfig.h:1004
 TMrbConfig.h:1005
 TMrbConfig.h:1006
 TMrbConfig.h:1007
 TMrbConfig.h:1008
 TMrbConfig.h:1009
 TMrbConfig.h:1010
 TMrbConfig.h:1011
 TMrbConfig.h:1012
 TMrbConfig.h:1013
 TMrbConfig.h:1014
 TMrbConfig.h:1015
 TMrbConfig.h:1016
 TMrbConfig.h:1017
 TMrbConfig.h:1018
 TMrbConfig.h:1019
 TMrbConfig.h:1020
 TMrbConfig.h:1021
 TMrbConfig.h:1022
 TMrbConfig.h:1023
 TMrbConfig.h:1024
 TMrbConfig.h:1025
 TMrbConfig.h:1026