#ifndef __TMrbKinetics_3655_h__
#define __TMrbKinetics_3655_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 "TMrbCamacModule.h"
class TMrbModuleChannel;
class TMrbKinetics_3655 : public TMrbCamacModule {
public:
enum EMrbRegisters { kRegCycleControl,
kRegInhibitControl,
kRegLamMask
};
enum { kNofOutputs = 8 };
enum { kBitFrequency = 0 };
enum { kMaskFrequency = 07 };
enum { kBitOutput = 3 };
enum { kMaskOutput = 070 };
enum { kBitRecycle = 6 };
enum { kBitInhSet = 0 };
enum { kMasInhSet = 07 };
enum { kBitInhClear = 3 };
enum { kMaskInhClear = 070 };
public:
TMrbKinetics_3655() {};
TMrbKinetics_3655(const Char_t * ModuleName, const Char_t * ModulePosition);
~TMrbKinetics_3655() {};
Bool_t SetFrequency(Int_t Frequency = 1000000);
Bool_t SetFrequency(const Char_t * Frequency);
TMrbNamedX * GetFrequency() const;
void SetRecycleMode(Bool_t RecycleFlag = kTRUE);
Bool_t IsRecycleMode() const;
Int_t SetIntervals(Int_t Inv1, Int_t Inv2 = -1, Int_t Inv3 = -1, Int_t Inv4 = -1,
Int_t Inv5 = -1, Int_t Inv6 = -1, Int_t Inv7 = -1, Int_t Inv8 = -1);
Int_t GetInterval(Int_t InvNo) const;
inline Int_t GetNofIntervals() const { return(fNofIntervals); };
Bool_t SetInhibit(Int_t InhClear, Int_t InhSet);
inline void DontAssertInhibit() { SetInhibit(-1, -1); };
inline Bool_t AssertsInhibit() const { return(fInhibitFlag); };
UInt_t GetLamMask() const;
Bool_t SetLamMask(Bool_t Lam1, Bool_t Lam2 = kFALSE, Bool_t Lam3 = kFALSE, Bool_t Lam4 = kFALSE,
Bool_t Lam5 = kFALSE, Bool_t Lam6 = kFALSE, Bool_t Lam7 = kFALSE, Bool_t Lam8 = kFALSE);
inline void SetExtStart(Bool_t StartFlag = kTRUE) { fExtStartFlag = StartFlag; };
inline Bool_t IsExtStartMode() const { return(fExtStartFlag); };
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex);
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbModuleChannel * Channel, Int_t Value = 0);
virtual inline const Char_t * GetMnemonic() const { return("Kinetics_3655"); };
inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };
protected:
void DefineRegisters();
protected:
Bool_t fExtStartFlag;
Bool_t fInhibitFlag;
Int_t fNofIntervals;
TArrayI fIntervals;
ClassDef(TMrbKinetics_3655, 1)
};
#endif