ROOT logo
#ifndef __TMrbVulomTB_h__
#define __TMrbVulomTB_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           expconf/inc/TMrbVulomTB.h
// Purpose:        Define experimental configuration for MARaBOU
// Class:          TMrbVulomTB        -- Vulom TriggerBox
// Description:    Class definitions to implement a configuration front-end for MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbVulomTB.h,v 1.3 2009-09-10 12:52:30 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 "TObject.h"

#include "TMrbVMEChannel.h"
#include "TMrbVMEModule.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbVulomTB
// Purpose:        Define a VME Vulom TriggerBox
// Description:    Defines a VME Vulom TriggerBox
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbVulomTB : public TMrbVMEModule {

	public:
		enum				{	kSegSize			=	0x10000	};
		enum				{	kAddrMod			=	0x09	};
		enum				{	kNofChannels		=	16		};
		enum				{	kMaxScaleDown		=	15		};

		enum				{	kScSetInput			=	BIT(0)		};
		enum				{	kScSetInhibit		=	BIT(1)		};
		enum				{	kScSetScaleDown		=	BIT(2)		};
		enum				{	kScSetAll			=	kScSetInput | kScSetInhibit | kScSetScaleDown	};

	public:

		TMrbVulomTB() {};  												// default ctor
		TMrbVulomTB(const Char_t * ModuleName, UInt_t BaseAddr, Int_t NofScalerChans = kNofChannels, UInt_t ScalerSet = kScSetAll); 			// define a new trigbox
		~TMrbVulomTB() {};												// default dtor

		inline Int_t GetNofScalerChans() { return(fNofScalerChans); };

		virtual inline const Char_t * GetMnemonic() const { return("vulomTB"); }; 	// module mnemonic

		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex);  	// generate part of code
		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbVMEChannel * Channel, Int_t Value = 0);  	// generate code for given channel
		Bool_t MakeRcFile(ofstream & RcStrm, TMrbConfig::EMrbRcFileTag TagIndex, const Char_t * ResourceName);

		inline void SetEnableMask(UInt_t EnableMask) { fEnableMask = EnableMask; };
		inline UInt_t GetEnableMask() { return(fEnableMask); };
		Bool_t SetScaleDown(Int_t ScaleDown, Int_t ChannelNo);
		Int_t GetScaleDown(Int_t ChannelNo);
		inline void SetRdoScaleDown(Int_t RdoScd) { fRdoScaleDown = RdoScd; };
		inline Int_t GetRdoScaleDown() { return(fRdoScaleDown); };

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

	protected:
		Int_t fNofScalerChans;
		Int_t fNofScalerSets;
		UInt_t fScalerSetMask;
		UInt_t fEnableMask;
		TArrayI fScaleDown;
		Int_t fRdoScaleDown;

	ClassDef(TMrbVulomTB, 1)		// [Config] VulomTB, triggerBox GSI
};

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