ROOT logo
#ifndef ALIMUONPAINTERDATASOURCEFRAME_H
#define ALIMUONPAINTERDATASOURCEFRAME_H

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

// $Id$

/// \ingroup graphics
/// \class AliMUONPainterDataSourceFrame
/// \brief Frame to select input data source(s) to be displayed
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ROOT_TGFrame
#  include <TGFrame.h>
#endif

class AliMUONAttPainter;
class AliMUONPainterDataSourceItem;
class AliMUONPainterMatrix;
class AliMUONVTrackerDataMaker;
class AliMUONVTrackerData;
class TGCheckButton;
class TGComboBox;
class TGGroupFrame;
class TGNumberEntry;
class TGTextEntry;
class TObjArray;

class AliMUONPainterDataSourceFrame : public TGCompositeFrame
{
public:
  AliMUONPainterDataSourceFrame(const TGWindow* p, UInt_t w, UInt_t h);
  virtual ~AliMUONPainterDataSourceFrame();
  
  void CalibrateButtonClicked(); 
  
  void CreateOCDBDataSource();

  void CreateACFDataSource();

  void CreateRawDataSource();
  
  void DataMakerWasRegistered(AliMUONVTrackerDataMaker* reader);
  
  void DataMakerWasUnregistered(const AliMUONVTrackerDataMaker* reader);

  void HistogramButtonClicked();

  void EventRangeButtonClicked();

  void OpenFileDialog();
  
  void OpenFileDialogACF();
  
  void OpenRecentSource();

  void StartRunning();

  void StopRunning();

  static void CreatePedestalCanvases(AliMUONVTrackerData* data,
                                     Double_t pedMin=0, Double_t pedMax=500,
                                     Double_t sigmaMin=0, Double_t sigmaMax=5);
  
  static AliMUONPainterMatrix* CreateFullTracker(AliMUONVTrackerData* data, 
                                                 Int_t dim, 
                                                 Double_t xmin, Double_t xmax, 
                                                 const AliMUONAttPainter& att);

private:
  /// Not implemented
  AliMUONPainterDataSourceFrame(const AliMUONPainterDataSourceFrame& rhs);
  /// Not implemented
  AliMUONPainterDataSourceFrame& operator=(const AliMUONPainterDataSourceFrame& rhs);

  void AddRecentSource(const char* name);

  Bool_t CreateRawDataSource(const TString& uri);
  
  void CreateOCDBDataSource(const TString& uri);

  void CreateOCDBDataSource(const TString& cdbPath, Int_t runNumber, const TString& type);

  void CreateACFDataSource(const TString& uri);

  void CreateACFDataSource(const TString& acfPath, const TString& type);
  
  void RegisterDataSource(AliMUONVTrackerDataMaker* reader, const char* dsName);
  
private:
    
  TGGroupFrame* fRecentSourceSelector; ///< to select recently used sources   
  
  TGGroupFrame* fRawSelector; ///< to select a new raw data source
  TGCompositeFrame* fRawSelector2; ///< idem
  TGCompositeFrame* fRawSelector21; ///< idem
  TGCompositeFrame* fRawSelector22; ///< idem
  TGCompositeFrame* fRawSelector24; ///< idem
  TGCompositeFrame* fRawSelector23; ///< idem
  TGCheckButton* fCalibrateNoGain; ///< to trig calibration of raw data (only 0 suppression)
  TGCheckButton* fCalibrateGainConstantCapa; ///< to trig calibration of raw data (0-supp and gain w/ constant capacitance)
  TGCheckButton* fCalibrateGain; ///< to trig calibration of raw data (full blown calibration)
  TGCheckButton* fCalibrateEmelecGain; ///< to trig calibration of raw data (full blown calibration but with factory gains)
  TGCheckButton* fHistogramButton; ///< to trig histogramming of raw data  
  TGNumberEntry* fHistoMin; ///< xmin of histo to make
  TGNumberEntry* fHistoMax; ///< xmax of histo to make
  TGCheckButton* fEventRangeButton; ///< to trig limitation of event range
  TGNumberEntry* fEventMin; ///< min event number to consider
  TGNumberEntry* fEventMax; ///< max event number to consider  
  TGTextEntry* fRawOCDBPath; ///< OCDB path for raw data calibration
  
  TGGroupFrame* fOCDBSelector; ///< to select a new OCDB data source
  TGGroupFrame* fDataReaders; ///< to display currently active data sources  
  TGTextEntry* fFilePath; ///< raw data file path text entry widget
  TGTextEntry* fOCDBPath; ///< OCDB path text entry widget
  TGNumberEntry* fRunSelector; ///< OCDB run number entry widget
  TGComboBox* fOCDBTypes; ///< OCDB type combo box entry widget  
  TGComboBox* fRecentSources; ///< recent sources combo box  
  TObjArray* fItems; ///< list of data readers we handle
  
  TGGroupFrame* fACFSelector; ///< to select ACF (ASCII calibration files)
  TGTextEntry* fACFPath; ///< path to ASCII calibration file
  TGComboBox* fACFTypes; ///< types of ASCII calibration files 

  static const char* fgkNumberOfDataSourcesKey; ///< key used to store the # of data sources in the resource file
  static const char* fgkDataSourceURIKey; ///< key usde to store the data source URIs in the resource file

  ClassDef(AliMUONPainterDataSourceFrame,5) // Data source selection frame
};

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