ROOT logo
#ifndef ALIMUONPAINTERDATAREGISTRY_H
#define ALIMUONPAINTERDATAREGISTRY_H

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

// $Id: AliMUONPainterDataRegistry.h 26812 2008-06-20 15:22:59Z laphecet $

/// \ingroup graphics
/// \class AliMUONPainterDataRegistry
/// \brief Registry for painter data sources
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ROOT_TObject
#  include "TObject.h"
#endif
#ifndef ROOT_TQObject
#  include <TQObject.h>
#endif

class TObjArray;
class AliMUONVTrackerData;
class AliMUONVTrackerDataMaker;

class AliMUONPainterDataRegistry : public TObject, public TQObject
{
public:
  virtual ~AliMUONPainterDataRegistry();

  AliMUONVTrackerDataMaker* DataMaker(Int_t i) const;

  AliMUONVTrackerData* DataSource(Int_t i) const;
  
  AliMUONVTrackerData* DataSource(const char* name) const;

  AliMUONVTrackerData* InteractiveReadOutConfig() const;
  
  void DataSourceWasRegistered(const AliMUONVTrackerData* data); // *SIGNAL*
  
  void DataSourceWasUnregistered(const AliMUONVTrackerData* data); // *SIGNAL*

  void DataMakerWasRegistered(const AliMUONVTrackerDataMaker* reader); // *SIGNAL*
  
  void DataMakerWasUnregistered(const AliMUONVTrackerDataMaker* reader); // *SIGNAL*
    
  static AliMUONPainterDataRegistry* Instance();
  
  Int_t NumberOfDataMakers() const;

  /// Number of data sources = data makers
  Int_t NumberOfDataSources() const { return NumberOfDataMakers(); }

  void Print(Option_t* opt) const;
  
  void Register(AliMUONVTrackerDataMaker* reader);

  Bool_t Unregister(AliMUONVTrackerDataMaker* reader);

  void DeleteZombies();
  
private:
  /// Not implemented
  AliMUONPainterDataRegistry();
  /// Not implemented
  AliMUONPainterDataRegistry(const AliMUONPainterDataRegistry&);
  /// Not implemented
  AliMUONPainterDataRegistry& operator=(const AliMUONPainterDataRegistry&);
  
  void CreateInteractiveReadOutConfig() const;
  
private:
  static AliMUONPainterDataRegistry* fgInstance; ///< unique instance
  TObjArray* fDataMakers; ///< data makers
  TObjArray* fZombies; ///< data readers to be deleted
  mutable AliMUONVTrackerData* fInteractiveReadOutConfig; ///< clickable readout configuration
  
  ClassDef(AliMUONPainterDataRegistry,1) // Registry for AliMUONVTrackerDataMaker objects
};

#endif
 AliMUONPainterDataRegistry.h:1
 AliMUONPainterDataRegistry.h:2
 AliMUONPainterDataRegistry.h:3
 AliMUONPainterDataRegistry.h:4
 AliMUONPainterDataRegistry.h:5
 AliMUONPainterDataRegistry.h:6
 AliMUONPainterDataRegistry.h:7
 AliMUONPainterDataRegistry.h:8
 AliMUONPainterDataRegistry.h:9
 AliMUONPainterDataRegistry.h:10
 AliMUONPainterDataRegistry.h:11
 AliMUONPainterDataRegistry.h:12
 AliMUONPainterDataRegistry.h:13
 AliMUONPainterDataRegistry.h:14
 AliMUONPainterDataRegistry.h:15
 AliMUONPainterDataRegistry.h:16
 AliMUONPainterDataRegistry.h:17
 AliMUONPainterDataRegistry.h:18
 AliMUONPainterDataRegistry.h:19
 AliMUONPainterDataRegistry.h:20
 AliMUONPainterDataRegistry.h:21
 AliMUONPainterDataRegistry.h:22
 AliMUONPainterDataRegistry.h:23
 AliMUONPainterDataRegistry.h:24
 AliMUONPainterDataRegistry.h:25
 AliMUONPainterDataRegistry.h:26
 AliMUONPainterDataRegistry.h:27
 AliMUONPainterDataRegistry.h:28
 AliMUONPainterDataRegistry.h:29
 AliMUONPainterDataRegistry.h:30
 AliMUONPainterDataRegistry.h:31
 AliMUONPainterDataRegistry.h:32
 AliMUONPainterDataRegistry.h:33
 AliMUONPainterDataRegistry.h:34
 AliMUONPainterDataRegistry.h:35
 AliMUONPainterDataRegistry.h:36
 AliMUONPainterDataRegistry.h:37
 AliMUONPainterDataRegistry.h:38
 AliMUONPainterDataRegistry.h:39
 AliMUONPainterDataRegistry.h:40
 AliMUONPainterDataRegistry.h:41
 AliMUONPainterDataRegistry.h:42
 AliMUONPainterDataRegistry.h:43
 AliMUONPainterDataRegistry.h:44
 AliMUONPainterDataRegistry.h:45
 AliMUONPainterDataRegistry.h:46
 AliMUONPainterDataRegistry.h:47
 AliMUONPainterDataRegistry.h:48
 AliMUONPainterDataRegistry.h:49
 AliMUONPainterDataRegistry.h:50
 AliMUONPainterDataRegistry.h:51
 AliMUONPainterDataRegistry.h:52
 AliMUONPainterDataRegistry.h:53
 AliMUONPainterDataRegistry.h:54
 AliMUONPainterDataRegistry.h:55
 AliMUONPainterDataRegistry.h:56
 AliMUONPainterDataRegistry.h:57
 AliMUONPainterDataRegistry.h:58
 AliMUONPainterDataRegistry.h:59
 AliMUONPainterDataRegistry.h:60
 AliMUONPainterDataRegistry.h:61
 AliMUONPainterDataRegistry.h:62
 AliMUONPainterDataRegistry.h:63
 AliMUONPainterDataRegistry.h:64
 AliMUONPainterDataRegistry.h:65
 AliMUONPainterDataRegistry.h:66
 AliMUONPainterDataRegistry.h:67
 AliMUONPainterDataRegistry.h:68
 AliMUONPainterDataRegistry.h:69
 AliMUONPainterDataRegistry.h:70
 AliMUONPainterDataRegistry.h:71
 AliMUONPainterDataRegistry.h:72
 AliMUONPainterDataRegistry.h:73
 AliMUONPainterDataRegistry.h:74
 AliMUONPainterDataRegistry.h:75
 AliMUONPainterDataRegistry.h:76
 AliMUONPainterDataRegistry.h:77
 AliMUONPainterDataRegistry.h:78
 AliMUONPainterDataRegistry.h:79
 AliMUONPainterDataRegistry.h:80
 AliMUONPainterDataRegistry.h:81