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