ROOT logo
#ifndef ALIMUONTRIGGERGUI_H
#define ALIMUONTRIGGERGUI_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

/// \ingroup evaluation
/// \class AliMUONTriggerGUI
/// \brief Graphical User Interface utility class for the MUON trigger detector
//  Author Bogdan Vulpescu, LPC Clermont-Ferrand


#include <TObject.h>
#include <TObjArray.h>

class TString;
class TGMainFrame;
class TGTransientFrame;
class TGImageMap;
class TGTextEntry;
class TGTextBuffer;
class TRootEmbeddedCanvas;
class TParticle;
class TGTableLayout;

class AliStack;
class AliLoader;
class AliRunLoader;
class AliCDBManager;
class AliRawReader;
class AliMUONCalibrationData;
class AliMUONTriggerGUIboard;
class AliMUONTriggerGUIdimap;
class AliMUONTriggerElectronics;
class AliMUONTriggerCrateStore;
class AliMUONMCDataInterface;
class AliMUONDigitStoreV2R;
class AliMUONDigitStoreV1;
class AliMUONTriggerStoreV1;

class AliMUONTriggerGUI : public TObject
{

public:

  AliMUONTriggerGUI(Int_t runNumber = 0);
  virtual ~AliMUONTriggerGUI() { 
    /// main gui destructor 
  };
  
  void OpenBoard(Int_t id);
  void HandleMenu(Int_t id);

  void CreateDigitStore();
  void PrintDigitStore() const;
  void ClearDigitStore();

  void CreateTriggerStore();
  void PrintTriggerStore() const;
  void ClearTriggerStore();

  void WriteTriggerRawData();

  void FET(Int_t onoff);
  void FETboard(Int_t ib, Int_t amp);

  /* Do functions */

  void DoRunGalApply();
  void DoRunRawApply();
  void DoRunCancel();
  void DoControlClose();
  void DoCircuitCancel();
  void DoCircuitOpen();
  void DoErrorOK();
  void DoNextEvent();
  void DoPreviousEvent();
  void DoSkipToEvent();
  void DoErrorGUI(const Char_t *wt);
  void DoFETRegRun(Int_t onoff);
  void DoFETRegOnCancel();
  void DoFETRegOffCancel();
  void DoFETRegOnRun();
  void DoFETRegOffRun();

  /* Close functions */

  void CloseWindow();
  void CloseRunInput() const;
  void CloseError() const;
  void CloseControl() const;
  void CloseCircuit() const;
  void CloseFETRegOn() const;
  void CloseFETRegOff() const;

private:
    
  AliMUONTriggerGUI (const AliMUONTriggerGUI& board); ///< copy constructor
  AliMUONTriggerGUI& operator=(const AliMUONTriggerGUI& board);///< assignment operator
  
private:
  
  /// nr of boards, nr of chambers
  enum { kNBoards = 234, kNMT = 4 }; 

  /// working status flags
  enum EMenuIdentifiers {
    
    kMFILEEXIT,
    kMFILERUN,
    kMFILECNTRL,
    
    kMMAPDIGITS,
    kMRESETDIGITS,

    kMCIRCUITOPEN,

    kMFETON,
    kMFETOFF,
    kMFETREGON,
    kMFETREGOFF,

    kMDSTORE,
    kMTSTORE,
    kMDSTORECL,
    kMTSTORECL,
    kMDSTOREP,
    kMTSTOREP,

    kMTRAWDATA

  };

  enum {
    kGood = 0x0001, kWithProblems = 0x0002, kNotWorking = 0x0004, kUnknown = 0x0008
  };                                ///< working status flags

  TGMainFrame      *fMain;          ///< The main frame
  TGImageMap       *fImageMap;      ///< The image map of the main frame
  TGTextBuffer     *fTxtBuffer1;    ///< Path to the data (galice.root)
  TGTextBuffer     *fTxtBuffer2;    ///< Current event number
  TGTextBuffer     *fTxtCircuit;    ///< Circuit to open
  TGTextBuffer     *fTxtFETRegOn;   ///< Regional crate to FET ON
  TGTextBuffer     *fTxtFETRegOff;  ///< Regional crate to FET OFF

