ROOT logo
#ifndef __DGFTauFitPanel_h__
#define __DGFTauFitPanel_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           DGFTauFitPanel.h
// Purpose:        Class defs for the XIA DGF-4C GUI
// Class:          DGFTauFitPanel
// Description:    A GUI to operate a XIA DGF-4C
// Author:         R. Lutter
// Revision:       $Id: DGFTauFitPanel.h,v 1.5 2008-12-29 13:48:25 Rudolf.Lutter Exp $       
// Date:           
// URL:            
// Keywords:       
//////////////////////////////////////////////////////////////////////////////

#include "TList.h"

#include "TRootEmbeddedCanvas.h"
#include "TCanvas.h"
#include "TGWindow.h"
#include "TGFrame.h"
#include "TGButton.h"
#include "TGFileDialog.h"
#include "TGMenu.h"

#include "TMrbLofNamedX.h"
#include "TMrbNamedX.h"
#include "TMrbDGF.h"
#include "TMrbDGFEventBuffer.h"

#include "HistPresent.h"
#include "FitHist.h"

#include "TGMrbTextButton.h"
#include "TGMrbRadioButton.h"
#include "TGMrbPictureButton.h"
#include "TGMrbLabelEntry.h"
#include "TGMrbFileEntry.h"
#include "TGMrbLabelCombo.h"
#include "TGMrbMacroBrowser.h"

#include "DGFControlCommon.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           DGFTauFitPanel
// Purpose:        Main frame to accumulate & display histograms
// Constructors:   
// Description:    
// Keywords:       
//////////////////////////////////////////////////////////////////////////////

class DGFTauFitPanel : public TGCompositeFrame {

	public:

				
		// cmd ids to dispatch over X events in this panel
		enum EDGFTauFitCmdId 	{
										kDGFTauFitRangeStart, 		//		tau range
										kDGFTauFitRangeStep,
										kDGFTauFitRangeStop,
										kDGFTauFitRunTime, 			//		runtime
										kDGFTauFitTimeScale,		//				time scale
										kDGFTauFitStartFit,			//		actions start accu
										kDGFTauFitStop,			//				stop accu
										kDGFTauFitReset, 			//				reset
										kDGFTauFitSelectAll,		// select	all
										kDGFTauFitSelectNone,		//				none
										kDGFTauFitSelectColumn		//				column
									};

		enum EDGFTauFitTimeScaleId {
									kDGFTauFitTimeScaleSecs = kDGFChannel3 << 1,		//	seconds
									kDGFTauFitTimeScaleMins = kDGFChannel3 << 2,		//	minutes
									kDGFTauFitTimeScaleHours = kDGFChannel3 << 3,		//	hours
								};

	public:
		DGFTauFitPanel(TGCompositeFrame * TabFrame);
		virtual ~DGFTauFitPanel() { fHeap.Delete(); };

		void PerformAction(Int_t FrameId, Int_t Selection); 	// slot methods
		void EntryChanged(Int_t FrameId, Int_t Selection);
		void SelectModule(Int_t FrameId, Int_t Selection);

	protected:
		Bool_t ResetValues();													// clear entry fields
		Bool_t Update(Int_t EntryId);											// update program state on X events
		void MoveFocus(Int_t EntryId);											// move focus to next entry
		Bool_t TauFit();		 												// start tau fit

		void SetRunning(Bool_t RunFlag);										// run flip-flop
		
	protected:
		TList fHeap;								//! list of objects created on heap
		TGGroupFrame * fModules;			 		// module list
		TGMrbCheckButtonList * fCluster[kNofClusters];
		TGHorizontalFrame * fGroupFrame;
		TGMrbPictureButtonList * fGroupSelect[kNofModulesPerCluster];
		TGMrbPictureButtonList * fAllSelect;
		TGHorizontalFrame * fHFrame;
		TGMrbCheckButtonGroup * fSelectChannel;		//		channel

		TGGroupFrame * fTauFrame;	 				//	tau
		TGMrbLabelEntry * fTauStartEntry; 			//		start
		TGMrbLabelEntry * fTauStepEntry; 			//		step
		TGMrbLabelEntry * fTauStopEntry; 			//		stop

		TGGroupFrame * fAccuFrame;	 				//	accu
		TGMrbLabelEntry * fRunTimeEntry; 			//		runtime
		TGMrbRadioButtonList * fTimeScale; 			//		time scale

		TGMrbTextButtonGroup * fButtonFrame;

		TMrbLofNamedX fLofChannels;				//! channel numbers

		TMrbLofNamedX fLofDGFModuleKeys[kNofClusters];
		
		Bool_t fIsRunning;							// kTRUE if trace acquisition running
		
		TMrbLofNamedX fTauFitTimeScaleButtons;
		TMrbLofNamedX fTauFitActions;

		TGMrbFocusList fFocusList;

	ClassDef(DGFTauFitPanel, 0) 	// [DGFControl] Tau fit
};

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