added complete Trigger Validation mask

This commit is contained in:
carina@hades 2022-10-18 16:38:27 -04:00
parent c851da2f3c
commit bf824f76a7
4 changed files with 184 additions and 131 deletions

View File

@ -402,7 +402,7 @@ void Digitizer::ReadData(){
//=========================================================== //===========================================================
void Digitizer::WriteRegister (Reg registerAddress, uint32_t value, int ch, bool isSave2MemAndFile){ void Digitizer::WriteRegister (Reg registerAddress, uint32_t value, int ch, bool isSave2MemAndFile){
printf("%s[0x%04X](ch-%02d): %u \n", registerAddress.GetNameChar(), registerAddress.GetAddress(),ch, value); printf("%s[0x%04X](ch-%02d) [0x%04X]: %u \n", registerAddress.GetNameChar(), registerAddress.GetAddress(),ch, registerAddress.ActualAddress(ch), value);
if( !isConnected ) { if( !isConnected ) {
SetSettingToMemory(registerAddress, value, ch); SetSettingToMemory(registerAddress, value, ch);

View File

@ -223,6 +223,7 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
LogMsg((char*)"Please \"Open Digitizers\" to start."); LogMsg((char*)"Please \"Open Digitizers\" to start.");
//HandleMenu(M_DIGITIZER_OPEN); //HandleMenu(M_DIGITIZER_OPEN);
//HandleMenu(M_BOARD_SETTINGS); //HandleMenu(M_BOARD_SETTINGS);
//HandleMenu(M_CH_SETTING_PHA); //HandleMenu(M_CH_SETTING_PHA);
@ -368,6 +369,7 @@ void MainWindow::OpenDigitizers(){
/// if dig exist, say, from loading setting file without digitizer /// if dig exist, say, from loading setting file without digitizer
for( int i = 0 ; i < nDigi; i++ ) delete digi[i]; for( int i = 0 ; i < nDigi; i++ ) delete digi[i];
nDigi = 0;
LogMsg((char*)"============= detect digitizers"); LogMsg((char*)"============= detect digitizers");
std::vector<int> DPPType; std::vector<int> DPPType;
@ -472,10 +474,9 @@ void MainWindow::LoadSettingFromFile(){
loadStatus = digi[0]->LoadSettingBinary( fi.fFilename ); /// still dummy digitizer loadStatus = digi[0]->LoadSettingBinary( fi.fFilename ); /// still dummy digitizer
} }
//if( boardSetting != NULL ) boardSetting->CloseWindow();
if( boardSetting != NULL ) boardSetting->CloseWindow(); //if( channelSettingPHA != NULL ) channelSettingPHA->CloseWindow();
if( channelSettingPHA != NULL ) channelSettingPHA->CloseWindow(); //if( channelSettingPSD != NULL ) channelSettingPSD->CloseWindow();
if( channelSettingPSD != NULL ) channelSettingPSD->CloseWindow();
HandleMenu(M_BOARD_SETTINGS); HandleMenu(M_BOARD_SETTINGS);
OpenChannelSetting(0); OpenChannelSetting(0);

View File

@ -225,22 +225,6 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
txtVMEFIFO->SetTextColor(blue); txtVMEFIFO->SetTextColor(blue);
} }
TGHorizontalFrame * hRow0 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow0, new TGLayoutHints( kLHintsExpandX));
//hRow0->ChangeOptions((hRow0->GetOptions() | kFixedHeight));
//hRow0->
TGTextButton * bProgramDefaultBoard = new TGTextButton(hRow0, "Program Default Board"); hRow0->AddFrame(bProgramDefaultBoard, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bProgramDefaultBoard->Connect("Clicked()", "BoardSetting", this, "ProgramDefaultBoard()");
TGTextButton * bUpdateStatus = new TGTextButton(hRow0, "Update Status and Settings"); hRow0->AddFrame(bUpdateStatus, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bUpdateStatus->Connect("Clicked()", "BoardSetting", this, "ChangeBoard()");
TGTextButton * bOpenChannelSetting = new TGTextButton(hRow0, "Open Channel Setting"); hRow0->AddFrame(bOpenChannelSetting, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bOpenChannelSetting->Connect("Clicked()", "BoardSetting", this, "OpenChannelSetting()");
TGTextButton * bReadData = new TGTextButton(hRow0, "Read Data"); hRow0->AddFrame(bReadData, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bReadData->Connect("Clicked()", "BoardSetting", this, "ReadData()");
TGHorizontalFrame * hRow1 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow1, new TGLayoutHints( kLHintsExpandX)); TGHorizontalFrame * hRow1 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow1, new TGLayoutHints( kLHintsExpandX));
{///========= Board Configure {///========= Board Configure
@ -466,26 +450,18 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
cbGbTRGMskCh[i]->Connect("Clicked()", "BoardSetting", this, "SetGlobalTriggerMask()"); cbGbTRGMskCh[i]->Connect("Clicked()", "BoardSetting", this, "SetGlobalTriggerMask()");
} }
///"Trigger Validation Mask", ///"TRG-OUT Mask",
TGLabel * lbTRGValMsk = new TGLabel(vTRGType, "Trigger Validation Mask"); vTRGType->AddFrame(lbTRGValMsk, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4));
for( int i = 0; i < 8; i++){
cbTRGValMskCh[i] = new TGCheckButton(vTRGMsk[i], ""); vTRGMsk[i]->AddFrame(cbTRGValMskCh[i], haha);
cbTRGValMskCh[i]->Connect("Clicked()", "BoardSetting", this, "SetTriggerValidMask()");
}
///"Front Panel TRG-OUT Enable Mask",
TGLabel * lbTRGOUTMsk = new TGLabel(vTRGType, "TRG-OUT Mask"); vTRGType->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));
for( int i = 0; i < 8; i++){ for( int i = 0; i < 8; i++){
cbTRGOUTMskCh[i] = new TGCheckButton(vTRGMsk[i], ""); vTRGMsk[i]->AddFrame(cbTRGOUTMskCh[i], haha); cbTRGOUTMsk[i] = new TGCheckButton(vTRGMsk[i], ""); vTRGMsk[i]->AddFrame(cbTRGOUTMsk[i], haha);
cbTRGOUTMskCh[i]->Connect("Clicked()", "BoardSetting", this, "SetTRGOUTMask()"); cbTRGOUTMsk[i]->Connect("Clicked()", "BoardSetting", this, "SetTRGOUTMask()");
} }
TGVerticalFrame * vTRGMsk1 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk1, haha); TGVerticalFrame * vTRGMsk1 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk1, haha);
vTRGMsk1->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 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)); 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 * lbMajorCoinWin = new TGLabel(vTRGMsk1, "Maj. Coin. Win."); vTRGMsk1->AddFrame(lbMajorCoinWin, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4));
TGLabel * lbTRGMODE = new TGLabel(vTRGMsk1, "TRG Vali. MODE"); vTRGMsk1->AddFrame(lbTRGMODE, new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4)); TGLabel * lbTRGOUTMode_haha = new TGLabel(vTRGMsk1, "TRG-OUT MODE"); vTRGMsk1->AddFrame(lbTRGOUTMode_haha, 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 * vTRGMsk2 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk2, haha); TGVerticalFrame * vTRGMsk2 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk2, haha);
vTRGMsk2->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); vTRGMsk2->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4));
@ -495,21 +471,13 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
numMajorCoinWin->Resize(70, 20); numMajorCoinWin->Resize(70, 20);
numMajorCoinWin->Connect("Modified()", "BoardSetting", this, "SetGlobalTriggerMask()"); numMajorCoinWin->Connect("Modified()", "BoardSetting", this, "SetGlobalTriggerMask()");
cbTRGMODE = new TGComboBox(vTRGMsk2, "TRG Val. MODE",1); vTRGMsk2->AddFrame(cbTRGMODE); cbTRGOUTMode = new TGComboBox(vTRGMsk2, "OR",0); vTRGMsk2->AddFrame(cbTRGOUTMode);
cbTRGMODE->EnableTextInput(false); cbTRGOUTMode->EnableTextInput(false);
cbTRGMODE->AddEntry("OR", 0); cbTRGOUTMode->AddEntry("OR", 0);
cbTRGMODE->AddEntry("AND", 1); cbTRGOUTMode->AddEntry("AND", 1);
cbTRGMODE->AddEntry("Majority", 2); cbTRGOUTMode->AddEntry("Majority", 2);
cbTRGMODE->Resize(70, 20); cbTRGOUTMode->Resize(70, 20);
cbTRGMODE->Connect("Changed()", "BoardSetting", this, "SetTriggerValidMask()"); cbTRGOUTMode->Connect("Changed()", "BoardSetting", this, "SetTRGOUTMask()");
cbTRGOUTMODE = new TGComboBox(vTRGMsk2, "TRG-OUT MODE",1); vTRGMsk2->AddFrame(cbTRGOUTMODE);
cbTRGOUTMODE->EnableTextInput(false);
cbTRGOUTMODE->AddEntry("OR", 0);
cbTRGOUTMODE->AddEntry("AND", 1);
cbTRGOUTMODE->AddEntry("Majority", 2);
cbTRGOUTMODE->Resize(70, 20);
cbTRGOUTMODE->Connect("Changed()", "BoardSetting", this, "SetTRGOUTMask()");
TGVerticalFrame * vTRGMsk3 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk3, haha); TGVerticalFrame * vTRGMsk3 = new TGVerticalFrame(hframeTRGCfg); hframeTRGCfg->AddFrame(vTRGMsk3, haha);
vTRGMsk3->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4)); vTRGMsk3->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 4));
@ -518,10 +486,6 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
GlbMajorLevel->Resize(70, 17); GlbMajorLevel->Resize(70, 17);
GlbMajorLevel->Connect("Modified()", "BoardSetting", this, "SetGlobalTriggerMask()"); GlbMajorLevel->Connect("Modified()", "BoardSetting", this, "SetGlobalTriggerMask()");
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);
TRGMajorLevel->Connect("Modified()", "BoardSetting", this, "SetTriggerValidMask()");
TRGOUTMajorLevel = new TGNumberEntry(vTRGMsk3, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vTRGMsk3->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); TRGOUTMajorLevel->Resize(70, 17);
TRGOUTMajorLevel->Connect("Modified()", "BoardSetting", this, "SetTRGOUTMask()"); TRGOUTMajorLevel->Connect("Modified()", "BoardSetting", this, "SetTRGOUTMask()");
@ -534,10 +498,6 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
bGLBExtTrigger->SetState(kButtonUp); bGLBExtTrigger->SetState(kButtonUp);
bGLBExtTrigger->Connect("Clicked()", "BoardSetting", this, "SetGlobalTriggerMask()"); bGLBExtTrigger->Connect("Clicked()", "BoardSetting", this, "SetGlobalTriggerMask()");
bTRGExtTrigger = new TGCheckButton(vTRGMsk5, "", 1); vTRGMsk5->AddFrame(bTRGExtTrigger, layoutHints);
bTRGExtTrigger->SetState(kButtonUp);
bTRGExtTrigger->Connect("Clicked()", "BoardSetting", this, "SetTriggerValidMask()");
bTRGOUTExtTrigger = new TGCheckButton(vTRGMsk5, "", 1); vTRGMsk5->AddFrame(bTRGOUTExtTrigger, layoutHints); bTRGOUTExtTrigger = new TGCheckButton(vTRGMsk5, "", 1); vTRGMsk5->AddFrame(bTRGOUTExtTrigger, layoutHints);
bTRGOUTExtTrigger->SetState(kButtonUp); bTRGOUTExtTrigger->SetState(kButtonUp);
bTRGOUTExtTrigger->Connect("Clicked()", "BoardSetting", this, "SetTRGOUTMask()"); bTRGOUTExtTrigger->Connect("Clicked()", "BoardSetting", this, "SetTRGOUTMask()");
@ -550,10 +510,6 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
bGLBSoftwareTrigger->SetState(kButtonDown); bGLBSoftwareTrigger->SetState(kButtonDown);
bGLBSoftwareTrigger->Connect("Clicked()", "BoardSetting", this, "SetGlobalTriggerMask()"); bGLBSoftwareTrigger->Connect("Clicked()", "BoardSetting", this, "SetGlobalTriggerMask()");
bTRGSoftwareTrigger = new TGCheckButton(vTRGMsk6, "", 1); vTRGMsk6->AddFrame(bTRGSoftwareTrigger, layoutHints);
bTRGSoftwareTrigger->SetState(kButtonDown);
bTRGSoftwareTrigger->Connect("Clicked()", "BoardSetting", this, "SetTriggerValidMask()");
bTRGOUTSoftwareTrigger = new TGCheckButton(vTRGMsk6, "", 1); vTRGMsk6->AddFrame(bTRGOUTSoftwareTrigger, layoutHints); bTRGOUTSoftwareTrigger = new TGCheckButton(vTRGMsk6, "", 1); vTRGMsk6->AddFrame(bTRGOUTSoftwareTrigger, layoutHints);
bTRGOUTSoftwareTrigger->SetState(kButtonDown); bTRGOUTSoftwareTrigger->SetState(kButtonDown);
bTRGOUTSoftwareTrigger->Connect("Clicked()", "BoardSetting", this, "SetTRGOUTMask()"); bTRGOUTSoftwareTrigger->Connect("Clicked()", "BoardSetting", this, "SetTRGOUTMask()");
@ -567,6 +523,99 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
///numExtendVetoDelay->Connect("Modified()", "BoardSetting", this, "SetExtendedVetoDelay()"); ///numExtendVetoDelay->Connect("Modified()", "BoardSetting", this, "SetExtendedVetoDelay()");
} }
TGHorizontalFrame * hRow0 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow0, new TGLayoutHints( kLHintsExpandX));
{///================= ///"Trigger Validation Mask",
TGGroupFrame * gTRGValMsk = new TGGroupFrame(hRow0, "Trigger Validation Mask", kHorizontalFrame); hRow0->AddFrame(gTRGValMsk, new TGLayoutHints(kLHintsExpandX, 0, 5, 5, 5));
TGVerticalFrame * vTRGValMsk = new TGVerticalFrame(gTRGValMsk); gTRGValMsk->AddFrame(vTRGValMsk, new TGLayoutHints(kLHintsExpandX));
TGHorizontalFrame * hfTRGValMsk = new TGHorizontalFrame(vTRGValMsk); vTRGValMsk->AddFrame(hfTRGValMsk, new TGLayoutHints(kLHintsCenterY, 2,2,2,2));
TGLayoutHints * haha = new TGLayoutHints(kLHintsCenterX , 2, 2, 3, 3);
TGVerticalFrame * vTRGch = new TGVerticalFrame(hfTRGValMsk); hfTRGValMsk->AddFrame(vTRGch, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
TGLabel * lbdummy0 = new TGLabel(vTRGch, "");
vTRGch->AddFrame(lbdummy0);
vTRGch->AddFrame(lbdummy0);
TGLabel * lbTRGValMsk[8];
for( int i = 0; i < 8 ; i++){
lbTRGValMsk[i] = new TGLabel(vTRGch, Form("ch %2d - %2d", 2*i, 2*i+1)); vTRGch->AddFrame(lbTRGValMsk[i], new TGLayoutHints(kLHintsRight | kLHintsCenterY , 5, 5, 3, 4));
}
TGVerticalFrame * vTRGMsk[8];
for( int i = 0; i < 8; i++){vTRGMsk[i] = new TGVerticalFrame(hfTRGValMsk); hfTRGValMsk->AddFrame(vTRGMsk[i], new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); }
for( int i = 0; i < 8; i++){TGLabel * lbdummy0 = new TGLabel(vTRGMsk[i], Form("%d", 2*i )); vTRGMsk[i]->AddFrame(lbdummy0); }
for( int i = 0; i < 8; i++){TGLabel * lbdummy0 = new TGLabel(vTRGMsk[i], Form("%d", 2*i+1)); vTRGMsk[i]->AddFrame(lbdummy0); }
for( int i = 0; i < 8; i++){
for( int j = 0; j < 8 ; j++){
cbTRGValMskCh[i][j] = new TGCheckButton(vTRGMsk[j], ""); vTRGMsk[j]->AddFrame(cbTRGValMskCh[i][j], haha);
cbTRGValMskCh[i][j]->Connect("Clicked()", "BoardSetting", this, "SetTriggerValidMask()");
}
}
TGVerticalFrame * vTRGValMode = new TGVerticalFrame(hfTRGValMsk); hfTRGValMsk->AddFrame(vTRGValMode,new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
vTRGValMode->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 0));
TGLabel * lbTRGValMODE = new TGLabel(vTRGValMode, "MODE"); vTRGValMode->AddFrame(lbTRGValMODE, haha);
for( int i = 0; i < 8; i++){
cbTRGValMODE[i] = new TGComboBox(vTRGValMode, "OR",0); vTRGValMode->AddFrame(cbTRGValMODE[i]);
cbTRGValMODE[i]->EnableTextInput(false);
cbTRGValMODE[i]->AddEntry("OR", 0);
cbTRGValMODE[i]->AddEntry("AND", 1);
cbTRGValMODE[i]->AddEntry("Majority", 2);
cbTRGValMODE[i]->Resize(70, 20);
cbTRGValMODE[i]->Connect("Changed()", "BoardSetting", this, "SetTriggerValidMask()");
}
TGVerticalFrame * vTRGValMajor = new TGVerticalFrame(hfTRGValMsk); hfTRGValMsk->AddFrame(vTRGValMajor,new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
vTRGValMajor->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 0));
TGLabel * lbMajorLevel = new TGLabel(vTRGValMajor, "Majority Level"); vTRGValMajor->AddFrame(lbMajorLevel, haha);
for( int i =0 ; i < 8; i++){
TRGValMajorLevel[i] = new TGNumberEntry(vTRGValMajor, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vTRGValMajor->AddFrame(TRGValMajorLevel[i]);
TRGValMajorLevel[i]->Resize(70, 20);
TRGValMajorLevel[i]->Connect("Modified()", "BoardSetting", this, "SetTriggerValidMask()");
}
TGVerticalFrame * vTRGValExtTrg = new TGVerticalFrame(hfTRGValMsk); hfTRGValMsk->AddFrame(vTRGValExtTrg,new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
vTRGValExtTrg->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 0));
TGLabel * lbExtTrigger = new TGLabel(vTRGValExtTrg, "Ext."); vTRGValExtTrg->AddFrame(lbExtTrigger, haha);
for( int i =0 ; i < 8; i++){
bTRGValExtTrigger[i] = new TGCheckButton(vTRGValExtTrg, "", 1); vTRGValExtTrg->AddFrame(bTRGValExtTrigger[i], haha);
bTRGValExtTrigger[i]->SetState(kButtonUp);
bTRGValExtTrigger[i]->Connect("Clicked()", "BoardSetting", this, "SetTriggerValidMask()");
}
TGVerticalFrame * vTRGOUTSWTrg = new TGVerticalFrame(hfTRGValMsk); hfTRGValMsk->AddFrame(vTRGOUTSWTrg,new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
vTRGOUTSWTrg->AddFrame(lbdummy0, new TGLayoutHints(kLHintsLeft | kLHintsCenterY , 5, 5, 3, 0));
TGLabel * lbSWTrigger = new TGLabel(vTRGOUTSWTrg, "SW"); vTRGOUTSWTrg->AddFrame(lbSWTrigger, haha);
for( int i = 0; i < 8; i++){
bTRGValSoftwareTrigger[i] = new TGCheckButton(vTRGOUTSWTrg, "", 1); vTRGOUTSWTrg->AddFrame(bTRGValSoftwareTrigger[i], haha);
bTRGValSoftwareTrigger[i]->SetState(kButtonDown);
bTRGValSoftwareTrigger[i]->Connect("Clicked()", "BoardSetting", this, "SetTriggerValidMask()");
}
}
{///================== Button
TGGroupFrame * gButton = new TGGroupFrame(hRow0, "Others Buttons", kHorizontalFrame); hRow0->AddFrame(gButton, new TGLayoutHints(kLHintsExpandY, 0, 0, 5, 5));
TGVerticalFrame * vfButton = new TGVerticalFrame(gButton); gButton->AddFrame(vfButton, new TGLayoutHints(kLHintsExpandX));
TGTextButton * bProgramDefaultBoard = new TGTextButton(vfButton, "Program Default Board"); vfButton->AddFrame(bProgramDefaultBoard, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bProgramDefaultBoard->Connect("Clicked()", "BoardSetting", this, "ProgramDefaultBoard()");
TGTextButton * bUpdateStatus = new TGTextButton(vfButton, "Update Status and Settings"); vfButton->AddFrame(bUpdateStatus, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bUpdateStatus->Connect("Clicked()", "BoardSetting", this, "ChangeBoard()");
TGTextButton * bOpenChannelSetting = new TGTextButton(vfButton, "Open Channel Setting"); vfButton->AddFrame(bOpenChannelSetting, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bOpenChannelSetting->Connect("Clicked()", "BoardSetting", this, "OpenChannelSetting()");
TGTextButton * bReadData = new TGTextButton(vfButton, "Read Data"); vfButton->AddFrame(bReadData, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bReadData->Connect("Clicked()", "BoardSetting", this, "ReadData()");
}
TGHorizontalFrame * hRow2 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow2, new TGLayoutHints(kLHintsExpandX)); TGHorizontalFrame * hRow2 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow2, new TGLayoutHints(kLHintsExpandX));
{///=================="Front Panel IO Control", {///=================="Front Panel IO Control",
@ -589,20 +638,20 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
///use 0x811C, bit:[14:19], 6bits ///use 0x811C, bit:[14:19], 6bits
TGLabel * lbTRGOUTMODE2 = new TGLabel(vFrontIOCtrl_label, "TRG-OUT Mode"); vFrontIOCtrl_label->AddFrame(lbTRGOUTMODE2, haha); TGLabel * lbTRGOUTMODE2 = new TGLabel(vFrontIOCtrl_label, "TRG-OUT Mode"); vFrontIOCtrl_label->AddFrame(lbTRGOUTMODE2, haha);
cbTRGOUTmode = new TGComboBox(vFrontIOCtrl_CBox, "",1); vFrontIOCtrl_CBox->AddFrame(cbTRGOUTmode); cbTRGOUTMODE2 = new TGComboBox(vFrontIOCtrl_CBox, "",1); vFrontIOCtrl_CBox->AddFrame(cbTRGOUTMODE2);
cbTRGOUTmode->EnableTextInput(false); cbTRGOUTMODE2->EnableTextInput(false);
cbTRGOUTmode->AddEntry("Disable", 0x00002); /// this is TRG_OUT high imped. 0x811C bit[1] cbTRGOUTMODE2->AddEntry("Disable", 0x00002); /// this is TRG_OUT high imped. 0x811C bit[1]
cbTRGOUTmode->AddEntry("force TRG-OUT is 0", 0x08000); cbTRGOUTMODE2->AddEntry("force TRG-OUT is 0", 0x08000);
cbTRGOUTmode->AddEntry("force TRG-OUT is 1", 0x0C000); cbTRGOUTMODE2->AddEntry("force TRG-OUT is 1", 0x0C000);
cbTRGOUTmode->AddEntry("Trigger", 0x00000); cbTRGOUTMODE2->AddEntry("Trigger", 0x00000);
cbTRGOUTmode->AddEntry("Channel Probe", 0x20000); cbTRGOUTMODE2->AddEntry("Channel Probe", 0x20000);
cbTRGOUTmode->AddEntry("S-IN", 0x30000); cbTRGOUTMODE2->AddEntry("S-IN", 0x30000);
cbTRGOUTmode->AddEntry("RUN", 0x10000); cbTRGOUTMODE2->AddEntry("RUN", 0x10000);
cbTRGOUTmode->AddEntry("Sync Clock", 0x50000); cbTRGOUTMODE2->AddEntry("Sync Clock", 0x50000);
cbTRGOUTmode->AddEntry("Clock Phase", 0x90000); cbTRGOUTMODE2->AddEntry("Clock Phase", 0x90000);
cbTRGOUTmode->AddEntry("BUSY/UNLOCK", 0xD0000); cbTRGOUTMODE2->AddEntry("BUSY/UNLOCK", 0xD0000);
cbTRGOUTmode->Resize(160, 20); cbTRGOUTMODE2->Resize(160, 20);
cbTRGOUTmode->Connect("Changed()", "BoardSetting", this, "SetFrontPanelIO()"); cbTRGOUTMODE2->Connect("Changed()", "BoardSetting", this, "SetFrontPanelIO()");
TGLabel * lbTRGINCtrl = new TGLabel(vFrontIOCtrl_label, "TRG-IN control"); vFrontIOCtrl_label->AddFrame(lbTRGINCtrl, haha); TGLabel * lbTRGINCtrl = new TGLabel(vFrontIOCtrl_label, "TRG-IN control"); vFrontIOCtrl_label->AddFrame(lbTRGINCtrl, haha);
cbTRGINCtrl = new TGComboBox(vFrontIOCtrl_CBox, "",1); vFrontIOCtrl_CBox->AddFrame(cbTRGINCtrl); cbTRGINCtrl = new TGComboBox(vFrontIOCtrl_CBox, "",1); vFrontIOCtrl_CBox->AddFrame(cbTRGINCtrl);
@ -891,33 +940,37 @@ void BoardSetting::ChangeBoard(){
bGLBExtTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false); bGLBExtTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bGLBSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false); bGLBSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
/// Trigger Validation Mask
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G);
for( int i = 0; i < 8; i++){
cbTRGValMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
}
cbTRGMODE->Select( ( tempBits >> 8 ) & 0x3, false) ;
TRGMajorLevel->SetNumber( ( tempBits >> 10 ) & 0x3, false);
bTRGExtTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bTRGSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
/// Front Panel TRG-OUT Enable Mask , PHA = PSD only for bit[19:0] /// Front Panel TRG-OUT Enable Mask , PHA = PSD only for bit[19:0]
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::FrontPanelTRGOUTEnableMask); tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::FrontPanelTRGOUTEnableMask);
for( int i = 0; i < 8; i++){ for( int i = 0; i < 8; i++){
cbTRGOUTMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown, false ); cbTRGOUTMsk[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown, false );
} }
cbTRGOUTMODE->Select( ( tempBits >> 8 ) & 0x3, false) ; cbTRGOUTMode->Select( ( tempBits >> 8 ) & 0x3, false) ;
TRGOUTMajorLevel->SetNumber( ( tempBits >> 10 ) & 0x7, false); TRGOUTMajorLevel->SetNumber( ( tempBits >> 10 ) & 0x7, false);
bTRGOUTExtTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false); bTRGOUTExtTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bTRGOUTSoftwareTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false); bTRGOUTSoftwareTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
/// Trigger Validation Mask
for( int i = 0; i < 8; i++){
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G, 2*i);
printf("%2d | 0x%04X \n", i, tempBits);
for( int j = 0; j < 8; j++){
cbTRGValMskCh[i][j]->SetState( ((tempBits >> j ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
}
cbTRGValMODE[i]->Select( ( tempBits >> 8 ) & 0x3, false) ;
TRGValMajorLevel[i]->SetNumber( ( tempBits >> 10 ) & 0x3, false);
bTRGValExtTrigger[i]->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bTRGValSoftwareTrigger[i]->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
}
/// Front Panel I/O Control, PHA = PSD only for bit[19:0] /// Front Panel I/O Control, PHA = PSD only for bit[19:0]
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::FrontPanelIOControl); tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::FrontPanelIOControl);
cbLEMOIO->Select( tempBits & 0x1 , false); cbLEMOIO->Select( tempBits & 0x1 , false);
if( ((tempBits >> 1) & 0x1 ) == 0 ) { if( ((tempBits >> 1) & 0x1 ) == 0 ) {
cbTRGOUTmode->Select( 2 , false); cbTRGOUTMODE2->Select( 2 , false);
}else{ }else{
cbTRGOUTmode->Select( (tempBits) & 0x3F000 , false); cbTRGOUTMODE2->Select( (tempBits) & 0x3F000 , false);
} }
cbTRGINCtrl->Select( (tempBits >> 10) & 0x1 , false); cbTRGINCtrl->Select( (tempBits >> 10) & 0x1 , false);
cbTRGINMezzanines->Select( (tempBits >> 11) & 0x1 , false); cbTRGINMezzanines->Select( (tempBits >> 11) & 0x1 , false);
@ -1245,39 +1298,40 @@ void BoardSetting::SetGlobalTriggerMask(){ /// same for PHA and PSD
digi[boardID]->WriteRegister(Register::DPP::GlobalTriggerMask, bit ); digi[boardID]->WriteRegister(Register::DPP::GlobalTriggerMask, bit );
} }
void BoardSetting::SetTriggerValidMask(){ /// same for PHA and PSD
printf("=== %s\n", __func__);
if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber();
uint32_t bit = 0;
for( int i = 0; i < 8; i ++ ) bit += ( (cbTRGValMskCh[i]->GetState() == kButtonDown) ? (1 << i ) :0 );
bit += ( (cbTRGMODE->GetSelected() << 8) );
bit += ( ((unsigned int) TRGMajorLevel->GetNumber() ) << 24 );
bit += ( (bTRGExtTrigger->GetState() == kButtonDown) ? (1 << 30) : 0);
bit += ( (bTRGSoftwareTrigger->GetState() == kButtonDown) ? (1 << 31) : 0 );
printf("bit : 0x%x \n", bit);
digi[boardID]->WriteRegister(Register::DPP::TriggerValidationMask_G, bit );
}
void BoardSetting::SetTRGOUTMask(){ /// same for PHA and PSD void BoardSetting::SetTRGOUTMask(){ /// same for PHA and PSD
printf("=== %s\n", __func__); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
uint32_t bit = 0; uint32_t bit = 0;
for( int i = 0; i < 8; i ++ ) bit += ( (cbTRGOUTMskCh[i]->GetState() == kButtonDown) ? (1 << i ) : 0 ); for( int i = 0; i < 8; i ++ ) bit += ( (cbTRGOUTMsk[i]->GetState() == kButtonDown) ? (1 << i ) :0 );
bit += ( (cbTRGOUTMODE->GetSelected() << 8) ); bit += ( (cbTRGOUTMode->GetSelected() << 8) );
bit += ( ((unsigned int) TRGOUTMajorLevel->GetNumber() ) << 24 ); bit += ( ((unsigned int) TRGOUTMajorLevel->GetNumber() ) << 24 );
bit += ( (bTRGOUTExtTrigger->GetState() == kButtonDown) ? (1 << 30) : 0 ); bit += ( (bTRGOUTExtTrigger->GetState() == kButtonDown) ? (1 << 30) : 0);
bit += ( (bTRGOUTSoftwareTrigger->GetState() == kButtonDown) ? (1 << 31) : 0 ); bit += ( (bTRGOUTSoftwareTrigger->GetState() == kButtonDown) ? (1 << 31) : 0 );
printf("bit : 0x%x \n", bit); printf("bit : 0x%x \n", bit);
digi[boardID]->WriteRegister(Register::DPP::FrontPanelTRGOUTEnableMask, bit ); digi[boardID]->WriteRegister(Register::DPP::FrontPanelTRGOUTEnableMask, bit );
} }
void BoardSetting::SetTriggerValidMask(){ /// same for PHA and PSD
printf("=== %s\n", __func__);
if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber();
uint32_t bit = 0;
for( int i = 0; i < 8; i++){
bit = 0;
for( int j = 0; j < 8; j++) bit += ( (cbTRGValMskCh[i][j]->GetState() == kButtonDown) ? (1 << j ) : 0 );
bit += ( (cbTRGValMODE[i]->GetSelected() << 8) );
bit += ( ((unsigned int) TRGValMajorLevel[i]->GetNumber() ) << 24 );
bit += ( (bTRGValExtTrigger[i]->GetState() == kButtonDown) ? (1 << 30) : 0 );
bit += ( (bTRGValSoftwareTrigger[i]->GetState() == kButtonDown) ? (1 << 31) : 0 );
printf("pch : %d, bit : 0x%x \n", i, bit);
digi[boardID]->WriteRegister(Register::DPP::TriggerValidationMask_G, bit , 2*i);
}
}
void BoardSetting::SetEnableExternalTrigger(){ /// same for PHA and PSD void BoardSetting::SetEnableExternalTrigger(){ /// same for PHA and PSD
printf("=== %s\n", __func__); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
@ -1285,6 +1339,8 @@ void BoardSetting::SetEnableExternalTrigger(){ /// same for PHA and PSD
if (bEnableExtTRG->GetState() == kButtonDown) { if (bEnableExtTRG->GetState() == kButtonDown) {
digi[boardID]->WriteRegister(Register::DPP::DisableExternalTrigger, 0x1 ); digi[boardID]->WriteRegister(Register::DPP::DisableExternalTrigger, 0x1 );
}else{
digi[boardID]->WriteRegister(Register::DPP::DisableExternalTrigger, 0x0 );
} }
} }
@ -1303,13 +1359,7 @@ void BoardSetting::SetFrontPanelIO(){ /// bit[20] different, bit[20] (PSD) not
uint32_t bit = 0; uint32_t bit = 0;
bit += ( cbLEMOIO->GetSelected() ); bit += ( cbLEMOIO->GetSelected() );
bit += cbTRGOUTmode->GetSelected() ; bit += cbTRGOUTMODE2->GetSelected() ;
//if( cbTRGOUTmode->GetSelected() != 2 ) { /// has TRG-OUT
// bit += cbTRGOUTmode->GetSelected() ;
//}else{
// bit += 0x2; /// TRG-OUT (high0impedance) or off
//}
bit += ( cbTRGINCtrl->GetSelected() << 10 ); bit += ( cbTRGINCtrl->GetSelected() << 10 );
bit += ( cbTRGINMezzanines->GetSelected() << 11 ); bit += ( cbTRGINMezzanines->GetSelected() << 11 );

View File

@ -78,33 +78,35 @@ class BoardSetting{
/// Trigger control /// Trigger control
TGCheckButton * cbGbTRGMskCh[8]; TGCheckButton * cbGbTRGMskCh[8];
TGCheckButton * cbTRGValMskCh[8]; TGCheckButton * cbTRGOUTMsk[8];
TGCheckButton * cbTRGOUTMskCh[8];
TGNumberEntry * numMajorCoinWin; TGNumberEntry * numMajorCoinWin;
TGComboBox * cbTRGMODE; TGComboBox * cbTRGOUTMode;
TGComboBox * cbTRGOUTMODE;
TGNumberEntry * GlbMajorLevel; TGNumberEntry * GlbMajorLevel;
TGNumberEntry * TRGMajorLevel;
TGNumberEntry * TRGOUTMajorLevel; TGNumberEntry * TRGOUTMajorLevel;
TGCheckButton * bGLBExtTrigger; TGCheckButton * bGLBExtTrigger;
TGCheckButton * bTRGExtTrigger;
TGCheckButton * bTRGOUTExtTrigger; TGCheckButton * bTRGOUTExtTrigger;
TGCheckButton * bGLBSoftwareTrigger; TGCheckButton * bGLBSoftwareTrigger;
TGCheckButton * bTRGSoftwareTrigger;
TGCheckButton * bTRGOUTSoftwareTrigger; TGCheckButton * bTRGOUTSoftwareTrigger;
TGCheckButton * bTRGValMskLVSDGLB; //TGCheckButton * bTRGValMskLVSDGLB;
TGCheckButton * bTRGValMskLVSDLCL; //TGCheckButton * bTRGValMskLVSDLCL;
TGCheckButton * bEnableExtTRG; TGCheckButton * bEnableExtTRG;
TGNumberEntry * numExtendVetoDelay; TGNumberEntry * numExtendVetoDelay;
/// Trigger Validation Mask
TGCheckButton * cbTRGValMskCh[8][8];
TGComboBox * cbTRGValMODE[8];
TGNumberEntry * TRGValMajorLevel[8];
TGCheckButton * bTRGValExtTrigger[8];
TGCheckButton * bTRGValSoftwareTrigger[8];
/// Front Panel IO Control /// Front Panel IO Control
TGComboBox * cbLEMOIO; TGComboBox * cbLEMOIO;
TGComboBox * cbTRGOUTmode; TGComboBox * cbTRGOUTMODE2;
TGComboBox * cbTRGINCtrl; TGComboBox * cbTRGINCtrl;
TGComboBox * cbTRGINMezzanines; TGComboBox * cbTRGINMezzanines;
TGComboBox * cbAnaMonitor; TGComboBox * cbAnaMonitor;