  TGTransientFrame *fRunInput;      ///< Run input window
  TGTransientFrame *fError;         ///< Error window
  TGTransientFrame *fControl;       ///< Run control window
  TGTransientFrame *fCircuit;       ///< Circuit window
  TGTransientFrame *fFETRegOn;      ///< FET ON for a regional card
  TGTransientFrame *fFETRegOff;     ///< FET OFF for a regional card

  TGTextEntry      *fSkipToEventTxt;///< Control field shows current event number

  TString          *fFileName;      ///< Full galice file name
  TString          *fPath;          ///< Path string to galice
  TString          *fEvString;      ///< Event number string

  Int_t             fChamber;       ///< Current MT chamber
  Int_t             fEvent;         ///< Current event number
  Int_t             fEventsPerRun;  ///< Number of events per file (run)

  AliLoader        *fLoader;        ///< The MUON loader
  AliRunLoader     *fRunLoader;     ///< The run loader

  AliCDBManager    *fCDBManager;    ///< Calibration DB manager
  AliMUONCalibrationData *fCalibrationData;   ///< Calibration data for MUON
  AliMUONTriggerCrateStore *fCrateManager;    ///< trigger boards manager
  AliMUONMCDataInterface *fMCDataInterface;   ///< MC data interface

  Bool_t            fBoardsInit;    ///< Control the InitBoards only once
  Bool_t            fControlOn;     ///< If the control frame is open

  AliMUONTriggerGUIdimap *fDiMap;   ///< Digits map

  AliMUONTriggerElectronics *fTriggerProcessor;   ///< The GUI trigger processor

  TObjArray *fBoards;               ///< The array of trigger boards

  AliMUONDigitStoreV2R *fDigitStore;    ///< GUI digit store (DSET)
  AliMUONTriggerStoreV1* fTriggerStore; ///< Trigger store with GUI digit store
  Bool_t fTStoreOn;                   ///< True if DSET trigger store has data
  Bool_t fRUNRAW;                     ///< True if run with raw data (root)
  AliRawReader *fRawReader;           ///< Reader for raw data input
  Int_t fCurrentRawEvent;             ///< Current event for raw data input
  AliMUONDigitStoreV1 *fRawDigitStore; ///< Digit store from raw data
  AliMUONTriggerStoreV1 *fRawTriggerStore; ///< Trigger store from raw data

  /// Access the array of trigger boards
  TObjArray *Boards() {
    if(!fBoards) fBoards = new TObjArray(kNBoards); return fBoards;
  };                                
  AliMUONTriggerGUIboard *GetBoard(Int_t id) const;

  virtual void Init();
  virtual void InitBoards();

  void  SetStripBoxes(AliMUONTriggerGUIboard *board);

  ClassDef(AliMUONTriggerGUI,2)      // Main GUI class for the MUON trigger

};

