ROOT logo
#ifndef ALIMUONTRIGGERGUIBOARD_H
#define ALIMUONTRIGGERGUIBOARD_H

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

/// \ingroup evaluation
/// \class AliMUONTriggerGUIboard
/// \brief Trigger GUI utility class: single board object
//  Author Bogdan Vulpescu, LPC Clermont-Ferrand

#include "AliMpPad.h"

#include <TString.h>
#include <TObject.h>

class TClonesArray;
class TBox;

class AliMUONTriggerGUIboard : public TObject
{

public:

  AliMUONTriggerGUIboard();
  AliMUONTriggerGUIboard(TRootIOCtor* ioCtor);
  virtual ~AliMUONTriggerGUIboard();

  /// get the standard name of this board
  Char_t  *GetBoardName()   const { return (Char_t*)(fName->Data()); };
  /// get the name of the crate containing this board
  Char_t  *GetCrateName()   const { return (Char_t*)(fCrateName->Data()); };
  /// get the working status of this board
  UShort_t GetStatus() const { return fStatus; };
  /// get the number of this board
  Int_t    GetNumber() const { return fID; };
  /// get the id of the detector element
  Int_t    GetDetElemId() const { return fDetElemId; };
  /// get the id of the circuit
  Int_t    GetIdCircuit() const { return fIdCircuit; };
  /// get detector side (Left=0 , Right=1)
  Int_t GetSide() const;
  /// get line
  Int_t GetLine() const;
  /// get column
  Int_t GetCol() const;

  /// set the working status of this board
  void SetStatus(UShort_t s) { fStatus = s; };
  /// set the standard name of this board
  void SetBoardName(const Char_t *name) { fName = new TString(name); };
  /// set the name of the crate containing this board
  void SetCrateName(const Char_t *name) { fCrateName = new TString(name); };
  /// set the number of the detector element containing this board
  void SetDetElemId(Int_t id) { fDetElemId = id; };
  /// set the number of this board
  void SetNumber(Int_t id) { fID = id; }

  /// add a mapping x-pad
  void AddPadX(const AliMpPad &pad, Int_t ich) 
  { 
    new ((*fPadsX[ich])[fNPadsX[ich]++]) AliMpPad(pad); 
  }
  /// add a mapping y-pad
  void AddPadY(const AliMpPad &pad, Int_t ich) 
  { 
    new ((*fPadsY[ich])[fNPadsY[ich]++]) AliMpPad(pad); 
  }
  /// create the display geometry from the mapping pads
  void MakeGeometry();

  /// set an x-strip digit in a chamber with amplitude = amp
  void SetDigitX(Int_t imt, Int_t is, Int_t amp) { 
    fXDig[imt][is] = (UChar_t)amp; }; 
  /// set a  y-strip digit in a chamber with amplitude = amp
  void SetDigitY(Int_t imt, Int_t is, Int_t amp) { 
    fYDig[imt][is] = (UChar_t)amp; }; 
  /// get neighbouring boards with common y strips
  UChar_t GetYOver() const  { return fYOver; };
  /// get the board position inside the detector element in y direction
  UChar_t GetPosition() const { return fPosition; };
  /// get the digit amplitude for an x-strip in a given chamber
  Int_t GetXDig(Int_t imt, Int_t is) const { return fXDig[imt][is]; };
  /// get the digit amplitude for a  y-strip in a given chamber
  Int_t GetYDig(Int_t imt, Int_t is) const { return fYDig[imt][is]; };

