ROOT logo
#ifndef __DGFTauDisplayPanel_h__
#define __DGFTauDisplayPanel_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           DGFTauDisplayPanel.h
// Purpose:        Class defs for the XIA DGF-4C GUI
// Class:          DGFTauDisplayPanel
// Description:    A GUI to operate a XIA DGF-4C
// Author:         R. Lutter
// Revision:       $Id: DGFTauDisplayPanel.h,v 1.9 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 "TGMrbLabelEntry.h"
#include "TGMrbFileEntry.h"
#include "TGMrbLabelCombo.h"
#include "TGMrbMacroBrowser.h"

#include "DGFControlCommon.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           DGFTauDisplayPanel
// Purpose:        Main frame to calculate best tau value
// Constructors:   
// Description:    A dialog window to enter module params
// Keywords:       
//////////////////////////////////////////////////////////////////////////////

class DGFTauDisplayPanel : public TGCompositeFrame {

	public:

		// cmd ids to dispatch over X events in this panel
		enum EDGFTauCmdId 	{
									kDGFTauSelectModule, 				//		module
									kDGFTauSelectChannel, 				//		channel
									kDGFTauTraceLength,					//		trace 	length
									kDGFTauXwait,						//				xwait states
									kDGFTauTraceNofTraces,				//				number of traces
									kDGFTauFitFrom, 					//		fit 	from
									kDGFTauFitTo,						//				to
									kDGFTauFitParamA0,					//			 	param A0
									kDGFTauFitParamA1,					//				... A1
									kDGFTauFitParamA2,					//				... A2
									kDGFTauFitError,					//				const error
									kDGFTauFitChiSquare,				//				chi square
									kDGFTauDispTraceNo,					//		display trace#
									kDGFTauDispCurTau,					//				current tau
									kDGFTauDispBestTau,					//				best tau
									kDGFTauDispFile,					//				trace file
									kDGFTauButtonAcquire,				//		actions start tracing
									kDGFTauButtonTauOK, 				//				tau ok
									kDGFTauButtonBestTau,				//				take best tau
									kDGFTauButtonRemoveTraces,			//				remove trace files
									kDGFTauButtonSaveTrace,				//				save current trace data
									kDGFTauButtonReset, 				//				reset
								};

		enum EDGFFitButtonsId 	{
									kDGFTauFitTraceYes = kDGFChannel3 << 1,			//		fit 	yes
									kDGFTauFitTraceNo = kDGFChannel3 << 2			//				no
								};

		enum EDGFStatBoxButtonsId
								{
									kDGFTauDispStatBoxYes = kDGFChannel3 << 3,		//		stat box	yes
									kDGFTauDispStatBoxNo = kDGFChannel3 << 4		//					no
								};

