ROOT logo
#ifndef __TMrbIOSpec_h__
#define __TMrbIOSpec_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbIOSpec.h
// Purpose:        Class to specify the i/o in an experiment
// Description:
// Author:         R. Lutter
// Revision:       $Id: TMrbIOSpec.h,v 1.3 2010-11-12 09:15:05 Marabou Exp $
// Date:
// URL:
// Keywords:
//////////////////////////////////////////////////////////////////////////////

namespace std {} using namespace std;

#include <iostream>

#include "TObject.h"
#include "TString.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbIOSpec
// Purpose:        Specify i/o data
// Description:    Describes how to process input data.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbIOSpec : public TObject {

	public:
		enum EMrbInputMode		{	kInputNone			=	0,
									kInputMBS			=	0x1,
									kInputFile			=	0x2,
									kInputTCP			=	kInputMBS | 0x4,
									kInputRoot			=	kInputFile | 0x8,
									kInputLMD			=	kInputMBS | kInputFile | 0x10,
									kInputMED			=	kInputMBS | kInputFile | 0x20,
									kInputList			=	kInputRoot | 0x40,
									kInputSync			=	kInputTCP | 0x80,
									kInputAsync 		=	kInputTCP | 0x100
								};

		enum EMrbOutputMode 	{	kOutputNone 				=	0,
									kOutputMBS					=	0x1,
									kOutputOpen 				=	0x2,
									kOutputWriteRootTree		=	0x4,
									kOutputClose				=	0x8,
									kOutputWriteLMDFormat	=	kOutputMBS | 0x10,
									kOutputWriteMEDFormat	=	kOutputMBS | 0x20
								};

		enum EMrbHistoMode	 	{	kHistoNone			=	0,
									kHistoAdd			=	0x1,
									kHistoSave			=	0x2,
									kHistoClear			=	0x4,
								};

		enum EMrbParamMode		{	kParamNone				=	0,
									kParamReload			=	0x1,
									kParamReloadAscii		=	kParamReload | 0x2,
									kParamReloadMultiple	=	kParamReload | 0x4,
									kParamLoaded			=	0x8
								};

	public:
		TMrbIOSpec() {								// default ctor
			fTimeStampFlag = kFALSE;
			fInputMode = TMrbIOSpec::kInputNone;
			fOutputMode = TMrbIOSpec::kOutputNone;
			fParamMode = TMrbIOSpec::kParamNone;
			fHistoMode = TMrbIOSpec::kHistoNone;
			fStartEvent = 0;
			fStopEvent = 0;
		};

		~TMrbIOSpec() {};							// default dtor

		void SetInputFile(const Char_t * InputFile, EMrbInputMode InputMode = TMrbIOSpec::kInputNone) {
			fInputFile = InputFile;
			fInputMode = InputMode;
		};
		inline const Char_t * GetInputFile() const { return(fInputFile.Data()); };

		void SetOutputFile(const Char_t * OutputFile, EMrbOutputMode OutputMode = TMrbIOSpec::kOutputNone) {
			fOutputFile = OutputFile;
			fOutputMode = OutputMode;
		};
		inline const Char_t * GetOutputFile() const { return(fOutputFile.Data()); };

		void SetHistoFile(const Char_t * HistoFile, EMrbHistoMode HistoMode = TMrbIOSpec::kHistoNone) {
			fHistoFile = HistoFile;
			fHistoMode = HistoMode;
		};
		inline const Char_t * GetHistoFile() const { return(fHistoFile.Data()); };

		void SetParamFile(const Char_t * ParamFile, EMrbParamMode ParamMode = TMrbIOSpec::kParamNone) {
			fParamFile = ParamFile;
			fParamMode = ParamMode;
		};
		inline const Char_t * GetParamFile() const { return(fParamFile.Data()); };

		Bool_t SetStartStop(TString &, TString &);
		Bool_t SetStartStop(Bool_t TstampFlag, Int_t Start, Int_t Stop) {
			fTimeStampFlag = TstampFlag;
			fStartEvent = Start;
			fStopEvent = Stop;
			return(kTRUE);
		};

		inline Int_t GetStartEvent() const { return(fStartEvent); };
		inline Int_t GetStopEvent() const { return(fStopEvent); };

		Bool_t CheckStartStop(TString &, Int_t &, Bool_t &);
		void ConvertToTimeStamp(TString &, Int_t) const;

		inline Bool_t IsTimeStampMode() const { return(fTimeStampFlag); };
		inline EMrbInputMode GetInputMode() const { return(fInputMode); };
		inline void SetInputMode(TMrbIOSpec::EMrbInputMode Mode) { fInputMode = Mode; };
		inline EMrbOutputMode GetOutputMode() const { return(fOutputMode); };
		inline void SetOutputMode(TMrbIOSpec::EMrbOutputMode Mode) { fOutputMode = Mode; };
		inline EMrbParamMode GetParamMode() const { return(fParamMode); };
		inline void SetParamMode(TMrbIOSpec::EMrbParamMode Mode) { fParamMode = Mode; };
		inline EMrbHistoMode GetHistoMode() const { return(fHistoMode); };
		inline void SetHistoMode(TMrbIOSpec::EMrbHistoMode Mode) { fHistoMode = Mode; };

		void Print(Option_t * Option) const { TObject::Print(Option); }
		void Print(ostream & out = cout) const;				// output current settings

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

	protected:
		Bool_t fTimeStampFlag;		// kTRUE if start/stop refers to time stamp rather than event count
		Int_t fStartEvent;  		// event number / time stamp to start with
		Int_t fStopEvent;			// event number / time stamp to end with

		EMrbInputMode fInputMode;	// MBS? TCP? File? List?
		TString fInputFile;			// name of input file

		EMrbOutputMode fOutputMode; // open? close? write tree?
		TString fOutputFile;		// name of output file

		EMrbHistoMode fHistoMode; 	// add? save?
		TString fHistoFile; 		// name of histogram file

		EMrbParamMode fParamMode;	// reload?
		TString fParamFile; 		// name of param file

	ClassDef(TMrbIOSpec, 1) 	// [Analyze] I/O specifications
};

