NSCL DDAS  1.0
Support for XIA DDAS at the NSCL
 All Classes Namespaces Files Functions Variables Macros Pages
Main.h
1 #ifndef MAIN_H_
2 #define MAIN_H_
3 
4 #define INITIAL_HEIGHT 500
5 #define INITIAL_WIDTH 600
6 #define MCA_SIZE 32768
7 
8 #include <TGFrame.h>
9 #include <TGMenu.h>
10 #include <TGApplication.h>
11 #include <TApplication.h>
12 #include <TGClient.h>
13 #include <TGTab.h>
14 #include <TGButton.h>
15 #include <TGNumberEntry.h>
16 #include <TGLabel.h>
17 #include <TGTextEntry.h>
18 #include <TRootEmbeddedCanvas.h>
19 #include <TH1S.h>
20 #include <TH1F.h>
21 #include <TH1D.h>
22 #include <TGraph.h>
23 #include <TMultiGraph.h>
24 #include <TF1.h>
25 #include <TSystem.h>
26 #include <TStyle.h>
27 #include <TGFileDialog.h>
28 #include <TCanvas.h>
29 #include <iostream>
30 #include "PulseShape.h"
31 #include "EnergyFilter.h"
32 #include "AnalogSignal.h"
33 #include "TGStatusBar.h"
34 #include "Detector.h"
35 #include "Csra.h"
36 #include "ModCsrb.h"
37 #include "TrigConfig.h"
38 #include "TriggerFilter.h"
39 //#include "TriggerFilterOr.h"
40 #include "CFD.h"
41 //#include "ExtTrig.h"
42 #include "Baseline.h"
43 #include "Tau.h"
44 #include "MaxEvent.h"
45 #include "ExpertMod.h"
46 #include "Histogram.h"
47 #include "ScopedT.h"
48 #include "Popup.h"
49 //#include "MyTCanvas.h"
50 //#include "TROOT.h"
51 //#include "MyTH1S.h"
52 #include "TVirtualPad.h"
53 #include "TObject.h"
54 #include "lock.h"
55 #include "MultCoincDialogue.h"
56 #include "TimingParamDialogue.h"
57 
58 using namespace std;
59 enum Commands //commands for the menu bar popups
60 
61 {
62 
63  FILE_EXIT,
64  FILE_OPEN,
65  BOOT_BUTTON,
66  ABOUT,
67  READ_WF,
68  ANLY_WF,
69  MULT_DISPLAY,
70  FAST_DISPLAY,
71  SAVE_SEC,
72  MODULE_NUMBER,
73  MODULE_NUMBER_MCA,
74  CHANNEL_NUMBER,
75  CHANNEL_NUMBER_MCA,
76  ASG,
77  BASELINE,
78  EFILTER,
79  TFILTER,
80 // EXTTRIG,
81 // TFILTEROR,
82  CFDS,
83  CSRA,
84  PULSE,
85  DECAY,
86  MAXEVENT,
87  FILE_SAVE,
88  MODVAR,
89  CHANVAR,
90  CLEARMCA,
91  SAVEMCA,
92  REFRESHMCA,
93  STOPMCA,
94  STARTMCA,
95  CONTINUEMCA,
96  MCACHECKBUTTON,
97  HISTOGRAM,
98  MAXMIN,
99  FIND_WF,
100  SCOPEDT,
101  MODCSRB,
102  TRIGCONFIG0,
103  FINDTAU,
104  SAVEHISTO,
105  STARTRUN,
106  BASELINERUN,
107  ENDRUN,
108  MULT,
109  TIMING
110 
111 };
112 
113 static Commands SetupMenuCommands[] =
114 {
115  ASG,
116  BASELINE,
117  EFILTER,
118  TFILTER,
119  CFDS,
120  CSRA,
121  MULT,
122  TIMING,
123  PULSE,
124  DECAY,
125  HISTOGRAM
126 };
127 
128 static Commands ExpertMenuCommands[] = {
129  MODVAR,
130  MODCSRB,
131  TRIGCONFIG0,
132  FINDTAU,
133  STARTRUN,
134  BASELINERUN
135 };
136 
137 static Commands ScopeMenuCommands[] = {
138  MAXMIN,
139  SCOPEDT
140 };
141 
142 
143 class Detector;
144 
145 #ifndef __Main__
146 #define __Main__
147 
148 class Main:public TGMainFrame
149 {
150  public:
151  Main();
152  Main(const TGWindow *p);
153  ~Main();
154 
155  private:
156  lock *l; // the lock file ("/var/lock/ddas")
157 
158  /***** Variables *****/
159 
160  /* Other classes in NScope */
161  PulseShape *pulseshape;
162  Popup *about;
163  Popup *CFDwarning;
164  EnergyFilter *energyfilter;
165  AnalogSignal *analogsignal;
166  Baseline *baseline;
167  Csra *csra;
168  ModCsrb *modcsrb;
169  TrigConfig *trigconfig;
170  TriggerFilter *triggerfilter;
171 // TriggerFilterOr *triggerfilteror;
172  CFD *cfd;
173 // ExtTrig *exttrig;
174  Tau *tau;
175  ExpertMod *expertmod;
176  ScopedT *scopedt;
177  Histogram *histogram;
178  MaxEvent *maxevent;
179  Detector *detector;
180  MultCoincDialogue *mult_dialogue;
181  TimingParamDialogue *timing_dialogue;
182 
183  /* ROOT objects */
184  TGFileInfo fEventFileOpenInfo;
185  TGTextEntry *StateMsgFold1;
186  TGTextButton *analyzeB, *acquireB, *saveB;
187  TGCheckButton *bmultdisplay, *bfastdisplay;
188  TGStatusBar* fStatusBar;
189  TGNumberEntry *numericMod, *numericCh;
190 
191  TH1S *ftrace_values;
192  TH1S *ftrace;
193  TH1S *fHpx_wave;
194  TH1D *fhisto;
195  TH1S *ffastfilt;
196  TH1D *fenerfilt;
197  TH1S *fcfdfilt;
198  TH1S *taufitHist;
199  TCanvas *dCanvasF1;
200 
201  TObject *selected;
202 
203  // Pointers to menus:
204 
205  TGPopupMenu* MenuFile;
206  TGPopupMenu* MenuSetup;
207  TGPopupMenu *MenuExpert;
208  TGPopupMenu *MenuScope;
209  Pixel_t color;
210 
211 
212  /* Just numbers... */
213  int xmin, xmax, ymin, ymax;
214  int moduleNr; // Module number we're looking at
215  unsigned short NumModules; //total number of modules in system
216  int channelNr; // Channel number we're looking at
217  int size; // Trace length in scope mode
218  int range, separation; // Filter parameters
219  float fraction; // Filter parameter
220  int NUMBERofTRACES;
221  int RUN_IN_PROGRESS;
222  int parts[4];
223  unsigned long mca[MCA_SIZE];
224  short int modNumber, chanNumber;
225  bool wave_once;
226  bool hpx_once_wave;
227 
228  double *decayconstant;
229  double *decayconstantfit;
230 
231  unsigned int *histdata;
232  unsigned short *trace, *filter_trace;
233  float *trace_float;
234  int *fastfilter, *enerfilter, *cfdfilter;
235 
236  string dirname;
237 
238  /***** Functions *****/
239 
240  virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t);
241  // Process message queue
242  void CloseWindow(); // Close main window
243  void CreateMenuBar(void); // Creates menu bar of the main window
244  void SetStatusText(const char *txt, Int_t pi);
245  void EventInfo(Int_t event, Int_t px, Int_t py, TObject *selected);
246  void MakeFold1Panel(TGCompositeFrame *TabPanel);
247  void PlotTau ();
248  void NewTrace(unsigned long size, unsigned short module,
249  unsigned short ChanNum);
250  void GetHistogram(unsigned short module, unsigned short ChanNum);
251  void GetBaseline(unsigned short int module, unsigned short int ChanNum);
252  void AnlyTrace(unsigned long size, unsigned short module,
253  unsigned short ChanNum);
254  void writeSpe(const char *filename, float buf[], int dim);
255  void save_setup(char *name);
256  int IdentifyTracePulse (unsigned short *trace, unsigned int traceSize,
257  unsigned int trigLen, unsigned int trigGap,
258  double *trigLeadSum, double *trigTrailSum,
259  double trigThresho, unsigned int *peak,
260  unsigned int *valley);
261  int TauFromMoments (unsigned short *trace, unsigned int traceSize,
262  double dt, double *tau);
263  int TauFromFit (unsigned short *trace, unsigned int traceSize,
264  double dt, double *tau);
265  int BinTrace (double *trace, unsigned int traceSize, double *bins,
266  unsigned int binNum, double *binCounts);
267  int BinTraceFit (double *trace, double *tracefit, unsigned int traceSize,
268  double *bins, unsigned int binNum, double *binCounts);
269  double ArrayMax (double *a, unsigned int ArraySize, unsigned int *Index);
270  double FitGaussian (TGraph *Dist);
271  int FindTau (unsigned short ModNum, unsigned short ChanNum,
272  double *Tau, double *TauFit);
273 
274  void disableSetupMenu();
275  void enableSetupMenu();
276  void disableExpertMenu();
277  void enableExpertMenu();
278  void disableScopeMenu();
279  void enableScopeMenu();
280  void disableButtons();
281  void enableButtons();
282  void messageBox(const char* text);
283 };
284 
285 #endif
286 
287 void DynamicExec();
288 
289 #endif /*MAIN_H_*/
Definition: AnalogSignal.h:7
Definition: ScopedT.h:9
Definition: ddaschannelDictionary.cpp:37
Definition: MaxEvent.h:9
Definition: ExpertMod.h:13
Definition: ModCsrb.h:9
Definition: lock.h:4
Definition: TimingParamDialogue.h:26
Definition: Detector.h:15
Definition: Tau.h:6
Definition: Main.h:148
Definition: Histogram.h:5
Definition: TrigConfig.h:9
Definition: EnergyFilter.h:6
Definition: Popup.h:12
int Main(const gengetopt_args_info &args)
Definition: tosetfileMain.cpp:43
Definition: Baseline.h:5
Definition: TriggerFilter.h:5
Definition: PulseShape.h:5
Definition: MultCoincDialogue.h:32
Definition: Csra.h:23
Definition: CFD.h:6