ROOT logo
#ifndef ALIMUONTRIGGERGUIBDMAP_H
#define ALIMUONTRIGGERGUIBDMAP_H

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

/// \ingroup evaluation
/// \class AliMUONTriggerGUIbdmap
/// \brief Trigger GUI utility class: single board map of the strips/digits
//  Author Bogdan Vulpescu, LPC Clermont-Ferrand

#include <TGFrame.h>

class TCanvas;
class TGCheckButton;
class TGTextEdit;
class TPolyLine;
class TBox;
class TPaveText;
class TObjArray;
class TH1F;
class TLatex;
class TGTableLayout;
class TGLabel;

class AliMUONTriggerGUIboard;
class AliMUONTriggerGUI;
class AliMUONTriggerCircuit;
class AliMUONTriggerCrateStore;
class AliMUONMCDataInterface;
class AliMUONDigitStoreV1;
class AliMUONTriggerStoreV1;
class AliMUONCalibrationData;
class AliLoader;

class AliMUONTriggerGUIbdmap : public TGFrame
{

public:

  AliMUONTriggerGUIbdmap(const TGWindow *p, const TGWindow *mainWindow, UInt_t w, UInt_t h);
  virtual ~AliMUONTriggerGUIbdmap();
  
  /// set the name of the board gui window
  void SetName(const Char_t *name)         { fMain->SetWindowName(name); };
  /// set the board associated to this instance
  void SetBoard(AliMUONTriggerGUIboard * const b) { fBoard = b; };  
  /// set the board associated to this instance, from boards array and id
  void SetBoard(TObjArray * const boards, Int_t id) { 
    fBoards = boards;
    fBoard  = (AliMUONTriggerGUIboard*)boards->UncheckedAt(id); }
  /// set the current muon loader
  void SetLoader(AliLoader * const loader)        { fLoader = loader; };
  /// set the MC data interface
  void SetMCDataInterface(AliMUONMCDataInterface * const mc) { fMCDataInterface = mc; };
  /// set the digit store from raw data
  void SetRawDigitStore(AliMUONDigitStoreV1 * const ds) { fRawDigitStore = ds; };
  /// set the trigger store from raw data
  void SetRawTriggerStore(AliMUONTriggerStoreV1 * const ts) { fRawTriggerStore = ts; };

  /// set the trigger boards manager
  void SetCrateManager(AliMUONTriggerCrateStore * const crates) { fCrateManager = crates; };

  void Show();

  void DrawStrips(Bool_t bx, Bool_t by);
  void DrawDigits(Bool_t bx, Bool_t by);
  void DrawClear();
  void EditStrips(Int_t event, Int_t x, Int_t y, TObject *sel);

  void Init();
  void HandleButtons(Int_t id = -1);
  void HandleEditButton();
  void CloseWindow() const;
  void DoClose();
  void DoDigits();
  void ResetDigits();
  void LocalTriggerInfo();

private:
  /// Not implemented
  AliMUONTriggerGUIbdmap (const AliMUONTriggerGUIbdmap& bdmap);
  /// Not implemented
  AliMUONTriggerGUIbdmap& operator=(const AliMUONTriggerGUIbdmap& bdmap);


  enum { kNBoards = 234, kNMT = 4, kNS = 16 };  ///< constants

  TGTransientFrame     *fMain;             ///< Main board frame
  TCanvas              *fCanvas[kNMT];     ///< MT canvases
  TGTextEdit           *fLocTrigE;         ///< Window local trigger info

  AliMUONTriggerGUIboard  *fBoard;           ///< Current board object
  AliLoader               *fLoader;          ///< The MUON loader
  AliMUONMCDataInterface  *fMCDataInterface; ///< MC data interface
  AliMUONDigitStoreV1     *fRawDigitStore;   ///< Raw data digit store
  AliMUONTriggerStoreV1   *fRawTriggerStore; ///< Raw data trigger store

  TGCheckButton        *fXStrips;          ///< Draw x-strips and digits
  TGCheckButton        *fYStrips;          ///< Draw y-strips and digits
  TGCheckButton        *fEditStrips;       ///< Set/unset the strips

  TPolyLine            *fXDigPL[kNMT][kNS];     ///< X-strip polyline 
  TPolyLine            *fYDigPL[kNMT][kNS];     ///< Y-strip polyline
  TBox                 *fXDigBox[kNMT][kNS];    ///< X-digit box
  TBox                 *fYDigBox[kNMT][kNS];    ///< Y-digit box
  TPaveText            *fXLabelL[kNMT][kNS];    ///< X-strip labels left
  TPaveText            *fXLabelR[kNMT][kNS];    ///< X-strip labels right
  TPaveText            *fYLabelL[kNMT][kNS];    ///< Y-strip labels left
  TPaveText            *fYLabelR[kNMT][kNS];    ///< Y-strip labels right

