ROOT logo
#ifndef __TMrbCaen_V820_h__
#define __TMrbCaen_V820_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           expconf/inc/TMrbCaen_V820.h
// Purpose:        Define experimental configuration for MARaBOU
// Class:          TMrbCaen_V820        -- 32 chn latching scaler
// Description:    Class definitions to implement a configuration front-end for MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbCaen_V820.h,v 1.10 2009-07-27 08:37:16 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 "TMrbVMEScaler.h"

class TMrbVMEChannel;

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbCaen_V820
// Purpose:        Define a VME adc type CAEN V820
// Description:    Defines a VME adc CAEN V820
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbCaen_V820 : public TMrbVMEScaler {

	public:
		enum				{	kSegSize			=	0x10000	};
		enum				{	kAddrMod			=	0x39	};

		enum EMrbOffsets	{	kOffsCounter0			=	0x1000,
								kOffsTestReg			=	0x1080,
								kOffsDwellTime			=	0x1104,
								kOffsControl			=	0x1108,
								kOffsControlBitSet 		=	0x111A,
								kOffsControlBitClear	=	0x110C,
								kOffsStatus 			=	0x110E,
								kOffsGeoAddr			=	0x1110,
								kOffsModuleReset 		=	0x1120,
								kOffsSoftClear			=	0x1122,
								kOffsSoftTrigger		=	0x1124,
								kOffsDummy32			=	0x1200,
								kOffsDummy16			=	0x1204,
								kOffsFirmware			=	0x1132
							};

		enum EMrbRegisters	{	kRegFirmWare,
								kRegGeoAddr,
								kRegBitSet,
								kRegBitClear,
								kRegStatus,
								kRegControl,
								kRegDummy32,
								kRegDummy16
							};

		enum				{	kBitControlAcqMode			 		=	BIT(0),
								kBitControlAutoRestart				=	BIT(7)
							};

	public:

		TMrbCaen_V820() {};  												// default ctor
		TMrbCaen_V820(const Char_t * ModuleName, UInt_t BaseAddr);  		// define a new scaler
		~TMrbCaen_V820() {};												// default dtor

		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex);  	// generate part of code
		Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbModuleChannel * Channel, Int_t Value = 0);  	// generate code for given channel

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

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

	protected:
		void DefineRegisters(); 							// define vme registers

	protected:
		Bool_t fFFMode;
		Bool_t fCommonStart;

	ClassDef(TMrbCaen_V820, 1)		// [Config] CAEN V820, 16/32 chn VME TDC
};

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