#endif
 TMrbIOSpec.h:1
 TMrbIOSpec.h:2
 TMrbIOSpec.h:3
 TMrbIOSpec.h:4
 TMrbIOSpec.h:5
 TMrbIOSpec.h:6
 TMrbIOSpec.h:7
 TMrbIOSpec.h:8
 TMrbIOSpec.h:9
 TMrbIOSpec.h:10
 TMrbIOSpec.h:11
 TMrbIOSpec.h:12
 TMrbIOSpec.h:13
 TMrbIOSpec.h:14
 TMrbIOSpec.h:15
 TMrbIOSpec.h:16
 TMrbIOSpec.h:17
 TMrbIOSpec.h:18
 TMrbIOSpec.h:19
 TMrbIOSpec.h:20
 TMrbIOSpec.h:21
 TMrbIOSpec.h:22
 TMrbIOSpec.h:23
 TMrbIOSpec.h:24
 TMrbIOSpec.h:25
 TMrbIOSpec.h:26
 TMrbIOSpec.h:27
 TMrbIOSpec.h:28
 TMrbIOSpec.h:29
 TMrbIOSpec.h:30
 TMrbIOSpec.h:31
 TMrbIOSpec.h:32
 TMrbIOSpec.h:33
 TMrbIOSpec.h:34
 TMrbIOSpec.h:35
 TMrbIOSpec.h:36
 TMrbIOSpec.h:37
 TMrbIOSpec.h:38
 TMrbIOSpec.h:39
 TMrbIOSpec.h:40
 TMrbIOSpec.h:41
 TMrbIOSpec.h:42
 TMrbIOSpec.h:43
 TMrbIOSpec.h:44
 TMrbIOSpec.h:45
 TMrbIOSpec.h:46
 TMrbIOSpec.h:47
 TMrbIOSpec.h:48
 TMrbIOSpec.h:49
 TMrbIOSpec.h:50
 TMrbIOSpec.h:51
 TMrbIOSpec.h:52
 TMrbIOSpec.h:53
 TMrbIOSpec.h:54
 TMrbIOSpec.h:55
 TMrbIOSpec.h:56
 TMrbIOSpec.h:57
 TMrbIOSpec.h:58
 TMrbIOSpec.h:59
 TMrbIOSpec.h:60
 TMrbIOSpec.h:61
 TMrbIOSpec.h:62
 TMrbIOSpec.h:63
 TMrbIOSpec.h:64
 TMrbIOSpec.h:65
 TMrbIOSpec.h:66
 TMrbIOSpec.h:67
 TMrbIOSpec.h:68
 TMrbIOSpec.h:69
 TMrbIOSpec.h:70
 TMrbIOSpec.h:71
 TMrbIOSpec.h:72
 TMrbIOSpec.h:73
 TMrbIOSpec.h:74
 TMrbIOSpec.h:75
 TMrbIOSpec.h:76
 TMrbIOSpec.h:77
 TMrbIOSpec.h:78
 TMrbIOSpec.h:79
 TMrbIOSpec.h:80
 TMrbIOSpec.h:81
 TMrbIOSpec.h:82
 TMrbIOSpec.h:83
 TMrbIOSpec.h:84
 TMrbIOSpec.h:85
 TMrbIOSpec.h:86
 TMrbIOSpec.h:87
 TMrbIOSpec.h:88
 TMrbIOSpec.h:89
 TMrbIOSpec.h:90
 TMrbIOSpec.h:91
 TMrbIOSpec.h:92
 TMrbIOSpec.h:93
 TMrbIOSpec.h:94
 TMrbIOSpec.h:95
 TMrbIOSpec.h:96
 TMrbIOSpec.h:97
 TMrbIOSpec.h:98
 TMrbIOSpec.h:99
 TMrbIOSpec.h:100
 TMrbIOSpec.h:101
 TMrbIOSpec.h:102
 TMrbIOSpec.h:103
 TMrbIOSpec.h:104
 TMrbIOSpec.h:105
 TMrbIOSpec.h:106
 TMrbIOSpec.h:107
 TMrbIOSpec.h:108
 TMrbIOSpec.h:109
 TMrbIOSpec.h:110
 TMrbIOSpec.h:111
 TMrbIOSpec.h:112
 TMrbIOSpec.h:113
 TMrbIOSpec.h:114
 TMrbIOSpec.h:115
 TMrbIOSpec.h:116
 TMrbIOSpec.h:117
 TMrbIOSpec.h:118
 TMrbIOSpec.h:119
 TMrbIOSpec.h:120
 TMrbIOSpec.h:121
 TMrbIOSpec.h:122
 TMrbIOSpec.h:123
 TMrbIOSpec.h:124
 TMrbIOSpec.h:125
 TMrbIOSpec.h:126
 TMrbIOSpec.h:127
 TMrbIOSpec.h:128
 TMrbIOSpec.h:129
 TMrbIOSpec.h:130
 TMrbIOSpec.h:131
 TMrbIOSpec.h:132
 TMrbIOSpec.h:133
 TMrbIOSpec.h:134
 TMrbIOSpec.h:135
 TMrbIOSpec.h:136
 TMrbIOSpec.h:137
 TMrbIOSpec.h:138
 TMrbIOSpec.h:139
 TMrbIOSpec.h:140
 TMrbIOSpec.h:141
 TMrbIOSpec.h:142
 TMrbIOSpec.h:143
 TMrbIOSpec.h:144
 TMrbIOSpec.h:145
 TMrbIOSpec.h:146
 TMrbIOSpec.h:147
 TMrbIOSpec.h:148
 TMrbIOSpec.h:149
 TMrbIOSpec.h:150
 TMrbIOSpec.h:151
 TMrbIOSpec.h:152
 TMrbIOSpec.h:153
 TMrbIOSpec.h:154