Subversion Repositories f9daq

Rev

Rev 172 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 172 Rev 173
1
#ifndef __ROOT_APP_H__
1
#ifndef __ROOT_APP_H__
2
#define __ROOT_APP_H__
2
#define __ROOT_APP_H__
3
 
3
 
4
//#define winWidth 1240
4
//#define winWidth 1240
5
//#define winHeight 800
5
//#define winHeight 800
6
#define WINDOW_NAME "CAMAC/MPOD/4MM DAQ software"
6
#define WINDOW_NAME "CAMAC/MPOD/4MM DAQ software"
7
#define measwin 3
7
#define measwin 3
8
#define analysiswin 4
8
#define analysiswin 4
9
#define BSIZE 10000
9
#define BSIZE 10000
10
 
10
 
11
#include "root_include.h"
11
#include "root_include.h"
12
#include "substructure.h"
12
#include "substructure.h"
13
#include "daq.h"
13
#include "daq.h"
14
#include "daqscope.h"
14
#include "daqscope.h"
15
#include <iostream>
15
#include <iostream>
16
#include <fstream>
16
#include <fstream>
17
#include <cmath>
17
#include <cmath>
18
#include <time.h>
18
#include <time.h>
19
 
19
 
20
enum EMenuIds {
20
enum EMenuIds {
21
   M_FILE_SET_LAYOUT,
21
   M_FILE_SET_LAYOUT,
22
   M_FILE_SAVE_LAYOUT,
22
   M_FILE_SAVE_LAYOUT,
23
   M_FILE_SAVE_MSETTINGS,
23
   M_FILE_SAVE_MSETTINGS,
24
   M_FILE_SAVE_ASETTINGS,
24
   M_FILE_SAVE_ASETTINGS,
-
 
25
   M_FILE_DEF_MSETTINGS,
-
 
26
   M_FILE_DEF_ASETTINGS,
-
 
27
   M_FILE_DEF_SETTINGS,
25
   M_FILE_CHECK_WIDTH,
28
   M_FILE_CHECK_WIDTH,
26
   M_FILE_EXIT,
29
   M_FILE_EXIT,
27
 
30
 
28
   M_ANALYSIS_HISTTYPE_1DADC,
31
   M_ANALYSIS_HISTTYPE_1DADC,
29
   M_ANALYSIS_HISTTYPE_1DTDC,
32
   M_ANALYSIS_HISTTYPE_1DTDC,
30
   M_ANALYSIS_HISTTYPE_2D,
33
   M_ANALYSIS_HISTTYPE_2D,
31
   M_ANALYSIS_INTEG,
34
   M_ANALYSIS_INTEG,
32
   M_ANALYSIS_INTEGX,
35
   M_ANALYSIS_INTEGX,
33
   M_ANALYSIS_INTEGY,
36
   M_ANALYSIS_INTEGY,
34
   M_ANALYSIS_PHOTMU,
37
   M_ANALYSIS_PHOTMU,
35
   M_ANALYSIS_BREAKDOWN,
38
   M_ANALYSIS_BREAKDOWN,
36
   M_ANALYSIS_SURFSCAN,
39
   M_ANALYSIS_SURFSCAN,
37
   M_ANALYSIS_TIMING,
40
   M_ANALYSIS_TIMING,
38
 
41
 
39
   M_HELP_WEBHELP,
42
   M_HELP_WEBHELP,
40
   M_HELP_ABOUT
43
   M_HELP_ABOUT
41
};
44
};
42
 
45
 