  /// set x-strip box for display
  void SetXDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2);
  /// set y-strip box for display
  void SetYDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2);

  /// get x-strip box for display
  TBox *GetXDigBox(Int_t imt, Int_t is) const { return fXDigBox[imt][is]; };
  /// get y-strip box for display
  TBox *GetYDigBox(Int_t imt, Int_t is) const { return fYDigBox[imt][is]; };

  /// get x-center of the board in chamber imt
  Float_t GetXCenter(Int_t imt) const { return fXCenter[imt]; };
  /// get y-center of the board in chamber imt
  Float_t GetYCenter(Int_t imt) const { return fYCenter[imt]; };
  /// get z-center of the board in chamber imt
  Float_t GetZCenter(Int_t imt) const { return fZCenter[imt]; };
  /// get x-width of the board in chamber imt
  Float_t GetXWidth(Int_t imt)  const { return fXWidth[imt]; };
  /// get y-width of the board in chamber imt
  Float_t GetYWidth(Int_t imt)  const { return fYWidth[imt]; };

  /// get x-index in detector element for an x-strip
  Int_t GetXSix()  const { return fXSix;  };
  /// get first y-index in detector element for an x-strip
  Int_t GetXSiy1() const { return fXSiy1; };
  /// get last  y-index in detector element for an x-strip
  Int_t GetXSiy2() const { return fXSiy2; };
  /// get first x-index in detector element for a  y-strip
  Int_t GetYSix1() const { return fYSix1; };
  /// get last  x-index in detector element for a  y-strip
  Int_t GetYSix2() const { return fYSix2; };
  /// get y-index in detector element for a y-strip
  Int_t GetYSiy()  const { return fYSiy;  };
  /// get number of x strips
  Int_t GetNStripX() const { return GetXSiy2() - GetXSiy1() + 1; };
  /// get number of y strips
  Int_t GetNStripY() const { return GetYSix2() - GetYSix1() + 1; };

  /// set true if this board has a gui active
  void   SetOpen(Bool_t open) { fIsOpen = open; };
  /// true if this board has a gui active
  Bool_t IsOpen() const       { return fIsOpen; };

  /// delete the set x-digits
  void  ClearXDigits();
  /// delete the set y-digits
  void  ClearYDigits();

  /// print information on this board
  void PrintBoard() const;

private:

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

  /// Not implemented
  AliMUONTriggerGUIboard (const AliMUONTriggerGUIboard& board);
  /// Not implemented
  AliMUONTriggerGUIboard& operator=(const AliMUONTriggerGUIboard& board);

  TString       *fName;            ///< Board name LCxLxBx or RCxLxBx
  TString       *fCrateName;       ///< Crate name
  Int_t          fID;              ///< Board array number
  UShort_t       fStatus;          ///< Board status
  UChar_t        fPosition;        ///< Y-boards position
  UChar_t        fYOver;           ///< Y-boards with common y-strips

  Float_t        fXCenter[kNMT];   ///< X-center of the board
  Float_t        fYCenter[kNMT];   ///< Y-center of the board
  Float_t        fZCenter[kNMT];   ///< Z-center of the board
  Float_t        fXWidth[kNMT];    ///< X-width  of the board
  Float_t        fYWidth[kNMT];    ///< Y-width  of the board

  Int_t          fXSix;            ///< X-strips ix index in the board
  Int_t          fXSiy1;           ///< X-strips first iy index in the board
  Int_t          fXSiy2;           ///< X-strips last  iy index in the board

  Int_t          fYSix1;           ///< Y-strips first ix index in the board
  Int_t          fYSix2;           ///< Y-strips last  ix index in the board
  Int_t          fYSiy;            ///< Y-strips iy index in the board

  Int_t          fDetElemId;       ///< Detector element ID (modulo 100)

  Int_t          fIdCircuit;       ///< Circuit number

  UChar_t        fXDig[kNMT][kNS]; ///< X-digits amplitude, set by GUI
  UChar_t        fYDig[kNMT][kNS]; ///< Y-digits amplitude, set by GUI

  TBox          *fXDigBox[kNMT][kNS]; ///< X-digits boxes
  TBox          *fYDigBox[kNMT][kNS]; ///< Y-digits boxes

  Bool_t         fIsOpen;          ///< Selection flag for the digits map

  /// adding pads from mapping to calculate the board geometry
  Int_t fNPadsX[kNMT];             ///< nr of added mapping pads in x
  Int_t fNPadsY[kNMT];             ///< nr of added mapping pads in y
  TClonesArray *fPadsX[kNMT];      ///< array of mapping pads in x
  TClonesArray *fPadsY[kNMT];      ///< array of mapping pads in y

  ClassDef(AliMUONTriggerGUIboard,2) //Trigger GUI utility class: single board object

};

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