  Float_t               fXWidth[kNMT];     ///< Board x-width
  Float_t               fYWidth[kNMT];     ///< Board y-width
  Float_t               fXCenter[kNMT];    ///< Board x-center
  Float_t               fYCenter[kNMT];    ///< Board y-center
  
  Bool_t                fXOn;              ///< x-strips/digits on canvas ?
  Bool_t                fYOn;              ///< y-strips/digits on canvas ?
  Bool_t                fLabelX;           ///< x-labels exist
  Bool_t                fLabelY;           ///< y-labels exist
  Bool_t                fIsEditable;       ///< allows set/unset the strips

  UInt_t                fCanvasSize;       ///< Size of the canvas
  Int_t                 fNStripX;          ///< Number of x-strips on board
  Int_t                 fNStripY;          ///< Number of y-strips on board

  TObjArray            *fBoards;           ///< Array with all boards

  AliMUONCalibrationData *fCalibrationData;  ///< Pointer to calibration data
  AliMUONTriggerCrateStore *fCrateManager;   ///< trigger boards manager

  ClassDef(AliMUONTriggerGUIbdmap,2)       // board gui class

};

#endif
 AliMUONTriggerGUIbdmap.h:1
 AliMUONTriggerGUIbdmap.h:2
 AliMUONTriggerGUIbdmap.h:3
 AliMUONTriggerGUIbdmap.h:4
 AliMUONTriggerGUIbdmap.h:5
 AliMUONTriggerGUIbdmap.h:6
 AliMUONTriggerGUIbdmap.h:7
 AliMUONTriggerGUIbdmap.h:8
 AliMUONTriggerGUIbdmap.h:9
 AliMUONTriggerGUIbdmap.h:10
 AliMUONTriggerGUIbdmap.h:11
 AliMUONTriggerGUIbdmap.h:12
 AliMUONTriggerGUIbdmap.h:13
 AliMUONTriggerGUIbdmap.h:14
 AliMUONTriggerGUIbdmap.h:15
 AliMUONTriggerGUIbdmap.h:16
 AliMUONTriggerGUIbdmap.h:17
 AliMUONTriggerGUIbdmap.h:18
 AliMUONTriggerGUIbdmap.h:19
 AliMUONTriggerGUIbdmap.h:20
 AliMUONTriggerGUIbdmap.h:21
 AliMUONTriggerGUIbdmap.h:22
 AliMUONTriggerGUIbdmap.h:23
 AliMUONTriggerGUIbdmap.h:24
 AliMUONTriggerGUIbdmap.h:25
 AliMUONTriggerGUIbdmap.h:26
 AliMUONTriggerGUIbdmap.h:27
 AliMUONTriggerGUIbdmap.h:28
 AliMUONTriggerGUIbdmap.h:29
 AliMUONTriggerGUIbdmap.h:30
 AliMUONTriggerGUIbdmap.h:31
 AliMUONTriggerGUIbdmap.h:32
 AliMUONTriggerGUIbdmap.h:33
 AliMUONTriggerGUIbdmap.h:34
 AliMUONTriggerGUIbdmap.h:35
 AliMUONTriggerGUIbdmap.h:36
 AliMUONTriggerGUIbdmap.h:37
 AliMUONTriggerGUIbdmap.h:38
 AliMUONTriggerGUIbdmap.h:39
 AliMUONTriggerGUIbdmap.h:40
 AliMUONTriggerGUIbdmap.h:41
 AliMUONTriggerGUIbdmap.h:42
 AliMUONTriggerGUIbdmap.h:43
 AliMUONTriggerGUIbdmap.h:44
 AliMUONTriggerGUIbdmap.h:45
 AliMUONTriggerGUIbdmap.h:46
 AliMUONTriggerGUIbdmap.h:47
 AliMUONTriggerGUIbdmap.h:48
 AliMUONTriggerGUIbdmap.h:49
 AliMUONTriggerGUIbdmap.h:50
 AliMUONTriggerGUIbdmap.h:51
 AliMUONTriggerGUIbdmap.h:52
 AliMUONTriggerGUIbdmap.h:53
 AliMUONTriggerGUIbdmap.h:54
 AliMUONTriggerGUIbdmap.h:55
 AliMUONTriggerGUIbdmap.h:56
 AliMUONTriggerGUIbdmap.h:57
 AliMUONTriggerGUIbdmap.h:58
 AliMUONTriggerGUIbdmap.h:59
 AliMUONTriggerGUIbdmap.h:60
 AliMUONTriggerGUIbdmap.h:61
 AliMUONTriggerGUIbdmap.h:62
 AliMUONTriggerGUIbdmap.h:63
 AliMUONTriggerGUIbdmap.h:64
 AliMUONTriggerGUIbdmap.h:65
 AliMUONTriggerGUIbdmap.h:66
 AliMUONTriggerGUIbdmap.h:67
 AliMUONTriggerGUIbdmap.h:68
 AliMUONTriggerGUIbdmap.h:69
 AliMUONTriggerGUIbdmap.h:70
 AliMUONTriggerGUIbdmap.h:71
 AliMUONTriggerGUIbdmap.h:72
 AliMUONTriggerGUIbdmap.h:73
 AliMUONTriggerGUIbdmap.h:74
 AliMUONTriggerGUIbdmap.h:75
 AliMUONTriggerGUIbdmap.h:76
 AliMUONTriggerGUIbdmap.h:77
 AliMUONTriggerGUIbdmap.h:78
 AliMUONTriggerGUIbdmap.h:79
 AliMUONTriggerGUIbdmap.h:80
 AliMUONTriggerGUIbdmap.h:81
 AliMUONTriggerGUIbdmap.h:82
 AliMUONTriggerGUIbdmap.h:83
 AliMUONTriggerGUIbdmap.h:84
 AliMUONTriggerGUIbdmap.h:85
 AliMUONTriggerGUIbdmap.h:86
 AliMUONTriggerGUIbdmap.h:87
 AliMUONTriggerGUIbdmap.h:88
 AliMUONTriggerGUIbdmap.h:89
 AliMUONTriggerGUIbdmap.h:90
 AliMUONTriggerGUIbdmap.h:91
 AliMUONTriggerGUIbdmap.h:92
 AliMUONTriggerGUIbdmap.h:93
 AliMUONTriggerGUIbdmap.h:94
 AliMUONTriggerGUIbdmap.h:95
 AliMUONTriggerGUIbdmap.h:96
 AliMUONTriggerGUIbdmap.h:97
 AliMUONTriggerGUIbdmap.h:98
 AliMUONTriggerGUIbdmap.h:99
 AliMUONTriggerGUIbdmap.h:100
 AliMUONTriggerGUIbdmap.h:101
 AliMUONTriggerGUIbdmap.h:102
 AliMUONTriggerGUIbdmap.h:103
 AliMUONTriggerGUIbdmap.h:104
 AliMUONTriggerGUIbdmap.h:105
 AliMUONTriggerGUIbdmap.h:106
 AliMUONTriggerGUIbdmap.h:107
 AliMUONTriggerGUIbdmap.h:108
 AliMUONTriggerGUIbdmap.h:109
 AliMUONTriggerGUIbdmap.h:110
 AliMUONTriggerGUIbdmap.h:111
 AliMUONTriggerGUIbdmap.h:112
 AliMUONTriggerGUIbdmap.h:113
 AliMUONTriggerGUIbdmap.h:114
 AliMUONTriggerGUIbdmap.h:115
 AliMUONTriggerGUIbdmap.h:116
 AliMUONTriggerGUIbdmap.h:117
 AliMUONTriggerGUIbdmap.h:118
 AliMUONTriggerGUIbdmap.h:119
 AliMUONTriggerGUIbdmap.h:120
 AliMUONTriggerGUIbdmap.h:121
 AliMUONTriggerGUIbdmap.h:122
 AliMUONTriggerGUIbdmap.h:123
 AliMUONTriggerGUIbdmap.h:124
 AliMUONTriggerGUIbdmap.h:125
 AliMUONTriggerGUIbdmap.h:126
 AliMUONTriggerGUIbdmap.h:127
 AliMUONTriggerGUIbdmap.h:128
 AliMUONTriggerGUIbdmap.h:129
 AliMUONTriggerGUIbdmap.h:130
 AliMUONTriggerGUIbdmap.h:131
 AliMUONTriggerGUIbdmap.h:132
 AliMUONTriggerGUIbdmap.h:133
 AliMUONTriggerGUIbdmap.h:134
 AliMUONTriggerGUIbdmap.h:135
 AliMUONTriggerGUIbdmap.h:136