43
// Separate functions -----------------------------------------
46
// Separate functions -----------------------------------------
44
void GetTime(int intime, char *outtime);
47
void GetTime(int intime, char *outtime);
45
void remove_ext(char *inname, char *outname);
48
void remove_ext(char *inname, char *outname);
46
void remove_from_last(char *inname, char search, char *outname);
49
void remove_from_last(char *inname, char search, char *outname);
47
void remove_before_last(char *inname, char search, char *outname);
50
void remove_before_last(char *inname, char search, char *outname);
48
void layoutMainWindow(int *w, int *h);
51
void layoutMainWindow(int *w, int *h);
49
void SeqNumber(int innum, int maxnum, char *outstr);
52
void SeqNumber(int innum, int maxnum, char *outstr);
50
void TimeEstimate(clock_t stopw0, time_t time0, float progress, char *retEstim, int offset);
53
void TimeEstimate(clock_t stopw0, time_t time0, float progress, char *retEstim, int offset);
51
void TimeEstimateNew(int nr, clock_t stopw0, time_t time0, int rX, int rY, int rZ, int xWait, int yWait, int zWait, char *retEstim);
54
void TimeEstimateNew(int nr, clock_t stopw0, time_t time0, int rX, int rY, int rZ, int xWait, int yWait, int zWait, char *retEstim);
52
void NormateSet(int file, int nrpoint, double *min, double *max, double *setCount, double *setAcc);
55
void NormateSet(int file, int nrpoint, double *min, double *max, double *setCount, double *setAcc);
53
double PointEstimate(int nrp, double *points);
56
double PointEstimate(int nrp, double *points);
54
// Separate functions -----------------------------------------
57
// Separate functions -----------------------------------------
55
 
58
 
56
 
59
 
57
// Window classes ----------------------------------------------------
60
// Window classes ----------------------------------------------------
58
//class TGWindow;
61
//class TGWindow;
59
//class TGMainFrame;
62
//class TGMainFrame;
60
 
63
 
61
// Subwindow layout class
64
// Subwindow layout class
62
/*class TGMdiSubwindow
65
/*class TGMdiSubwindow
63
{
66
{
64
RQ_OBJECT("TGMdiSubwindow")
67
RQ_OBJECT("TGMdiSubwindow")
65
 
68
 
66
protected:
69
protected:
67
   TGMdiFrame *fMdiFrame;
70
   TGMdiFrame *fMdiFrame;
68
 
71
 
69
public:
72
public:
70
   TGMdiSubwindow(TGMdiMainFrame *main, int w, int h);
73
   TGMdiSubwindow(TGMdiMainFrame *main, int w, int h);
71
   TGMdiFrame *GetMdiFrame() const { return fMdiFrame; }
74
   TGMdiFrame *GetMdiFrame() const { return fMdiFrame; }
72
   // layoutchange is 0 when we close a subwindow and 1 when we change the layout (close multiple subwindows)
75
   // layoutchange is 0 when we close a subwindow and 1 when we change the layout (close multiple subwindows)
73
   virtual Bool_t CloseWindow(int layoutchange);
76
   virtual Bool_t CloseWindow(int layoutchange);
74
 
77
 
75
   // unique id is set for each subwindow
78
   // unique id is set for each subwindow
76
   //  settingsPane->id = 0
79
   //  settingsPane->id = 0
77
   int id;
80
   int id;
78
};*/
81
};*/
79
 
82
 
