Compare commits

...

2 Commits

Author SHA1 Message Date
carina@hades 90643460d3 channelSetting to channelSettingPHA 2022-09-23 17:43:30 -04:00
carina@hades 6a64b37e38 boardSetting for PSD 2022-09-23 16:40:59 -04:00
9 changed files with 492 additions and 378 deletions

View File

@ -279,7 +279,7 @@ int Digitizer::ProgramBoard(){
ret |= CAEN_DGTZ_SetRunSynchronizationMode(handle, CAEN_DGTZ_RUN_SYNC_Disabled); ret |= CAEN_DGTZ_SetRunSynchronizationMode(handle, CAEN_DGTZ_RUN_SYNC_Disabled);
ErrorMsg("End of ProgramBoard"); ErrorMsg(__func__);
return ret; return ret;
} }
@ -330,7 +330,7 @@ void Digitizer::ReadData(){
printf("Read Buffer size %d byte, Event Size : %d byte \n", data->nByte, EventSize); printf("Read Buffer size %d byte, Event Size : %d byte \n", data->nByte, EventSize);
if (ret || data->nByte == 0) { if (ret || data->nByte == 0) {
ErrorMsg("ReadData"); ErrorMsg(__func__);
return; return;
} }
@ -376,63 +376,63 @@ void Digitizer::SetChannelMask(uint32_t mask){
channelMask = mask; channelMask = mask;
ret |= CAEN_DGTZ_SetChannelEnableMask(handle, channelMask); ret |= CAEN_DGTZ_SetChannelEnableMask(handle, channelMask);
SaveSettingEditByteByRegister(Register::DPP::ChannelEnableMask); SaveSettingEditByteByRegister(Register::DPP::ChannelEnableMask);
ErrorMsg("SetChannelMask"); ErrorMsg(__func__);
} }
void Digitizer::SetRecordLength(unsigned int ns, int ch){ void Digitizer::SetRecordLength(unsigned int ns, int ch){
WriteRegister( Register::DPP::RecordLength_G, ns / ch2ns / 8 , ch); WriteRegister( Register::DPP::RecordLength_G, ns / ch2ns / 8 , ch);
if( ch >= 0 ) WriteRegister( Register::DPP::RecordLength_G, ns / ch2ns / 8 , ch + int(pow(-1, ch))); if( ch >= 0 ) WriteRegister( Register::DPP::RecordLength_G, ns / ch2ns / 8 , ch + int(pow(-1, ch)));
ErrorMsg("SetRecordLength"); ErrorMsg(__func__);
} }
void Digitizer::SetAggregateOrganization(unsigned int bit){ void Digitizer::SetAggregateOrganization(unsigned int bit){
WriteRegister(Register::DPP::AggregateOrganization, bit & 0x7); WriteRegister(Register::DPP::AggregateOrganization, bit & 0x7);
ErrorMsg("SetAggregateOrganization"); ErrorMsg(__func__);
} }
void Digitizer::SetEventAggregation(unsigned int numEvent, int ch){ void Digitizer::SetEventAggregation(unsigned int numEvent, int ch){
WriteRegister( Register::DPP::NumberEventsPerAggregate_G,numEvent, ch); WriteRegister( Register::DPP::NumberEventsPerAggregate_G,numEvent, ch);
if( ch >= 0 ) WriteRegister( Register::DPP::NumberEventsPerAggregate_G,numEvent, ch + int(pow(-1, ch))); if( ch >= 0 ) WriteRegister( Register::DPP::NumberEventsPerAggregate_G,numEvent, ch + int(pow(-1, ch)));
ErrorMsg("SetEventAggregation"); ErrorMsg(__func__);
} }
void Digitizer::SetMaxAggregatePerBlockTransfer(unsigned int numEvent){ void Digitizer::SetMaxAggregatePerBlockTransfer(unsigned int numEvent){
WriteRegister( Register::DPP::MaxAggregatePerBlockTransfer,numEvent); WriteRegister( Register::DPP::MaxAggregatePerBlockTransfer,numEvent);
ErrorMsg("SetMaxNumberOfAggregatePerBlockTransfer"); ErrorMsg(__func__);
} }
void Digitizer::SetACQControl(uint32_t bit){ void Digitizer::SetACQControl(uint32_t bit){
WriteRegister( Register::DPP::AcquisitionControl, bit); WriteRegister( Register::DPP::AcquisitionControl, bit);
ErrorMsg("SetACQControl"); ErrorMsg(__func__);
} }
void Digitizer::SetGlobalTriggerMask(uint32_t bit){ void Digitizer::SetGlobalTriggerMask(uint32_t bit){
WriteRegister( Register::DPP::GlobalTriggerMask, bit); WriteRegister( Register::DPP::GlobalTriggerMask, bit);
ErrorMsg("SetGlobalTriggerMask"); ErrorMsg(__func__);
} }
void Digitizer::SetFrontPanelTRGOUTMask(uint32_t bit){ void Digitizer::SetFrontPanelTRGOUTMask(uint32_t bit){
WriteRegister( Register::DPP::FrontPanelTRGOUTEnableMask, bit); WriteRegister( Register::DPP::FrontPanelTRGOUTEnableMask, bit);
ErrorMsg("SetFrontPanelTRGOUTMask"); ErrorMsg(__func__);
} }
void Digitizer::SetFrontPanelIOControl(uint32_t bit){ void Digitizer::SetFrontPanelIOControl(uint32_t bit){
WriteRegister( Register::DPP::FrontPanelIOControl, bit); WriteRegister( Register::DPP::FrontPanelIOControl, bit);
ErrorMsg("SetFrontPanelIOControl"); ErrorMsg(__func__);
} }
void Digitizer::SetTriggerValidationMask(uint32_t bit){ void Digitizer::SetTriggerValidationMask(uint32_t bit){
WriteRegister( Register::DPP::TriggerValidationMask, bit); WriteRegister( Register::DPP::TriggerValidationMask, bit);
ErrorMsg("SetTriggerValidationMask"); ErrorMsg(__func__);
} }
void Digitizer::SetInputDynamicRange(unsigned int TwoVol_0_or_halfVol_1, int ch){ WriteRegister( Register::DPP::InputDynamicRange, TwoVol_0_or_halfVol_1, ch); ErrorMsg("SetInputDynamicRange");} void Digitizer::SetInputDynamicRange(unsigned int TwoVol_0_or_halfVol_1, int ch){ WriteRegister( Register::DPP::InputDynamicRange, TwoVol_0_or_halfVol_1, ch); ErrorMsg(__func__);}
void Digitizer::SetPreTriggerSample(unsigned int nSample, int ch) { WriteRegister( Register::DPP::PreTrigger, nSample / 4, ch); ErrorMsg("SetPreTriggerSample");} void Digitizer::SetPreTriggerSample(unsigned int nSample, int ch) { WriteRegister( Register::DPP::PreTrigger, nSample / 4, ch); ErrorMsg(__func__);}
void Digitizer::SetPreTriggerDuration(unsigned int ns, int ch) { WriteRegister( Register::DPP::PreTrigger, ns / ch2ns / 4, ch); ErrorMsg("SetPreTriggerSample");} void Digitizer::SetPreTriggerDuration(unsigned int ns, int ch) { WriteRegister( Register::DPP::PreTrigger, ns / ch2ns / 4, ch); ErrorMsg(__func__);}
void Digitizer::SetDCOffset(float offsetPrecentage, int ch) { WriteRegister( Register::DPP::ChannelDCOffset, uint( 0xFFFF * (1.0-offsetPrecentage)), ch ); ErrorMsg("SetDCOffset");} void Digitizer::SetDCOffset(float offsetPrecentage, int ch) { WriteRegister( Register::DPP::ChannelDCOffset, uint( 0xFFFF * (1.0-offsetPrecentage)), ch ); ErrorMsg(__func__);}
void Digitizer::SetVetoWidth(uint32_t bit, int ch) { WriteRegister( Register::DPP::VetoWidth, bit, ch); ErrorMsg("SetVetoWidth");} void Digitizer::SetVetoWidth(uint32_t bit, int ch) { WriteRegister( Register::DPP::VetoWidth, bit, ch); ErrorMsg(__func__);}
void Digitizer::SetTriggerPolarity(bool RiseingIsZero, int ch ){ void Digitizer::SetTriggerPolarity(bool RiseingIsZero, int ch ){
if( !isConnected ) return; if( !isConnected ) return;
@ -445,7 +445,7 @@ void Digitizer::SetTriggerPolarity(bool RiseingIsZero, int ch ){
}else{ }else{
ret = CAEN_DGTZ_SetTriggerPolarity(handle, ch, CAEN_DGTZ_TriggerPolarity_t(RiseingIsZero)); ret = CAEN_DGTZ_SetTriggerPolarity(handle, ch, CAEN_DGTZ_TriggerPolarity_t(RiseingIsZero));
} }
if( ret != 0 ) ErrorMsg("SetTriggerPolarity"); if( ret != 0 ) ErrorMsg(__func__);
} }
@ -490,7 +490,7 @@ void Digitizer::SetDPPAlgorithmControl(uint32_t bit, int ch){
/// [29] Enable the optimization of the Baseline Restorer to avoid tails in the energy peaks. 0 = disbale, 1 = enable /// [29] Enable the optimization of the Baseline Restorer to avoid tails in the energy peaks. 0 = disbale, 1 = enable
WriteRegister( Register::DPP::DPPAlgorithmControl, bit, ch); WriteRegister( Register::DPP::DPPAlgorithmControl, bit, ch);
if( ret != 0 ) ErrorMsg("SetDPPAlgorithmControl"); if( ret != 0 ) ErrorMsg(__func__);
} }
unsigned int Digitizer::ReadBits(uint32_t address, unsigned int bitLength, unsigned int bitSmallestPos, int ch ){ unsigned int Digitizer::ReadBits(uint32_t address, unsigned int bitLength, unsigned int bitSmallestPos, int ch ){
@ -512,7 +512,7 @@ void Digitizer::SetBits(uint32_t address, unsigned int bitValue, unsigned int bi
bit = (bit & ~bitmask) | (bitValue << bitSmallestPos); bit = (bit & ~bitmask) | (bitValue << bitSmallestPos);
///printf("bit : 0x%x, ch : %d \n", bit, ch); ///printf("bit : 0x%x, ch : %d \n", bit, ch);
WriteRegister(address, bit, ch); WriteRegister(address, bit, ch);
if( ret != 0 ) ErrorMsg("SetBits"); if( ret != 0 ) ErrorMsg(__func__);
} }
int Digitizer::GetChTemperature(int ch){ int Digitizer::GetChTemperature(int ch){
@ -523,7 +523,7 @@ int Digitizer::GetChTemperature(int ch){
uint32_t * temp; uint32_t * temp;
ret |= CAEN_DGTZ_ReadTemperature(handle, ch, temp); ret |= CAEN_DGTZ_ReadTemperature(handle, ch, temp);
if( ret != 0 ) ErrorMsg("GetChTemperature"); if( ret != 0 ) ErrorMsg(__func__);
return temp[0]; return temp[0];
} }

View File

@ -24,7 +24,8 @@ enum MenuIdentifiers{
M_FILE_OPEN, M_FILE_OPEN,
M_EXIT, M_EXIT,
M_TRIGGER_SUMMARY, M_TRIGGER_SUMMARY,
M_CH_SETTING, M_CH_SETTING_PHA,
M_CH_SETTING_PSD,
M_BOARD_SETTINGS, M_BOARD_SETTINGS,
M_PROGRAM_SETTINGS, M_PROGRAM_SETTINGS,
M_FINDPEAKS, M_FINDPEAKS,
@ -63,7 +64,8 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
fMenuDigitizers->AddEntry("&Trigger Summary", M_TRIGGER_SUMMARY); fMenuDigitizers->AddEntry("&Trigger Summary", M_TRIGGER_SUMMARY);
fMenuDigitizers->AddSeparator(); fMenuDigitizers->AddSeparator();
fMenuDigitizers->AddEntry("Digitizer &Settings", M_BOARD_SETTINGS); fMenuDigitizers->AddEntry("Digitizer &Settings", M_BOARD_SETTINGS);
fMenuDigitizers->AddEntry("&Channel Settings", M_CH_SETTING); fMenuDigitizers->AddEntry("&Channel Settings (PHA)", M_CH_SETTING_PHA);
fMenuDigitizers->AddEntry("&Channel Settings (PSD)", M_CH_SETTING_PSD);
fMenuDigitizers->AddSeparator(); fMenuDigitizers->AddSeparator();
fMenuDigitizers->AddEntry("&Program Settings", M_PROGRAM_SETTINGS); fMenuDigitizers->AddEntry("&Program Settings", M_PROGRAM_SETTINGS);
fMenuDigitizers->Connect("Activated(Int_t)", "MainWindow", this, "HandleMenu(Int_t)"); fMenuDigitizers->Connect("Activated(Int_t)", "MainWindow", this, "HandleMenu(Int_t)");
@ -129,15 +131,15 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
///settingsSummary = NULL; ///settingsSummary = NULL;
boardSetting = NULL; boardSetting = NULL;
channelSetting = NULL; channelSettingPHA = NULL;
///scalarPanel = NULL; ///scalarPanel = NULL;
LogMsg("Ready to run."); LogMsg("Ready to run.");
//HandleMenu(M_DIGITIZER_SCAN); //HandleMenu(M_DIGITIZER_SCAN);
// //
//HandleMenu(M_BOARD_SETTINGS); HandleMenu(M_BOARD_SETTINGS);
HandleMenu(M_CH_SETTING); //HandleMenu(M_CH_SETTING_PHA);
} }
MainWindow::~MainWindow() { MainWindow::~MainWindow() {
@ -154,7 +156,7 @@ MainWindow::~MainWindow() {
if( digi != NULL ) delete [] digi; if( digi != NULL ) delete [] digi;
delete boardSetting; delete boardSetting;
delete channelSetting; delete channelSettingPHA;
//delete settingsSummary; //delete settingsSummary;
//delete scalarPanel; //delete scalarPanel;
@ -226,9 +228,9 @@ void MainWindow::HandleMenu(Int_t id){
}break; }break;
///========================= Channel setting ///========================= Channel setting
case M_CH_SETTING: case M_CH_SETTING_PHA:
channelSetting = new ChannelSetting(gClient->GetRoot(), 600, 600, digi, nDigi); channelSettingPHA = new ChannelSettingPHA(gClient->GetRoot(), 600, 600, digi, nDigi, 0);
channelSetting->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)"); channelSettingPHA->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
break; break;
@ -237,6 +239,7 @@ void MainWindow::HandleMenu(Int_t id){
if( boardSetting == NULL ) { if( boardSetting == NULL ) {
boardSetting = new BoardSetting(gClient->GetRoot(), 600, 600, digi, nDigi); boardSetting = new BoardSetting(gClient->GetRoot(), 600, 600, digi, nDigi);
boardSetting->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)"); boardSetting->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
boardSetting->Connect("Haha(Int_t)", "MainWindow", this, "OpenChannelSetting(Int_t)");
}else{ }else{
if ( boardSetting->IsOpen() == false ){ if ( boardSetting->IsOpen() == false ){
boardSetting = new BoardSetting(gClient->GetRoot(), 600, 600, digi, nDigi); boardSetting = new BoardSetting(gClient->GetRoot(), 600, 600, digi, nDigi);
@ -326,6 +329,16 @@ void MainWindow::GoodBye(){
} }
void MainWindow::OpenChannelSetting(Int_t boardID){
printf("#### %s \n", __func__);
//if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ){
channelSettingPHA = new ChannelSettingPHA(gClient->GetRoot(), 600, 600, digi, nDigi, boardID);
channelSettingPHA->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
//}
}
void MainWindow::LogMsg(char * msg){ void MainWindow::LogMsg(char * msg){
time_t now = time(0); time_t now = time(0);

View File

@ -17,7 +17,7 @@
#include "DigitizerPSD.h" #include "DigitizerPSD.h"
#include "boardSetting.h" #include "boardSetting.h"
#include "channelSetting.h" #include "channelSettingPHA.h"
///#include "settingsSummary.h" ///#include "settingsSummary.h"
///#include "scalarPanel.h" ///#include "scalarPanel.h"
@ -55,7 +55,7 @@ private:
static DigitizerPSD ** psd; static DigitizerPSD ** psd;
BoardSetting * boardSetting; BoardSetting * boardSetting;
ChannelSetting * channelSetting; ChannelSettingPHA * channelSettingPHA;
//SettingsSummary * settingsSummary; //SettingsSummary * settingsSummary;
//ScalarPanel * scalarPanel; //ScalarPanel * scalarPanel;
@ -69,6 +69,7 @@ private:
// //
//TGTextEditor * configEditor; //TGTextEditor * configEditor;
public: public:
MainWindow(const TGWindow *p, UInt_t w, UInt_t h); MainWindow(const TGWindow *p, UInt_t w, UInt_t h);
virtual ~MainWindow(); virtual ~MainWindow();
@ -88,7 +89,8 @@ public:
//static void * FillHistogram(void * ptr); /// thread //static void * FillHistogram(void * ptr); /// thread
//void ChangeMod(); //void ChangeMod();
//void ChangeChannel(); //void ChangeChannel();
void OpenChannelSetting(Int_t);
void LogMsg(char * ); void LogMsg(char * );
void GoodBye(); void GoodBye();
}; };

View File

@ -11,7 +11,7 @@ CAENLIBS = -lCAENDigitizer
ROOTLIBS = `root-config --cflags --glibs` ROOTLIBS = `root-config --cflags --glibs`
OBJS = channelSetting.o boardSetting.o ClassDigitizer.o DigitizerPHA.o DigitizerPSD.o FSUDAQ.o OBJS = channelSettingPHA.o boardSetting.o ClassDigitizer.o DigitizerPHA.o DigitizerPSD.o FSUDAQ.o
######################################################################### #########################################################################
@ -55,9 +55,9 @@ boardSetting.o : boardSetting.h boardSetting.cpp
@echo "----------- creating boardSetting.o" @echo "----------- creating boardSetting.o"
$(CC) $(COPTS) -c boardSetting.cpp $(ROOTLIBS) $(CC) $(COPTS) -c boardSetting.cpp $(ROOTLIBS)
channelSetting.o : channelSetting.h channelSetting.cpp channelSettingPHA.o : channelSettingPHA.h channelSettingPHA.cpp
@echo "----------- creating channelSetting.o" @echo "----------- creating channelSettingPHA.o"
$(CC) $(COPTS) -c channelSetting.cpp $(ROOTLIBS) $(CC) $(COPTS) -c channelSettingPHA.cpp $(ROOTLIBS)
#CutsCreator: $(OBJS3) src/CutsCreator.c #CutsCreator: $(OBJS3) src/CutsCreator.c

View File

@ -7,6 +7,8 @@
/// Group register, 2m and 2m+1 channels setting are shared. and the name will have _G as prefix /// Group register, 2m and 2m+1 channels setting are shared. and the name will have _G as prefix
/// Most 0x8XXX registers are common, which share for all channel /// Most 0x8XXX registers are common, which share for all channel
#define GET_NAME(name) #name /// this give out the name, printf("%s", GET_NAME(Register::EventReadOutBuffer));
namespace Register { namespace Register {
const uint32_t EventReadOutBuffer = 0x0000; /// R const uint32_t EventReadOutBuffer = 0x0000; /// R

View File

@ -22,11 +22,9 @@ TString boardSettingName[NUM_BOARD_INFO] = { "Model",
Pixel_t BoardSetting::red = 0; Pixel_t BoardSetting::red = 0;
Pixel_t BoardSetting::blue = 0; Pixel_t BoardSetting::blue = 0;
TGNumberEntry * BoardSetting::boardIDEntry = NULL; TGNumberEntry * BoardSetting::boardIDEntry = NULL;
Digitizer ** BoardSetting::digi = NULL; Digitizer ** BoardSetting::digi = NULL;
DigitizerPHA * BoardSetting::pha = NULL;
DigitizerPSD * BoardSetting::psd = NULL;
TGTextEntry * BoardSetting::txtACQStatus = NULL; TGTextEntry * BoardSetting::txtACQStatus = NULL;
TGTextEntry * BoardSetting::txtACQEventReady = NULL; TGTextEntry * BoardSetting::txtACQEventReady = NULL;
TGTextEntry * BoardSetting::txtACQEventFull = NULL; TGTextEntry * BoardSetting::txtACQEventFull = NULL;
@ -117,10 +115,10 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
} }
} }
TGHorizontalFrame * hRow3 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow3, new TGLayoutHints(kLHintsExpandX)); TGHorizontalFrame * hRow3 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow3, new TGLayoutHints(kLHintsExpandX));
{///========= ACD Status {///========= ACD Status
TGGroupFrame * gAcqStatus = new TGGroupFrame(hRow3, "ACQ Status", kHorizontalFrame); hRow3->AddFrame(gAcqStatus, new TGLayoutHints(kLHintsExpandX)); TGGroupFrame * gAcqStatus = new TGGroupFrame(hRow3, "ACQ Status", kHorizontalFrame); hRow3->AddFrame(gAcqStatus, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
TGHorizontalFrame * hfAcqStatus = new TGHorizontalFrame(gAcqStatus); gAcqStatus->AddFrame(hfAcqStatus, new TGLayoutHints(kLHintsExpandX)); TGHorizontalFrame * hfAcqStatus = new TGHorizontalFrame(gAcqStatus); gAcqStatus->AddFrame(hfAcqStatus, new TGLayoutHints(kLHintsExpandX));
TGVerticalFrame * vAcqStatus1 = new TGVerticalFrame(hfAcqStatus); hfAcqStatus->AddFrame(vAcqStatus1); TGVerticalFrame * vAcqStatus1 = new TGVerticalFrame(hfAcqStatus); hfAcqStatus->AddFrame(vAcqStatus1);
@ -209,7 +207,7 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
} }
{///==========="Readout Status" {///==========="Readout Status"
TGGroupFrame * gReadoutStatus = new TGGroupFrame(hRow3, "Readout Status", kHorizontalFrame); hRow3->AddFrame(gReadoutStatus, new TGLayoutHints( kLHintsExpandY, 5, 5, 0, 0) ); TGGroupFrame * gReadoutStatus = new TGGroupFrame(hRow3, "Readout Status", kHorizontalFrame); hRow3->AddFrame(gReadoutStatus, new TGLayoutHints( kLHintsExpandY, 0, 0, 0, 0) );
TGVerticalFrame * vReadoutStatus = new TGVerticalFrame(gReadoutStatus); gReadoutStatus->AddFrame(vReadoutStatus, new TGLayoutHints(kLHintsCenterY | kLHintsExpandY, 5, 5, 10, 0)); TGVerticalFrame * vReadoutStatus = new TGVerticalFrame(gReadoutStatus); gReadoutStatus->AddFrame(vReadoutStatus, new TGLayoutHints(kLHintsCenterY | kLHintsExpandY, 5, 5, 10, 0));
@ -229,6 +227,14 @@ 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 * bOpenChannelSetting = new TGTextButton(hRow0, "Open Channel Setting"); hRow0->AddFrame(bOpenChannelSetting, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
bOpenChannelSetting->SetHeight(40);
bOpenChannelSetting->Connect("Clicked()", "BoardSetting", this, "OpenChannelSetting()");
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
@ -249,7 +255,7 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
bDecimateWF = new TGCheckButton(vBdCfg1, "Decimate WaveForm", 1); vBdCfg1->AddFrame(bDecimateWF, haha); bDecimateWF = new TGCheckButton(vBdCfg1, "Decimate WaveForm", 1); vBdCfg1->AddFrame(bDecimateWF, haha);
bDecimateWF->SetState(kButtonUp); bDecimateWF->SetState(kButtonUp);
bDecimateWF->Connect("Clicked()", "BoardSetting", this, "SetBoardConfiguration()"); bDecimateWF->Connect("Clicked()", "BoardSetting", this, "SetBoardConfiguration()");
bWFRecord = new TGCheckButton(vBdCfg1, "Record WaveFrom", 1); vBdCfg1->AddFrame(bWFRecord, haha); bWFRecord = new TGCheckButton(vBdCfg1, "Record WaveFrom", 1); vBdCfg1->AddFrame(bWFRecord, haha);
bWFRecord->SetState(kButtonUp); bWFRecord->SetState(kButtonUp);
bWFRecord->Connect("Clicked()", "BoardSetting", this, "SetBoardConfiguration()"); bWFRecord->Connect("Clicked()", "BoardSetting", this, "SetBoardConfiguration()");
@ -321,24 +327,10 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
TGLabel * lbDP2 = new TGLabel(vBdCfg_Probe_Label, "Digi. Prb. 2"); vBdCfg_Probe_Label->AddFrame(lbDP2, kaka); TGLabel * lbDP2 = new TGLabel(vBdCfg_Probe_Label, "Digi. Prb. 2"); vBdCfg_Probe_Label->AddFrame(lbDP2, kaka);
cbDP2 = new TGComboBox(vBdCfg_Probe_CBox, "Digital. Pb.", 1); vBdCfg_Probe_CBox->AddFrame(cbDP2); cbDP2 = new TGComboBox(vBdCfg_Probe_CBox, "Digital. Pb.", 1); vBdCfg_Probe_CBox->AddFrame(cbDP2);
cbDP2->EnableTextInput(false); cbDP2->EnableTextInput(false);
cbDP2->AddEntry("Peaking", 0); cbDP2->AddEntry("Trigger", 0);
cbDP2->AddEntry("Armed (Triggered)", 1);
cbDP2->AddEntry("Peak Run", 2);
cbDP2->AddEntry("Pile-Up", 3);
cbDP2->AddEntry("Peaking", 4);
cbDP2->AddEntry("TRG Validation Win.", 5);
cbDP2->AddEntry("Baseline freeze", 6);
cbDP2->AddEntry("TRG holdoff", 7);
cbDP2->AddEntry("TRG Validation", 8);
cbDP2->AddEntry("ACQ busy", 9);
cbDP2->AddEntry("Zero Cross", 10);
cbDP2->AddEntry("Ext. TRG", 11);
cbDP2->AddEntry("Memory full", 12);
cbDP2->Resize(150, 20); cbDP2->Resize(150, 20);
cbDP2->SetEnabled(false);
cbDP2->Connect("Changed()", "BoardSetting", this, "SetBoardConfiguration()"); cbDP2->Connect("Changed()", "BoardSetting", this, "SetBoardConfiguration()");
TGHorizontalFrame * hframeBdCfg3 = new TGHorizontalFrame(vBdCfg0); vBdCfg0->AddFrame(hframeBdCfg3, new TGLayoutHints( kLHintsCenterX, 5, 5, 5, 5)); TGHorizontalFrame * hframeBdCfg3 = new TGHorizontalFrame(vBdCfg0); vBdCfg0->AddFrame(hframeBdCfg3, new TGLayoutHints( kLHintsCenterX, 5, 5, 5, 5));
TGVerticalFrame * vBdCfga_label = new TGVerticalFrame(hframeBdCfg3); hframeBdCfg3->AddFrame(vBdCfga_label, new TGLayoutHints( kLHintsLeft, 5, 5, 10, 0) ); TGVerticalFrame * vBdCfga_label = new TGVerticalFrame(hframeBdCfg3); hframeBdCfg3->AddFrame(vBdCfga_label, new TGLayoutHints( kLHintsLeft, 5, 5, 10, 0) );
@ -633,7 +625,7 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
cbAnaMonitor->AddEntry("Voltage Level", 4); cbAnaMonitor->AddEntry("Voltage Level", 4);
cbAnaMonitor->Resize(150, 20); cbAnaMonitor->Resize(150, 20);
cbAnaMonitor->Connect("Changed()", "BoardSetting", this, "SetAnalogMonitorMode()"); cbAnaMonitor->Connect("Changed()", "BoardSetting", this, "SetAnalogMonitorMode()");
//cbAnaMonitor->Connect("Changed()", "ChannelSetting", this, "ChangePolarity()"); //Example to call other class //cbAnaMonitor->Connect("Changed()", "ChannelSettingPHA", this, "ChangePolarity()"); //Example to call other class
///"Buffer Occupancy Gain ///"Buffer Occupancy Gain
TGLabel * lbBufferOccpGain = new TGLabel(vFrontIOCtrl_label, "Buffer Occupancy Gain"); vFrontIOCtrl_label->AddFrame(lbBufferOccpGain, haha); TGLabel * lbBufferOccpGain = new TGLabel(vFrontIOCtrl_label, "Buffer Occupancy Gain"); vFrontIOCtrl_label->AddFrame(lbBufferOccpGain, haha);
@ -716,8 +708,8 @@ BoardSetting::~BoardSetting(){
for( int i = 0; i < nDigi; i++) digi[i] = 0; for( int i = 0; i < nDigi; i++) digi[i] = 0;
pha = 0; //pha = 0;
psd = 0; //psd = 0;
fMain->Cleanup(); fMain->Cleanup();
delete fMain; delete fMain;
@ -729,7 +721,6 @@ void BoardSetting::LogMsg(TString msg){
} }
void * BoardSetting::ReadStatus(void * ptr){ void * BoardSetting::ReadStatus(void * ptr){
if( digi == NULL ) return 0; if( digi == NULL ) return 0;
int pauseTime = 1000; /// msec int pauseTime = 1000; /// msec
@ -737,14 +728,14 @@ void * BoardSetting::ReadStatus(void * ptr){
if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ) { if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ) {
pha = dynamic_cast<DigitizerPHA*> (digi[boardID]); //pha = dynamic_cast<DigitizerPHA*> (digi[boardID]);
//while( digi[boardID]->isACQRunning() == false ){ //while( digi[boardID]->isACQRunning() == false ){
while( isOpened ){ while( isOpened ){
printf("=========== readStatus () for PHA\n"); printf("=========== %s for PHA\n", __func__);
/// ACQ Status /// ACQ Status
uint32_t temp = pha->ReadRegister(Register::DPP::AcquisitionStatus); uint32_t temp = digi[boardID]->ReadRegister(Register::DPP::AcquisitionStatus);
txtACQStatus ->SetText( ((temp >> 2) & 0x1) == 0 ? "ACQ is stopped" : "ACQ is Running", false); txtACQStatus->SetTextColor( ((temp >> 2) & 0x1) == 0 ? 1 : blue); txtACQStatus ->SetText( ((temp >> 2) & 0x1) == 0 ? "ACQ is stopped" : "ACQ is Running", false); txtACQStatus->SetTextColor( ((temp >> 2) & 0x1) == 0 ? 1 : blue);
txtACQEventReady ->SetText( ((temp >> 3) & 0x1) == 0 ? "no Event" : "Has Events", false); txtACQEventReady->SetTextColor( ((temp >> 3) & 0x1) == 0 ? 1 : blue); txtACQEventReady ->SetText( ((temp >> 3) & 0x1) == 0 ? "no Event" : "Has Events", false); txtACQEventReady->SetTextColor( ((temp >> 3) & 0x1) == 0 ? 1 : blue);
@ -764,7 +755,7 @@ void * BoardSetting::ReadStatus(void * ptr){
txtACQTemp3->SetText( ((temp >> 23) & 0x1) == 0 ? "< 70" : "> 70", false); txtACQTemp3->SetTextColor( ((temp >> 23) & 0x1) == 0 ? 1 : red); txtACQTemp3->SetText( ((temp >> 23) & 0x1) == 0 ? "< 70" : "> 70", false); txtACQTemp3->SetTextColor( ((temp >> 23) & 0x1) == 0 ? 1 : red);
/// Redaout Status /// Redaout Status
temp = pha->ReadRegister(Register::DPP::ReadoutStatus); temp = digi[boardID]->ReadRegister(Register::DPP::ReadoutStatus);
if( (temp & 0x1) == 1 ){ if( (temp & 0x1) == 1 ){
txtEventReady->SetText( "Event Ready" , false); txtEventReady->SetTextColor(blue); txtEventReady->SetText( "Event Ready" , false); txtEventReady->SetTextColor(blue);
}else{ }else{
@ -786,11 +777,11 @@ void * BoardSetting::ReadStatus(void * ptr){
usleep(pauseTime*1000); usleep(pauseTime*1000);
} }
pha = 0;
} }
} }
void BoardSetting::ChangeBoard(){ void BoardSetting::ChangeBoard(){
printf("=== %s\n", __func__);
if( digi == NULL ) { if( digi == NULL ) {
printf("no didgitizers\n"); printf("no didgitizers\n");
@ -831,121 +822,216 @@ void BoardSetting::ChangeBoard(){
} }
///================ Board Failure Status ///================ Board Failure Status
unsigned int tempBits;
tempBits = digi[boardID]->ReadRegister(Register::BoardFailureStatus);
if( (tempBits & 0x10) == 0 ) {
enPLLStatus->SetText( "OK" , false); enPLLStatus->SetTextColor(1);
}else{
enPLLStatus->SetText( "Lost Lock" , false); enPLLStatus->SetTextColor(red);
}
if( (tempBits & 0x20) == 0 ) {
enTempStatus->SetText( "OK (<70)" , false); enTempStatus->SetTextColor(1);
}else{
enTempStatus->SetText( "Failure" , false); enTempStatus->SetTextColor(red);
}
if( (tempBits & 0x40) == 0 ) {
enADCPwrStatus->SetText( "OK", false); enADCPwrStatus->SetTextColor(1);
}else{
enADCPwrStatus->SetText( "Failure", false); enADCPwrStatus->SetTextColor(red);
}
cbAggOrg->Select( digi[boardID]->ReadRegister(Register::DPP::AggregateOrganization) , false);
numAggBLT->SetNumber( digi[boardID]->ReadRegister(Register::DPP::MaxAggregatePerBlockTransfer) , false);
cbFanCtrl->Select( digi[boardID]->ReadRegister(Register::DPP::FanSpeedControl) , false);
numRunStartStopDelay->SetNumber( digi[boardID]->ReadRegister(Register::DPP::RunStartStopDelay), false);
bEnableExtTRG->SetState( (digi[boardID]->ReadRegister(Register::DPP::DisableExternalTrigger) & 0x1) ? kButtonDown : kButtonUp, false);
numExtendVetoDelay->SetNumber( digi[boardID]->ReadRegister(Register::DPP::ExtendedVetoDelay) , false);
cbAnaMonitor->Select( digi[boardID]->ReadRegister(Register::DPP::AnalogMonitorMode) & 0x7 , false);
numBufferOccpGain->SetNumber( digi[boardID]->ReadRegister(Register::DPP::BufferOccupancyGain) & 0xf, false);
/// ACQ Control
//digi[boardID]->PrintRegister(Register::DPP::AcquisitionControl, "AcquisitionControl");
tempBits = digi[boardID]->ReadRegister(Register::DPP::AcquisitionControl);
cbAcqMode->Select( tempBits & 0x3 , false);
bAcqArm->SetState( ((tempBits >> 2) & 0x1) ? kButtonDown : kButtonUp, false);
cbPLLref->Select( ((tempBits >> 6) & 0x1), false);
/// Global Trigger Mask
tempBits = digi[boardID]->ReadRegister(Register::DPP::GlobalTriggerMask);
for( int i = 0; i < 8; i++){
cbGbTRGMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
}
numMajorCoinWin->SetNumber( (tempBits >> 20 ) & 0x7 , false);
GlbMajorLevel->SetNumber( ( tempBits >> 24) & 0x7 , false);
bGLBExtTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bGLBSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
/// Trigger Validation Mask
tempBits = digi[boardID]->ReadRegister(Register::DPP::TriggerValidationMask);
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]
tempBits = digi[boardID]->ReadRegister(Register::DPP::FrontPanelTRGOUTEnableMask);
for( int i = 0; i < 8; i++){
cbTRGOUTMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown, false );
}
cbTRGOUTMODE->Select( ( tempBits >> 8 ) & 0x3, false) ;
TRGOUTMajorLevel->SetNumber( ( tempBits >> 10 ) & 0x7, false);
bTRGOUTExtTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bTRGOUTSoftwareTrigger->SetState( (( tempBits >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
/// Front Panel I/O Control, PHA = PSD only for bit[19:0]
tempBits = digi[boardID]->ReadRegister(Register::DPP::FrontPanelIOControl);
cbLEMOIO->Select( tempBits & 0x1 , false);
if( ((tempBits >> 1) & 0x1 ) == 0 ) {
cbTRGOUTmode->Select( 1 , false);
}else{
cbTRGOUTmode->Select( (tempBits >> 14) & 0x3F , false);
}
cbTRGINCtrl->Select( (tempBits >> 10) & 0x1 , false);
cbTRGINMezzanines->Select( (tempBits >> 11) & 0x1 , false);
/// Readout Control
tempBits = digi[boardID]->ReadRegister(Register::DPP::ReadoutControl);
cbVMEInterrupLevel->Select( tempBits & 0x3 , false);
bOpticalLinkInterrupt->SetState( (( tempBits >> 3 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bEventAligned->SetState( (( tempBits >> 4 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bVMEAlogn64Mode->SetState( (( tempBits >> 5 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bInteruptReleaseMode->SetState( (( tempBits >> 7 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bEnableExtendedBlockTransfer->SetState( (( tempBits >> 8 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ) { if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ) {
pha = dynamic_cast<DigitizerPHA*> (digi[boardID]); bDecimateWF->SetEnabled(true);
unsigned int temp = pha->ReadRegister(Register::BoardFailureStatus); cbAP1->RemoveAll();
cbAP1->AddEntry("Input", 0);
cbAP1->AddEntry("RC-CR (1st derivative)", 1);
cbAP1->AddEntry("RC-CR2 (2st derivative)", 2);
cbAP1->AddEntry("Trapezoid", 3);
if( (temp & 0x10) == 0 ) { cbAP2->SetEnabled(true);
enPLLStatus->SetText( "OK" , false); enPLLStatus->SetTextColor(1); cbAP2->RemoveAll();
}else{ cbAP2->AddEntry("Input", 0);
enPLLStatus->SetText( "Lost Lock" , false); enPLLStatus->SetTextColor(red); cbAP2->AddEntry("Threshold", 1);
} cbAP2->AddEntry("Trapezoid - Baseline", 2);
cbAP2->AddEntry("Baseline", 3);
if( (temp & 0x20) == 0 ) { cbDP1->RemoveAll();
enTempStatus->SetText( "OK (<70)" , false); enTempStatus->SetTextColor(1); cbDP1->AddEntry("Peaking", 0);
}else{ cbDP1->AddEntry("Armed (Triggered)", 1);
enTempStatus->SetText( "Failure" , false); enTempStatus->SetTextColor(red); cbDP1->AddEntry("Peak Run", 2);
} cbDP1->AddEntry("Pile-Up", 3);
cbDP1->AddEntry("Peaking", 4);
cbDP1->AddEntry("TRG Validation Win.", 5);
cbDP1->AddEntry("Baseline freeze", 6);
cbDP1->AddEntry("TRG holdoff", 7);
cbDP1->AddEntry("TRG Validation", 8);
cbDP1->AddEntry("ACQ busy", 9);
cbDP1->AddEntry("Zero Cross", 10);
cbDP1->AddEntry("Ext. TRG", 11);
cbDP1->AddEntry("Memory full", 12);
if( (temp & 0x40) == 0 ) { cbDP2->RemoveAll();
enADCPwrStatus->SetText( "OK", false); enADCPwrStatus->SetTextColor(1); cbDP2->AddEntry("Trigger", 0);
}else{
enADCPwrStatus->SetText( "Failure", false); enADCPwrStatus->SetTextColor(red);
}
//pha->PrintBoardConfiguration();
temp = pha->ReadRegister(Register::DPP::BoardConfiguration);
bAutoDataFlush->SetState( (temp & 0x1) ? kButtonDown : kButtonUp, false);
bDecimateWF->SetState( ((temp >> 1) & 0x1) ? kButtonDown : kButtonUp, false );
bWFRecord->SetState( ((temp >> 16) & 0x1) ? kButtonDown : kButtonUp, false );
bTrigPropa->SetState( ((temp >> 2) & 0x1) ? kButtonDown : kButtonUp, false );
bExtrac2->SetState( ((temp >> 17) & 0x1) ? kButtonDown : kButtonUp, false );
bDualTrace->SetState( ((temp >> 11) & 0x1) ? kButtonDown : kButtonUp, false );
cbAP1->Select( ((temp >> 12) & 0x3) , false);
cbAP2->Select( ((temp >> 14) & 0x3) , false);
cbDP1->Select( ((temp >> 20) & 0x7) , false);
cbAggOrg->Select( pha->ReadRegister(Register::DPP::AggregateOrganization) , false);
numAggBLT->SetNumber( pha->ReadRegister(Register::DPP::MaxAggregatePerBlockTransfer) , false);
cbFanCtrl->Select( pha->ReadRegister(Register::DPP::FanSpeedControl) , false);
//pha->PrintACQControl();
temp = pha->ReadRegister(Register::DPP::AcquisitionControl);
cbAcqMode->Select( temp & 0x3 , false);
bAcqArm->SetState( ((temp >> 2) & 0x1) ? kButtonDown : kButtonUp, false);
cbPLLref->Select( ((temp >> 6) & 0x1), false);
numRunStartStopDelay->SetNumber( pha->ReadRegister(Register::DPP::RunStartStopDelay), false);
/// Global Trigger Mask
temp = pha->ReadRegister(Register::DPP::GlobalTriggerMask);
for( int i = 0; i < 8; i++){
cbGbTRGMskCh[i]->SetState( ((temp >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
}
numMajorCoinWin->SetNumber( (temp >> 20 ) & 0x7 , false);
GlbMajorLevel->SetNumber( ( temp >> 24) & 0x7 , false);
bGLBExtTrigger->SetState( (( temp >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bGLBSoftwareTrigger->SetState( (( temp >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
/// Trigger Validation Mask cbDP2->SetEnabled(false);
temp = pha->ReadRegister(Register::DPP::TriggerValidationMask); cbDP2->Select(-1, false);
for( int i = 0; i < 8; i++){
cbTRGValMskCh[i]->SetState( ((temp >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
}
cbTRGMODE->Select( ( temp >> 8 ) & 0x3, false) ;
TRGMajorLevel->SetNumber( ( temp >> 10 ) & 0x3, false);
bTRGExtTrigger->SetState( (( temp >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bTRGSoftwareTrigger->SetState( (( temp >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
/// Front Panel TRG-OUT Enable Mask
temp = pha->ReadRegister(Register::DPP::FrontPanelTRGOUTEnableMask);
for( int i = 0; i < 8; i++){
cbTRGOUTMskCh[i]->SetState( ((temp >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown, false );
}
cbTRGOUTMODE->Select( ( temp >> 8 ) & 0x3, false) ;
TRGOUTMajorLevel->SetNumber( ( temp >> 10 ) & 0x7, false);
bTRGOUTExtTrigger->SetState( (( temp >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bTRGOUTSoftwareTrigger->SetState( (( temp >> 30) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
bEnableExtTRG->SetState( (pha->ReadRegister(Register::DPP::DisableExternalTrigger) & 0x1) ? kButtonDown : kButtonUp, false); /// Board Configuration
//digi[boardID]->PrintRegister(Register::DPP::BoardConfiguration, "BoardConfiguration");
tempBits = digi[boardID]->ReadRegister(Register::DPP::BoardConfiguration);
numExtendVetoDelay->SetNumber( pha->ReadRegister(Register::DPP::ExtendedVetoDelay) , false); bAutoDataFlush->SetState( (tempBits & 0x1) ? kButtonDown : kButtonUp, false);
bDecimateWF->SetState( ((tempBits >> 1) & 0x1) ? kButtonDown : kButtonUp, false );
bWFRecord->SetState( ((tempBits >> 16) & 0x1) ? kButtonDown : kButtonUp, false );
bTrigPropa->SetState( ((tempBits >> 2) & 0x1) ? kButtonDown : kButtonUp, false );
bExtrac2->SetState( ((tempBits >> 17) & 0x1) ? kButtonDown : kButtonUp, false );
bDualTrace->SetState( ((tempBits >> 11) & 0x1) ? kButtonDown : kButtonUp, false );
cbAP1->Select( ((tempBits >> 12) & 0x3) , false);
cbAP2->Select( ((tempBits >> 14) & 0x3) , false);
cbDP1->Select( ((tempBits >> 20) & 0x7) , false);
/// Front Panel I/O Control
temp = pha->ReadRegister(Register::DPP::FrontPanelIOControl);
cbLEMOIO->Select( temp & 0x1 , false);
if( ((temp >> 1) & 0x1 ) == 0 ) {
cbTRGOUTmode->Select( 1 , false);
}else{
cbTRGOUTmode->Select( (temp >> 14) & 0x3F , false);
}
cbTRGINCtrl->Select( (temp >> 10) & 0x1 , false);
cbTRGINMezzanines->Select( (temp >> 11) & 0x1 , false);
cbAnaMonitor->Select( pha->ReadRegister(Register::DPP::AnalogMonitorMode) & 0x7 , false);
numBufferOccpGain->SetNumber( pha->ReadRegister(Register::DPP::BufferOccupancyGain) & 0xf, false);
/// Readout Control
temp = pha->ReadRegister(Register::DPP::ReadoutControl);
cbVMEInterrupLevel->Select( temp & 0x3 , false);
bOpticalLinkInterrupt->SetState( (( temp >> 3 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bEventAligned->SetState( (( temp >> 4 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bVMEAlogn64Mode->SetState( (( temp >> 5 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bInteruptReleaseMode->SetState( (( temp >> 7 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
bEnableExtendedBlockTransfer->SetState( (( temp >> 8 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
pha = NULL; ///unlink the pointer
}else if( digi[boardID]->GetDPPType() == V1730_DPP_PSD_CODE ) { }else if( digi[boardID]->GetDPPType() == V1730_DPP_PSD_CODE ) {
bDecimateWF->SetEnabled(false);
cbDP2->SetEnabled(true);
}else{ ///========== disable all others cbAP1->RemoveAll();
bAutoDataFlush->SetEditable(false); cbAP1->AddEntry("Input", 0);
cbAP1->AddEntry("CFD", 1);
cbAP1->AddEntry("Input", 2);
cbAP2->SetEnabled(false);
cbAP2->RemoveAll();
cbAP2->AddEntry("N/A", -1);
cbAP2->AddEntry("Baseline", 0);
cbAP2->AddEntry("CFD", 1);
cbDP1->RemoveAll();
cbDP1->AddEntry("Long Gate", 0);
cbDP1->AddEntry("Over Threshold", 1);
cbDP1->AddEntry("Shaped TRG", 2);
cbDP1->AddEntry("TRG Val. Accep. Win.", 3);
cbDP1->AddEntry("Pile Up", 4);
cbDP1->AddEntry("Coincidence", 5);
cbDP1->AddEntry("Trigger", 7);
cbDP2->RemoveAll();
cbDP2->AddEntry("Short Gate", 0);
cbDP2->AddEntry("Over Threshold", 1);
cbDP2->AddEntry("TRG Validation", 2);
cbDP2->AddEntry("TRG Holdoff", 3);
cbDP2->AddEntry("PileUp Trigger", 4);
cbDP2->AddEntry("PSD Cut hight", 5);
cbDP2->AddEntry("Baseline freeze", 6);
cbDP2->AddEntry("Trigger", 7);
tempBits = digi[boardID]->ReadRegister(Register::DPP::BoardConfiguration);
bAutoDataFlush->SetState( (tempBits & 0x1) ? kButtonDown : kButtonUp, false);
bTrigPropa->SetState( ((tempBits >> 2) & 0x1) ? kButtonDown : kButtonUp, false );
if( ((tempBits >> 11) & 0x1) == 1 ) { /// Dual Trace
bDualTrace->SetState(kButtonDown , false );
switch ((tempBits >> 12) & 0x3) {
case 0 : {
cbAP1->Select( 0, false);
cbAP2->Select( 0, false);
}; break;
case 1 : {
cbAP1->Select( 1, false);
cbAP2->Select( 0, false);
}; break;
case 2 : {
cbAP1->Select( 2, false);
cbAP2->Select( 1, false);
}; break;
}
}else{
bDualTrace->SetState( kButtonUp, false );
cbAP1->Select( ((tempBits >> 12) & 0x3) , false);
cbAP2->Select(-1, false);
}
bWFRecord->SetState( ((tempBits >> 16) & 0x1) ? kButtonDown : kButtonUp, false );
bExtrac2->SetState( ((tempBits >> 17) & 0x1) ? kButtonDown : kButtonUp, false );
cbDP1->Select( ((tempBits >> 23) & 0x7) , false);
cbDP2->Select( ((tempBits >> 26) & 0x7) , false);
} }
@ -954,8 +1040,20 @@ void BoardSetting::ChangeBoard(){
//################################################ Change Settings //################################################ Change Settings
void BoardSetting::OpenChannelSetting(){
printf("=== %s\n", __func__);
Int_t boardID = boardIDEntry->GetNumber();
Haha(boardID);
}
void BoardSetting::Haha(Int_t boardID){ /// this is for sending signal to mainwindow to open channel setting for the board
printf("=== %s\n", __func__);
Emit("Haha(Int_t)", boardID);
}
void BoardSetting::ResetSettingToDefault(){ /// same for PHA and PSD void BoardSetting::ResetSettingToDefault(){ /// same for PHA and PSD
printf("============== ResetSettingToDefault() \n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -963,7 +1061,7 @@ void BoardSetting::ResetSettingToDefault(){ /// same for PHA and PSD
} }
void BoardSetting::ClearBuffer(){ /// same for PHA and PSD void BoardSetting::ClearBuffer(){ /// same for PHA and PSD
printf("============== ClearBuffer() \n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -971,7 +1069,7 @@ void BoardSetting::ClearBuffer(){ /// same for PHA and PSD
} }
void BoardSetting::SetBoardConfiguration(){ void BoardSetting::SetBoardConfiguration(){
printf("============== SetBoardConfiguration() \n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -979,13 +1077,18 @@ void BoardSetting::SetBoardConfiguration(){
if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ) { if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ) {
uint32_t bit = (3 << 18); /// timestamp and energy recording uint32_t bit = (3 << 18); /// timestamp and energy recording
bit += (18 << 3) ; /// Reserved must be 0010010 for bit[10:3]
if( bAutoDataFlush->GetState() == kButtonDown ) bit += 1; if( bAutoDataFlush->GetState() == kButtonDown ) bit += 1;
if( bDecimateWF->GetState() == kButtonDown ) bit += (1 << 1); if( bDecimateWF->GetState() == kButtonDown ) bit += (1 << 1);
if( bWFRecord->GetState() == kButtonDown ) bit += ( 1 << 16); if( bWFRecord->GetState() == kButtonDown ) bit += ( 1 << 16);
if( bTrigPropa->GetState() == kButtonDown ) bit += ( 1 << 2); if( bTrigPropa->GetState() == kButtonDown ) bit += ( 1 << 2);
if( bExtrac2->GetState() == kButtonDown ) bit += ( 1 << 17); if( bExtrac2->GetState() == kButtonDown ) bit += ( 1 << 17);
if( bDualTrace->GetState() == kButtonDown ) bit += ( 1 << 11); if( bDualTrace->GetState() == kButtonDown ) {
bit += ( 1 << 11);
cbAP2->SetEnabled(true);
}else{
cbAP2->SetEnabled(false);
}
bit += (cbAP1->GetSelected() << 12); bit += (cbAP1->GetSelected() << 12);
bit += (cbAP2->GetSelected() << 14); bit += (cbAP2->GetSelected() << 14);
bit += (cbDP1->GetSelected() << 20); bit += (cbDP1->GetSelected() << 20);
@ -994,27 +1097,27 @@ void BoardSetting::SetBoardConfiguration(){
if( digi[boardID]->GetDPPType() == V1730_DPP_PSD_CODE ) { if( digi[boardID]->GetDPPType() == V1730_DPP_PSD_CODE ) {
//uint32_t bit = (3 << 18); /// timestamp and energy recording uint32_t bit = (3 << 18); /// timestamp and energy recording
//if( bAutoDataFlush->GetState() == kButtonDown ) bit += 1; bit += (18 << 3) ; /// Reserved must be 0010010 for bit[10:3]
//if( bDecimateWF->GetState() == kButtonDown ) bit += (1 << 1); if( bAutoDataFlush->GetState() == kButtonDown ) bit += 1;
//if( bWFRecord->GetState() == kButtonDown ) bit += ( 1 << 16); if( bDecimateWF->GetState() == kButtonDown ) bit += (1 << 1);
//if( bTrigPropa->GetState() == kButtonDown ) bit += ( 1 << 2); if( bWFRecord->GetState() == kButtonDown ) bit += ( 1 << 16);
//if( bExtrac2->GetState() == kButtonDown ) bit += ( 1 << 17); if( bTrigPropa->GetState() == kButtonDown ) bit += ( 1 << 2);
//if( bDualTrace->GetState() == kButtonDown ) bit += ( 1 << 11); if( bExtrac2->GetState() == kButtonDown ) bit += ( 1 << 17);
//
//bit += (cbAP1->GetSelected() << 12); if( bDualTrace->GetState() == kButtonDown ) bit += ( 1 << 11);
//bit += (cbAP2->GetSelected() << 14); bit += (cbAP1->GetSelected() << 12);
//bit += (cbDP1->GetSelected() << 20); bit += (cbDP1->GetSelected() << 23);
bit += (cbDP2->GetSelected() << 26);
} }
printf("bit : 0x%x \n", bit); printf("bit : 0x%x \n", bit);
digi[boardID]->WriteRegister(Register::DPP::BoardConfiguration, bit); digi[boardID]->WriteRegister(Register::DPP::BoardConfiguration, bit);
} }
void BoardSetting::SetAggregateOrganization(){ /// same for PHA and PSD void BoardSetting::SetAggregateOrganization(){ /// same for PHA and PSD
printf("========== SetAggregateOrganization, %d \n", cbAggOrg->GetSelected()); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1023,7 +1126,7 @@ void BoardSetting::SetAggregateOrganization(){ /// same for PHA and PSD
} }
void BoardSetting::SetReadOutAggregate(){ /// same for PHA and PSD void BoardSetting::SetReadOutAggregate(){ /// same for PHA and PSD
printf("========== SetReadOutAggregate, %d \n", (int) numAggBLT->GetNumber()); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1032,7 +1135,7 @@ void BoardSetting::SetReadOutAggregate(){ /// same for PHA and PSD
} }
void BoardSetting::SetFanSpeedControl(){ /// same for PHA and PSD void BoardSetting::SetFanSpeedControl(){ /// same for PHA and PSD
printf("============== SetFanSpeedControl() \n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1040,7 +1143,7 @@ void BoardSetting::SetFanSpeedControl(){ /// same for PHA and PSD
} }
void BoardSetting::SetACQControl(){ /// same for PHA and PSD void BoardSetting::SetACQControl(){ /// same for PHA and PSD
printf("========== SetACQControl()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1057,21 +1160,21 @@ void BoardSetting::SetACQControl(){ /// same for PHA and PSD
void BoardSetting::SendSoftwareTriggerSignal(){ /// same for PHA and PSD void BoardSetting::SendSoftwareTriggerSignal(){ /// same for PHA and PSD
printf("========== SendSoftwareTriggerSignal()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
digi[boardID]->WriteRegister(Register::DPP::SoftwareTrigger, 1 ); digi[boardID]->WriteRegister(Register::DPP::SoftwareTrigger, 1 );
} }
void BoardSetting::SendSoftwareClockSyncSignal(){ /// same for PHA and PSD void BoardSetting::SendSoftwareClockSyncSignal(){ /// same for PHA and PSD
printf("========== SendSoftwareClockSyncSignal()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
digi[boardID]->WriteRegister(Register::DPP::SoftwareClockSync, 1 ); digi[boardID]->WriteRegister(Register::DPP::SoftwareClockSync, 1 );
} }
void BoardSetting::SetRunStartStopDelay(){ /// same for PHA and PSD void BoardSetting::SetRunStartStopDelay(){ /// same for PHA and PSD
printf("========== SetRunStartStopDelay()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1079,7 +1182,7 @@ void BoardSetting::SetRunStartStopDelay(){ /// same for PHA and PSD
} }
void BoardSetting::SetGlobalTriggerMask(){ /// same for PHA and PSD void BoardSetting::SetGlobalTriggerMask(){ /// same for PHA and PSD
printf("========== SetGlobalTriggerMask()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1096,7 +1199,7 @@ void BoardSetting::SetGlobalTriggerMask(){ /// same for PHA and PSD
} }
void BoardSetting::SetTriggerValidMask(){ /// same for PHA and PSD void BoardSetting::SetTriggerValidMask(){ /// same for PHA and PSD
printf("========== SetTriggerValidMask()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1113,7 +1216,7 @@ void BoardSetting::SetTriggerValidMask(){ /// same for PHA and PSD
} }
void BoardSetting::SetTRGOUTMask(){ /// same for PHA and PSD void BoardSetting::SetTRGOUTMask(){ /// same for PHA and PSD
printf("========== SetTRGOUTMask()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1129,7 +1232,7 @@ void BoardSetting::SetTRGOUTMask(){ /// same for PHA and PSD
digi[boardID]->WriteRegister(Register::DPP::FrontPanelTRGOUTEnableMask, bit ); digi[boardID]->WriteRegister(Register::DPP::FrontPanelTRGOUTEnableMask, bit );
} }
void BoardSetting::SetEnableExternalTrigger(){ /// same for PHA and PSD void BoardSetting::SetEnableExternalTrigger(){ /// same for PHA and PSD
printf("========== SetTRGOUTMask()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1139,7 +1242,7 @@ void BoardSetting::SetEnableExternalTrigger(){ /// same for PHA and PSD
} }
void BoardSetting::SetExtendedVetoDelay(){ /// same for PHA and PSD void BoardSetting::SetExtendedVetoDelay(){ /// same for PHA and PSD
printf("========== SetExtendedVetoDelay()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1147,7 +1250,7 @@ void BoardSetting::SetExtendedVetoDelay(){ /// same for PHA and PSD
} }
void BoardSetting::SetFrontPanelIO(){ /// bit[20] different, bit[20] (PSD) not impletemented, PHA, bit[20] not use void BoardSetting::SetFrontPanelIO(){ /// bit[20] different, bit[20] (PSD) not impletemented, PHA, bit[20] not use
printf("========== SetFrontPanelIO()\n"); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1167,7 +1270,7 @@ void BoardSetting::SetFrontPanelIO(){ /// bit[20] different, bit[20] (PSD) not
} }
void BoardSetting::SetAnalogMonitorMode(){ /// same for PHA and PSD void BoardSetting::SetAnalogMonitorMode(){ /// same for PHA and PSD
printf("========== SetAnalogMonitorMode(), %d \n", cbAnaMonitor->GetSelected()); printf("=== %s\n", __func__);
if( digi == NULL ) return; if( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
@ -1182,7 +1285,7 @@ void BoardSetting::SetAnalogMonitorMode(){ /// same for PHA and PSD
} }
void BoardSetting::SetReadOutControl(){ /// same for PHA and PSD void BoardSetting::SetReadOutControl(){ /// same for PHA and PSD
printf("========== SetReadOutControl() \n"); 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;

View File

@ -30,8 +30,6 @@ class BoardSetting{
int nDigi; int nDigi;
static Digitizer ** digi; static Digitizer ** digi;
static DigitizerPHA * pha;
static DigitizerPSD * psd;
/// board failure status /// board failure status
TGTextEntry * enPLLStatus; TGTextEntry * enPLLStatus;
@ -106,7 +104,6 @@ class BoardSetting{
/// Front Panel IO Control /// Front Panel IO Control
TGComboBox * cbLEMOIO; TGComboBox * cbLEMOIO;
TGComboBox * cbTRGOUTmode; TGComboBox * cbTRGOUTmode;
//TGCheckButton * bTRGOUTImp;
TGComboBox * cbTRGINCtrl; TGComboBox * cbTRGINCtrl;
TGComboBox * cbTRGINMezzanines; TGComboBox * cbTRGINMezzanines;
TGComboBox * cbAnaMonitor; TGComboBox * cbAnaMonitor;
@ -140,6 +137,8 @@ class BoardSetting{
///=== Button ///=== Button
void ResetSettingToDefault(); void ResetSettingToDefault();
void ClearBuffer(); void ClearBuffer();
void OpenChannelSetting();
///=== Board Configure ///=== Board Configure
void SetBoardConfiguration(); void SetBoardConfiguration();
@ -170,7 +169,8 @@ class BoardSetting{
///==== Readout Control ///==== Readout Control
void SetReadOutControl(); void SetReadOutControl();
///==== Others
void LogMsg(TString msg); // *SIGNAL* void LogMsg(TString msg); // *SIGNAL*
void Haha(Int_t boardID); // *SIGNAL*
}; };
#endif #endif

View File

@ -8,19 +8,20 @@
#include <TGTableContainer.h> #include <TGTableContainer.h>
#include <TGFileDialog.h> #include <TGFileDialog.h>
#include "channelSetting.h" #include "channelSettingPHA.h"
ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi){ ChannelSettingPHA::ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi, int boardID){
this->digi = digi; this->digi = digi;
this->nDigi = nDigi;
Pixel_t red, green; Pixel_t red, green;
gClient->GetColorByName("red", red); gClient->GetColorByName("red", red);
gClient->GetColorByName("green", green); gClient->GetColorByName("green", green);
fMain = new TGMainFrame(p,w,h); fMain = new TGMainFrame(p,w,h);
fMain->SetWindowName("Channel Settings "); fMain->SetWindowName("Channel Settings PHA");
fMain->Connect("CloseWindow()", "ChannelSetting", this, "CloseWindow()"); fMain->Connect("CloseWindow()", "ChannelSettingPHA", this, "CloseWindow()");
TGLayoutHints * layoutHintsR = new TGLayoutHints(kLHintsRight, 5,5,3,2); /// left, right, top, bottom TGLayoutHints * layoutHintsR = new TGLayoutHints(kLHintsRight, 5,5,3,2); /// left, right, top, bottom
TGLayoutHints * layoutHints = new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5,5,0,0); /// left, right, top, bottom TGLayoutHints * layoutHints = new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5,5,0,0); /// left, right, top, bottom
@ -32,12 +33,14 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
///==========Board choose ///==========Board choose
TGLabel * lb0 = new TGLabel(hframe0, "Module ID :"); hframe0->AddFrame(lb0, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4)); TGLabel * lb0 = new TGLabel(hframe0, "Module ID :"); hframe0->AddFrame(lb0, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4));
boardIDEntry = new TGNumberEntry(hframe0, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframe0->AddFrame(boardIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); boardIDEntry = new TGNumberEntry(hframe0, boardID, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframe0->AddFrame(boardIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
boardIDEntry->SetWidth(50); boardIDEntry->SetWidth(50);
boardIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, nDigi); boardIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, nDigi);
boardIDEntry->Connect("Modified()", "ChannelSetting", this, "ChangeBoard()"); boardIDEntry->Connect("Modified()", "ChannelSettingPHA", this, "ChangeBoard()");
if( nDigi <= 1 ) boardIDEntry->SetState(false); if( nDigi <= 1 ) boardIDEntry->SetState(false);
this->presentBoardID = boardID;
NChannel = 16 ;// digi[0]->GetNChannel(); NChannel = 16 ;// digi[0]->GetNChannel();
TGLabel * lb1 = new TGLabel(hframe0, "Channel :"); hframe0->AddFrame(lb1, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4)); TGLabel * lb1 = new TGLabel(hframe0, "Channel :"); hframe0->AddFrame(lb1, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4));
@ -45,13 +48,12 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
chIDEntry->SetWidth(50); chIDEntry->SetWidth(50);
chIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, -1, NChannel-1); chIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, -1, NChannel-1);
chIDEntry->SetNumber(0, false); chIDEntry->SetNumber(0, false);
chIDEntry->Connect("Modified()", "ChannelSetting", this, "ChangeCh()"); chIDEntry->Connect("Modified()", "ChannelSettingPHA", this, "ChangeCh()");
hframe0->AddFrame(chIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); hframe0->AddFrame(chIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
TGTextButton* bSetAllChannels = new TGTextButton(hframe0, "Set All Channels", 1); hframe0->AddFrame(bSetAllChannels, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4)); TGTextButton* bSetAllChannels = new TGTextButton(hframe0, "Set All Channels", 1); hframe0->AddFrame(bSetAllChannels, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4));
bSetAllChannels->SetState(kButtonUp); bSetAllChannels->SetState(kButtonUp);
bSetAllChannels->Connect("Clicked()", "ChannelSetting", this, "SetAllChannels()"); bSetAllChannels->Connect("Clicked()", "ChannelSettingPHA", this, "SetAllChannels()");
///const uint32_t ChannelADCTemperature = 0x10A8; /// R ///const uint32_t ChannelADCTemperature = 0x10A8; /// R
TGLabel * lbTemp = new TGLabel(hframe0, "Temperature [C] :"); hframe0->AddFrame(lbTemp, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4)); TGLabel * lbTemp = new TGLabel(hframe0, "Temperature [C] :"); hframe0->AddFrame(lbTemp, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4));
@ -59,7 +61,6 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
eTemp->SetEnabled(false); eTemp->SetEnabled(false);
eTemp->Resize(50,20); eTemp->Resize(50,20);
int boardID = boardIDEntry->GetNumber();
int ch = chIDEntry->GetNumber(); int ch = chIDEntry->GetNumber();
int width = 80; int width = 80;
@ -78,7 +79,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbOnOff->AddEntry("ON", 1); cbOnOff->AddEntry("ON", 1);
cbOnOff->AddEntry("off", 0); cbOnOff->AddEntry("off", 0);
cbOnOff->Resize(width, 20); cbOnOff->Resize(width, 20);
cbOnOff->Connect("Selected(Int_t, Int_t)", "ChannelSetting", this, "SetChannelMask()"); cbOnOff->Connect("Selected(Int_t, Int_t)", "ChannelSettingPHA", this, "SetChannelMask()");
///----------- Polarity ///----------- Polarity
TGLabel * lbPol = new TGLabel(vfInput1, "Polarity");vfInput1->AddFrame(lbPol, layoutHintsR); TGLabel * lbPol = new TGLabel(vfInput1, "Polarity");vfInput1->AddFrame(lbPol, layoutHintsR);
@ -86,7 +87,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbPolarity->AddEntry("Positive +", 1); cbPolarity->AddEntry("Positive +", 1);
cbPolarity->AddEntry("Negative -", 0); cbPolarity->AddEntry("Negative -", 0);
cbPolarity->Resize(width, 20); cbPolarity->Resize(width, 20);
cbPolarity->Connect("Selected(Int_t, Int_t)", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbPolarity->Connect("Selected(Int_t, Int_t)", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
///---------- Input Dynamic Range ///---------- Input Dynamic Range
TGLabel * lbInputDynamicRange = new TGLabel(vfInput1, "Input Range");vfInput1->AddFrame(lbInputDynamicRange, layoutHintsR); TGLabel * lbInputDynamicRange = new TGLabel(vfInput1, "Input Range");vfInput1->AddFrame(lbInputDynamicRange, layoutHintsR);
@ -94,25 +95,25 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbInputDynamicRange->AddEntry("2.0 Vpp", 0); cbInputDynamicRange->AddEntry("2.0 Vpp", 0);
cbInputDynamicRange->AddEntry("0.5 Vpp", 1); cbInputDynamicRange->AddEntry("0.5 Vpp", 1);
cbInputDynamicRange->Resize(width, 20); cbInputDynamicRange->Resize(width, 20);
cbInputDynamicRange->Connect("Selected(Int_t, Int_t)", "ChannelSetting", this, "SetInputDynamicRange()"); cbInputDynamicRange->Connect("Selected(Int_t, Int_t)", "ChannelSettingPHA", this, "SetInputDynamicRange()");
///---------- Record Length ///---------- Record Length
TGLabel * lbRecordLength = new TGLabel(vfInput1, "Record Length [ns]"); vfInput1->AddFrame(lbRecordLength, layoutHintsR); TGLabel * lbRecordLength = new TGLabel(vfInput1, "Record Length [ns]"); vfInput1->AddFrame(lbRecordLength, layoutHintsR);
numRecordLength = new TGNumberEntry(vfInput2, 20000, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfInput2->AddFrame(numRecordLength, layoutHints); numRecordLength = new TGNumberEntry(vfInput2, 20000, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfInput2->AddFrame(numRecordLength, layoutHints);
numRecordLength->Resize(width, 20); numRecordLength->Resize(width, 20);
numRecordLength->Connect("Modified()", "ChannelSetting", this, "SetRecordLength()"); numRecordLength->Connect("Modified()", "ChannelSettingPHA", this, "SetRecordLength()");
///const uint32_t PreTrigger = 0x1038; /// R/W ///const uint32_t PreTrigger = 0x1038; /// R/W
TGLabel * lbPreTrigger = new TGLabel(vfInput1, "Pre trigger [ns]"); vfInput1->AddFrame(lbPreTrigger, layoutHintsR); TGLabel * lbPreTrigger = new TGLabel(vfInput1, "Pre trigger [ns]"); vfInput1->AddFrame(lbPreTrigger, layoutHintsR);
numPreTrigger = new TGNumberEntry(vfInput2, 2000, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfInput2->AddFrame(numPreTrigger, layoutHints); numPreTrigger = new TGNumberEntry(vfInput2, 2000, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfInput2->AddFrame(numPreTrigger, layoutHints);
numPreTrigger->Resize(width, 20); numPreTrigger->Resize(width, 20);
numPreTrigger->Connect("Modified()", "ChannelSetting", this, "SetPreTrigger()"); numPreTrigger->Connect("Modified()", "ChannelSettingPHA", this, "SetPreTrigger()");
///const uint32_t NumberEventsPerAggregate_G = 0x1034; /// R/W, ///const uint32_t NumberEventsPerAggregate_G = 0x1034; /// R/W,
TGLabel * lbEventAgg = new TGLabel(vfInput1, "Events / Aggregate"); vfInput1->AddFrame(lbEventAgg, layoutHintsR); TGLabel * lbEventAgg = new TGLabel(vfInput1, "Events / Aggregate"); vfInput1->AddFrame(lbEventAgg, layoutHintsR);
numEventAgg = new TGNumberEntry(vfInput2, 512, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfInput2->AddFrame(numEventAgg, layoutHints); numEventAgg = new TGNumberEntry(vfInput2, 512, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfInput2->AddFrame(numEventAgg, layoutHints);
numEventAgg->Resize(width, 20); numEventAgg->Resize(width, 20);
numEventAgg->Connect("Modified()", "ChannelSetting", this, "SetEventAggregate()"); numEventAgg->Connect("Modified()", "ChannelSettingPHA", this, "SetEventAggregate()");
///const uint32_t ShapedTriggerWidth = 0x1084; /// R/W not sure ///const uint32_t ShapedTriggerWidth = 0x1084; /// R/W not sure
///const uint32_t VetoWidth = 0x10D4; /// R/W ///const uint32_t VetoWidth = 0x10D4; /// R/W
@ -131,19 +132,19 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
TGLabel * lbTriggerThreshold = new TGLabel(vfTrigger1, "Trigger Threshold [LSB]"); vfTrigger1->AddFrame(lbTriggerThreshold, layoutHintsR); TGLabel * lbTriggerThreshold = new TGLabel(vfTrigger1, "Trigger Threshold [LSB]"); vfTrigger1->AddFrame(lbTriggerThreshold, layoutHintsR);
numTriggerThreshold = new TGNumberEntry(vfTrigger2, 100, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numTriggerThreshold, layoutHints); numTriggerThreshold = new TGNumberEntry(vfTrigger2, 100, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numTriggerThreshold, layoutHints);
numTriggerThreshold->Resize(width, 20); numTriggerThreshold->Resize(width, 20);
numTriggerThreshold->Connect("Modified()", "ChannelSetting", this, "SetTriggerThreshold()"); numTriggerThreshold->Connect("Modified()", "ChannelSettingPHA", this, "SetTriggerThreshold()");
///const uint32_t TriggerHoldOffWidth = 0x1074; /// R/W ///const uint32_t TriggerHoldOffWidth = 0x1074; /// R/W
TGLabel * lbTriggerHoldOff = new TGLabel(vfTrigger1, "Trigger Holdoff [ns]"); vfTrigger1->AddFrame(lbTriggerHoldOff, layoutHintsR); TGLabel * lbTriggerHoldOff = new TGLabel(vfTrigger1, "Trigger Holdoff [ns]"); vfTrigger1->AddFrame(lbTriggerHoldOff, layoutHintsR);
numTriggerHoldOff = new TGNumberEntry(vfTrigger2, 20000, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numTriggerHoldOff, layoutHints); numTriggerHoldOff = new TGNumberEntry(vfTrigger2, 20000, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numTriggerHoldOff, layoutHints);
numTriggerHoldOff->Resize(width, 20); numTriggerHoldOff->Resize(width, 20);
numTriggerHoldOff->Connect("Modified()", "ChannelSetting", this, "SetTriggerHoldOff()"); numTriggerHoldOff->Connect("Modified()", "ChannelSettingPHA", this, "SetTriggerHoldOff()");
///const uint32_t ChannelDCOffset = 0x1098; /// R/W ///const uint32_t ChannelDCOffset = 0x1098; /// R/W
TGLabel * lbDCOffset = new TGLabel(vfTrigger1, "DC offset [%]"); vfTrigger1->AddFrame(lbDCOffset, layoutHintsR); TGLabel * lbDCOffset = new TGLabel(vfTrigger1, "DC offset [%]"); vfTrigger1->AddFrame(lbDCOffset, layoutHintsR);
numDCOffset = new TGNumberEntry(vfTrigger2, 20, 0, 0, TGNumberFormat::kNESRealTwo, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numDCOffset, layoutHints); numDCOffset = new TGNumberEntry(vfTrigger2, 20, 0, 0, TGNumberFormat::kNESRealTwo, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numDCOffset, layoutHints);
numDCOffset->Resize(width, 20); numDCOffset->Resize(width, 20);
numDCOffset->Connect("Modified()", "ChannelSetting", this, "SetDCOffset()"); numDCOffset->Connect("Modified()", "ChannelSettingPHA", this, "SetDCOffset()");
///const uint32_t RCCR2SmoothingFactor = 0x1054; /// R/W Trigger Filter smoothing, triggerSmoothingFactor ///const uint32_t RCCR2SmoothingFactor = 0x1054; /// R/W Trigger Filter smoothing, triggerSmoothingFactor
TGLabel * lbTriggerSmoothing = new TGLabel(vfTrigger1, "Trigger Smoothing"); vfTrigger1->AddFrame(lbTriggerSmoothing, layoutHintsR); TGLabel * lbTriggerSmoothing = new TGLabel(vfTrigger1, "Trigger Smoothing"); vfTrigger1->AddFrame(lbTriggerSmoothing, layoutHintsR);
@ -157,19 +158,19 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbTriggerSmoothing->AddEntry("64 samples", 32); cbTriggerSmoothing->AddEntry("64 samples", 32);
cbTriggerSmoothing->AddEntry("128 samples", 0x3F); cbTriggerSmoothing->AddEntry("128 samples", 0x3F);
cbTriggerSmoothing->Resize(width, 20); cbTriggerSmoothing->Resize(width, 20);
cbTriggerSmoothing->Connect("Changed()", "ChannelSetting", this, "SetTriggerSmoothing()"); cbTriggerSmoothing->Connect("Changed()", "ChannelSettingPHA", this, "SetTriggerSmoothing()");
///const uint32_t InputRiseTime = 0x1058; /// R/W OK ///const uint32_t InputRiseTime = 0x1058; /// R/W OK
TGLabel * lbInputRiseTime = new TGLabel(vfTrigger1, "Input rise time [ns]"); vfTrigger1->AddFrame(lbInputRiseTime, layoutHintsR); TGLabel * lbInputRiseTime = new TGLabel(vfTrigger1, "Input rise time [ns]"); vfTrigger1->AddFrame(lbInputRiseTime, layoutHintsR);
numInputRiseTime = new TGNumberEntry(vfTrigger2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numInputRiseTime, layoutHints); numInputRiseTime = new TGNumberEntry(vfTrigger2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numInputRiseTime, layoutHints);
numInputRiseTime->Resize(width, 20); numInputRiseTime->Resize(width, 20);
numInputRiseTime->Connect("Modified()", "ChannelSetting", this, "SetInputRiseTime()"); numInputRiseTime->Connect("Modified()", "ChannelSettingPHA", this, "SetInputRiseTime()");
///const uint32_t RiseTimeValidationWindow = 0x1070; /// R/W OK ///const uint32_t RiseTimeValidationWindow = 0x1070; /// R/W OK
TGLabel * lbRiseTimeValidWin = new TGLabel(vfTrigger1, "Rise Time Val. Win. [ns]"); vfTrigger1->AddFrame(lbRiseTimeValidWin, layoutHintsR); TGLabel * lbRiseTimeValidWin = new TGLabel(vfTrigger1, "Rise Time Val. Win. [ns]"); vfTrigger1->AddFrame(lbRiseTimeValidWin, layoutHintsR);
numRiseTimeValidWin = new TGNumberEntry(vfTrigger2, 20, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numRiseTimeValidWin, layoutHints); numRiseTimeValidWin = new TGNumberEntry(vfTrigger2, 20, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrigger2->AddFrame(numRiseTimeValidWin, layoutHints);
numRiseTimeValidWin->Resize(width, 20); numRiseTimeValidWin->Resize(width, 20);
numRiseTimeValidWin->Connect("Modified()", "ChannelSetting", this, "SetRiseTimeValidWin()"); numRiseTimeValidWin->Connect("Modified()", "ChannelSettingPHA", this, "SetRiseTimeValidWin()");
/// DPP1 bit[19:18] /// DPP1 bit[19:18]
TGLabel * lbTriggerMode = new TGLabel(vfTrigger1, "Trig. Mode"); vfTrigger1->AddFrame(lbTriggerMode, layoutHintsR); TGLabel * lbTriggerMode = new TGLabel(vfTrigger1, "Trig. Mode"); vfTrigger1->AddFrame(lbTriggerMode, layoutHintsR);
@ -178,7 +179,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbTriggerMode->AddEntry("Coin.", 1); cbTriggerMode->AddEntry("Coin.", 1);
cbTriggerMode->AddEntry("Anti-Coin.", 3); cbTriggerMode->AddEntry("Anti-Coin.", 3);
cbTriggerMode->Resize(width, 20); cbTriggerMode->Resize(width, 20);
cbTriggerMode->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbTriggerMode->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
} }
{///================== Trapezoid Settings {///================== Trapezoid Settings
@ -192,31 +193,31 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
TGLabel * lbTrapRiseTime = new TGLabel(vfTrap1, "Rise time [ns]"); vfTrap1->AddFrame(lbTrapRiseTime, layoutHintsR); TGLabel * lbTrapRiseTime = new TGLabel(vfTrap1, "Rise time [ns]"); vfTrap1->AddFrame(lbTrapRiseTime, layoutHintsR);
numTrapRiseTime = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numTrapRiseTime, layoutHints); numTrapRiseTime = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numTrapRiseTime, layoutHints);
numTrapRiseTime->Resize(width, 20); numTrapRiseTime->Resize(width, 20);
numTrapRiseTime->Connect("Modified()", "ChannelSetting", this, "SetTrapRiseTime()"); numTrapRiseTime->Connect("Modified()", "ChannelSettingPHA", this, "SetTrapRiseTime()");
///const uint32_t TrapezoidFlatTop = 0x1060; /// R/W OK ///const uint32_t TrapezoidFlatTop = 0x1060; /// R/W OK
TGLabel * lbTrapFlatTop = new TGLabel(vfTrap1, "Flat Top [ns]"); vfTrap1->AddFrame(lbTrapFlatTop, layoutHintsR); TGLabel * lbTrapFlatTop = new TGLabel(vfTrap1, "Flat Top [ns]"); vfTrap1->AddFrame(lbTrapFlatTop, layoutHintsR);
numTrapFlatTop = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numTrapFlatTop, layoutHints); numTrapFlatTop = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numTrapFlatTop, layoutHints);
numTrapFlatTop->Resize(width, 20); numTrapFlatTop->Resize(width, 20);
numTrapFlatTop->Connect("Modified()", "ChannelSetting", this, "SetTrapFlatTop()"); numTrapFlatTop->Connect("Modified()", "ChannelSettingPHA", this, "SetTrapFlatTop()");
///const uint32_t DecayTime = 0x1068; /// R/W OK ///const uint32_t DecayTime = 0x1068; /// R/W OK
TGLabel * lbDecay = new TGLabel(vfTrap1, "Decay [ns]"); vfTrap1->AddFrame(lbDecay, layoutHintsR); TGLabel * lbDecay = new TGLabel(vfTrap1, "Decay [ns]"); vfTrap1->AddFrame(lbDecay, layoutHintsR);
numDecay = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numDecay, layoutHints); numDecay = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numDecay, layoutHints);
numDecay->Resize(width, 20); numDecay->Resize(width, 20);
numDecay->Connect("Modified()", "ChannelSetting", this, "SetDecay()"); numDecay->Connect("Modified()", "ChannelSettingPHA", this, "SetDecay()");
///const uint32_t PeakingTime = 0x1064; /// R/W OK ///const uint32_t PeakingTime = 0x1064; /// R/W OK
TGLabel * lbPeaking = new TGLabel(vfTrap1, "Peaking [ns]"); vfTrap1->AddFrame(lbPeaking, layoutHintsR); TGLabel * lbPeaking = new TGLabel(vfTrap1, "Peaking [ns]"); vfTrap1->AddFrame(lbPeaking, layoutHintsR);
numPeaking = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numPeaking, layoutHints); numPeaking = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numPeaking, layoutHints);
numPeaking->Resize(width, 20); numPeaking->Resize(width, 20);
numPeaking->Connect("Modified()", "ChannelSetting", this, "SetPeaking()"); numPeaking->Connect("Modified()", "ChannelSettingPHA", this, "SetPeaking()");
///const uint32_t PeakHoldOff = 0x1078; /// R/W OK ///const uint32_t PeakHoldOff = 0x1078; /// R/W OK
TGLabel * lbPeakHoldOff = new TGLabel(vfTrap1, "Peaking Holdoff [ns]"); vfTrap1->AddFrame(lbPeakHoldOff, layoutHintsR); TGLabel * lbPeakHoldOff = new TGLabel(vfTrap1, "Peaking Holdoff [ns]"); vfTrap1->AddFrame(lbPeakHoldOff, layoutHintsR);
numPeakHoldOff = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numPeakHoldOff, layoutHints); numPeakHoldOff = new TGNumberEntry(vfTrap2, 96, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); vfTrap2->AddFrame(numPeakHoldOff, layoutHints);
numPeakHoldOff->Resize(width, 20); numPeakHoldOff->Resize(width, 20);
numPeakHoldOff->Connect("Modified()", "ChannelSetting", this, "SetPeakHoldOff()"); numPeakHoldOff->Connect("Modified()", "ChannelSettingPHA", this, "SetPeakHoldOff()");
/// DPP1 bit[13:12] /// DPP1 bit[13:12]
TGLabel * lbPeakMean = new TGLabel(vfTrap1, "Peak Mean"); vfTrap1->AddFrame(lbPeakMean, layoutHintsR); TGLabel * lbPeakMean = new TGLabel(vfTrap1, "Peak Mean"); vfTrap1->AddFrame(lbPeakMean, layoutHintsR);
@ -226,7 +227,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbPeakMean->AddEntry("16 samples", 2); cbPeakMean->AddEntry("16 samples", 2);
cbPeakMean->AddEntry("64 samples", 3); cbPeakMean->AddEntry("64 samples", 3);
cbPeakMean->Resize(width, 20); cbPeakMean->Resize(width, 20);
cbPeakMean->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbPeakMean->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
/// DPP1 bit[22:20] /// DPP1 bit[22:20]
TGLabel * lbBaseLineAvg = new TGLabel(vfTrap1, "Baseline avg."); vfTrap1->AddFrame(lbBaseLineAvg, layoutHintsR); TGLabel * lbBaseLineAvg = new TGLabel(vfTrap1, "Baseline avg."); vfTrap1->AddFrame(lbBaseLineAvg, layoutHintsR);
@ -239,7 +240,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbBaseLineAvg->AddEntry("4096 sp.", 5); cbBaseLineAvg->AddEntry("4096 sp.", 5);
cbBaseLineAvg->AddEntry("16384 sp.", 6); cbBaseLineAvg->AddEntry("16384 sp.", 6);
cbBaseLineAvg->Resize(width, 20); cbBaseLineAvg->Resize(width, 20);
cbBaseLineAvg->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbBaseLineAvg->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
} }
@ -266,7 +267,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbDecimation->AddEntry("4 samples", 2); cbDecimation->AddEntry("4 samples", 2);
cbDecimation->AddEntry("8 samples", 3); cbDecimation->AddEntry("8 samples", 3);
cbDecimation->Resize(width, 20); cbDecimation->Resize(width, 20);
cbDecimation->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbDecimation->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
TGLabel * lbDecimationGain = new TGLabel(vfDPPCtrl11, "Decimation Gain :"); vfDPPCtrl11->AddFrame(lbDecimationGain, haha); TGLabel * lbDecimationGain = new TGLabel(vfDPPCtrl11, "Decimation Gain :"); vfDPPCtrl11->AddFrame(lbDecimationGain, haha);
cbDecimationGain = new TGComboBox(vfDPPCtrl12); vfDPPCtrl12->AddFrame(cbDecimationGain); cbDecimationGain = new TGComboBox(vfDPPCtrl12); vfDPPCtrl12->AddFrame(cbDecimationGain);
@ -275,21 +276,21 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbDecimationGain->AddEntry("x 4", 2); cbDecimationGain->AddEntry("x 4", 2);
cbDecimationGain->AddEntry("x 8", 3); cbDecimationGain->AddEntry("x 8", 3);
cbDecimationGain->Resize(width, 20); cbDecimationGain->Resize(width, 20);
cbDecimationGain->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbDecimationGain->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
TGLabel * lbRollOver = new TGLabel(vfDPPCtrl11, "Roll-Over Flag :"); vfDPPCtrl11->AddFrame(lbRollOver, haha); TGLabel * lbRollOver = new TGLabel(vfDPPCtrl11, "Roll-Over Flag :"); vfDPPCtrl11->AddFrame(lbRollOver, haha);
cbRollOver = new TGComboBox(vfDPPCtrl12); vfDPPCtrl12->AddFrame(cbRollOver); cbRollOver = new TGComboBox(vfDPPCtrl12); vfDPPCtrl12->AddFrame(cbRollOver);
cbRollOver->AddEntry("Disabled", 0); cbRollOver->AddEntry("Disabled", 0);
cbRollOver->AddEntry("Enabled", 1); cbRollOver->AddEntry("Enabled", 1);
cbRollOver->Resize(width, 20); cbRollOver->Resize(width, 20);
cbRollOver->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbRollOver->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
TGLabel * lbPileUp = new TGLabel(vfDPPCtrl11, "Pile-Up Flag :"); vfDPPCtrl11->AddFrame(lbPileUp, haha); TGLabel * lbPileUp = new TGLabel(vfDPPCtrl11, "Pile-Up Flag :"); vfDPPCtrl11->AddFrame(lbPileUp, haha);
cbPileUp = new TGComboBox(vfDPPCtrl12); vfDPPCtrl12->AddFrame(cbPileUp); cbPileUp = new TGComboBox(vfDPPCtrl12); vfDPPCtrl12->AddFrame(cbPileUp);
cbPileUp->AddEntry("Disabled", 0); cbPileUp->AddEntry("Disabled", 0);
cbPileUp->AddEntry("Enabled", 1); cbPileUp->AddEntry("Enabled", 1);
cbPileUp->Resize(width, 20); cbPileUp->Resize(width, 20);
cbPileUp->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbPileUp->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
TGVerticalFrame * vfDPPCtrl21 = new TGVerticalFrame(hfDPPCtrl1); hfDPPCtrl1->AddFrame(vfDPPCtrl21, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0)); TGVerticalFrame * vfDPPCtrl21 = new TGVerticalFrame(hfDPPCtrl1); hfDPPCtrl1->AddFrame(vfDPPCtrl21, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
TGVerticalFrame * vfDPPCtrl22 = new TGVerticalFrame(hfDPPCtrl1); hfDPPCtrl1->AddFrame(vfDPPCtrl22, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0)); TGVerticalFrame * vfDPPCtrl22 = new TGVerticalFrame(hfDPPCtrl1); hfDPPCtrl1->AddFrame(vfDPPCtrl22, new TGLayoutHints(kLHintsExpandX, 5, 5, 0, 0));
@ -302,7 +303,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbLocalShapedTrigger->AddEntry("Odd Channel", 2); cbLocalShapedTrigger->AddEntry("Odd Channel", 2);
cbLocalShapedTrigger->AddEntry("OR", 3); cbLocalShapedTrigger->AddEntry("OR", 3);
cbLocalShapedTrigger->Resize(width, 20); cbLocalShapedTrigger->Resize(width, 20);
cbLocalShapedTrigger->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbLocalShapedTrigger->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
TGLabel * lbLocalTriggerValid = new TGLabel(vfDPPCtrl21, "Local Trigger Valid. :"); vfDPPCtrl21->AddFrame(lbLocalTriggerValid, haha); TGLabel * lbLocalTriggerValid = new TGLabel(vfDPPCtrl21, "Local Trigger Valid. :"); vfDPPCtrl21->AddFrame(lbLocalTriggerValid, haha);
cbLocalTriggerValid = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbLocalTriggerValid); cbLocalTriggerValid = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbLocalTriggerValid);
@ -312,7 +313,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbLocalTriggerValid->AddEntry("AND", 3); cbLocalTriggerValid->AddEntry("AND", 3);
cbLocalTriggerValid->AddEntry("OR", 4); cbLocalTriggerValid->AddEntry("OR", 4);
cbLocalTriggerValid->Resize(100, 20); cbLocalTriggerValid->Resize(100, 20);
cbLocalTriggerValid->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbLocalTriggerValid->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
TGLabel * lbVetoSource = new TGLabel(vfDPPCtrl21, "Veto Source :"); vfDPPCtrl21->AddFrame(lbVetoSource, haha); TGLabel * lbVetoSource = new TGLabel(vfDPPCtrl21, "Veto Source :"); vfDPPCtrl21->AddFrame(lbVetoSource, haha);
cbVetoSource = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbVetoSource); cbVetoSource = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbVetoSource);
@ -321,7 +322,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbVetoSource->AddEntry("individually set for paired channel", 2); cbVetoSource->AddEntry("individually set for paired channel", 2);
cbVetoSource->AddEntry("negative saturation", 3); cbVetoSource->AddEntry("negative saturation", 3);
cbVetoSource->Resize(width, 20); cbVetoSource->Resize(width, 20);
cbVetoSource->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbVetoSource->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
TGLabel * lbTriggerCounterRate = new TGLabel(vfDPPCtrl21, "Trigger Counter Rate :"); vfDPPCtrl21->AddFrame(lbTriggerCounterRate, haha); TGLabel * lbTriggerCounterRate = new TGLabel(vfDPPCtrl21, "Trigger Counter Rate :"); vfDPPCtrl21->AddFrame(lbTriggerCounterRate, haha);
cbTriggerCounterRate = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbTriggerCounterRate); cbTriggerCounterRate = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbTriggerCounterRate);
@ -329,28 +330,28 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbTriggerCounterRate->AddEntry(" 128", 1); cbTriggerCounterRate->AddEntry(" 128", 1);
cbTriggerCounterRate->AddEntry("8192", 2); cbTriggerCounterRate->AddEntry("8192", 2);
cbTriggerCounterRate->Resize(width, 20); cbTriggerCounterRate->Resize(width, 20);
cbTriggerCounterRate->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbTriggerCounterRate->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
TGLabel * lbBaselineCal = new TGLabel(vfDPPCtrl21, "Active Baseline Cal. :"); vfDPPCtrl21->AddFrame(lbBaselineCal, haha); TGLabel * lbBaselineCal = new TGLabel(vfDPPCtrl21, "Active Baseline Cal. :"); vfDPPCtrl21->AddFrame(lbBaselineCal, haha);
cbBaselineCal = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbBaselineCal); cbBaselineCal = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbBaselineCal);
cbBaselineCal->AddEntry("Enabled", 0); cbBaselineCal->AddEntry("Enabled", 0);
cbBaselineCal->AddEntry("Disabled", 1); cbBaselineCal->AddEntry("Disabled", 1);
cbBaselineCal->Resize(width, 20); cbBaselineCal->Resize(width, 20);
cbBaselineCal->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbBaselineCal->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
TGLabel * lbTagCorrelatedEvent = new TGLabel(vfDPPCtrl21, "Tag correlated events :"); vfDPPCtrl21->AddFrame(lbTagCorrelatedEvent, haha); TGLabel * lbTagCorrelatedEvent = new TGLabel(vfDPPCtrl21, "Tag correlated events :"); vfDPPCtrl21->AddFrame(lbTagCorrelatedEvent, haha);
cbTagCorrelatedEvent = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbTagCorrelatedEvent); cbTagCorrelatedEvent = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbTagCorrelatedEvent);
cbTagCorrelatedEvent->AddEntry("Disabled", 0); cbTagCorrelatedEvent->AddEntry("Disabled", 0);
cbTagCorrelatedEvent->AddEntry("Enabled", 1); cbTagCorrelatedEvent->AddEntry("Enabled", 1);
cbTagCorrelatedEvent->Resize(width, 20); cbTagCorrelatedEvent->Resize(width, 20);
cbTagCorrelatedEvent->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbTagCorrelatedEvent->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
TGLabel * lbBaselineOptimize = new TGLabel(vfDPPCtrl11, "Baseline Optimaization :"); vfDPPCtrl11->AddFrame(lbBaselineOptimize, haha); TGLabel * lbBaselineOptimize = new TGLabel(vfDPPCtrl11, "Baseline Optimaization :"); vfDPPCtrl11->AddFrame(lbBaselineOptimize, haha);
cbBaselineOptimize = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbBaselineOptimize); cbBaselineOptimize = new TGComboBox(vfDPPCtrl22); vfDPPCtrl22->AddFrame(cbBaselineOptimize);
cbBaselineOptimize->AddEntry("Disabled", 0); cbBaselineOptimize->AddEntry("Disabled", 0);
cbBaselineOptimize->AddEntry("Enabled", 1); cbBaselineOptimize->AddEntry("Enabled", 1);
cbBaselineOptimize->Resize(width, 20); cbBaselineOptimize->Resize(width, 20);
cbBaselineOptimize->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbBaselineOptimize->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
TGHorizontalFrame * hfDPPCtrl2 = new TGHorizontalFrame(vfDPPCtrl); vfDPPCtrl->AddFrame(hfDPPCtrl2, new TGLayoutHints(kLHintsExpandX, 5, 5, 10, 0)); TGHorizontalFrame * hfDPPCtrl2 = new TGHorizontalFrame(vfDPPCtrl); vfDPPCtrl->AddFrame(hfDPPCtrl2, new TGLayoutHints(kLHintsExpandX, 5, 5, 10, 0));
@ -364,7 +365,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbDisableSelfTrigger->AddEntry("used to acquire and propagate to trigger logic", 0); cbDisableSelfTrigger->AddEntry("used to acquire and propagate to trigger logic", 0);
cbDisableSelfTrigger->AddEntry("only propagate to trigger logic", 1); cbDisableSelfTrigger->AddEntry("only propagate to trigger logic", 1);
cbDisableSelfTrigger->Resize(300, 20); cbDisableSelfTrigger->Resize(300, 20);
cbLocalShapedTrigger->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm1()"); cbLocalShapedTrigger->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm1()");
TGLabel * lbExtra2WordOption = new TGLabel(vfDPPCtrl_a, "Extras 2 Word Option :"); vfDPPCtrl_a->AddFrame(lbExtra2WordOption, haha); TGLabel * lbExtra2WordOption = new TGLabel(vfDPPCtrl_a, "Extras 2 Word Option :"); vfDPPCtrl_a->AddFrame(lbExtra2WordOption, haha);
cbExtra2WordOption = new TGComboBox(vfDPPCtrl_b); vfDPPCtrl_b->AddFrame(cbExtra2WordOption); cbExtra2WordOption = new TGComboBox(vfDPPCtrl_b); vfDPPCtrl_b->AddFrame(cbExtra2WordOption);
@ -373,7 +374,7 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
cbExtra2WordOption->AddEntry("[31:16] Lost Trigger Counter [15:0] Total Trigger Counter", 4); cbExtra2WordOption->AddEntry("[31:16] Lost Trigger Counter [15:0] Total Trigger Counter", 4);
cbExtra2WordOption->AddEntry("[31:16] Event Before Zero Crossing [15:0] Event After Zero Crossing", 5); cbExtra2WordOption->AddEntry("[31:16] Event Before Zero Crossing [15:0] Event After Zero Crossing", 5);
cbExtra2WordOption->Resize(400, 20); cbExtra2WordOption->Resize(400, 20);
cbLocalShapedTrigger->Connect("Changed()", "ChannelSetting", this, "SetDPPAlgorithm2()"); cbLocalShapedTrigger->Connect("Changed()", "ChannelSettingPHA", this, "SetDPPAlgorithm2()");
} }
@ -385,9 +386,9 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
isOpened = true; isOpened = true;
} }
ChannelSetting::~ChannelSetting(){ ChannelSettingPHA::~ChannelSettingPHA(){
printf("close ChannelSetting window\n"); printf("close ChannelSettingPHA window\n");
isOpened = false; isOpened = false;
@ -403,20 +404,48 @@ ChannelSetting::~ChannelSetting(){
} }
void ChannelSetting::LogMsg(TString msg){ void ChannelSettingPHA::LogMsg(TString msg){
Emit("LogMsg(char*)", msg.Data()); Emit("LogMsg(char*)", msg.Data());
} }
void ChannelSetting::ChangeBoard(){ void ChannelSettingPHA::ChangeBoard(){
if ( digi == NULL ) return; if ( digi == NULL ) return;
int boardID = boardIDEntry->GetNumber(); int boardID = boardIDEntry->GetNumber();
ch2ns = (unsigned short) digi[boardID]->GetCh2ns();
if( digi[boardID]->GetDPPType() != V1730_DPP_PHA_CODE){
if( boardID > presentBoardID ) {
for( int i = boardID +1 ; i < nDigi; i++){
if( digi[i]->GetDPPType() == V1730_DPP_PHA_CODE ){
boardID = i;
boardIDEntry->SetNumber(i, false);
break;
}
if( i = nDigi -1 ) return;
}
}else{
for( int i = boardID - 1 ; i >= 0; i--){
if( digi[i]->GetDPPType() == V1730_DPP_PHA_CODE ){
boardID = i;
boardIDEntry->SetNumber(i, false);
break;
}
if( i = nDigi -1 ) return;
}
}
}
ch2ns = (unsigned short) digi[boardID]->GetCh2ns();
ChangeCh(); ChangeCh();
} }
void ChannelSetting::ChangeCh(){ void ChannelSettingPHA::ChangeCh(){
LogMsg(Form("========== Change to Channel %d", (int)chIDEntry->GetNumber())); LogMsg(Form("========== Change to Channel %d", (int)chIDEntry->GetNumber()));
@ -441,57 +470,54 @@ void ChannelSetting::ChangeCh(){
eTemp->SetText(Form("%d C", digi[boardID]->ReadRegister(Register::DPP::ChannelADCTemperature, ch)), false); eTemp->SetText(Form("%d C", digi[boardID]->ReadRegister(Register::DPP::ChannelADCTemperature, ch)), false);
if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ){ numTriggerThreshold->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TriggerThreshold, ch), false);
numTriggerHoldOff ->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TriggerHoldOffWidth, ch) * 4 * ch2ns, false);
numTriggerThreshold->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TriggerThreshold, ch), false); cbTriggerSmoothing ->Select( digi[boardID]->ReadRegister(Register::DPP::PHA::RCCR2SmoothingFactor, ch), false);
numTriggerHoldOff ->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TriggerHoldOffWidth, ch) * 4 * ch2ns, false); numInputRiseTime ->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::InputRiseTime, ch) * 4 * ch2ns, false);
cbTriggerSmoothing ->Select( digi[boardID]->ReadRegister(Register::DPP::PHA::RCCR2SmoothingFactor, ch), false); numRiseTimeValidWin->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::RiseTimeValidationWindow, ch) * ch2ns, false);
numInputRiseTime ->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::InputRiseTime, ch) * 4 * ch2ns, false);
numRiseTimeValidWin->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::RiseTimeValidationWindow, ch) * ch2ns, false);
numTrapRiseTime->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TrapezoidRiseTime, ch) * 4 * ch2ns, false);
numTrapFlatTop->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TrapezoidFlatTop, ch) * 4 * ch2ns, false);
numDecay->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::DecayTime, ch) * 4 * ch2ns, false);
numPeaking->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::PeakingTime, ch) * 4 * ch2ns, false);
numPeakHoldOff->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::PeakHoldOff, ch) * 4 * ch2ns, false);
temp = digi[boardID]->ReadRegister(Register::DPP::DPPAlgorithmControl, ch);
numTrapScale->SetNumber( temp & 0x3F, false );
cbDecimation->Select( ( (temp >> 8) & 0x3), false);
cbDecimationGain->Select( ( (temp >> 10) & 0x3), false);
cbPeakMean->Select( ( (temp >> 12) & 0x3), false);
cbPolarity->Select( ( (temp >> 16) & 0x1), false);
cbTriggerMode->Select( ( (temp >> 18) & 0x3), false);
cbBaseLineAvg->Select( ( (temp >> 20) & 0x7), false);
cbDisableSelfTrigger->Select( ( (temp >> 24) & 0x1), false);
cbRollOver->Select( ( (temp >> 26) & 0x1), false);
cbPileUp->Select( ( (temp >> 27) & 0x1), false);
temp = digi[boardID]->ReadRegister(Register::DPP::PHA::DPPAlgorithmControl2_G, ch);
if( (((temp >> 2)) & 0x1 ) == 1 ){
cbLocalShapedTrigger->Select( ( (temp >> 0) & 0x3), false);
}else{
cbLocalShapedTrigger->Select( -1, false);
}
if( (((temp >> 6)) & 0x1 ) == 1 ){
cbLocalTriggerValid->Select( ( (temp >> 4) & 0x3), false);
}else{
cbLocalTriggerValid->Select( -1, false);
}
cbVetoSource->Select( ( (temp >> 14) & 0x3), false);
cbTriggerCounterRate->Select( ( (temp >> 16) & 0x3), false);
cbBaselineCal->Select( ( (temp >> 18) & 0x1), false);
cbTagCorrelatedEvent->Select( ( (temp >> 19) & 0x1), false);
cbBaselineOptimize->Select( ( (temp >> 29) & 0x1), false);
cbExtra2WordOption->Select( ( (temp >> 8) & 0x7), false);
numTrapRiseTime->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TrapezoidRiseTime, ch) * 4 * ch2ns, false);
numTrapFlatTop->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TrapezoidFlatTop, ch) * 4 * ch2ns, false);
numDecay->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::DecayTime, ch) * 4 * ch2ns, false);
numPeaking->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::PeakingTime, ch) * 4 * ch2ns, false);
numPeakHoldOff->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::PeakHoldOff, ch) * 4 * ch2ns, false);
temp = digi[boardID]->ReadRegister(Register::DPP::DPPAlgorithmControl, ch);
numTrapScale->SetNumber( temp & 0x3F, false );
cbDecimation->Select( ( (temp >> 8) & 0x3), false);
cbDecimationGain->Select( ( (temp >> 10) & 0x3), false);
cbPeakMean->Select( ( (temp >> 12) & 0x3), false);
cbPolarity->Select( ( (temp >> 16) & 0x1), false);
cbTriggerMode->Select( ( (temp >> 18) & 0x3), false);
cbBaseLineAvg->Select( ( (temp >> 20) & 0x7), false);
cbDisableSelfTrigger->Select( ( (temp >> 24) & 0x1), false);
cbRollOver->Select( ( (temp >> 26) & 0x1), false);
cbPileUp->Select( ( (temp >> 27) & 0x1), false);
temp = digi[boardID]->ReadRegister(Register::DPP::PHA::DPPAlgorithmControl2_G, ch);
if( (((temp >> 2)) & 0x1 ) == 1 ){
cbLocalShapedTrigger->Select( ( (temp >> 0) & 0x3), false);
}else{
cbLocalShapedTrigger->Select( -1, false);
} }
if( (((temp >> 6)) & 0x1 ) == 1 ){
cbLocalTriggerValid->Select( ( (temp >> 4) & 0x3), false);
}else{
cbLocalTriggerValid->Select( -1, false);
}
cbVetoSource->Select( ( (temp >> 14) & 0x3), false);
cbTriggerCounterRate->Select( ( (temp >> 16) & 0x3), false);
cbBaselineCal->Select( ( (temp >> 18) & 0x1), false);
cbTagCorrelatedEvent->Select( ( (temp >> 19) & 0x1), false);
cbBaselineOptimize->Select( ( (temp >> 29) & 0x1), false);
cbExtra2WordOption->Select( ( (temp >> 8) & 0x7), false);
} }
void ChannelSetting::SetAllChannels(){ void ChannelSettingPHA::SetAllChannels(){
printf("=================== SetAllChannels()\n"); printf("=== %s\n", __func__);
if ( digi == NULL ) return; if ( digi == NULL ) return;
@ -533,8 +559,8 @@ void ChannelSetting::SetAllChannels(){
} }
void ChannelSetting::SetChannelMask(){ void ChannelSettingPHA::SetChannelMask(){
printf("=================== SetChannelMask()\n"); printf("=== %s\n", __func__);
if ( digi == NULL ) return; if ( digi == NULL ) return;
short boardID = boardIDEntry->GetNumber(); short boardID = boardIDEntry->GetNumber();
@ -548,8 +574,8 @@ void ChannelSetting::SetChannelMask(){
} }
void ChannelSetting::SetDPPAlgorithm1(){ void ChannelSettingPHA::SetDPPAlgorithm1(){
printf("=================== SetDPPAlgorithm1()\n"); printf("=== %s\n", __func__);
if ( digi == NULL ) return; if ( digi == NULL ) return;
short boardID = boardIDEntry->GetNumber(); short boardID = boardIDEntry->GetNumber();
@ -579,8 +605,8 @@ void ChannelSetting::SetDPPAlgorithm1(){
} }
void ChannelSetting::SetDPPAlgorithm2(){ void ChannelSettingPHA::SetDPPAlgorithm2(){
printf("=================== SetDPPAlgorithm2()\n"); printf("=== %s\n", __func__);
if ( digi == NULL ) return; if ( digi == NULL ) return;
short boardID = boardIDEntry->GetNumber(); short boardID = boardIDEntry->GetNumber();
@ -608,8 +634,8 @@ void ChannelSetting::SetDPPAlgorithm2(){
} }
void ChannelSetting::SetInputDynamicRange(){ void ChannelSettingPHA::SetInputDynamicRange(){
printf("=================== SetInputDynamicRange()\n"); printf("=== %s\n", __func__);
if ( digi == NULL ) return; if ( digi == NULL ) return;
short boardID = boardIDEntry->GetNumber(); short boardID = boardIDEntry->GetNumber();
@ -617,7 +643,8 @@ void ChannelSetting::SetInputDynamicRange(){
digi[boardID]->WriteRegister(Register::DPP::InputDynamicRange, cbInputDynamicRange->GetSelected(), ch); digi[boardID]->WriteRegister(Register::DPP::InputDynamicRange, cbInputDynamicRange->GetSelected(), ch);
} }
void ChannelSetting::ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address){
void ChannelSettingPHA::ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address){
unsigned int temp = numEntry->GetNumber(); unsigned int temp = numEntry->GetNumber();
unsigned int res = temp % (stepSize * ch2ns); unsigned int res = temp % (stepSize * ch2ns);
@ -630,72 +657,36 @@ void ChannelSetting::ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSi
if( digi != NULL ) digi[boardID]->WriteRegister(address, temp / stepSize / ch2ns , ch); if( digi != NULL ) digi[boardID]->WriteRegister(address, temp / stepSize / ch2ns , ch);
} }
void ChannelSetting::SetRecordLength(){ void ChannelSettingPHA::SetRecordLength() {printf("=== %s\n", __func__); ChangeAStep(numRecordLength, 8, Register::DPP::RecordLength_G); }
printf("=================== SetRecordLength()\n"); void ChannelSettingPHA::SetPreTrigger() {printf("=== %s\n", __func__); ChangeAStep(numPreTrigger, 4, Register::DPP::PreTrigger);}
ChangeAStep(numRecordLength, 8, Register::DPP::RecordLength_G); void ChannelSettingPHA::SetEventAggregate() {printf("=== %s\n", __func__); ChangeAStep(numEventAgg, 1, Register::DPP::NumberEventsPerAggregate_G);}
} void ChannelSettingPHA::SetTriggerThreshold(){printf("=== %s\n", __func__); ChangeAStep(numTriggerThreshold, 1, Register::DPP::PHA::TriggerThreshold); }
void ChannelSettingPHA::SetTriggerHoldOff() {printf("=== %s\n", __func__); ChangeAStep(numTriggerHoldOff, 4, Register::DPP::PHA::TriggerHoldOffWidth);}
void ChannelSettingPHA::SetInputRiseTime() {printf("=== %s\n", __func__); ChangeAStep(numInputRiseTime, 4, Register::DPP::PHA::InputRiseTime);}
void ChannelSettingPHA::SetRiseTimeValidWin(){printf("=== %s\n", __func__); ChangeAStep(numRiseTimeValidWin, 1, Register::DPP::PHA::RiseTimeValidationWindow);}
void ChannelSettingPHA::SetTrapRiseTime() {printf("=== %s\n", __func__); ChangeAStep(numTrapRiseTime, 4, Register::DPP::PHA::TrapezoidRiseTime);}
void ChannelSettingPHA::SetTrapFlatTop() {printf("=== %s\n", __func__); ChangeAStep(numTrapFlatTop, 4, Register::DPP::PHA::TrapezoidFlatTop);}
void ChannelSettingPHA::SetDecay() {printf("=== %s\n", __func__); ChangeAStep(numDecay, 4, Register::DPP::PHA::DecayTime);}
void ChannelSettingPHA::SetPeaking() {printf("=== %s\n", __func__); ChangeAStep(numPeaking, 4, Register::DPP::PHA::PeakingTime);}
void ChannelSettingPHA::SetPeakHoldOff() {printf("=== %s\n", __func__); ChangeAStep(numPeakHoldOff, 4, Register::DPP::PHA::PeakHoldOff);}
void ChannelSetting::SetPreTrigger(){ void ChannelSettingPHA::SetDCOffset(){
printf("=================== SetPreTrigger()\n"); printf("=== %s\n", __func__);
ChangeAStep(numPreTrigger, 4, Register::DPP::PreTrigger);
}
void ChannelSetting::SetEventAggregate(){
printf("=================== SetEventAggregate()\n");
if ( digi == NULL ) return; if ( digi == NULL ) return;
short boardID = boardIDEntry->GetNumber();
short ch = chIDEntry->GetNumber();
double temp = numDCOffset->GetNumber();
uint32_t bit = uint32_t((1.0 - temp) * 0xFFFF);
printf("%.2f = 0x%x \n", temp, bit);
if( digi != NULL ) digi[boardID]->WriteRegister(Register::DPP::ChannelDCOffset, bit , ch);
} }
void ChannelSetting::SetTriggerThreshold(){ void ChannelSettingPHA::SetTriggerSmoothing(){
printf("=================== SetTriggerThreshold()\n"); printf("=== %s\n", __func__);
}
void ChannelSetting::SetTriggerHoldOff(){
printf("=================== SetTriggerHoldOff()\n");
ChangeAStep(numTriggerHoldOff, 4, Register::DPP::PHA::TriggerHoldOffWidth);
}
void ChannelSetting::SetDCOffset(){
printf("=================== SetDCOffset()\n");
if ( digi == NULL ) return; if ( digi == NULL ) return;
short boardID = boardIDEntry->GetNumber();
short ch = chIDEntry->GetNumber();
if( digi != NULL ) digi[boardID]->WriteRegister(Register::DPP::PHA::RCCR2SmoothingFactor, (unsigned int)cbTriggerSmoothing->GetSelected() , ch);
} }
void ChannelSetting::SetTriggerSmoothing(){
printf("=================== SetTriggerSmoothing()\n");
if ( digi == NULL ) return;
}
void ChannelSetting::SetInputRiseTime(){
printf("=================== SetInputRiseTime()\n");
ChangeAStep(numInputRiseTime, 4, Register::DPP::PHA::InputRiseTime);
}
void ChannelSetting::SetRiseTimeValidWin(){
printf("=================== SetRiseTimeValidWin()\n");
ChangeAStep(numRiseTimeValidWin, 1, Register::DPP::PHA::RiseTimeValidationWindow);
}
void ChannelSetting::SetTrapRiseTime(){
printf("=================== SetTrapRiseTime()\n");
ChangeAStep(numTrapRiseTime, 4, Register::DPP::PHA::TrapezoidRiseTime);
}
void ChannelSetting::SetTrapFlatTop(){
printf("=================== SetTrapFlatTop()\n");
ChangeAStep(numTrapFlatTop, 4, Register::DPP::PHA::TrapezoidFlatTop);
}
void ChannelSetting::SetDecay(){
printf("=================== SetDecay()\n");
ChangeAStep(numDecay, 4, Register::DPP::PHA::DecayTime);
}
void ChannelSetting::SetPeaking(){
printf("=================== SetPeaking()\n");
ChangeAStep(numPeaking, 4, Register::DPP::PHA::PeakingTime);
}
void ChannelSetting::SetPeakHoldOff(){
printf("=================== SetPeakHoldOff()\n");
ChangeAStep(numPeakHoldOff, 4, Register::DPP::PHA::PeakHoldOff);
}

View File

@ -1,5 +1,5 @@
#ifndef CHANNEL_SETTING_H #ifndef CHANNEL_SETTING_PHA_H
#define CHANNEL_SETTING_H #define CHANNEL_SETTING_PHA_H
#include <TQObject.h> #include <TQObject.h>
#include <RQ_OBJECT.h> #include <RQ_OBJECT.h>
@ -13,8 +13,8 @@
class TGWindow; class TGWindow;
class TGMainFrame; class TGMainFrame;
class ChannelSetting{ class ChannelSettingPHA{
RQ_OBJECT("ChannelSetting") RQ_OBJECT("ChannelSettingPHA")
private: private:
TGMainFrame * fMain; TGMainFrame * fMain;
@ -64,16 +64,19 @@ class ChannelSetting{
TGComboBox * cbExtra2WordOption; TGComboBox * cbExtra2WordOption;
Digitizer ** digi; Digitizer ** digi;
int NChannel; int nDigi;
int NChannel; // hard coded = 16
bool isOpened; bool isOpened;
int presentBoardID;
unsigned short ch2ns; unsigned short ch2ns;
void ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address); void ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address);
public: public:
ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi); ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi, int boardID);
virtual ~ChannelSetting(); virtual ~ChannelSettingPHA();
void CloseWindow() { delete this; } void CloseWindow() { delete this; }