#ifndef __TMrbCaen_V556_h__
#define __TMrbCaen_V556_h__
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 "TMrbVMEModule.h"
class TMrbVMEChannel;
class TMrbCaen_V556 : public TMrbVMEModule {
public:
enum { kSegSize = 0x1000 };
enum { kAddrMod = 0x39 };
enum EMrbOffsets { kOffsReset = 0x1C,
kOffsHF = 0x1E,
kOffsControl = 0x1A,
kOffsOutput = 0x18,
kOffsFF = 0x16,
kOffsDelay = 0x14,
kOffsTHRH = 0x12,
kOffsTHRL = 0x10,
kOffsModuleType = 0xFC,
kOffsVersion = 0xFE
};
enum EMrbRegisters { kRegLowerThresh,
kRegUpperThresh,
kRegControl,
kRegDelay
};
public:
TMrbCaen_V556() {};
TMrbCaen_V556(const Char_t * ModuleName, UInt_t BaseAddr);
~TMrbCaen_V556() {};
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex);
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbVMEChannel * Channel, Int_t Value = 0);
virtual inline const Char_t * GetMnemonic() const { return("caen_v556"); };
inline void SetFFMode(Bool_t FFFlag = kTRUE) { fFFMode = FFFlag; };
inline Bool_t IsFFMode() const { return(fFFMode); };
inline Bool_t HasRandomReadout() const { return(kFALSE); };
virtual inline Bool_t HasPrivateCode() const { return(kTRUE); };
virtual inline const Char_t * GetPrivateCodeFile() const { return("Module_Caen_V556"); };
inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };
protected:
void DefineRegisters();
protected:
Bool_t fFFMode;
ClassDef(TMrbCaen_V556, 1)
};
#endif