9 #ifndef MULTCOINCDIALOGUE_H
10 #define MULTCOINCDIALOGUE_H 1
15 #include "TGButtonGroup.h"
17 #include "TGNumberEntry.h"
18 #include "TGComboBox.h"
24 #include "MultiplicityState.h"
26 #include "TimingParamDialogue.h"
27 #include "MediaLocator.h"
36 enum MULTMODE { OFF=0,
44 enum WIDGETID { COINCTIMEENTRY=5011,
55 TGVerticalFrame *fVFrame;
56 TGHorizontalFrame *fHFrameTop;
57 TGVerticalFrame *fVFrameTopR;
58 TGHorizontalFrame *fHFramePars;
59 TGVerticalFrame *fVFrameParsL;
60 TGVerticalFrame *fVFrameParsR;
61 TGHorizontalFrame *fHFrameButtons;
64 TGButtonGroup* fMultModeButtonGrp;
65 TGRadioButton* fMultModeRadioButtons[NMODES];
66 TGComboBox *fModuleComboBox;
69 TGNumberEntryField* fCoincTimeEntryField;
70 TGLabel* fCoincTimeLabel;
71 TGNumberEntry* fMultiplicityEntry;
72 TGLabel* fMultiplicityLabel;
75 TGTextButton *fLoadButton;
76 TGTextButton *fApplyButton;
77 TGTextButton *fCancelButton;
78 TGNumberEntry *fModuleNumEntry;
79 TGLabel *fModuleNumEntryLabel;
82 MULTMODE fDialogueMode;
83 MULTMODE fDetectorMode;
84 UInt_t fCurrentModule;
85 TGMsgBox* fInvalidModWarning;
95 TGLabel* fLabelUnknown;
98 TGFrame* fUnknownAlert;
99 TGHorizontalFrame* fCsraStateFrame;
100 TGGroupFrame* fCsraStateGroupFrame;
109 void SetModuleNumber(
int moduleNr);
110 int GetModuleNumber()
const;
112 void RegisterCsra(
Csra* csra);
113 void UpdateCSRAState(
int nbits_set);
119 void ConstructDialogue();
120 void setUpAlertIcons();
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();
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();
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();
150 void OnModuleChanged();
152 int ReadMultiplicityState(uint16_t module, uint16_t chn,
MultiplicityState& state);
154 int WriteMultiplicityState(uint16_t module, uint16_t chn,
const MultiplicityState& state);
155 int WriteNewMultiplicityStatesToModule(uint16_t module,
const std::vector<MultiplicityState>& states);
157 Int_t GetSelectedModule();
159 Bool_t ProcessMessage(Long_t msg, Long_t par1, Long_t par2);
161 uint32_t SetSelfChannelMaskBits(uint32_t prevbitpattern, uint32_t newsubpattern);
162 uint32_t SetSelfMultThresholdBits(uint32_t prevbitpattern, uint32_t newthresh);
164 MULTMODE ParseMultiplicityMode();