NSCL DDAS  1.0
Support for XIA DDAS at the NSCL
 All Classes Namespaces Files Functions Variables Macros Pages
MultCoincDialogue.h
1 // MultCoincDialogue.h
2 //
3 // A class defining the dialogue to control
4 // the setup of the multiple coincidence settings.
5 //
6 // Author : Jeromy Tompkins
7 //
8 
9 #ifndef MULTCOINCDIALOGUE_H
10 #define MULTCOINCDIALOGUE_H 1
11 
12 #include <stdint.h>
13 #include <vector>
14 #include "TGFrame.h"
15 #include "TGButtonGroup.h"
16 #include "TGButton.h"
17 #include "TGNumberEntry.h"
18 #include "TGComboBox.h"
19 #include "TGLabel.h"
20 #include "TGMsgBox.h"
21 #include "TGClient.h"
22 #include "TGIcon.h"
23 #include "Detector.h"
24 #include "MultiplicityState.h"
25 #include "Csra.h"
26 #include "TimingParamDialogue.h"
27 #include "MediaLocator.h"
28 #include "TGLabel.h"
29 
30 class Csra;
31 
32 class MultCoincDialogue : public TGTransientFrame
33 {
34 
35  private:
36  enum MULTMODE { OFF=0,
37  EIGHTBYTWO=1,
38  FIVEBYTHREE=2,
39  FOURBYFOUR=3,
40  TWOBYEIGHT=4,
41  ONEBYSIXTEEN=5,
42  UNKNOWN=6};
43 
44  enum WIDGETID { COINCTIMEENTRY=5011,
45  APPLYBUTTON=5021,
46  CANCELBUTTON=5022,
47  LOADBUTTON=5023,
48  MULTENTRY=5025};
49 
50  private:
51  enum { NMODES=7 };
52  MultiplicityState fMultStates[16];
53 
54  // Frames
55  TGVerticalFrame *fVFrame;
56  TGHorizontalFrame *fHFrameTop;
57  TGVerticalFrame *fVFrameTopR;
58  TGHorizontalFrame *fHFramePars;
59  TGVerticalFrame *fVFrameParsL;
60  TGVerticalFrame *fVFrameParsR;
61  TGHorizontalFrame *fHFrameButtons;
62 
63  // Radio buttons for each coinc mode
64  TGButtonGroup* fMultModeButtonGrp;
65  TGRadioButton* fMultModeRadioButtons[NMODES];
66  TGComboBox *fModuleComboBox;
67 
68  // Text Inputs
69  TGNumberEntryField* fCoincTimeEntryField;
70  TGLabel* fCoincTimeLabel;
71  TGNumberEntry* fMultiplicityEntry;
72  TGLabel* fMultiplicityLabel;
73 
74  // Dialogue buttons
75  TGTextButton *fLoadButton;
76  TGTextButton *fApplyButton;
77  TGTextButton *fCancelButton;
78  TGNumberEntry *fModuleNumEntry;
79  TGLabel *fModuleNumEntryLabel;
80 
81  Detector* fDetector;
82  MULTMODE fDialogueMode;
83  MULTMODE fDetectorMode;
84  UInt_t fCurrentModule;
85  TGMsgBox* fInvalidModWarning;
86 
87  Csra* fCsra;
88  TGFrame* fCsraAlert;
89  TGIcon* fCsraUnknown;
90  TGIcon* fCsraON;
91  TGIcon* fCsraOFF;
92  TGLabel* fCsraText;
93  TGLabel* fLabelON;
94  TGLabel* fLabelOFF;
95  TGLabel* fLabelUnknown;
96  TGFrame* fONAlert;
97  TGFrame* fOFFAlert;
98  TGFrame* fUnknownAlert;
99  TGHorizontalFrame* fCsraStateFrame;
100  TGGroupFrame* fCsraStateGroupFrame;
101 
102  TimingParamDialogue* fTimingDialogue;
103 
104  MediaLocator m_imageLocator;
105 
106  public:
107  MultCoincDialogue(const TGWindow* parent, const TGWindow* main, Detector* det);
108  virtual ~MultCoincDialogue();
109  void SetModuleNumber(int moduleNr);
110  int GetModuleNumber() const;
111 
112  void RegisterCsra(Csra* csra);
113  void UpdateCSRAState(int nbits_set);
114 
115  void RegisterTimingParamDialogue(TimingParamDialogue* timing_dialogue);
116 
117 
118  private:
119  void ConstructDialogue();
120  void setUpAlertIcons();
121 
122  void OnLoad();
123  void DoLoad();
124  void ReadAndCacheMultiplicityStatesFromModule(Int_t module);
125  std::vector<MultiplicityState> ReadMultiplicityStatesFromModule(Int_t module);
126  void CacheMultiplicityStates(const std::vector<MultiplicityState>& states);
127  void PrintCachedMultiplicityStates();
128  void UpdateTimeAndThreshold();
129 
130  void OnCancel();
131 
132  void OnApply();
133  std::vector<MultiplicityState> ConstructNewMultiplicityStates();
134  std::vector<MultiplicityState> ConstructOffMultStates();
135  std::vector<MultiplicityState> ConstructEightGroupsOfTwoMultStates();
136  std::vector<MultiplicityState> ConstructFiveGroupsOfThreeMultStates();
137  std::vector<MultiplicityState> ConstructFourGroupsOfFourMultStates();
138  std::vector<MultiplicityState> ConstructTwoGroupsOfEightMultStates();
139  std::vector<MultiplicityState> ConstructOneGroupOfSixteenMultStates();
140 
141  void OnModeChanged(MULTMODE new_mode);
142  void SetMultiplicityThreshEntryRange();
143  void SetDefaultMultiplicityThreshForMode();
144  void SetButtonStatesForMode();
145  void SetEntryFieldStatesForMode();
146  void SetRadioButtonForMode(MULTMODE new_mode);
147  void SetRadioButtonStatesForMode();
148  void SetBgColorForDetectorMode();
149 
150  void OnModuleChanged();
151 
152  int ReadMultiplicityState(uint16_t module, uint16_t chn, MultiplicityState& state);
153 
154  int WriteMultiplicityState(uint16_t module, uint16_t chn, const MultiplicityState& state);
155  int WriteNewMultiplicityStatesToModule(uint16_t module, const std::vector<MultiplicityState>& states);
156 
157  Int_t GetSelectedModule();
158 
159  Bool_t ProcessMessage(Long_t msg, Long_t par1, Long_t par2);
160 
161  uint32_t SetSelfChannelMaskBits(uint32_t prevbitpattern, uint32_t newsubpattern);
162  uint32_t SetSelfMultThresholdBits(uint32_t prevbitpattern, uint32_t newthresh);
163 
164  MULTMODE ParseMultiplicityMode();
165 
166 };
167 
168 #endif
Definition: MediaLocator.h:7
Definition: TimingParamDialogue.h:26
Definition: Detector.h:15
Definition: MultCoincDialogue.h:32
Definition: Csra.h:23
Definition: MultiplicityState.h:10