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  CFDS,
81  CSRA,
82  PULSE,
83  DECAY,
84  MAXEVENT,
85  FILE_SAVE,
86  MODVAR,
87  CHANVAR,
88  CLEARMCA,
89  SAVEMCA,
90  REFRESHMCA,
91  STOPMCA,
92  STARTMCA,
93  CONTINUEMCA,
94  MCACHECKBUTTON,
95  HISTOGRAM,
96  MAXMIN,
97  FIND_WF,
98  SCOPEDT,
99  MODCSRB,
100  TRIGCONFIG0,
101  FINDTAU,
102  SAVEHISTO,
103  STARTRUN,
104  BASELINERUN,
105  ENDRUN,
106  MULT,
107  TIMING
108 
109 };
110 
111 static Commands SetupMenuCommands[] =
112 {
113  ASG,
114  BASELINE,
115  EFILTER,
116  TFILTER,
117  CFDS,
118  CSRA,
119  MULT,
120  TIMING,
121  PULSE,
122  DECAY,
123  HISTOGRAM
124 };
125 
126 static Commands ExpertMenuCommands[] = {
127  MODVAR,
128  MODCSRB,
129  TRIGCONFIG0,
130  FINDTAU,
131  STARTRUN,
132  BASELINERUN
133 };
134 
135 static Commands ScopeMenuCommands[] = {
136  MAXMIN,
137  SCOPEDT
138 };
139 
140 class Detector;
141 
142 #ifndef __Main__
143 #define __Main__
144 
145 class Main:public TGMainFrame
146 {
147  public:
148  Main();
149  Main(const TGWindow *p);
150  ~Main();
151 
152  private:
153  lock *l; // the lock file ("/var/lock/ddas")
154 
155  /***** Variables *****/
156 
157  /* Other classes in NScope */
158  PulseShape *pulseshape;
159  Popup *about;
160  EnergyFilter *energyfilter;
161  AnalogSignal *analogsignal;
162  Baseline *baseline;
163  Csra *csra;
164  ModCsrb *modcsrb;
165  TrigConfig *trigconfig;
166  TriggerFilter *triggerfilter;
167 // TriggerFilterOr *triggerfilteror;
168  CFD *cfd;
169 // ExtTrig *exttrig;
170  Tau *tau;
171  ExpertMod *expertmod;
172  ScopedT *scopedt;
173  Histogram *histogram;
174  MaxEvent *maxevent;
175  Detector *detector;
176  MultCoincDialogue *mult_dialogue;
177  TimingParamDialogue *timing_dialogue;
178 
179  /* ROOT objects */
180  TGFileInfo fEventFileOpenInfo;
181  TGTextEntry *StateMsgFold1;
182  TGTextButton *analyzeB, *acquireB, *saveB;
183  TGCheckButton *bmultdisplay, *bfastdisplay;
184  TGStatusBar* fStatusBar;
185  TGNumberEntry *numericMod, *numericCh;
186 
187  TH1S *ftrace_values;
188  TH1S *ftrace;
189  TH1S *fHpx_wave;
190  TH1D *fhisto;
191  TH1S *ffastfilt;
192  TH1D *fenerfilt;
193  TH1S *fcfdfilt;
194  TH1S *taufitHist;
195  TCanvas *dCanvasF1;
196 
197  TObject *selected;
198  // Pointers to menus:
199 
200  TGPopupMenu* MenuFile;
201  TGPopupMenu* MenuSetup;
202  TGPopupMenu *MenuExpert;
203  TGPopupMenu *MenuScope;
204 
205  Pixel_t color;
206 
207 
208  /* Just numbers... */
209  int xmin, xmax, ymin, ymax;
210  int moduleNr; // Module number we're looking at
211  unsigned short NumModules; //total number of modules in system
212  int channelNr; // Channel number we're looking at
213  int size; // Trace length in scope mode
214  int range, separation; // Filter parameters
215  float fraction; // Filter parameter
216  int NUMBERofTRACES;
217  int RUN_IN_PROGRESS;
218  int parts[4];
219  unsigned long mca[MCA_SIZE];
220  short int modNumber, chanNumber;
221  bool wave_once;
222  bool hpx_once_wave;
223 
224  double *decayconstant;
225  double *decayconstantfit;
226 
227  unsigned int *histdata;
228  unsigned short *trace, *filter_trace;
229  float *trace_float;
230  int *fastfilter, *enerfilter, *cfdfilter;
231 
232  string dirname;
233 
234 
235 
236  /***** Functions *****/
237 
238  virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t);
239  // Process message queue
240  void CloseWindow(); // Close main window
241  void CreateMenuBar(void); // Creates menu bar of the main window
242  void SetStatusText(const char *txt, Int_t pi);
243  void EventInfo(Int_t event, Int_t px, Int_t py, TObject *selected);
244  void MakeFold1Panel(TGCompositeFrame *TabPanel);
245  void PlotTau ();
246  void NewTrace(unsigned long size, unsigned short module,
247  unsigned short ChanNum);
248  void GetHistogram(unsigned short module, unsigned short ChanNum);
249  void GetBaseline(unsigned short int module, unsigned short int ChanNum);
250  void AnlyTrace(unsigned long size, unsigned short module,
251  unsigned short ChanNum);
252  void writeSpe(const char *filename, float buf[], int dim);
253  void save_setup(char *name);
254  int IdentifyTracePulse (unsigned short *trace, unsigned int traceSize,
255  unsigned int trigLen, unsigned int trigGap,
256  double *trigLeadSum, double *trigTrailSum,
257  double trigThresho, unsigned int *peak,
258  unsigned int *valley);
259  int TauFromMoments (unsigned short *trace, unsigned int traceSize,
260  double dt, double *tau);
261  int TauFromFit (unsigned short *trace, unsigned int traceSize,
262  double dt, double *tau);
263  int BinTrace (double *trace, unsigned int traceSize, double *bins,
264  unsigned int binNum, double *binCounts);
265  int BinTraceFit (double *trace, double *tracefit, unsigned int traceSize,
266  double *bins, unsigned int binNum, double *binCounts);
267  double ArrayMax (double *a, unsigned int ArraySize, unsigned int *Index);
268  double FitGaussian (TGraph *Dist);
269  int FindTau (unsigned short ModNum, unsigned short ChanNum,
270  double *Tau, double *TauFit);
271 
272  void disableSetupMenu();
273  void enableSetupMenu();
274  void disableExpertMenu();
275  void enableExpertMenu();
276  void disableScopeMenu();
277  void enableScopeMenu();
278  void disableButtons();
279  void enableButtons();
280 };
281 
282 #endif
283 
284 void DynamicExec();
285 
286 #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