ROOT logo
#ifndef __TMrbCamacModule_h__
#define __TMrbCamacModule_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           expconf/inc/TMrbCamacModule.h
// Purpose:        Define experimental configuration for MARaBOU
// Class:          TMrbCamacModule      -- base class for camac modules
// Description:    Class definitions to implement a configuration front-end for MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbCamacModule.h,v 1.9 2008-01-14 09:48:51 Rudolf.Lutter 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 "TMrbTemplate.h"
#include "TMrbCNAF.h"
#include "TMrbModule.h"

class TMrbSubevent;

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCamacModule
// Purpose:        Define methods for a camac module
// Description:    Defines a camac module to be used in the MARaBOU environment.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbCamacModule : public TMrbModule {

	public:

		TMrbCamacModule() {};								// default ctor

															// explicit ctor:	name, id, position
															//					subdevice, nofchannels, range
		TMrbCamacModule(const Char_t * ModuleName, const Char_t * ModuleID,
								const Char_t * ModulePosition, Int_t SubDevice, Int_t NofChannels, Int_t Range);

		~TMrbCamacModule() {};								// default dtor

		inline Int_t GetCNAF(TMrbCNAF::EMrbCNAF cnaf) const {		// get single cnaf member
			return(fCNAF.Get(cnaf));
		};
		inline TMrbCNAF * GetCNAF() { return(&fCNAF); };

		inline Int_t GetStation() const { return(fCNAF.Get(TMrbCNAF::kCnafStation)); };
		
		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbReadoutTag TagIndex, TMrbTemplate & Template, const Char_t * Prefix = NULL); // generate readout code
		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex) { return(kFALSE); };  	// generate code for given channel
		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbSubevent * Subevent, Int_t Value = 0) { return(kFALSE); }; 

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

		void Print(Option_t * Option) const { TObject::Print(Option); }
		void Print(ostream & OutStrm, const Char_t * Prefix = "") const;		// show data
		virtual inline void Print() const { Print(cout, ""); };

	protected:
		TMrbCNAF fCNAF;										// module position

	ClassDef(TMrbCamacModule, 1)		// [Config] Base class for CAMAC modules
};	

#endif
 TMrbCamacModule.h:1
 TMrbCamacModule.h:2
 TMrbCamacModule.h:3
 TMrbCamacModule.h:4
 TMrbCamacModule.h:5
 TMrbCamacModule.h:6
 TMrbCamacModule.h:7
 TMrbCamacModule.h:8
 TMrbCamacModule.h:9
 TMrbCamacModule.h:10
 TMrbCamacModule.h:11
 TMrbCamacModule.h:12
 TMrbCamacModule.h:13
 TMrbCamacModule.h:14
 TMrbCamacModule.h:15
 TMrbCamacModule.h:16
 TMrbCamacModule.h:17
 TMrbCamacModule.h:18
 TMrbCamacModule.h:19
 TMrbCamacModule.h:20
 TMrbCamacModule.h:21
 TMrbCamacModule.h:22
 TMrbCamacModule.h:23
 TMrbCamacModule.h:24
 TMrbCamacModule.h:25
 TMrbCamacModule.h:26
 TMrbCamacModule.h:27
 TMrbCamacModule.h:28
 TMrbCamacModule.h:29
 TMrbCamacModule.h:30
 TMrbCamacModule.h:31
 TMrbCamacModule.h:32
 TMrbCamacModule.h:33
 TMrbCamacModule.h:34
 TMrbCamacModule.h:35
 TMrbCamacModule.h:36
 TMrbCamacModule.h:37
 TMrbCamacModule.h:38
 TMrbCamacModule.h:39
 TMrbCamacModule.h:40
 TMrbCamacModule.h:41
 TMrbCamacModule.h:42
 TMrbCamacModule.h:43
 TMrbCamacModule.h:44
 TMrbCamacModule.h:45
 TMrbCamacModule.h:46
 TMrbCamacModule.h:47
 TMrbCamacModule.h:48
 TMrbCamacModule.h:49
 TMrbCamacModule.h:50
 TMrbCamacModule.h:51
 TMrbCamacModule.h:52
 TMrbCamacModule.h:53
 TMrbCamacModule.h:54
 TMrbCamacModule.h:55
 TMrbCamacModule.h:56
 TMrbCamacModule.h:57
 TMrbCamacModule.h:58
 TMrbCamacModule.h:59
 TMrbCamacModule.h:60
 TMrbCamacModule.h:61
 TMrbCamacModule.h:62
 TMrbCamacModule.h:63
 TMrbCamacModule.h:64
 TMrbCamacModule.h:65
 TMrbCamacModule.h:66
 TMrbCamacModule.h:67
 TMrbCamacModule.h:68
 TMrbCamacModule.h:69
 TMrbCamacModule.h:70
 TMrbCamacModule.h:71
 TMrbCamacModule.h:72
 TMrbCamacModule.h:73
 TMrbCamacModule.h:74
 TMrbCamacModule.h:75
 TMrbCamacModule.h:76
 TMrbCamacModule.h:77