80
// Main window class
83
// Main window class
81
class TGAppMainFrame
84
class TGAppMainFrame
82
{
85
{
83
RQ_OBJECT("TGAppMainFrame")
86
RQ_OBJECT("TGAppMainFrame")
84
 
87
 
85
protected:
88
protected:
86
   TGMainFrame *fMain;
89
   TGMainFrame *fMain;
87
//   TGMdiMainFrame *fMainFrame;
90
//   TGMdiMainFrame *fMainFrame;
88
//   TGMdiMenuBar *fMenuBar;
91
//   TGMdiMenuBar *fMenuBar;
89
   TGMenuBar *fMenuBar;
92
   TGMenuBar *fMenuBar;
90
   TGLayoutHints *fMenuBarItemLayout;
93
   TGLayoutHints *fMenuBarItemLayout;
91
   TGPopupMenu *fMenuFile, *fMenuAnalysis, *fMenuHelp, *fMenuHisttype;
94
   TGPopupMenu *fMenuFile, *fMenuAnalysis, *fMenuHelp, *fMenuHisttype;
92
   TGTab *fTab, *analTab;
95
   TGTab *fTab, *analTab;
93
   int winWidth;
96
   int winWidth;
94
   int winHeight;
97
   int winHeight;
95
//   TGMdiSubwindow *settingsPane;
98
//   TGMdiSubwindow *settingsPane;
96
 
99
 
97
   // Variables for frame layouts and titles
100
   // Variables for frame layouts and titles
98
   TGCompositeFrame *fLayout[2];
101
   TGCompositeFrame *fLayout[2];
99
   TGHorizontalFrame *fTitle;
102
   TGHorizontalFrame *fTitle;
100
 
103
 
101
   void InitMenu();
104
   void InitMenu();
102
   void AppLayout();
105
   void AppLayout();
103
   void OpenWindow(int winid);
106
   void OpenWindow(int winid);
104
   void CloseWindow();
107
   void CloseWindow();
105
   Bool_t About();
108
   Bool_t About();
106
 
109
 
107
   int idtotal;
110
   int idtotal;
108
   bool cleanPlots;
111
   bool cleanPlots;
109
   int logChange;
112
   int logChange;
110
   int selChannel;
113
   int selChannel;
111
   bool acqStarted;
114
   bool acqStarted;
112
   unsigned int gBuf[BSIZE];
115
   unsigned int gBuf[BSIZE];
113
   clock_t clkt0;
116
   clock_t clkt0;
114
   time_t timet0;
117
   time_t timet0;
115
   bool liveUpdate;
118
   bool liveUpdate;
116
   int npeaks;
119
   int npeaks;
117
 
120
 
118
public:
121
public:
119
   TGAppMainFrame(const TGWindow *p, int w, int h);
122
   TGAppMainFrame(const TGWindow *p, int w, int h);
120
   virtual ~TGAppMainFrame();
123
   virtual ~TGAppMainFrame();
121
 
124
 
122
   void HandleMenu(Int_t id);
125
   void HandleMenu(Int_t id);
123
 
126
 
124
   // Splitter to a set number of frames
127
   // Splitter to a set number of frames
125
   bool TGSplitter(TGWindow *parent, const char *majorSplit, int *vertSplits, int *horSplits, const char *frameTitles[512], TGCompositeFrame **frames, int *frameWidth, int *frameHeight);
128
   bool TGSplitter(TGWindow *parent, const char *majorSplit, int *vertSplits, int *horSplits, const char *frameTitles[512], TGCompositeFrame **frames, int *frameWidth, int *frameHeight);
126
   void TGTitleLabel(TGWindow *parent, TGHorizontalFrame *fTitle, const char *title, Pixel_t foreColor, Pixel_t backColor, const char *font);
129
   void TGTitleLabel(TGWindow *parent, TGHorizontalFrame *fTitle, const char *title, Pixel_t foreColor, Pixel_t backColor, const char *font);
127
 
130
 
128
   // Layout setup
131
   // Layout setup
129
   void LayoutRead(int nrframes, int *w, int *h);
132
   void LayoutRead(int nrframes, int *w, int *h);
130
   void LayoutSave();
133
   void LayoutSave();
131
   void LayoutSet();
134
   void LayoutSet();
-
 
135
   void SaveMeasSettings();
-
 
136
   void SaveAnalSettings();
-
 
137
   void GetMeasSettings();
-
 
138
   void GetAnalSettings();
132
   void ToolTipSet();
139
   void ToolTipSet();
133
   void ToolTipSetSurfaceScan();
140
   void ToolTipSetSurfaceScan();
134
   void ToolTipSetRelativePDE();
141
   void ToolTipSetRelativePDE();
135
   void ToolTipSetTempAnalysis();
142
   void ToolTipSetTempAnalysis();
136
 
143
 
137
   // Subframes where we display everything
144
   // Subframes where we display everything
138
   TGCompositeFrame *measLayout[measwin];
145
   TGCompositeFrame *measLayout[measwin];
139
   TGCompositeFrame *analysisLayout[analysiswin];
146
   TGCompositeFrame *analysisLayout[analysiswin];
140
 
147
 
141
   // Substructures for Settings pane (measurement layout)
148
   // Substructures for Settings pane (measurement layout)
142
   TSubStructure *scansOn;
149
   TSubStructure *scansOn;
143
   TSubStructure *vHardlimit;
150
   TSubStructure *vHardlimit;
144
   TSubStructure *NCH;
151
   TSubStructure *NCH;
145
   TSubStructure *posUnits;
152
   TSubStructure *posUnits;
146
   TSubStructure *rotUnits;
153
   TSubStructure *rotUnits;
147
   TSubStructure *oscConnect;
154
   TSubStructure *oscConnect;
148
   TSubStructure *laserInfo;
155
   TSubStructure *laserInfo;
149
   TSubStructure *chtemp;
156
   TSubStructure *chtemp;
150
   TSubStructure *liveDisp;
157
   TSubStructure *liveDisp;
151
 
158
 
152
   // Substructures for Measurement pane (measurement layout)
159
   // Substructures for Measurement pane (measurement layout)
153
   TSubStructure *vOutCh;
160
   TSubStructure *vOutCh;
154
   TSubStructure *vOut;
161
   TSubStructure *vOut;
155
   TSubStructure *vOutOpt;
162
   TSubStructure *vOutOpt;
156
   TSubStructure *vOutButtons;
163
   TSubStructure *vOutButtons;
157
   TSubStructure *vOutStart;
164
   TSubStructure *vOutStart;
158
   TSubStructure *vOutStop;
165
   TSubStructure *vOutStop;
159
   TSubStructure *vOutStep;
166
   TSubStructure *vOutStep;
160
   TSubStructure *xPos;
167
   TSubStructure *xPos;
161
   TSubStructure *yPos;
168
   TSubStructure *yPos;
162
   TSubStructure *zPos;
169
   TSubStructure *zPos;
163
   TSubStructure *zPosMin;
170
   TSubStructure *zPosMin;
164
   TSubStructure *zPosMax;
171
   TSubStructure *zPosMax;
165
   TSubStructure *zPosStep;
172
   TSubStructure *zPosStep;
166
   TSubStructure *posButtons;
173
   TSubStructure *posButtons;
167
   TSubStructure *xPosMin;
174
   TSubStructure *xPosMin;
168
   TSubStructure *xPosMax;
175
   TSubStructure *xPosMax;
169
   TSubStructure *xPosStep;
176
   TSubStructure *xPosStep;
170
   TSubStructure *yPosMin;
177
   TSubStructure *yPosMin;
171
   TSubStructure *yPosMax;
178
   TSubStructure *yPosMax;
172
   TSubStructure *yPosStep;
179
   TSubStructure *yPosStep;
173
   TSubStructure *rotPos;
180
   TSubStructure *rotPos;
174
   TSubStructure *rotButtons;
181
   TSubStructure *rotButtons;
-
 
182
   TSubStructure *rotButEmergency;
175
   TSubStructure *rotPosMin;
183
   TSubStructure *rotPosMin;
176
   TSubStructure *rotPosMax;
184
   TSubStructure *rotPosMax;
177
   TSubStructure *rotPosStep;
185
   TSubStructure *rotPosStep;
178
   TSubStructure *evtNum;
186
   TSubStructure *evtNum;
179
   TSubStructure *timeStamp;
187
   TSubStructure *timeStamp;
180
   TSubStructure *fileName;
188
   TSubStructure *fileName;
181
   TSubStructure *measProgress;
189
   TSubStructure *measProgress;
182
 
190
 
183
   // Substructures for Display pane (measurement layout)
191
   // Substructures for Display pane (measurement layout)
184
   TRootEmbeddedCanvas *measCanvas;
192
   TRootEmbeddedCanvas *measCanvas;
185
 
193
 
186
   // Action connections for Settings pane (measurement layout)
194
   // Action connections for Settings pane (measurement layout)
187
   void EnableScan(int type);
195
   void EnableScan(int type);
188
   void VoltageLimit();
196
   void VoltageLimit();
189
   void ChangeUnits(int type);
197
   void ChangeUnits(int type);
190
   void ChangeUnitsRot(int type);
198
   void ChangeUnitsRot(int type);
191
   void EnableLiveUpdate();
199
   void EnableLiveUpdate();
192
 
200
 
193
   // Action connections for Measurement pane (measurement layout)
201
   // Action connections for Measurement pane (measurement layout)
194
   int GetChannel();
202
   int GetChannel();
195
   void NegativePolarity();
203
   void NegativePolarity();
196
   void VoltOut(int opt);
204
   void VoltOut(int opt);
197
   void PositionSet(int opt);
205
   void PositionSet(int opt);
198
   void RotationSet(int opt);
206
   void RotationSet(int opt);
199
   void SaveFile();
207
   void SaveFile();
200
   void StartAcq();
208
   void StartAcq();
201
 
209
 
202
   // Substructures for Histogram selection pane (analysis layout)
210
   // Substructures for Histogram selection pane (analysis layout)
203
   TSubStructure *selectDir;
211
   TSubStructure *selectDir;
204
   TGListBox *fileList;
212
   TGListBox *fileList;
205
   TSubStructure *multiSelect;
213
   TSubStructure *multiSelect;
206
   TSubStructure *fileListCtrl;
214
   TSubStructure *fileListCtrl;
207
   TSubStructure *dispTime;
215
   TSubStructure *dispTime;
208
   TSubStructure *dispBias;
216
   TSubStructure *dispBias;
209
   TSubStructure *dispPos;
217
   TSubStructure *dispPos;
210
   TSubStructure *dispTemp;
218
   TSubStructure *dispTemp;
211
   TSubStructure *dispAngle;
219
   TSubStructure *dispAngle;
212
   TSubStructure *dispLaser;
220
   TSubStructure *dispLaser;
213
 
221
 
214
   // Substructures for Histogram pane (analysis layout)
222
   // Substructures for Histogram pane (analysis layout)
215
   TRootEmbeddedCanvas *analysisCanvas;
223
   TRootEmbeddedCanvas *analysisCanvas;
216
 
224
 
217
   // Substructures for Histogram controls pane (analysis layout)
225
   // Substructures for Histogram controls pane (analysis layout)
218
   TSubStructure *adcRange;
226
   TSubStructure *adcRange;
219
   TSubStructure *tdcRange;
227
   TSubStructure *tdcRange;
220
   TSubStructure *yRange;
228
   TSubStructure *yRange;
221
   TSubStructure *selectCh;
229
   TSubStructure *selectCh;
222
   TSubStructure *plotType;
230
   TSubStructure *plotType;
223
   TSubStructure *histOpt;
231
   TSubStructure *histOpt;
224
   TSubStructure *exportHist;
232
   TSubStructure *exportHist;
225
   TSubStructure *editSelHist;
233
   TSubStructure *editSelHist;
226
   TSubStructure *posUnitsPlot;
234
   TSubStructure *posUnitsPlot;
227
 
235
 
228
   // Substructures for analysis pane (analysis layout)
236
   // Substructures for analysis pane (analysis layout)
229
   TSubStructure *intSpect;
237
   TSubStructure *intSpect;
230
   TSubStructure *resol2d;
238
   TSubStructure *resol2d;
231
   TSubStructure *intSpectButtons;
239
   TSubStructure *intSpectButtons;
232
 
240
 
233
   TSubStructure *relPde;
241
   TSubStructure *relPde;
234
   TSubStructure *midPeak;
242
   TSubStructure *midPeak;
235
   TSubStructure *darkRun;
243
   TSubStructure *darkRun;
236
   TSubStructure *zeroAngle;
244
   TSubStructure *zeroAngle;
237
   TSubStructure *relPdeButtons;
245
   TSubStructure *relPdeButtons;
238
 
246
 
239
   TSubStructure *minPeak;
247
   TSubStructure *minPeak;
240
   TSubStructure *peakSepCalc;
248
   TSubStructure *peakSepCalc;
241
   TSubStructure *brDownButtons;
249
   TSubStructure *brDownButtons;
242
 
250
 
243
   TSubStructure *surfScanOpt;
251
   TSubStructure *surfScanOpt;
244
   TSubStructure *resolSurf;
252
   TSubStructure *resolSurf;
245
   TSubStructure *surfButtons;
253
   TSubStructure *surfButtons;
246
 
254
 
247
   TSubStructure *fitSigma;
255
   TSubStructure *fitSigma;
248
   TSubStructure *fitTresh;
256
   TSubStructure *fitTresh;
249
   TSubStructure *fitInter;
257
   TSubStructure *fitInter;
250
   TSubStructure *adcOffset;
258
   TSubStructure *adcOffset;
251
   TSubStructure *accError;
259
   TSubStructure *accError;
252
   TSubStructure *pedesLow;
260
   TSubStructure *pedesLow;
253
   TSubStructure *fitChecks;
261
   TSubStructure *fitChecks;
254
   TSubStructure *analysisProgress;
262
   TSubStructure *analysisProgress;
255
 
263
 
256
   // Action connections for Histogram file selection pane (analysis layout)
264
   // Action connections for Histogram file selection pane (analysis layout)
257
   void SelectDirectory();
265
   void SelectDirectory();
258
   void ListMultiSelect(int opt);
266
   void ListMultiSelect(int opt);
259
   void FileListNavigation(int opt);
267
   void FileListNavigation(int opt);
260
   void HeaderEdit();
268
   void HeaderEdit();
261
   void ClearHistogramList();
269
   void ClearHistogramList();
262
   
270
   
263
   // Action connections for Histogram controls pane (analysis layout)
271
   // Action connections for Histogram controls pane (analysis layout)
264
   void UpdateHistogram(int opt);
272
   void UpdateHistogram(int opt);
265
   void HistogramOptions(int opt);
273
   void HistogramOptions(int opt);
266
   void ChangeHisttype(int type);
274
   void ChangeHisttype(int type);
267
 
275
 
268
   // Action connections for analysis pane (analysis layout)
276
   // Action connections for analysis pane (analysis layout)
269
   void SelectDarkHist();
277
   void SelectDarkHist();
270
   void AnalysisDefaults();
278
   void AnalysisDefaults();
271
   void AnalysisHandle(int type);
279
   void AnalysisHandle(int type);
272
   void IntegSpectrum(TList *files, int direction, int edit);
280
   void IntegSpectrum(TList *files, int direction, int edit);
273
   void PhotonMu(TList *files, int edit);
281
   void PhotonMu(TList *files, int edit);
274
   void PlotEdgeDistribution(TList *files, int filenr, int points, double *min, double *max, double *xy, double *integAcc, int axis, bool edge2d, int edit);
282
   void PlotEdgeDistribution(TList *files, int filenr, int points, double *min, double *max, double *xy, double *integAcc, int axis, bool edge2d, int edit);
275
   void BreakdownVolt(TList *files, int edit);
283
   void BreakdownVolt(TList *files, int edit);
276
   void SurfaceScan(TList *files, int edit);
284
   void SurfaceScan(TList *files, int edit);
277
 
285
 
278
   // Substructures for Edit file header window (new tab)
286
   // Substructures for Edit file header window (new tab)
279
   TGListBox *editList;
287
   TGListBox *editList;
280
   TSubStructure *timeEditDisplay;
288
   TSubStructure *timeEditDisplay;
281
   TSubStructure *biasEdit;
289
   TSubStructure *biasEdit;
282
   TSubStructure *xPosEdit;
290
   TSubStructure *xPosEdit;
283
   TSubStructure *yPosEdit;
291
   TSubStructure *yPosEdit;
284
   TSubStructure *zPosEdit;
292
   TSubStructure *zPosEdit;
285
   TSubStructure *tempEdit;
293
   TSubStructure *tempEdit;
286
   TSubStructure *angleEdit;
294
   TSubStructure *angleEdit;
287
   TSubStructure *laserEdit;
295
   TSubStructure *laserEdit;
288
   TSubStructure *editHead;
296
   TSubStructure *editHead;
289
   TSubStructure *editMulti;
297
   TSubStructure *editMulti;
290
   TGLabel *selectWarn;
298
   TGLabel *selectWarn;
291
 
299
 
292
   // Action connections for Edit file header window (new tab)
300
   // Action connections for Edit file header window (new tab)
293
   void SetWarnings();
301
   void SetWarnings();
294
   void EditTickToggle(int type);
302
   void EditTickToggle(int type);
295
   void StartHeaderEdit();
303
   void StartHeaderEdit();
296
   void ShowHeaderEdit(int id);
304
   void ShowHeaderEdit(int id);
297
   void HeaderChange(char *histfile, bool *changetype);
305
   void HeaderChange(char *histfile, bool *changetype);
298
   void CloseEditTab(int tabval);
306
   void CloseEditTab(int tabval);
299
 
307
 
300
   // Substructures for temporary analysis edit window (new tab)
308
   // Substructures for temporary analysis edit window (new tab)
301
   TRootEmbeddedCanvas *tempAnalysisCanvas;
309
   TRootEmbeddedCanvas *tempAnalysisCanvas;
302
   TSubStructure *runningAver;
310
   TSubStructure *runningAver;
303
   TSubStructure *runningOff;
311
   TSubStructure *runningOff;
304
   TSubStructure *secondAxis;
312
   TSubStructure *secondAxis;
305
   TSubStructure *exportExitAnalysis;
313
   TSubStructure *exportExitAnalysis;
306
 
314
 
307
   TSubStructure *xCrop;
315
   TSubStructure *xCrop;
308
   TSubStructure *yCrop;
316
   TSubStructure *yCrop;
309
   TSubStructure *interpolSize;
317
   TSubStructure *interpolSize;
310
   TSubStructure *updateCrop;
318
   TSubStructure *updateCrop;
311
   
319
   
312
   // Action connections for temporary analysis edit window (new tab)
320
   // Action connections for temporary analysis edit window (new tab)
313
   void ApplyRunningAver();
321
   void ApplyRunningAver();
314
   void UpdateIntegrateSurface(int val);
322
   void UpdateIntegrateSurface(int val);
315
   void CloseTempAnalysisTab(int tabval);
323
   void CloseTempAnalysisTab(int tabval);
316
   void ExportTempAnalysisPlot();
324
   void ExportTempAnalysisPlot();
317
 
325
 
318
   // Additional functions
326
   // Additional functions
319
   void DisplayHistogram(char *histfile, int histtype, int opt);
327
   void DisplayHistogram(char *histfile, int histtype, int opt);
320
   void HeaderEditTab(TGTab *mainTab, bool create, int *tabid);
328
   void HeaderEditTab(TGTab *mainTab, bool create, int *tabid);
321
   void TempAnalysisTab(TGTab *mainTab, bool create, int *tabid, int analtype);
329
   void TempAnalysisTab(TGTab *mainTab, bool create, int *tabid, int analtype);
322
   void RunMeas(void *ptr, int runCase, int &scanon);
330
   void RunMeas(void *ptr, int runCase, int &scanon);
323
   int MyTimer();
331
   int MyTimer();
324
 
332
 
325
   // Open directory (separate for saving measurement and for opening histograms)
333
   // Open directory (separate for saving measurement and for opening histograms)
326
   char *currentMeasDir;
334
   char *currentMeasDir;
327
   char *currentAnalDir;
335
   char *currentAnalDir;
328
 
336
 
329
// ROOT file variable structure -------------------------------
337
// ROOT file variable structure -------------------------------
330
   struct EventHeader {
338
   struct EventHeader {
331
     int nrch;
339
     int nrch;
332
     int timestamp;
340
     int timestamp;
333
     double biasvolt;
341
     double biasvolt;
334
     int xpos;
342
     int xpos;
335
     int ypos;
343
     int ypos;
336
     int zpos;
344
     int zpos;
337
     double temperature;
345
     double temperature;
338
     double angle;
346
     double angle;
339
     char laserinfo[256];
347
     char laserinfo[256];
340
   } evtheader;
348
   } evtheader;
341
 
349
 
342
   struct EventData {
350
   struct EventData {
343
     int adcdata[8];
351
     int adcdata[8];
344
     int tdcdata[8];
352
     int tdcdata[8];
345
   } evtdata;
353
   } evtdata;
346
 
354
 
347
   struct EventMeas {
355
   struct EventMeas {
348
     double measdata;
356
     double measdata;
349
   } evtmeas;
357
   } evtmeas;
350
 
358
 
351
   TFile *inroot;
359
   TFile *inroot;
352
   TFile *outroot;
360
   TFile *outroot;
353
// ROOT file variable structure -------------------------------
361
// ROOT file variable structure -------------------------------
354
 
362
 
355
   daq *gDaq;
363
   daq *gDaq;
356
   daqscope *gScopeDaq;
364
   daqscope *gScopeDaq;
357
};
365
};
358
 
366
 
359
// -------------------------------------------------------------------
367
// -------------------------------------------------------------------
360
 
368
 
361
#endif
369
#endif
362
 
370