	public:
		DGFTauDisplayPanel(TGCompositeFrame * TabFrame);
		virtual ~DGFTauDisplayPanel() { 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);
		void RadioButtonPressed(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 AcquireTraces(); 												// start tracing
		Bool_t RemoveTrace(Int_t ModuleId = -1, Int_t ChannelId = -1);			// remove file(s) containing trace data
		Bool_t SaveTrace(const Char_t * FileName, Int_t ModuleId = -1, Int_t ChannelId = -1);	// save trace to files

		TMrbDGFEventBuffer * FindBuffer(Int_t TraceNo); // find buffer by trace/event number
		
		void SetRunning(Bool_t RunFlag);										// run flip-flop
		
		const Char_t * TraceFileName(const Char_t * Text = "", Int_t ModuleId = -1, Int_t ChannelId = -1);
		const Char_t * HistogramName(Int_t TraceNo = 1, Int_t ModuleId = -1, Int_t ChannelId = -1);
		const Char_t * BufferName(Int_t Index = 1, Int_t ModuleId = -1, Int_t ChannelId = -1);

	protected:
		TList fHeap;								//! list of objects created on heap
		TGGroupFrame * fSelectFrame; 				// select
		TGMrbLabelCombo * fSelectModule; 			//		module
		TGMrbRadioButtonList * fSelectChannel;		//		channel

		TGGroupFrame * fTraceFrame; 				//	trace
		TGMrbLabelEntry * fTraceLengthEntry; 		//		length
		TGMrbLabelEntry * fNofTracesEntry; 			//		number of traces
		TGMrbLabelEntry * fXwaitEntry;				//		wait states

		TGHorizontalFrame * fHFrame;

		TGGroupFrame * fFitFrame;					//	fit
		TGMrbRadioButtonList * fFitTraceYesNo; 		//		yes/no
		TGMrbLabelEntry * fFitFromEntry; 			//		from
		TGMrbLabelEntry * fFitToEntry;	 			//		to
		TGMrbLabelEntry * fFitA0Entry;	 			//		A0
		TGMrbLabelEntry * fFitA1Entry;  			//		A1
		TGMrbLabelEntry * fFitA2Entry;  			//		A2
		TGMrbLabelEntry * fFitErrorEntry; 			//		error
		TGMrbLabelEntry * fFitChiSquareEntry; 		//		chi square

		TGGroupFrame * fDisplayFrame;				//	display
		TGMrbLabelEntry * fDispTraceNoEntry; 		//		trace number
		TGMrbRadioButtonList * fDispStatBox; 		//		stat box yes/no
		TGMrbLabelEntry * fDispCurTauEntry;  		//		current tau
		TGMrbLabelEntry * fDispBestTauEntry; 		//		best tau
		TGMrbFileEntry * fDispFileEntry;	 		//		trace file

		FitHist * fFitTrace; 						// ... canvas
		FitHist * fFitTau; 							// ... canvas

		TGMrbTextButtonGroup * fButtonFrame;

		TMrbLofNamedX fLofModuleKeys;				//! ... key list
		TMrbLofNamedX fLofChannels;					//! channel numbers

		TGFileInfo fTraceFileInfo;					//!

		TFile * fTraceFile; 						// current trace file
		TMrbString fTraceFileName;					// file name, internal storage
		TH1F * fHistogram; 							// current histogram
		TMrbString fHistoName;						// histogram name & title, internal storage
		TMrbString fHistoTitle;
		TMrbString fEbuName;						// name of event buffer
		TObjArray fLofBuffers;						//! list of event buffers
				
		TH1F * fTauDistr;							//! tau distribution
		TF1 * fGaussian;							//! gaussian fit on tau distr
		
		TMrbDGFEventBuffer * fBuffer;				// event buffer
		
		Bool_t fIsRunning;							// kTRUE if trace acquisition running
		
		TMrbLofNamedX fFitTraceButtons;
		TMrbLofNamedX fDispStatBoxButtons;
		TMrbLofNamedX fTauActions;

		TGMrbFocusList fFocusList;

	ClassDef(DGFTauDisplayPanel, 0) 	// [DGFControl] Collect/display tau traces
};

#endif
 DGFTauDisplayPanel.h:1
 DGFTauDisplayPanel.h:2
 DGFTauDisplayPanel.h:3
 DGFTauDisplayPanel.h:4
 DGFTauDisplayPanel.h:5
 DGFTauDisplayPanel.h:6
 DGFTauDisplayPanel.h:7
 DGFTauDisplayPanel.h:8
 DGFTauDisplayPanel.h:9
 DGFTauDisplayPanel.h:10
 DGFTauDisplayPanel.h:11
 DGFTauDisplayPanel.h:12
 DGFTauDisplayPanel.h:13
 DGFTauDisplayPanel.h:14
 DGFTauDisplayPanel.h:15
 DGFTauDisplayPanel.h:16
 DGFTauDisplayPanel.h:17
 DGFTauDisplayPanel.h:18
 DGFTauDisplayPanel.h:19
 DGFTauDisplayPanel.h:20
 DGFTauDisplayPanel.h:21
 DGFTauDisplayPanel.h:22
 DGFTauDisplayPanel.h:23
 DGFTauDisplayPanel.h:24
 DGFTauDisplayPanel.h:25
 DGFTauDisplayPanel.h:26
 DGFTauDisplayPanel.h:27
 DGFTauDisplayPanel.h:28
 DGFTauDisplayPanel.h:29
 DGFTauDisplayPanel.h:30
 DGFTauDisplayPanel.h:31
 DGFTauDisplayPanel.h:32
 DGFTauDisplayPanel.h:33
 DGFTauDisplayPanel.h:34
 DGFTauDisplayPanel.h:35
 DGFTauDisplayPanel.h:36
 DGFTauDisplayPanel.h:37
 DGFTauDisplayPanel.h:38
 DGFTauDisplayPanel.h:39
 DGFTauDisplayPanel.h:40
 DGFTauDisplayPanel.h:41
 DGFTauDisplayPanel.h:42
 DGFTauDisplayPanel.h:43
 DGFTauDisplayPanel.h:44
 DGFTauDisplayPanel.h:45
 DGFTauDisplayPanel.h:46
 DGFTauDisplayPanel.h:47
 DGFTauDisplayPanel.h:48
 DGFTauDisplayPanel.h:49
 DGFTauDisplayPanel.h:50
 DGFTauDisplayPanel.h:51
 DGFTauDisplayPanel.h:52
 DGFTauDisplayPanel.h:53
 DGFTauDisplayPanel.h:54
 DGFTauDisplayPanel.h:55
 DGFTauDisplayPanel.h:56
 DGFTauDisplayPanel.h:57
 DGFTauDisplayPanel.h:58
 DGFTauDisplayPanel.h:59
 DGFTauDisplayPanel.h:60
 DGFTauDisplayPanel.h:61
 DGFTauDisplayPanel.h:62
 DGFTauDisplayPanel.h:63
 DGFTauDisplayPanel.h:64
 DGFTauDisplayPanel.h:65
 DGFTauDisplayPanel.h:66
 DGFTauDisplayPanel.h:67
 DGFTauDisplayPanel.h:68
 DGFTauDisplayPanel.h:69
 DGFTauDisplayPanel.h:70
 DGFTauDisplayPanel.h:71
 DGFTauDisplayPanel.h:72
 DGFTauDisplayPanel.h:73
 DGFTauDisplayPanel.h:74
 DGFTauDisplayPanel.h:75
 DGFTauDisplayPanel.h:76
 DGFTauDisplayPanel.h:77
 DGFTauDisplayPanel.h:78
 DGFTauDisplayPanel.h:79
 DGFTauDisplayPanel.h:80
 DGFTauDisplayPanel.h:81
 DGFTauDisplayPanel.h:82
 DGFTauDisplayPanel.h:83
 DGFTauDisplayPanel.h:84
 DGFTauDisplayPanel.h:85
 DGFTauDisplayPanel.h:86
 DGFTauDisplayPanel.h:87
 DGFTauDisplayPanel.h:88
 DGFTauDisplayPanel.h:89
 DGFTauDisplayPanel.h:90
 DGFTauDisplayPanel.h:91
 DGFTauDisplayPanel.h:92
 DGFTauDisplayPanel.h:93
 DGFTauDisplayPanel.h:94
 DGFTauDisplayPanel.h:95
 DGFTauDisplayPanel.h:96
 DGFTauDisplayPanel.h:97
 DGFTauDisplayPanel.h:98
 DGFTauDisplayPanel.h:99
 DGFTauDisplayPanel.h:100
 DGFTauDisplayPanel.h:101
 DGFTauDisplayPanel.h:102
 DGFTauDisplayPanel.h:103
 DGFTauDisplayPanel.h:104
 DGFTauDisplayPanel.h:105
 DGFTauDisplayPanel.h:106
 DGFTauDisplayPanel.h:107
 DGFTauDisplayPanel.h:108
 DGFTauDisplayPanel.h:109
 DGFTauDisplayPanel.h:110
 DGFTauDisplayPanel.h:111
 DGFTauDisplayPanel.h:112
 DGFTauDisplayPanel.h:113
 DGFTauDisplayPanel.h:114
 DGFTauDisplayPanel.h:115
 DGFTauDisplayPanel.h:116
 DGFTauDisplayPanel.h:117
 DGFTauDisplayPanel.h:118
 DGFTauDisplayPanel.h:119
 DGFTauDisplayPanel.h:120
 DGFTauDisplayPanel.h:121
 DGFTauDisplayPanel.h:122
 DGFTauDisplayPanel.h:123
 DGFTauDisplayPanel.h:124
 DGFTauDisplayPanel.h:125
 DGFTauDisplayPanel.h:126
 DGFTauDisplayPanel.h:127
 DGFTauDisplayPanel.h:128
 DGFTauDisplayPanel.h:129
 DGFTauDisplayPanel.h:130
 DGFTauDisplayPanel.h:131
 DGFTauDisplayPanel.h:132
 DGFTauDisplayPanel.h:133
 DGFTauDisplayPanel.h:134
 DGFTauDisplayPanel.h:135
 DGFTauDisplayPanel.h:136
 DGFTauDisplayPanel.h:137
 DGFTauDisplayPanel.h:138
 DGFTauDisplayPanel.h:139
 DGFTauDisplayPanel.h:140
 DGFTauDisplayPanel.h:141
 DGFTauDisplayPanel.h:142
 DGFTauDisplayPanel.h:143
 DGFTauDisplayPanel.h:144
 DGFTauDisplayPanel.h:145
 DGFTauDisplayPanel.h:146
 DGFTauDisplayPanel.h:147
 DGFTauDisplayPanel.h:148
 DGFTauDisplayPanel.h:149
 DGFTauDisplayPanel.h:150
 DGFTauDisplayPanel.h:151
 DGFTauDisplayPanel.h:152
 DGFTauDisplayPanel.h:153
 DGFTauDisplayPanel.h:154
 DGFTauDisplayPanel.h:155
 DGFTauDisplayPanel.h:156
 DGFTauDisplayPanel.h:157
 DGFTauDisplayPanel.h:158
 DGFTauDisplayPanel.h:159
 DGFTauDisplayPanel.h:160
 DGFTauDisplayPanel.h:161
 DGFTauDisplayPanel.h:162
 DGFTauDisplayPanel.h:163
 DGFTauDisplayPanel.h:164
 DGFTauDisplayPanel.h:165
 DGFTauDisplayPanel.h:166
 DGFTauDisplayPanel.h:167
 DGFTauDisplayPanel.h:168
 DGFTauDisplayPanel.h:169
 DGFTauDisplayPanel.h:170
 DGFTauDisplayPanel.h:171
 DGFTauDisplayPanel.h:172
 DGFTauDisplayPanel.h:173
 DGFTauDisplayPanel.h:174
 DGFTauDisplayPanel.h:175
 DGFTauDisplayPanel.h:176
 DGFTauDisplayPanel.h:177
 DGFTauDisplayPanel.h:178
 DGFTauDisplayPanel.h:179
 DGFTauDisplayPanel.h:180
 DGFTauDisplayPanel.h:181
 DGFTauDisplayPanel.h:182
 DGFTauDisplayPanel.h:183