/*!\class SPMRoot
\author Alexandre A. P. Suaide 

<p>
This class is the basic CAMAC data acquisition system interface in the ROOT
framework. 
*/
#ifndef SPMRoot_HH
#define SPMRoot_HH

#include "CamacIO.h"
#include "PelTools.h"
#include "ScanRoot.h"
#include <iostream>
#include <fstream>
#include <TGClient.h>
#include <TGButton.h>
#include <TGMenu.h>
#include "TApplication.h"
#include "TTimer.h"
#include "TString.h"
#include "TGButton.h"
#include "TGLabel.h"
#include "TGTextEntry.h"
#include "TGFileDialog.h"
#include "TROOT.h"
#include "TSystem.h"
#include "TInterpreter.h"
#include "TDatime.h"
#include "TH2.h"
#include "TNamed.h"
#include "TGTextView.h"
#include "TBrowser.h"
#include "TCanvas.h"
#include "TGMsgBox.h"
#include "TFile.h"
#include "TStopwatch.h"
#include "TStyle.h"
#include "TSystemDirectory.h"
#include "TDialog.h"
#include "log.hh"
#include "version.h"

#define NLABELS 13
#define NMENUS 11
#define NBUTTONS 4
#define NFLAGS 9
#define NSTRINGS 7
#define NREGISTERS 12
#define MAXHIST 1000
#define MAXSCALERS 6

#define RUNNINGCOLOR 0x00FF00
#define STOPPEDCOLOR 0xFF0000
#define PAUSEDCOLOR  0x0000FF
#define ID1D 10000
#define ID2D 20000
#define MAXPARAM 8192

using namespace std;

class SPMRoot : public TGMainFrame 
{
  public:
                        SPMRoot(const TGWindow*,int,int,bool = false);
    virtual             ~SPMRoot();
          bool          ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
    virtual Bool_t      HandleConfigureNotify(Event_t*);
          void          CloseWindow();
          void          setCamac(char* a) { mString[kCAMAC] = a;}

  private:

         void           loadConfig();
         void           saveConfig();
         void           updateGUI();
         void           updateSTATS();
         bool           HandleTimer(TTimer*);
         bool           startRun();
         bool           stopRun(int = 0);
         bool           pauseRun();
         bool           loadEVO();
         bool           loadHist();
         bool           saveHist(char* = NULL);
         bool           setAutoSaveHist();
         bool           setFilMode(int);
         bool           l2Load();
         bool           l2Unload();
         bool           zeroAll();
         bool           zero(int);
         bool           about();
         bool           eventLoop(int = 0);
         bool           readScalers();
         bool           zeroScalers();
         bool           setNScalers();
         bool           configScalers();
         bool           setScalersCrate();
         bool           setCamacBuffer();
         bool           setMaxNpar();

         PelTools*      mTools;
         CamacIO*       mIO;
         ScanRoot*      mSCAN;
         TTimer*        mAquisTimer;
         TTimer*        mUpdateTimer;
         TDatime*       mTimeStart;
         TDatime*       mTimeStop;
         TStopwatch*    timing;

				 bool           mDebug;

         TString        mString[NSTRINGS];
         bool           mFlag[NFLAGS];
         int            mRegister[NREGISTERS];
         int            mScalerId[MAXSCALERS];

         short          npar;
         float          par[MAXPARAM];

         float          mDeadTime;
         float          mRunTime;
         double         mNBytesSaved;
         double         mSplitSize;


         //////////////////////////////////////////////////
         // GUI components
         //
         TGMenuBar*       mMenu;
         TGPopupMenu*     mPop[NMENUS];
         TGTextButton*    mButton[NBUTTONS];

         TGGroupFrame*    mStatFrame;
         TGLabel*         mLabels[NLABELS];
         TGTextEntry*     mText[NLABELS];
         TGTextView*      mTextView;
         //
         //////////////////////////////////////////////////         


         //////////////////////////////////////////////////         
         // ENUMERATORS USED IN THE PROGRAM
         //
         // mPop[] 
         enum {kFILE,kAQUIS,kTOOLS,kDISPLAY,kHELP,kFIL,
               kSPLIT,kLEVEL2,kZERO,kZERO1,kZERO2};
         // mButton[] 
         enum {kSTARTB,kSTOPB,kPAUSEB,kSTATUSB};
         // mFlag[] 
         enum {kEVOLOAD,kHISTLOAD,kL2LOAD,kFILENABLE,kTAPEENABLE,
               kHISTAUTOSAVE,kRUNNING,kPAUSED,kSPLITMODE};
         // mString[] 
         enum {kHISTLIB,kEVOFILE,kHISTFILE,kL2FILE,kFILFILE,
               kFILFILE2,kCAMAC};
         // mRegister[] 
         enum {kMAXNPARR,kRUNR,kNEVENTSR,kNSAVEDR,kSPLITR,kNLOSTR,
               kNEVENTSLASTR,kNLASTR,kNSCALERSR,kSCALERCRATER,
               kBUFFERSIZER,kEVENTLOOPR};
         // GUI commands
         enum {kCmdStart,kCmdStop,kCmdPause,kCmdLoadEvo,kCmdLoadHist,
               kCmdSaveHist,kCmdAutoSave,kCmdFilMode1,kCmdFilMode2,
               kCmdFilMode3,kCmdExit,kCmdL2Load,kCmdL2Unload,
               kCmdSplitNone,kCmdSplit1,kCmdSplit2,kCmdSplit3,
               kCmdZeroAll,kCmdReadScalers,kCmdZeroScalers,
               kCmdSetNScalers,kCmdConfigScalers,kCmdCamacBuffer,
               kCmdNPar,kCmdScalerCrate,kCmdCanvas,kCmdBrowser,
               kCmdTools,kCmdHelp,kCmdAbout,kCmdSaveConfig};
         //
         //////////////////////////////////////////////////         
  ClassDef(SPMRoot,1)
};
#endif


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.