First big commit of the mchview program and its accompanying library,
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterMatrixFrame.h
1 #ifndef ALIMUONPAINTERMATRIXFRAME_H
2 #define ALIMUONPAINTERMATRIXFRAME_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup graphics
10 /// \class AliMUONPainterMatrixFrame
11 /// \brief Widget to plot a matrix of painters
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TGFrame
16 #  include "TGFrame.h"
17 #endif
18 #ifndef ROOT_RQ_OBJECT
19 #   include <RQ_OBJECT.h>
20 #endif
21 #include <float.h>
22
23 class AliMUONPainterColorSlider;
24 class AliMUONPainterPlotSelector;
25 class AliMUONPainterMatrix;
26 class AliMUONPainterHighlighter;
27 class AliMUONVPainter;
28 class AliMUONVTrackerData;
29 class TGButtonGroup;
30 class TGToolTip;
31 class TList;
32 class TObjArray;
33 class TRootEmbeddedCanvas;
34
35 class AliMUONPainterMatrixFrame : public TGCompositeFrame
36 {
37   RQ_OBJECT("AliMUONPainterMatrixFrame")
38   
39 public:
40   AliMUONPainterMatrixFrame(const TGWindow* window, UInt_t w, UInt_t h);
41   virtual ~AliMUONPainterMatrixFrame();
42   
43   void Clear(Option_t* opt="");
44
45   void DataRangeAutoRequested();
46   
47   void DataRangeWasChanged(Double_t* range);
48     
49   void DataSourceWasChanged(const char* name, AliMUONVTrackerData* data, Int_t dataIndex);
50
51   void EventInfo(Int_t event, Int_t px, Int_t py, TObject* selected);
52
53   void MouseEnter(AliMUONVPainter* painter); // *SIGNAL*
54
55   void MouseMotion(AliMUONVPainter* painter, Double_t* position); // *SIGNAL*
56
57   void MouseLeave(AliMUONVPainter* painter); // *SIGNAL*
58   
59   void ResponderButtonWasClicked(Int_t id); 
60
61   void OutlineButtonWasClicked(Int_t id); 
62   
63   void Use(AliMUONPainterMatrix* group);
64   
65   void TitleHasChanged(const char* newTitle); // *SIGNAL*
66   
67   void Update(); 
68
69   /// Get the matrix pointer
70   AliMUONPainterMatrix* Matrix() const { return fPainterMatrix; }
71   
72 private:
73   /// not implemented
74   AliMUONPainterMatrixFrame(const AliMUONPainterMatrixFrame& rhs);
75   /// not implemented
76   AliMUONPainterMatrixFrame& operator=(const AliMUONPainterMatrixFrame& rhs);
77
78   void ChangeTitle(const TString& title);
79   
80   void ChangeTitle(AliMUONVPainter* painter, const char* basename=0x0,
81                    Double_t x=FLT_MAX, Double_t y=FLT_MAX);
82   
83   void CreateButtons();
84   
85   void UpdateDataRange();
86   
87   void UpdateInterface(Bool_t fromScratch);
88
89   void ViewModified();
90   
91 private:
92   AliMUONPainterMatrix* fPainterMatrix; ///< the matrix we plot (not owner)
93   TRootEmbeddedCanvas* fView; ///< the canvas used to plot
94   TGHorizontalFrame* fInterface;  ///< the interface frame
95   TGButtonGroup* fResponderButtons; ///< the responder buttons
96   TGButtonGroup* fOutlineButtons; ///< the outline buttons
97   
98   AliMUONPainterPlotSelector* fPlotSelector; ///< the data source selection
99     
100   AliMUONPainterHighlighter* fPainterHighlighter; ///< the highlighter
101   
102   UInt_t fCanvasWidth; ///< canvas width
103   UInt_t fCanvasHeight; ///< canvas height
104   
105   TGCompositeFrame* fMainFrame; ///< our main frame
106   
107   AliMUONPainterColorSlider* fColorSlider; ///< color slider (for data)
108   
109   ClassDef(AliMUONPainterMatrixFrame,1) // Widget for drawing painter matrix
110 };
111
112 #endif