ROOT logo
#ifndef __TMrbSilena_4418T_h__
#define __TMrbSilena_4418T_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           expconf/inc/TMrbSilena_4418T.h
// Purpose:        Define experimental configuration for MARaBOU
// Class:          TMrbSilena_4418T     -- silena tdc 4418/T
// Description:    Class definitions to implement a configuration front-end for MARaBOU
// Author:         R. Lutter
// Revision:       $Id: TMrbSilena_4418T.h,v 1.9 2008-12-10 12:13:49 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 "TMrbCamacModule.h"

class TMrbModuleChannel;
class TMrbSubevent;

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TMrbSilena_4418T
// Purpose:        Define an ADC of type Silena 4418/V
// Description:    Defines an ADC of type Silena 4418/V.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TMrbSilena_4418T : public TMrbCamacModule {

	public:
		enum	EMrbRegisters		{	kRegLowerThresh,
										kRegUpperThresh,
										kRegOffset,
										kRegStatus
									};

		enum	EMrbSilenaStatus	{	kStatusSUB	=	BIT(9),
										kStatusEEN	=	BIT(10),
										kStatusOVF	=	BIT(11),
										kStatusCCE	=	BIT(12),
										kStatusCSR	=	BIT(13),
										kStatusCLE	=	BIT(14)
									};

		enum						{	kDefaultOffset			=	140		};
		enum						{	kDefaultStatus			=	0x200	};
		enum						{	kZeroCompressionStatus	=	kStatusSUB | kStatusCCE | kStatusCSR	};

	public:

		TMrbSilena_4418T() {};  													// default ctor
		TMrbSilena_4418T(const Char_t * ModuleName, const Char_t * ModulePosition);	// define a new silena tdc
		~TMrbSilena_4418T() {};														// remove silena tdc from list

		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

		inline void SetZeroSuppression(Bool_t Flag = kTRUE) { fZeroSuppression = Flag; };	// zero compression on/off
		inline Bool_t HasZeroSuppression() const { return(fZeroSuppression); };
		
		virtual inline const Char_t * GetMnemonic() const { return("sil_4418t"); }; 	// module mnemonic

		virtual Bool_t CheckSubeventType(TMrbSubevent * Subevent) const;		// check if subevent type is [10,3x]

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

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

	protected:
		Bool_t fZeroSuppression;
	
	ClassDef(TMrbSilena_4418T, 1)		// [Config] Silena 4418/T, 8 x 4K CAMAC TDC
};

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