From 7fb52da872dcfecfe7f03d4f41774805ba363dc6 Mon Sep 17 00:00:00 2001 From: "carina@hades" Date: Thu, 25 Aug 2022 15:27:27 -0400 Subject: [PATCH] kind of complete the board Setting UI --- boardSetting.cpp | 376 +++++++++++++++++++++++++++++++---------------- boardSetting.h | 2 + 2 files changed, 252 insertions(+), 126 deletions(-) diff --git a/boardSetting.cpp b/boardSetting.cpp index 710d69d..a670c13 100644 --- a/boardSetting.cpp +++ b/boardSetting.cpp @@ -19,31 +19,6 @@ TString boardSettingName[NUM_BOARD_INFO] = { "Model", "ROC version", "AMC version" }; - -///"Acquisition Status", - - -///"Channel Enable Mask", ( at channalSetting) -///"Board Config", OK -///"Aggregate Organization", OK -///"Max Num. Of Aggregate Per Block Transfer", OK - -///"Acquisition Control", - -///"Global Trigger Mask", -///"Trigger Validation Mask", -///"Front Panel TRG-OUT Enable Mask", -///"Disable External Trigger", -///"Extended Veto Delay", - - -///"Front Panel IO Control", -///"Front Panel LVDS IO New Features", -///"LVDS IO Data", -///"AnalogMonitor Mode", -///"FanSpeed Control", -///"Readout Control", -///"Readout Status" BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nBoard){ @@ -53,13 +28,15 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d fMain->SetWindowName("Board Settings "); fMain->Connect("CloseWindow()", "BoardSetting", this, "CloseWindow()"); - TGVerticalFrame * vframe = new TGVerticalFrame(fMain); fMain->AddFrame(vframe, new TGLayoutHints(kLHintsCenterX, 2,2,2,2)); + TGLayoutHints * layoutHints = new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5,5,3,3); /// left, right, top, bottom + + TGVerticalFrame * vframe = new TGVerticalFrame(fMain); fMain->AddFrame(vframe, layoutHints); ///==========Module choose - TGHorizontalFrame *hframe0 = new TGHorizontalFrame(vframe, w, 50 ); vframe->AddFrame(hframe0, new TGLayoutHints(kLHintsCenterX, 2,2,2,2)); + TGHorizontalFrame *hframe0 = new TGHorizontalFrame(vframe, w, 50 ); vframe->AddFrame(hframe0, layoutHints); - TGLabel * lb0 = new TGLabel(hframe0, "Board ID :"); hframe0->AddFrame(lb0, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4)); + TGLabel * lb0 = new TGLabel(hframe0, "Board ID :"); hframe0->AddFrame(lb0, layoutHints); boardIDEntry = new TGNumberEntry(hframe0, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframe0->AddFrame(boardIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); @@ -72,65 +49,61 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d ///============ fixed info - TGHorizontalFrame * hframeInfo = new TGHorizontalFrame(vframe); vframe->AddFrame(hframeInfo); + TGHorizontalFrame * hframeInfo = new TGHorizontalFrame(vframe); vframe->AddFrame(hframeInfo, new TGLayoutHints(kLHintsExpandX)); int numCol = 3; TGVerticalFrame * vframeInfo[numCol]; for( int i = 0; i < numCol ; i++) { - vframeInfo[i] = new TGVerticalFrame(hframeInfo); hframeInfo->AddFrame(vframeInfo[i]); + vframeInfo[i] = new TGVerticalFrame(hframeInfo); hframeInfo->AddFrame(vframeInfo[i],new TGLayoutHints(kLHintsExpandX)); } TGHorizontalFrame *hframe[NUM_BOARD_INFO]; TGLabel * lb[NUM_BOARD_INFO]; for( int i = 0 ; i < NUM_BOARD_INFO; i++){ hframe[i] = new TGHorizontalFrame(vframeInfo[i%3], 50, 50 ); vframeInfo[i%3]->AddFrame(hframe[i], new TGLayoutHints(kLHintsRight, 2,2,2,2)); - - //int temp = digi[0]->GetSerialNumber(); - int temp = 0; - lb[i] = new TGLabel(hframe[i], boardSettingName[i]); - hframe[i]->AddFrame(lb[i], new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5, 5, 3, 4)); + lb[i] = new TGLabel(hframe[i], boardSettingName[i]); hframe[i]->AddFrame(lb[i], new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5, 5, 3, 4)); - entry[i] = new TGTextEntry(hframe[i], new TGTextBuffer(1)); + entry[i] = new TGTextEntry(hframe[i], new TGTextBuffer(1)); hframe[i]->AddFrame(entry[i], new TGLayoutHints(kLHintsRight, 5,5,3,4)); entry[i]->SetEnabled(false); - entry[i]->SetText( Form("0x%x", temp) ); - hframe[i]->AddFrame(entry[i], new TGLayoutHints(kLHintsRight, 5,5,3,4)); + entry[i]->SetText( Form("0x%x", 0) ); + } ///========= Board Configure - TGGroupFrame * gBdCfg = new TGGroupFrame(vframe, "Board Configure", kHorizontalFrame); vframe->AddFrame(gBdCfg ); + TGGroupFrame * gBdCfg = new TGGroupFrame(vframe, "Board Configure", kHorizontalFrame); vframe->AddFrame(gBdCfg , new TGLayoutHints(kLHintsExpandX)); TGVerticalFrame * vBdCfg = new TGVerticalFrame(gBdCfg); gBdCfg->AddFrame(vBdCfg); - TGHorizontalFrame * hframeBdCfg1 = new TGHorizontalFrame(vBdCfg); vBdCfg->AddFrame(hframeBdCfg1, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); - TGHorizontalFrame * hframeBdCfg2 = new TGHorizontalFrame(vBdCfg); vBdCfg->AddFrame(hframeBdCfg2, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); + TGHorizontalFrame * hframeBdCfg1 = new TGHorizontalFrame(vBdCfg); vBdCfg->AddFrame(hframeBdCfg1, layoutHints); - TGCheckButton * bAutoDataFlush = new TGCheckButton(hframeBdCfg1, "Auto Data Flush", 1); hframeBdCfg1->AddFrame(bAutoDataFlush); + TGCheckButton * bAutoDataFlush = new TGCheckButton(hframeBdCfg1, "Auto Data Flush", 1); hframeBdCfg1->AddFrame(bAutoDataFlush, layoutHints); bAutoDataFlush->SetState(kButtonDown); bAutoDataFlush->Connect("Clicked()", "BoardSetting", this, "SetAutoDataFlush()"); - TGCheckButton * bDecimateWF = new TGCheckButton(hframeBdCfg1, "Decimate WaveForm", 1); hframeBdCfg1->AddFrame(bDecimateWF); + TGCheckButton * bDecimateWF = new TGCheckButton(hframeBdCfg1, "Decimate WaveForm", 1); hframeBdCfg1->AddFrame(bDecimateWF, layoutHints); bDecimateWF->SetState(kButtonUp); bDecimateWF->Connect("Clicked()", "BoardSetting", this, "SetDecimateWF()"); - TGCheckButton * bWFRecord = new TGCheckButton(hframeBdCfg1, "Record WaveFrom", 1); hframeBdCfg1->AddFrame(bWFRecord); + TGCheckButton * bWFRecord = new TGCheckButton(hframeBdCfg1, "Record WaveFrom", 1); hframeBdCfg1->AddFrame(bWFRecord, layoutHints); bWFRecord->SetState(kButtonDown); bWFRecord->Connect("Clicked()", "BoardSetting", this, "SetWaveFormRecord()"); - TGCheckButton * bTrigPropa = new TGCheckButton(hframeBdCfg1, "Trigger Propagation (coincidence) ", 1); hframeBdCfg1->AddFrame(bTrigPropa); + TGCheckButton * bTrigPropa = new TGCheckButton(hframeBdCfg1, "Trigger Propagation (coincidence) ", 1); hframeBdCfg1->AddFrame(bTrigPropa, layoutHints); bTrigPropa->SetState(kButtonUp); bTrigPropa->Connect("Clicked()", "BoardSetting", this, "SetTriggerPropagation()"); - TGCheckButton * bExtrac2 = new TGCheckButton(hframeBdCfg1, "Enable Extra2 word", 1); hframeBdCfg1->AddFrame(bExtrac2); + TGCheckButton * bExtrac2 = new TGCheckButton(hframeBdCfg1, "Enable Extra2 word", 1); hframeBdCfg1->AddFrame(bExtrac2, layoutHints); bExtrac2->SetState(kButtonDown); bExtrac2->Connect("Clicked()", "BoardSetting", this, "SetEnableExtra2()"); - - bDualTrace = new TGCheckButton(hframeBdCfg2, "Dual Trace", 1); hframeBdCfg2->AddFrame(bDualTrace); + + TGHorizontalFrame * hframeBdCfg2 = new TGHorizontalFrame(vBdCfg); vBdCfg->AddFrame(hframeBdCfg2, layoutHints); + bDualTrace = new TGCheckButton(hframeBdCfg2, "Dual Trace", 1); hframeBdCfg2->AddFrame(bDualTrace, layoutHints); bDualTrace->SetState(kButtonUp); bDualTrace->Connect("Clicked()", "BoardSetting", this, "SetDualTrace()"); - TGLabel * lbAP1 = new TGLabel(hframeBdCfg2, "Ana. Prb. 1"); hframeBdCfg2->AddFrame(lbAP1, new TGLayoutHints(kLHintsLeft , 5, 5, 3, 4)); - cbAP1 = new TGComboBox(hframeBdCfg2, "Ana. Pb. 1", 1); hframeBdCfg2->AddFrame(cbAP1); + TGLabel * lbAP1 = new TGLabel(hframeBdCfg2, "Ana. Prb. 1"); hframeBdCfg2->AddFrame(lbAP1, layoutHints); + cbAP1 = new TGComboBox(hframeBdCfg2, "Ana. Pb. 1", 1); hframeBdCfg2->AddFrame(cbAP1, layoutHints); cbAP1->EnableTextInput(false); cbAP1->AddEntry("Input", 0); cbAP1->AddEntry("RC-CR (1st derivative)", 1); @@ -141,8 +114,8 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d cbAP1->Connect("Changed()", "BoardSetting", this, "SetAnalogProbe1()"); - TGLabel * lbAP2 = new TGLabel(hframeBdCfg2, "Ana. Prb. 2"); hframeBdCfg2->AddFrame(lbAP2, new TGLayoutHints(kLHintsLeft , 5, 5, 3, 4)); - cbAP2 = new TGComboBox(hframeBdCfg2, "Ana. Pb. 2", 1); hframeBdCfg2->AddFrame(cbAP2); + TGLabel * lbAP2 = new TGLabel(hframeBdCfg2, "Ana. Prb. 2"); hframeBdCfg2->AddFrame(lbAP2, layoutHints); + cbAP2 = new TGComboBox(hframeBdCfg2, "Ana. Pb. 2", 1); hframeBdCfg2->AddFrame(cbAP2, layoutHints); cbAP2->EnableTextInput(false); cbAP2->AddEntry("Input", 0); cbAP2->AddEntry("Threshold", 1); @@ -153,8 +126,8 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d cbAP2->SetEnabled(false); cbAP2->Connect("Changed()", "BoardSetting", this, "SetAnalogProbe2()"); - TGLabel * lbDP = new TGLabel(hframeBdCfg2, "Digi. Prb. "); hframeBdCfg2->AddFrame(lbDP, new TGLayoutHints(kLHintsLeft , 5, 5, 3, 4)); - cbDP = new TGComboBox(hframeBdCfg2, "Digital. Pb.", 1); hframeBdCfg2->AddFrame(cbDP); + TGLabel * lbDP = new TGLabel(hframeBdCfg2, "Digi. Prb. "); hframeBdCfg2->AddFrame(lbDP, layoutHints); + cbDP = new TGComboBox(hframeBdCfg2, "Digital. Pb.", 1); hframeBdCfg2->AddFrame(cbDP, layoutHints); cbDP->EnableTextInput(false); cbDP->AddEntry("Peaking", 0); cbDP->AddEntry("Armed (Triggered)", 1); @@ -173,9 +146,9 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d cbDP->Select(0); cbDP->Connect("Changed()", "BoardSetting", this, "SetDigitalProbe()"); - TGHorizontalFrame * hframeBdCfg3 = new TGHorizontalFrame(vBdCfg); vBdCfg->AddFrame(hframeBdCfg3, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); - TGLabel * lbAggOrg = new TGLabel(hframeBdCfg3, "Aggregate Organization"); hframeBdCfg3->AddFrame(lbAggOrg, new TGLayoutHints(kLHintsLeft , 5, 5, 3, 4)); - cbAggOrg = new TGComboBox(hframeBdCfg3, "Aggregate Organization", 1); hframeBdCfg3->AddFrame(cbAggOrg); + TGHorizontalFrame * hframeBdCfg3 = new TGHorizontalFrame(vBdCfg); vBdCfg->AddFrame(hframeBdCfg3, layoutHints); + TGLabel * lbAggOrg = new TGLabel(hframeBdCfg3, "Aggregate Organization"); hframeBdCfg3->AddFrame(lbAggOrg, layoutHints); + cbAggOrg = new TGComboBox(hframeBdCfg3, "Aggregate Organization", 1); hframeBdCfg3->AddFrame(cbAggOrg, layoutHints); cbAggOrg->EnableTextInput(false); cbAggOrg->AddEntry("Not used", 0); cbAggOrg->AddEntry("4", 2); @@ -191,75 +164,88 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d cbAggOrg->Select(0); cbAggOrg->Connect("Changed()", "BoardSetting", this, "SetAggregateOrganization()"); - TGLabel * lbAggBLT = new TGLabel(hframeBdCfg3, "Aggregate pre Readout"); hframeBdCfg3->AddFrame(lbAggBLT, new TGLayoutHints(kLHintsLeft , 5, 5, 3, 4)); - numAggBLT = new TGNumberEntry(hframeBdCfg3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframeBdCfg3->AddFrame(numAggBLT); + TGLabel * lbAggBLT = new TGLabel(hframeBdCfg3, "Aggregate pre Readout"); hframeBdCfg3->AddFrame(lbAggBLT, layoutHints); + numAggBLT = new TGNumberEntry(hframeBdCfg3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframeBdCfg3->AddFrame(numAggBLT, layoutHints); numAggBLT->SetWidth(60); numAggBLT->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 0x3FF); numAggBLT->Connect("Modified()", "BoardSetting", this, "SetReadOutAggregate()"); - ///========= Trigger Configure - TGGroupFrame * gTRGCfg = new TGGroupFrame(vframe, "Trigger Configure", kHorizontalFrame); vframe->AddFrame(gTRGCfg ); - TGVerticalFrame * vTRGCfg = new TGVerticalFrame(gTRGCfg); gTRGCfg->AddFrame(vTRGCfg); + ///"FanSpeed Control", + TGLabel * lbFanCtrl = new TGLabel(hframeBdCfg3, "Fan Speed Control", kHorizontalFrame); hframeBdCfg3->AddFrame(lbFanCtrl, layoutHints ); + TGComboBox * cbFanCtrl = new TGComboBox(hframeBdCfg3, "",1); hframeBdCfg3->AddFrame(cbFanCtrl, layoutHints); + cbFanCtrl->EnableTextInput(false); + cbFanCtrl->AddEntry("Slow/Auto",0x30); + cbFanCtrl->AddEntry("Fast", 0x38); + cbFanCtrl->Select(0x30); + cbFanCtrl->Resize(100, 20); + + + ///========= Trigger Configure + TGGroupFrame * gTRGCfg = new TGGroupFrame(vframe, "Trigger Configure", kHorizontalFrame); vframe->AddFrame(gTRGCfg, new TGLayoutHints(kLHintsExpandX)); + TGVerticalFrame * vTRGCfg = new TGVerticalFrame(gTRGCfg); gTRGCfg->AddFrame(vTRGCfg, new TGLayoutHints(kLHintsExpandX)); + + + ///--- varioustype of triggers + TGHorizontalFrame * hframeTRGCfg = new TGHorizontalFrame(vTRGCfg); vTRGCfg->AddFrame(hframeTRGCfg, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); + TGVerticalFrame * vTRGType = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGType, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + + TGLabel * lbdummy0 = new TGLabel(vTRGType, ""); + vTRGType->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); + vTRGType->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); + + TGVerticalFrame * vTRGMsk[8]; + TGLabel * lbTRGMskCh0[8]; + TGLabel * lbTRGMskCh1[8]; + for( int i = 0; i < 8; i++){ + vTRGMsk[i] = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + lbTRGMskCh0[i] = new TGLabel(vTRGMsk[i], Form("%d", 2*i)); vTRGMsk[i]->AddFrame(lbTRGMskCh0[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + lbTRGMskCh1[i] = new TGLabel(vTRGMsk[i], Form("%d", 2*i+1)); vTRGMsk[i]->AddFrame(lbTRGMskCh1[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + } ///"Global Trigger Mask", - TGHorizontalFrame * hframeGbTRGMsk = new TGHorizontalFrame(vTRGCfg); vTRGCfg->AddFrame(hframeGbTRGMsk, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); - TGVerticalFrame * vGbTRGMskCh0 = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh0, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - - TGLabel * lbdummy0 = new TGLabel(vGbTRGMskCh0, ""); - vGbTRGMskCh0->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); - vGbTRGMskCh0->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbGbTRGMsk = new TGLabel(vGbTRGMskCh0, "Global Trigger Mask"); vGbTRGMskCh0->AddFrame(lbGbTRGMsk, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); - - TGVerticalFrame * vGbTRGMskCh[8]; - TGLabel * lbGbTRGMskCh0[8]; - TGLabel * lbGbTRGMskCh1[8]; + TGLabel * lbGbTRGMsk = new TGLabel(vTRGType, "Global Trigger Mask"); vTRGType->AddFrame(lbGbTRGMsk, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); TGCheckButton * cbGbTRGMskCh[8]; - for( int i = 0; i < 8; i++){ - vGbTRGMskCh[i] = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - - lbGbTRGMskCh0[i] = new TGLabel(vGbTRGMskCh[i], Form("%d", 2*i)); vGbTRGMskCh[i]->AddFrame(lbGbTRGMskCh0[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - lbGbTRGMskCh1[i] = new TGLabel(vGbTRGMskCh[i], Form("%d", 2*i+1)); vGbTRGMskCh[i]->AddFrame(lbGbTRGMskCh1[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - cbGbTRGMskCh[i] = new TGCheckButton(vGbTRGMskCh[i], ""); vGbTRGMskCh[i]->AddFrame(cbGbTRGMskCh[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + cbGbTRGMskCh[i] = new TGCheckButton(vTRGMsk[i], ""); vTRGMsk[i]->AddFrame(cbGbTRGMskCh[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); } ///"Trigger Validation Mask", - TGLabel * lbTRGValMsk = new TGLabel(vGbTRGMskCh0, "Trigger Validation Mask"); vGbTRGMskCh0->AddFrame(lbTRGValMsk, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); + TGLabel * lbTRGValMsk = new TGLabel(vTRGType, "Trigger Validation Mask"); vTRGType->AddFrame(lbTRGValMsk, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); TGCheckButton * cbTRGValMskCh[8]; for( int i = 0; i < 8; i++){ - cbTRGValMskCh[i] = new TGCheckButton(vGbTRGMskCh[i], ""); vGbTRGMskCh[i]->AddFrame(cbTRGValMskCh[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + cbTRGValMskCh[i] = new TGCheckButton(vTRGMsk[i], ""); vTRGMsk[i]->AddFrame(cbTRGValMskCh[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); } ///"Front Panel TRG-OUT Enable Mask", - TGLabel * lbTRGOUTMsk = new TGLabel(vGbTRGMskCh0, "TRG-OUT Mask"); vGbTRGMskCh0->AddFrame(lbTRGOUTMsk, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); + TGLabel * lbTRGOUTMsk = new TGLabel(vTRGType, "TRG-OUT Mask"); vTRGType->AddFrame(lbTRGOUTMsk, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); TGCheckButton * cbTRGOUTMskCh[8]; for( int i = 0; i < 8; i++){ - cbTRGOUTMskCh[i] = new TGCheckButton(vGbTRGMskCh[i], ""); vGbTRGMskCh[i]->AddFrame(cbTRGOUTMskCh[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + cbTRGOUTMskCh[i] = new TGCheckButton(vTRGMsk[i], ""); vTRGMsk[i]->AddFrame(cbTRGOUTMskCh[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); } - TGVerticalFrame * vGbTRGMskCh1 = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh1, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - vGbTRGMskCh1->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); - vGbTRGMskCh1->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbMajorCoinWin = new TGLabel(vGbTRGMskCh1, "Maj. Coin. Win."); vGbTRGMskCh1->AddFrame(lbMajorCoinWin, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbTRGMODE = new TGLabel(vGbTRGMskCh1, "TRG MODE"); vGbTRGMskCh1->AddFrame(lbTRGMODE, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbTRGOUTMODE = new TGLabel(vGbTRGMskCh1, "TRG-OUT MODE"); vGbTRGMskCh1->AddFrame(lbTRGOUTMODE, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); + TGVerticalFrame * vTRGMsk1 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk1, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + vTRGMsk1->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); + vTRGMsk1->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); + TGLabel * lbMajorCoinWin = new TGLabel(vTRGMsk1, "Maj. Coin. Win."); vTRGMsk1->AddFrame(lbMajorCoinWin, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); + TGLabel * lbTRGMODE = new TGLabel(vTRGMsk1, "TRG MODE"); vTRGMsk1->AddFrame(lbTRGMODE, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); + TGLabel * lbTRGOUTMODE = new TGLabel(vTRGMsk1, "TRG-OUT MODE"); vTRGMsk1->AddFrame(lbTRGOUTMODE, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); - TGVerticalFrame * vGbTRGMskCh2 = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh2, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - vGbTRGMskCh2->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); - vGbTRGMskCh2->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); + TGVerticalFrame * vTRGMsk2 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk2, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + vTRGMsk2->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); + vTRGMsk2->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); - numMajorCoinWin = new TGNumberEntry(vGbTRGMskCh2, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vGbTRGMskCh2->AddFrame(numMajorCoinWin); + numMajorCoinWin = new TGNumberEntry(vTRGMsk2, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vTRGMsk2->AddFrame(numMajorCoinWin); numMajorCoinWin->Resize(70, 20); - TGComboBox * cbTRGMODE = new TGComboBox(vGbTRGMskCh2, "TRG MODE",1); vGbTRGMskCh2->AddFrame(cbTRGMODE); + TGComboBox * cbTRGMODE = new TGComboBox(vTRGMsk2, "TRG MODE",1); vTRGMsk2->AddFrame(cbTRGMODE); cbTRGMODE->EnableTextInput(false); cbTRGMODE->AddEntry("OR", 0); cbTRGMODE->AddEntry("AND", 1); cbTRGMODE->AddEntry("Majority", 2); cbTRGMODE->Resize(70, 20); cbTRGMODE->Select(0); - TGComboBox * cbTRGOUTMODE = new TGComboBox(vGbTRGMskCh2, "TRG MODE",1); vGbTRGMskCh2->AddFrame(cbTRGOUTMODE); + TGComboBox * cbTRGOUTMODE = new TGComboBox(vTRGMsk2, "TRG MODE",1); vTRGMsk2->AddFrame(cbTRGOUTMODE); cbTRGOUTMODE->EnableTextInput(false); cbTRGOUTMODE->AddEntry("OR", 0); cbTRGOUTMODE->AddEntry("AND", 1); @@ -267,71 +253,204 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d cbTRGOUTMODE->Resize(70, 20); cbTRGOUTMODE->Select(0); - TGVerticalFrame * vGbTRGMskCh3 = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh3, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - vGbTRGMskCh3->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbMajorLevel = new TGLabel(vGbTRGMskCh3, "Majority Level"); vGbTRGMskCh3->AddFrame(lbMajorLevel, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); - GlbMajorLevel = new TGNumberEntry(vGbTRGMskCh3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vGbTRGMskCh3->AddFrame(GlbMajorLevel, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); + TGVerticalFrame * vTRGMsk3 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk3, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + vTRGMsk3->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); + TGLabel * lbMajorLevel = new TGLabel(vTRGMsk3, "Majority Level"); vTRGMsk3->AddFrame(lbMajorLevel, layoutHints); + GlbMajorLevel = new TGNumberEntry(vTRGMsk3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vTRGMsk3->AddFrame(GlbMajorLevel, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); GlbMajorLevel->Resize(70, 17); - TRGMajorLevel = new TGNumberEntry(vGbTRGMskCh3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vGbTRGMskCh3->AddFrame(TRGMajorLevel, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); + TRGMajorLevel = new TGNumberEntry(vTRGMsk3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vTRGMsk3->AddFrame(TRGMajorLevel, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); TRGMajorLevel->Resize(70, 17); - TRGOUTMajorLevel = new TGNumberEntry(vGbTRGMskCh3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vGbTRGMskCh3->AddFrame(TRGOUTMajorLevel, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); + TRGOUTMajorLevel = new TGNumberEntry(vTRGMsk3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vTRGMsk3->AddFrame(TRGOUTMajorLevel, new TGLayoutHints(kLHintsCenterY, 2,2,2,2)); TRGOUTMajorLevel->Resize(70, 17); - TGVerticalFrame * vGbTRGMskCh4 = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh4, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - TGLabel * lbLVDSTrigger = new TGLabel(vGbTRGMskCh4, "LVDS"); vGbTRGMskCh4->AddFrame(lbLVDSTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbdummy1 = new TGLabel(vGbTRGMskCh4, "Trg."); vGbTRGMskCh4->AddFrame(lbdummy1, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGVerticalFrame * vTRGMsk4 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk4, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + TGLabel * lbLVDSTrigger = new TGLabel(vTRGMsk4, "LVDS"); vTRGMsk4->AddFrame(lbLVDSTrigger, layoutHints); + TGLabel * lbdummy1 = new TGLabel(vTRGMsk4, "Trg."); vTRGMsk4->AddFrame(lbdummy1, layoutHints); - TGCheckButton * bGLBLVDSTrigger = new TGCheckButton(vGbTRGMskCh4, "", 1); vGbTRGMskCh4->AddFrame(bGLBLVDSTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bGLBLVDSTrigger = new TGCheckButton(vTRGMsk4, "", 1); vTRGMsk4->AddFrame(bGLBLVDSTrigger, layoutHints); bGLBLVDSTrigger->SetState(kButtonUp); - vGbTRGMskCh4->AddFrame(lbdummy0, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + vTRGMsk4->AddFrame(lbdummy0, layoutHints); - TGCheckButton * bTRGOUTLVDSTrigger = new TGCheckButton(vGbTRGMskCh4, "", 1); vGbTRGMskCh4->AddFrame(bTRGOUTLVDSTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bTRGOUTLVDSTrigger = new TGCheckButton(vTRGMsk4, "", 1); vTRGMsk4->AddFrame(bTRGOUTLVDSTrigger, layoutHints); bTRGOUTLVDSTrigger->SetState(kButtonUp); - TGVerticalFrame * vGbTRGMskCh5 = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh5, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - TGLabel * lbExtTrigger = new TGLabel(vGbTRGMskCh5, "Ext."); vGbTRGMskCh5->AddFrame(lbExtTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbdummy2 = new TGLabel(vGbTRGMskCh5, "Trg."); vGbTRGMskCh5->AddFrame(lbdummy2, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGVerticalFrame * vTRGMsk5 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk5, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + TGLabel * lbExtTrigger = new TGLabel(vTRGMsk5, "Ext."); vTRGMsk5->AddFrame(lbExtTrigger, layoutHints); + TGLabel * lbdummy2 = new TGLabel(vTRGMsk5, "Trg."); vTRGMsk5->AddFrame(lbdummy2, layoutHints); - TGCheckButton * bGLBExtTrigger = new TGCheckButton(vGbTRGMskCh5, "", 1); vGbTRGMskCh5->AddFrame(bGLBExtTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bGLBExtTrigger = new TGCheckButton(vTRGMsk5, "", 1); vTRGMsk5->AddFrame(bGLBExtTrigger, layoutHints); bGLBExtTrigger->SetState(kButtonUp); - TGCheckButton * bTRGExtTrigger = new TGCheckButton(vGbTRGMskCh5, "", 1); vGbTRGMskCh5->AddFrame(bTRGExtTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bTRGExtTrigger = new TGCheckButton(vTRGMsk5, "", 1); vTRGMsk5->AddFrame(bTRGExtTrigger, layoutHints); bTRGExtTrigger->SetState(kButtonUp); - TGCheckButton * bTRGOUTExtTrigger = new TGCheckButton(vGbTRGMskCh5, "", 1); vGbTRGMskCh5->AddFrame(bTRGOUTExtTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bTRGOUTExtTrigger = new TGCheckButton(vTRGMsk5, "", 1); vTRGMsk5->AddFrame(bTRGOUTExtTrigger, layoutHints); bTRGExtTrigger->SetState(kButtonUp); - TGVerticalFrame * vGbTRGMskCh6 = new TGVerticalFrame(hframeGbTRGMsk); hframeGbTRGMsk->AddFrame(vGbTRGMskCh6, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); - TGLabel * lbSWTrigger = new TGLabel(vGbTRGMskCh6, "Software"); vGbTRGMskCh6->AddFrame(lbSWTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); - TGLabel * lbdummy3 = new TGLabel(vGbTRGMskCh6, "Trg."); vGbTRGMskCh6->AddFrame(lbdummy3, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGVerticalFrame * vTRGMsk6 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk6, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + TGLabel * lbSWTrigger = new TGLabel(vTRGMsk6, "Software"); vTRGMsk6->AddFrame(lbSWTrigger, layoutHints); + TGLabel * lbdummy3 = new TGLabel(vTRGMsk6, "Trg."); vTRGMsk6->AddFrame(lbdummy3, layoutHints); - TGCheckButton * bGLBSoftwareTrigger = new TGCheckButton(vGbTRGMskCh6, "", 1); vGbTRGMskCh6->AddFrame(bGLBSoftwareTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bGLBSoftwareTrigger = new TGCheckButton(vTRGMsk6, "", 1); vTRGMsk6->AddFrame(bGLBSoftwareTrigger, layoutHints); bGLBSoftwareTrigger->SetState(kButtonDown); - TGCheckButton * bTRGSoftwareTrigger = new TGCheckButton(vGbTRGMskCh6, "", 1); vGbTRGMskCh6->AddFrame(bTRGSoftwareTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bTRGSoftwareTrigger = new TGCheckButton(vTRGMsk6, "", 1); vTRGMsk6->AddFrame(bTRGSoftwareTrigger, layoutHints); bTRGSoftwareTrigger->SetState(kButtonDown); - TGCheckButton * bTRGOUTSoftwareTrigger = new TGCheckButton(vGbTRGMskCh6, "", 1); vGbTRGMskCh6->AddFrame(bTRGOUTSoftwareTrigger, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bTRGOUTSoftwareTrigger = new TGCheckButton(vTRGMsk6, "", 1); vTRGMsk6->AddFrame(bTRGOUTSoftwareTrigger, layoutHints); bTRGOUTSoftwareTrigger->SetState(kButtonDown); - TGHorizontalFrame * hframeGbTRGMsk2 = new TGHorizontalFrame(vTRGCfg); vTRGCfg->AddFrame(hframeGbTRGMsk2, new TGLayoutHints(kLHintsCenterY | kLHintsRight, 2,2,2,2)); - TGCheckButton * bTRGValMskLVSDGLB = new TGCheckButton(hframeGbTRGMsk2, "LVSD Global Trg. Valid", 1); hframeGbTRGMsk2->AddFrame(bTRGValMskLVSDGLB); - TGCheckButton * bTRGValMskLVSDLCL = new TGCheckButton(hframeGbTRGMsk2, "LVSD Local Trg. Valid", 1); hframeGbTRGMsk2->AddFrame(bTRGValMskLVSDLCL); + TGHorizontalFrame * hframeTRGCfg2 = new TGHorizontalFrame(vTRGCfg); vTRGCfg->AddFrame(hframeTRGCfg2, new TGLayoutHints(kLHintsCenterY | kLHintsRight, 2,2,2,2)); + TGCheckButton * bTRGValMskLVSDGLB = new TGCheckButton(hframeTRGCfg2, "LVSD Global Trg. Valid", 1); hframeTRGCfg2->AddFrame(bTRGValMskLVSDGLB, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + TGCheckButton * bTRGValMskLVSDLCL = new TGCheckButton(hframeTRGCfg2, "LVSD Local Trg. Valid", 1); hframeTRGCfg2->AddFrame(bTRGValMskLVSDLCL, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); ///"Disable External Trigger", - TGCheckButton * bEnableExtTRG = new TGCheckButton(hframeGbTRGMsk2, "Enable Ext. Trigger", 1); hframeGbTRGMsk2->AddFrame(bEnableExtTRG); + TGCheckButton * bEnableExtTRG = new TGCheckButton(hframeTRGCfg2, "Enable Ext. Trigger", 1); hframeTRGCfg2->AddFrame(bEnableExtTRG, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); ///"Extended Veto Delay", + TGLabel * lbExtendVetoDelay = new TGLabel(hframeTRGCfg2, "Extended Veto Delay"); hframeTRGCfg2->AddFrame(lbExtendVetoDelay, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + TGNumberEntry * numExtendVetoDelay = new TGNumberEntry(hframeTRGCfg2, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframeTRGCfg2->AddFrame(numExtendVetoDelay, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + numExtendVetoDelay->Resize(70, 17); + TGHorizontalFrame * hRow = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow, new TGLayoutHints(kLHintsExpandX)); + ///=================="Front Panel IO Control", - TGGroupFrame * gFrontIOCtrl = new TGGroupFrame(vframe, "Front Panel IO Control", kHorizontalFrame); vframe->AddFrame(gFrontIOCtrl ); + TGGroupFrame * gFrontIOCtrl = new TGGroupFrame(hRow, "Front Panel IO Control", kHorizontalFrame); hRow->AddFrame(gFrontIOCtrl ); + TGVerticalFrame * vFrontIOCtrl = new TGVerticalFrame(gFrontIOCtrl); gFrontIOCtrl->AddFrame(vFrontIOCtrl, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + TGHorizontalFrame * hframeFrontIOCtrl = new TGHorizontalFrame(vFrontIOCtrl); vFrontIOCtrl->AddFrame(hframeFrontIOCtrl, new TGLayoutHints(kLHintsCenterY, 5,5,3,4)); + + TGLabel * lbLEMOIO = new TGLabel(hframeFrontIOCtrl, "LEMO I/O"); hframeFrontIOCtrl->AddFrame(lbLEMOIO, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + TGComboBox * cbLEMOIO = new TGComboBox(hframeFrontIOCtrl, "",1); hframeFrontIOCtrl->AddFrame(cbLEMOIO, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + cbLEMOIO->EnableTextInput(false); + cbLEMOIO->AddEntry("NIM", 0); + cbLEMOIO->AddEntry("TTL", 1); + cbLEMOIO->Select(0); + cbLEMOIO->Resize(50, 20); + + TGCheckButton * bTRGOUTImp= new TGCheckButton(hframeFrontIOCtrl, "TRG-OUT high impe.", 1); hframeFrontIOCtrl->AddFrame(bTRGOUTImp, layoutHints); + bTRGOUTImp->SetState(kButtonUp); + + TGHorizontalFrame * hframeFrontIOCtrl1 = new TGHorizontalFrame(vFrontIOCtrl); vFrontIOCtrl->AddFrame(hframeFrontIOCtrl1, new TGLayoutHints(kLHintsCenterY , 5,5,3,4)); + TGLabel * lbTRGINCtrl = new TGLabel(hframeFrontIOCtrl1, "TRG-IN control"); hframeFrontIOCtrl1->AddFrame(lbTRGINCtrl, new TGLayoutHints(kLHintsCenterY | kLHintsLeft , 5, 5, 3, 4)); + TGComboBox * cbTRGINCtrl = new TGComboBox(hframeFrontIOCtrl1, "",1); hframeFrontIOCtrl1->AddFrame(cbTRGINCtrl, new TGLayoutHints(kLHintsCenterY | kLHintsCenterX, 5, 5, 3, 4)); + cbTRGINCtrl->EnableTextInput(false); + cbTRGINCtrl->AddEntry("trigger sync with the edge of the TRIG-IN", 0); + cbTRGINCtrl->AddEntry("trigger sync with the whole TRIG-IN", 1); + cbTRGINCtrl->Select(0); + cbTRGINCtrl->Resize(250, 20); + + TGLabel * lbTRGINMezzanines = new TGLabel(hframeFrontIOCtrl1, "TRG-IN to Mezzanines"); hframeFrontIOCtrl1->AddFrame(lbTRGINMezzanines, new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 5, 5, 3, 4)); + TGComboBox * cbTRGINMezzanines = new TGComboBox(hframeFrontIOCtrl1, "",1); hframeFrontIOCtrl1->AddFrame(cbTRGINMezzanines, new TGLayoutHints(kLHintsCenterY | kLHintsCenterX, 5, 5, 3, 4)); + cbTRGINMezzanines->EnableTextInput(false); + cbTRGINMezzanines->AddEntry("Trigger local is sync with TRG-IN", 0); + cbTRGINMezzanines->AddEntry("TRG-IN send to mezzanines (no delay)", 1); + cbTRGINMezzanines->Select(0); + cbTRGINMezzanines->Resize(200, 20); + + + //TODO Combine them into 1 + TGHorizontalFrame * hframeFrontIOCtrl3 = new TGHorizontalFrame(vFrontIOCtrl); vFrontIOCtrl->AddFrame(hframeFrontIOCtrl3, new TGLayoutHints(kLHintsCenterY, 5,5,3,4)); + TGLabel * lbTRGOUTMODE2 = new TGLabel(hframeFrontIOCtrl3, "TRG-OUT Mode"); hframeFrontIOCtrl3->AddFrame(lbTRGOUTMODE2, new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 5, 5, 3, 4)); + TGComboBox * cbTRGOUTmode = new TGComboBox(hframeFrontIOCtrl3, "",1); hframeFrontIOCtrl3->AddFrame(cbTRGOUTmode, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + cbTRGOUTmode->EnableTextInput(false); + cbTRGOUTmode->AddEntry("TRG-OUT is mode-select", 0); + cbTRGOUTmode->AddEntry("TRG-OUT is forced", 1); + cbTRGOUTmode->Select(0); + cbTRGOUTmode->Resize(160, 20); + + TGComboBox * cbForceTRGOUT = new TGComboBox(hframeFrontIOCtrl3, "",1); hframeFrontIOCtrl3->AddFrame(cbForceTRGOUT, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + cbForceTRGOUT->EnableTextInput(false); + cbForceTRGOUT->AddEntry("force TRG-OUT is 0", 0); + cbForceTRGOUT->AddEntry("force TRG-OUT is 1", 1); + cbForceTRGOUT->Select(0); + cbForceTRGOUT->Resize(150, 20); + + TGComboBox * cbTRGOUTmodeSelec = new TGComboBox(hframeFrontIOCtrl3, "",1); hframeFrontIOCtrl3->AddFrame(cbTRGOUTmodeSelec, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + cbTRGOUTmodeSelec->EnableTextInput(false); + cbTRGOUTmodeSelec->AddEntry("Trigger", 0); + cbTRGOUTmodeSelec->AddEntry("Motherboard Probe", 1); + cbTRGOUTmodeSelec->AddEntry("Channel Probe", 2); + cbTRGOUTmodeSelec->AddEntry("S-IN", 3); + cbTRGOUTmodeSelec->Select(0); + cbTRGOUTmodeSelec->Resize(150, 20); + + TGComboBox * cbTRGOUTMotherProbe = new TGComboBox(hframeFrontIOCtrl3, "",1); hframeFrontIOCtrl3->AddFrame(cbTRGOUTMotherProbe, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + cbTRGOUTMotherProbe->EnableTextInput(false); + cbTRGOUTMotherProbe->AddEntry("RUN", 0); + cbTRGOUTMotherProbe->AddEntry("Sync Clock", 1); + cbTRGOUTMotherProbe->AddEntry("Clock Phase", 2); + cbTRGOUTMotherProbe->AddEntry("BUSY/UNLOCK", 3); + cbTRGOUTMotherProbe->Select(0); + cbTRGOUTMotherProbe->Resize(100, 20); + ///"Front Panel LVDS IO New Features", ///"LVDS IO Data", - ///"AnalogMonitor Mode", - ///"FanSpeed Control", + + ///"Analog Monitor Mode + TGHorizontalFrame * hframeFrontIOCtrl4 = new TGHorizontalFrame(vFrontIOCtrl); vFrontIOCtrl->AddFrame(hframeFrontIOCtrl4, new TGLayoutHints(kLHintsCenterY, 5,5,3,2)); + TGLabel * lbAnaMonitor = new TGLabel(hframeFrontIOCtrl4, "Analog Monitor Mode (MON/Sigma)"); hframeFrontIOCtrl4->AddFrame(lbAnaMonitor, new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 5, 5, 3, 2)); + TGComboBox * cbAnaMonitor = new TGComboBox(hframeFrontIOCtrl4, "",1); hframeFrontIOCtrl4->AddFrame(cbAnaMonitor, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 2)); + cbAnaMonitor->EnableTextInput(false); + cbAnaMonitor->AddEntry("Trigger Majority", 0); + cbAnaMonitor->AddEntry("Test", 1); + cbAnaMonitor->AddEntry("Buffer Occupancy", 3); + cbAnaMonitor->AddEntry("Voltage Level", 4); + cbAnaMonitor->Select(0); + cbAnaMonitor->Resize(150, 20); + + ///"Buffer Occupancy Gain + TGLabel * lbBufferOccpGain = new TGLabel(hframeFrontIOCtrl4, "Buffer Occupancy Gain"); hframeFrontIOCtrl4->AddFrame(lbBufferOccpGain, new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 5, 5, 3, 2)); + TGNumberEntry * numBufferOccpGain = new TGNumberEntry(hframeFrontIOCtrl4, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframeFrontIOCtrl4->AddFrame(numBufferOccpGain, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 2)); + numBufferOccpGain->Resize(70, 17); + + /** ///"Readout Control", + TGGroupFrame * gReadoutCtrl = new TGGroupFrame(vframe, "ReadOut Control", kHorizontalFrame); vframe->AddFrame(gReadoutCtrl ); + TGVerticalFrame * vReadoutCtrl = new TGVerticalFrame(gReadoutCtrl); gReadoutCtrl->AddFrame(vReadoutCtrl, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); + TGHorizontalFrame * hReadoutCtrl = new TGHorizontalFrame(vReadoutCtrl); vReadoutCtrl->AddFrame(hReadoutCtrl, new TGLayoutHints(kLHintsCenterY, 5,5,3,4)); + + TGLabel * lbVMEInterruptLevel = new TGLabel(hReadoutCtrl, "VME Interrupt Level"); hReadoutCtrl->AddFrame(lbVMEInterruptLevel, new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 5, 5, 3, 4)); + TGNumberEntry * numVMEInterruptLeveln = new TGNumberEntry(hReadoutCtrl, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hReadoutCtrl->AddFrame(numVMEInterruptLeveln, new TGLayoutHints(kLHintsCenterY , 5, 5, 3, 4)); + numVMEInterruptLeveln->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 7); + numVMEInterruptLeveln->Resize(70, 17); + + TGCheckButton * bOpticalLinkInterrupt= new TGCheckButton(hReadoutCtrl, "Optical Link Interrupt", 1); hReadoutCtrl->AddFrame(bOpticalLinkInterrupt, layoutHints); + bOpticalLinkInterrupt->SetState(kButtonUp); + + TGCheckButton * bEventAligned= new TGCheckButton(hReadoutCtrl, "Event Aligned Enabled", 1); hReadoutCtrl->AddFrame(bEventAligned, layoutHints); + bEventAligned->SetState(kButtonUp); + + TGCheckButton * bVMEAlogn64Mode= new TGCheckButton(hReadoutCtrl, "64-bit aligned", 1); hReadoutCtrl->AddFrame(bVMEAlogn64Mode, layoutHints); + bVMEAlogn64Mode->SetState(kButtonUp); + + TGCheckButton * bVMEBaseAddRelocation= new TGCheckButton(hReadoutCtrl, "VME baase addr. relocation", 1); hReadoutCtrl->AddFrame(bVMEBaseAddRelocation, layoutHints); + bVMEBaseAddRelocation->SetState(kButtonUp); + */ + ///"Readout Status" + TGGroupFrame * gReadoutStatus = new TGGroupFrame(hRow, "Readout Status", kHorizontalFrame); hRow->AddFrame(gReadoutStatus, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 5) ); + TGVerticalFrame * vReadoutStatus = new TGVerticalFrame(gReadoutStatus); gReadoutStatus->AddFrame(vReadoutStatus, new TGLayoutHints(kLHintsExpandY , 5, 5, 3, 2)); + + TGTextEntry * txtEventReady = new TGTextEntry(vReadoutStatus, new TGTextBuffer(1)); vReadoutStatus->AddFrame(txtEventReady, new TGLayoutHints(kLHintsRight, 5,5,3,3)); + txtEventReady->SetEnabled(false); + txtEventReady->SetText( "Event Ready" ); + txtEventReady->SetTextColor(kGreen); + + TGTextEntry * txtBusError = new TGTextEntry(vReadoutStatus, new TGTextBuffer(1)); vReadoutStatus->AddFrame(txtBusError, new TGLayoutHints(kLHintsRight, 5,5,3,3)); + txtBusError->SetEnabled(false); + txtBusError->SetText( "no Bus Error" ); + txtBusError->SetTextColor(kGreen); + + TGTextEntry * txtVMEFIFO = new TGTextEntry(vReadoutStatus, new TGTextBuffer(1)); vReadoutStatus->AddFrame(txtVMEFIFO, new TGLayoutHints(kLHintsRight, 5,5,3,3)); + txtVMEFIFO->SetEnabled(false); + txtVMEFIFO->SetText( "VME FIFO EMPTY" ); + txtVMEFIFO->SetTextColor(kGreen); + + + ///==================== Read digitizer Setting + ReadDigitizerSetting(); + fMain->MapSubwindows(); fMain->Resize(fMain->GetDefaultSize()); @@ -357,6 +476,11 @@ BoardSetting::~BoardSetting(){ delete fMain; } + +void BoardSetting::ReadDigitizerSetting(){ + +} + void BoardSetting::ChangeBoard(){ int boardID = boardIDEntry->GetNumber(); diff --git a/boardSetting.h b/boardSetting.h index bfc7b22..ab7df46 100644 --- a/boardSetting.h +++ b/boardSetting.h @@ -57,6 +57,8 @@ class BoardSetting{ void SetAggregateOrganization(); void SetReadOutAggregate(); + + void ReadDigitizerSetting(); bool isOpened;