#ifndef __TMrbXia_DGF_4C_h__
#define __TMrbXia_DGF_4C_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 TMrbSubevent;
class TMrbXia_DGF_4C : public TMrbCamacModule {
public:
TMrbXia_DGF_4C() {};
TMrbXia_DGF_4C(const Char_t * ModuleName, const Char_t * ModulePosition);
virtual ~TMrbXia_DGF_4C() {};
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex);
Bool_t MakeReadoutCode(ofstream & RdoStrm, TMrbConfig::EMrbModuleTag TagIndex, TMrbModuleChannel * Channel, Int_t Value = 0);
Bool_t MakeAnalyzeCode(ofstream & AnaStrm, TMrbConfig::EMrbAnalyzeTag TagIndex, const Char_t * Extension);
Bool_t MakeRcFile(ofstream & RcStrm, TMrbConfig::EMrbRcFileTag TagIndex, const Char_t * ResourceName);
virtual inline const Char_t * GetMnemonic() const { return("dgf"); };
virtual Bool_t CheckSubeventType(TMrbSubevent * Subevent) const;
Bool_t ReadNameTable();
inline TMrbNamedX * FindParam(const Char_t * ParamName) const { return((TMrbNamedX *) fParamNames.FindByName(ParamName)); };
inline TMrbNamedX * FindParam(Int_t Offset) const { return((TMrbNamedX *) fParamNames.FindByIndex(Offset)); };
TMrbNamedX * FindParam(Int_t Channel, const Char_t * ParamName);
inline TMrbNamedX * FirstParam() const { return((TMrbNamedX *) fParamNames.First()); };
inline TMrbNamedX * NextParam(TMrbNamedX * Param) const { return((TMrbNamedX *) fParamNames.After(Param)); };
inline Int_t GetNofParams() const { return(fNofParams); };
virtual inline Bool_t HasRandomReadout() const { return(kFALSE); };
inline void SetMaxEvents(Int_t MaxEvents) { fMaxEvents = MaxEvents; };
inline Int_t GetMaxEvents() const { return(fMaxEvents); };
inline void SetTraceLength(Int_t TraceLength = 40) { fTraceLength = TraceLength; };
inline Int_t GetTraceLength() const { return(fTraceLength); };
inline void SetRunTask(Int_t RunTask = 0x100) { fRunTask = RunTask; };
inline Int_t GetRunTask() const { return(fRunTask); };
inline void SetSynchWait(Int_t SynchWait = 1) { fSynchWait = SynchWait; };
inline Int_t GetSynchWait() const { return(fSynchWait); };
inline void SetInSynch(Int_t InSynch = 0) { fInSynch = InSynch; };
inline Int_t GetInSynch() const { return(fInSynch); };
inline void SetSwitchBusTerm(Bool_t IndivFlag = kTRUE, Bool_t TermFlag = kTRUE, Bool_t MasterFlag = kTRUE) {
fSwitchBusIndiv = IndivFlag;
fSwitchBusTerm = TermFlag;
fSwitchBusTermIfMaster = MasterFlag;
};
inline Bool_t SwitchBusToBeTerminated() { return(fSwitchBusTerm); };
inline Bool_t SwitchBusToBeTerminatedIfMaster() { return(fSwitchBusTermIfMaster); };
inline void ActivateUserPSACode(Bool_t ActiveFlag = kTRUE) { fActivateUserPSA = ActiveFlag; };
inline Bool_t UserPSAIsActive() const { return(fActivateUserPSA); };
inline void SetClusterID(Int_t Serial, const Char_t * Color, const Char_t * Segments, Int_t HexNum = 0) {
fClusterID.Set((Int_t) (Serial << 12) + HexNum, Color, Segments);
};
inline Int_t GetClusterSerial() const { return((Int_t) (fClusterID.GetIndex() >> 12)); };
inline Int_t GetClusterHexNum() const { return(fClusterID.GetIndex() & 0xFFF); };
inline const Char_t * GetClusterColor() const { return(fClusterID.GetName()); };
inline const Char_t * GetClusterSegments() const { return(fClusterID.GetTitle()); };
inline Int_t GetRelease() const { return(fRelease); };
inline Bool_t DSPLoadedFromBinary() const { return(fDSPLoadedFromBinary); };
virtual inline Bool_t HasPrivateCode() const { return(kTRUE); };
inline void Help() { gSystem->Exec(Form("mrbHelp %s", this->ClassName())); };
protected:
void DefineRegisters();
protected:
Int_t fRelease;
Bool_t fDSPLoadedFromBinary;
TString fParamFile;
Int_t fNofParams;
TMrbLofNamedX fParamNames;
TMrbNamedX fClusterID;
TMrbLofNamedX fLofChannelLayouts;
Int_t fMaxEvents;
Int_t fTraceLength;
Int_t fRunTask;
Int_t fSynchWait;
Int_t fInSynch;
Bool_t fSwitchBusTerm;
Bool_t fSwitchBusTermIfMaster;
Bool_t fSwitchBusIndiv;
Bool_t fActivateUserPSA;
ClassDef(TMrbXia_DGF_4C, 1)
};
#endif