NSCL DDAS  1.0
Support for XIA DDAS at the NSCL
 All Classes 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 class Detector;
114 
115 #ifndef __Main__
116 #define __Main__
117 
118 class Main:public TGMainFrame
119 {
120  public:
121  Main();
122  Main(const TGWindow *p);
123  ~Main();
124 
125  private:
126  lock *l; // the lock file ("/var/lock/ddas")
127 
128  /***** Variables *****/
129 
130  /* Other classes in NScope */
131  PulseShape *pulseshape;
132  Popup *about;
133  Popup *CFDwarning;
134  EnergyFilter *energyfilter;
135  AnalogSignal *analogsignal;
136  Baseline *baseline;
137  Csra *csra;
138  ModCsrb *modcsrb;
139  TrigConfig *trigconfig;
140  TriggerFilter *triggerfilter;
141 // TriggerFilterOr *triggerfilteror;
142  CFD *cfd;
143 // ExtTrig *exttrig;
144  Tau *tau;
145  ExpertMod *expertmod;
146  ScopedT *scopedt;
147  Histogram *histogram;
148  MaxEvent *maxevent;
149  Detector *detector;
150  MultCoincDialogue *mult_dialogue;
151  TimingParamDialogue *timing_dialogue;
152 
153  /* ROOT objects */
154  TGFileInfo fEventFileOpenInfo;
155  TGTextEntry *StateMsgFold1;
156  TGTextButton *analyzeB, *acquireB, *saveB;
157  TGCheckButton *bmultdisplay, *bfastdisplay;
158  TGStatusBar* fStatusBar;
159  TGNumberEntry *numericMod, *numericCh;
160 
161  TH1S *ftrace_values;
162  TH1S *ftrace;
163  TH1S *fHpx_wave;
164  TH1D *fhisto;
165  TH1S *ffastfilt;
166  TH1D *fenerfilt;
167  TH1S *fcfdfilt;
168  TH1S *taufitHist;
169  TCanvas *dCanvasF1;
170 
171  TObject *selected;
172 
173  Pixel_t color;
174 
175 
176  /* Just numbers... */
177  int xmin, xmax, ymin, ymax;
178  int moduleNr; // Module number we're looking at
179  unsigned short NumModules; //total number of modules in system
180  int channelNr; // Channel number we're looking at
181  int size; // Trace length in scope mode
182  int range, separation; // Filter parameters
183  float fraction; // Filter parameter
184  int NUMBERofTRACES;
185  int RUN_IN_PROGRESS;
186  int parts[4];
187  unsigned long mca[MCA_SIZE];
188  short int modNumber, chanNumber;
189  bool wave_once;
190  bool hpx_once_wave;
191 
192  double *decayconstant;
193  double *decayconstantfit;
194 
195  unsigned int *histdata;
196  unsigned short *trace, *filter_trace;
197  float *trace_float;
198  int *fastfilter, *enerfilter, *cfdfilter;
199 
200  string dirname;
201 
202  /***** Functions *****/
203 
204  virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t);
205  // Process message queue
206  void CloseWindow(); // Close main window
207  void CreateMenuBar(void); // Creates menu bar of the main window
208  void SetStatusText(const char *txt, Int_t pi);
209  void EventInfo(Int_t event, Int_t px, Int_t py, TObject *selected);
210  void MakeFold1Panel(TGCompositeFrame *TabPanel);
211  void PlotTau ();
212  void NewTrace(unsigned long size, unsigned short module,
213  unsigned short ChanNum);
214  void GetHistogram(unsigned short module, unsigned short ChanNum);
215  void GetBaseline(unsigned short int module, unsigned short int ChanNum);
216  void AnlyTrace(unsigned long size, unsigned short module,
217  unsigned short ChanNum);
218  void writeSpe(const char *filename, float buf[], int dim);
219  void save_setup(char *name);
220  int IdentifyTracePulse (unsigned short *trace, unsigned int traceSize,
221  unsigned int trigLen, unsigned int trigGap,
222  double *trigLeadSum, double *trigTrailSum,
223  double trigThresho, unsigned int *peak,
224  unsigned int *valley);
225  int TauFromMoments (unsigned short *trace, unsigned int traceSize,
226  double dt, double *tau);
227  int TauFromFit (unsigned short *trace, unsigned int traceSize,
228  double dt, double *tau);
229  int BinTrace (double *trace, unsigned int traceSize, double *bins,
230  unsigned int binNum, double *binCounts);
231  int BinTraceFit (double *trace, double *tracefit, unsigned int traceSize,
232  double *bins, unsigned int binNum, double *binCounts);
233  double ArrayMax (double *a, unsigned int ArraySize, unsigned int *Index);
234  double FitGaussian (TGraph *Dist);
235  int FindTau (unsigned short ModNum, unsigned short ChanNum,
236  double *Tau, double *TauFit);
237 
238 };
239 
240 #endif
241 
242 void DynamicExec();
243 
244 #endif /*MAIN_H_*/