Separating run-dependent mapping data from data, which are not
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterRegistry.h
1 #ifndef ALIMUONPAINTERREGISTRY_H
2 #define ALIMUONPAINTERREGISTRY_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 AliMUONPainterRegistry
11 /// \brief Registry for a bunch of AliMUONVPainter related stuff
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TObject
16 #  include "TObject.h"
17 #endif
18 #ifndef ROOT_TQObject
19 #  include <TQObject.h>
20 #endif
21
22 class TGPopupMenu;
23 class TObjArray;
24 class AliMUONVTrackerData;
25 class AliMUONVTrackerDataMaker;
26 class AliMUONPainterMatrix;
27 class TGMenuBar;
28
29 class AliMUONPainterRegistry : public TObject, public TQObject
30 {
31 public:
32   virtual ~AliMUONPainterRegistry();
33
34   AliMUONVTrackerDataMaker* DataMaker(Int_t i) const;
35
36   AliMUONVTrackerData* DataSource(Int_t i) const;
37   
38   AliMUONVTrackerData* DataSource(const char* name) const;
39
40   AliMUONVTrackerData* InteractiveReadOutConfig() const;
41   
42   void DataSourceWasRegistered(AliMUONVTrackerData* data); // *SIGNAL*
43   
44   void DataSourceWasUnregistered(AliMUONVTrackerData* data); // *SIGNAL*
45
46   void DataMakerWasRegistered(AliMUONVTrackerDataMaker* reader); // *SIGNAL*
47   
48   void DataMakerWasUnregistered(AliMUONVTrackerDataMaker* reader); // *SIGNAL*
49   
50   Int_t FindIndexOf(AliMUONPainterMatrix* group) const;
51   
52   void HistoryMenuActivated(Int_t i);
53   
54   static AliMUONPainterRegistry* Instance();
55   
56   Int_t NumberOfDataMakers() const;
57
58   /// Number of data sources = data makers
59   Int_t NumberOfDataSources() const { return NumberOfDataMakers(); }
60
61   Int_t NumberOfPainterMatrices() const;
62
63   AliMUONPainterMatrix* PainterMatrix(Int_t i) const;
64   
65   AliMUONPainterMatrix* PainterMatrix(const char* groupName) const;
66   
67   void AddToHistory(AliMUONPainterMatrix* group);
68     
69   void PainterMatrixWasRegistered(AliMUONPainterMatrix* group); // *SIGNAL*
70   
71   void PainterMatrixWasUnregistered(AliMUONPainterMatrix* group); // *SIGNAL*
72   
73   void PainterMatrixWantToShow(AliMUONPainterMatrix* group); // *SIGNAL*
74   
75   void Print(Option_t* opt) const;
76   
77   Int_t Register(AliMUONPainterMatrix* group);
78   
79   void Register(AliMUONVTrackerDataMaker* reader);
80
81   /// Set the menu bar where to put the history menu
82   void SetMenuBar(TGMenuBar* bar) { fMenuBar = bar; }
83   
84   Bool_t Unregister(AliMUONPainterMatrix* group);
85   
86   Bool_t Unregister(AliMUONVTrackerDataMaker* reader);
87
88   void DeleteZombies();
89   
90 private:
91   /// Not implemented
92   AliMUONPainterRegistry();
93   /// Not implemented
94   AliMUONPainterRegistry(const AliMUONPainterRegistry&);
95   /// Not implemented
96   AliMUONPainterRegistry& operator=(const AliMUONPainterRegistry&);
97   
98   void CreateInteractiveReadOutConfig() const;
99   
100 private:
101   static AliMUONPainterRegistry* fgInstance; ///< unique instance
102   TObjArray* fPainterMatrices; ///< painter matrices
103   TObjArray* fDataMakers; ///< data makers
104   TGPopupMenu* fHistoryMenu; ///< history menu
105   TGMenuBar* fMenuBar; ///< Menu bar where to put the history menu
106   Int_t fHistoryCounter; ///< index to get back history menu items
107   TObjArray* fZombies; ///< data readers to be deleted
108   mutable AliMUONVTrackerData* fInteractiveReadOutConfig; ///< clickable readout configuration
109   
110   ClassDef(AliMUONPainterRegistry,4) // Registry for AliMUONVPainter related stuff
111 };
112
113 #endif