#endif
 AliMUONTriggerGUI.h:1
 AliMUONTriggerGUI.h:2
 AliMUONTriggerGUI.h:3
 AliMUONTriggerGUI.h:4
 AliMUONTriggerGUI.h:5
 AliMUONTriggerGUI.h:6
 AliMUONTriggerGUI.h:7
 AliMUONTriggerGUI.h:8
 AliMUONTriggerGUI.h:9
 AliMUONTriggerGUI.h:10
 AliMUONTriggerGUI.h:11
 AliMUONTriggerGUI.h:12
 AliMUONTriggerGUI.h:13
 AliMUONTriggerGUI.h:14
 AliMUONTriggerGUI.h:15
 AliMUONTriggerGUI.h:16
 AliMUONTriggerGUI.h:17
 AliMUONTriggerGUI.h:18
 AliMUONTriggerGUI.h:19
 AliMUONTriggerGUI.h:20
 AliMUONTriggerGUI.h:21
 AliMUONTriggerGUI.h:22
 AliMUONTriggerGUI.h:23
 AliMUONTriggerGUI.h:24
 AliMUONTriggerGUI.h:25
 AliMUONTriggerGUI.h:26
 AliMUONTriggerGUI.h:27
 AliMUONTriggerGUI.h:28
 AliMUONTriggerGUI.h:29
 AliMUONTriggerGUI.h:30
 AliMUONTriggerGUI.h:31
 AliMUONTriggerGUI.h:32
 AliMUONTriggerGUI.h:33
 AliMUONTriggerGUI.h:34
 AliMUONTriggerGUI.h:35
 AliMUONTriggerGUI.h:36
 AliMUONTriggerGUI.h:37
 AliMUONTriggerGUI.h:38
 AliMUONTriggerGUI.h:39
 AliMUONTriggerGUI.h:40
 AliMUONTriggerGUI.h:41
 AliMUONTriggerGUI.h:42
 AliMUONTriggerGUI.h:43
 AliMUONTriggerGUI.h:44
 AliMUONTriggerGUI.h:45
 AliMUONTriggerGUI.h:46
 AliMUONTriggerGUI.h:47
 AliMUONTriggerGUI.h:48
 AliMUONTriggerGUI.h:49
 AliMUONTriggerGUI.h:50
 AliMUONTriggerGUI.h:51
 AliMUONTriggerGUI.h:52
 AliMUONTriggerGUI.h:53
 AliMUONTriggerGUI.h:54
 AliMUONTriggerGUI.h:55
 AliMUONTriggerGUI.h:56
 AliMUONTriggerGUI.h:57
 AliMUONTriggerGUI.h:58
 AliMUONTriggerGUI.h:59
 AliMUONTriggerGUI.h:60
 AliMUONTriggerGUI.h:61
 AliMUONTriggerGUI.h:62
 AliMUONTriggerGUI.h:63
 AliMUONTriggerGUI.h:64
 AliMUONTriggerGUI.h:65
 AliMUONTriggerGUI.h:66
 AliMUONTriggerGUI.h:67
 AliMUONTriggerGUI.h:68
 AliMUONTriggerGUI.h:69
 AliMUONTriggerGUI.h:70
 AliMUONTriggerGUI.h:71
 AliMUONTriggerGUI.h:72
 AliMUONTriggerGUI.h:73
 AliMUONTriggerGUI.h:74
 AliMUONTriggerGUI.h:75
 AliMUONTriggerGUI.h:76
 AliMUONTriggerGUI.h:77
 AliMUONTriggerGUI.h:78
 AliMUONTriggerGUI.h:79
 AliMUONTriggerGUI.h:80
 AliMUONTriggerGUI.h:81
 AliMUONTriggerGUI.h:82
 AliMUONTriggerGUI.h:83
 AliMUONTriggerGUI.h:84
 AliMUONTriggerGUI.h:85
 AliMUONTriggerGUI.h:86
 AliMUONTriggerGUI.h:87
 AliMUONTriggerGUI.h:88
 AliMUONTriggerGUI.h:89
 AliMUONTriggerGUI.h:90
 AliMUONTriggerGUI.h:91
 AliMUONTriggerGUI.h:92
 AliMUONTriggerGUI.h:93
 AliMUONTriggerGUI.h:94
 AliMUONTriggerGUI.h:95
 AliMUONTriggerGUI.h:96
 AliMUONTriggerGUI.h:97
 AliMUONTriggerGUI.h:98
 AliMUONTriggerGUI.h:99
 AliMUONTriggerGUI.h:100
 AliMUONTriggerGUI.h:101
 AliMUONTriggerGUI.h:102
 AliMUONTriggerGUI.h:103
 AliMUONTriggerGUI.h:104
 AliMUONTriggerGUI.h:105
 AliMUONTriggerGUI.h:106
 AliMUONTriggerGUI.h:107
 AliMUONTriggerGUI.h:108
 AliMUONTriggerGUI.h:109
 AliMUONTriggerGUI.h:110
 AliMUONTriggerGUI.h:111
 AliMUONTriggerGUI.h:112
 AliMUONTriggerGUI.h:113
 AliMUONTriggerGUI.h:114
 AliMUONTriggerGUI.h:115
 AliMUONTriggerGUI.h:116
 AliMUONTriggerGUI.h:117
 AliMUONTriggerGUI.h:118
 AliMUONTriggerGUI.h:119
 AliMUONTriggerGUI.h:120
 AliMUONTriggerGUI.h:121
 AliMUONTriggerGUI.h:122
 AliMUONTriggerGUI.h:123
 AliMUONTriggerGUI.h:124
 AliMUONTriggerGUI.h:125
 AliMUONTriggerGUI.h:126
 AliMUONTriggerGUI.h:127
 AliMUONTriggerGUI.h:128
 AliMUONTriggerGUI.h:129
 AliMUONTriggerGUI.h:130
 AliMUONTriggerGUI.h:131
 AliMUONTriggerGUI.h:132
 AliMUONTriggerGUI.h:133
 AliMUONTriggerGUI.h:134
 AliMUONTriggerGUI.h:135
 AliMUONTriggerGUI.h:136
 AliMUONTriggerGUI.h:137
 AliMUONTriggerGUI.h:138
 AliMUONTriggerGUI.h:139
 AliMUONTriggerGUI.h:140
 AliMUONTriggerGUI.h:141
 AliMUONTriggerGUI.h:142
 AliMUONTriggerGUI.h:143
 AliMUONTriggerGUI.h:144
 AliMUONTriggerGUI.h:145
 AliMUONTriggerGUI.h:146
 AliMUONTriggerGUI.h:147
 AliMUONTriggerGUI.h:148
 AliMUONTriggerGUI.h:149
 AliMUONTriggerGUI.h:150
 AliMUONTriggerGUI.h:151
 AliMUONTriggerGUI.h:152
 AliMUONTriggerGUI.h:153
 AliMUONTriggerGUI.h:154
 AliMUONTriggerGUI.h:155
 AliMUONTriggerGUI.h:156
 AliMUONTriggerGUI.h:157
 AliMUONTriggerGUI.h:158
 AliMUONTriggerGUI.h:159
 AliMUONTriggerGUI.h:160
 AliMUONTriggerGUI.h:161
 AliMUONTriggerGUI.h:162
 AliMUONTriggerGUI.h:163
 AliMUONTriggerGUI.h:164
 AliMUONTriggerGUI.h:165
 AliMUONTriggerGUI.h:166
 AliMUONTriggerGUI.h:167
 AliMUONTriggerGUI.h:168
 AliMUONTriggerGUI.h:169
 AliMUONTriggerGUI.h:170
 AliMUONTriggerGUI.h:171
 AliMUONTriggerGUI.h:172
 AliMUONTriggerGUI.h:173
 AliMUONTriggerGUI.h:174
 AliMUONTriggerGUI.h:175
 AliMUONTriggerGUI.h:176
 AliMUONTriggerGUI.h:177
 AliMUONTriggerGUI.h:178
 AliMUONTriggerGUI.h:179
 AliMUONTriggerGUI.h:180
 AliMUONTriggerGUI.h:181
 AliMUONTriggerGUI.h:182
 AliMUONTriggerGUI.h:183
 AliMUONTriggerGUI.h:184
 AliMUONTriggerGUI.h:185
 AliMUONTriggerGUI.h:186
 AliMUONTriggerGUI.h:187
 AliMUONTriggerGUI.h:188
 AliMUONTriggerGUI.h:189
 AliMUONTriggerGUI.h:190
 AliMUONTriggerGUI.h:191
 AliMUONTriggerGUI.h:192
 AliMUONTriggerGUI.h:193
 AliMUONTriggerGUI.h:194
 AliMUONTriggerGUI.h:195
 AliMUONTriggerGUI.h:196
 AliMUONTriggerGUI.h:197
 AliMUONTriggerGUI.h:198
 AliMUONTriggerGUI.h:199
 AliMUONTriggerGUI.h:200
 AliMUONTriggerGUI.h:201
 AliMUONTriggerGUI.h:202
 AliMUONTriggerGUI.h:203
 AliMUONTriggerGUI.h:204
 AliMUONTriggerGUI.h:205
 AliMUONTriggerGUI.h:206