change digi to be global variable, change TGraph in FSUDAQ to be global
This commit is contained in:
parent
02ea0c98f1
commit
b1b3402227
|
@ -16,6 +16,8 @@ Digitizer::~Digitizer(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void Digitizer::Initalization(){
|
void Digitizer::Initalization(){
|
||||||
|
|
||||||
|
data = new Data();
|
||||||
|
|
||||||
portID = -1;
|
portID = -1;
|
||||||
boardID = -1;
|
boardID = -1;
|
||||||
|
@ -26,20 +28,13 @@ void Digitizer::Initalization(){
|
||||||
ADCFullSize = 0;
|
ADCFullSize = 0;
|
||||||
ch2ns = 0;
|
ch2ns = 0;
|
||||||
BoardInfo = {};
|
BoardInfo = {};
|
||||||
|
|
||||||
isDummy = true;
|
|
||||||
|
|
||||||
|
channelMask = 0xFFFF;
|
||||||
VMEBaseAddress = 0;
|
VMEBaseAddress = 0;
|
||||||
LinkType = CAEN_DGTZ_USB; /// default USB
|
LinkType = CAEN_DGTZ_USB; /// default USB
|
||||||
IOlev = CAEN_DGTZ_IOLevel_NIM; ///default NIM
|
IOlev = CAEN_DGTZ_IOLevel_NIM; ///default NIM
|
||||||
AcqMode = CAEN_DGTZ_DPP_ACQ_MODE_List; ///default list mode
|
|
||||||
|
|
||||||
channelMask = 0xFFFF;
|
|
||||||
|
|
||||||
data = new Data();
|
|
||||||
|
|
||||||
isSettingFilledinMemeory = false;
|
isSettingFilledinMemeory = false;
|
||||||
|
|
||||||
settingFileName = "";
|
settingFileName = "";
|
||||||
settingFileExist = false;
|
settingFileExist = false;
|
||||||
settingFile = NULL;
|
settingFile = NULL;
|
||||||
|
@ -47,7 +42,7 @@ void Digitizer::Initalization(){
|
||||||
ret = -1;
|
ret = -1;
|
||||||
isConnected = false;
|
isConnected = false;
|
||||||
AcqRun = false;
|
AcqRun = false;
|
||||||
|
isDummy = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Digitizer::Reset(){
|
void Digitizer::Reset(){
|
||||||
|
@ -242,6 +237,8 @@ int Digitizer::ProgramBoard(){
|
||||||
|
|
||||||
/// Set the digitizer acquisition mode (CAEN_DGTZ_SW_CONTROLLED or CAEN_DGTZ_S_IN_CONTROLLED)
|
/// Set the digitizer acquisition mode (CAEN_DGTZ_SW_CONTROLLED or CAEN_DGTZ_S_IN_CONTROLLED)
|
||||||
ret |= CAEN_DGTZ_SetAcquisitionMode(handle, CAEN_DGTZ_SW_CONTROLLED); /// software command
|
ret |= CAEN_DGTZ_SetAcquisitionMode(handle, CAEN_DGTZ_SW_CONTROLLED); /// software command
|
||||||
|
|
||||||
|
CAEN_DGTZ_DPP_AcqMode_t AcqMode = CAEN_DGTZ_DPP_ACQ_MODE_List;
|
||||||
ret |= CAEN_DGTZ_SetDPPAcquisitionMode(handle, AcqMode, CAEN_DGTZ_DPP_SAVE_PARAM_EnergyAndTime);
|
ret |= CAEN_DGTZ_SetDPPAcquisitionMode(handle, AcqMode, CAEN_DGTZ_DPP_SAVE_PARAM_EnergyAndTime);
|
||||||
|
|
||||||
/** Set the digitizer's behaviour when an external trigger arrives:
|
/** Set the digitizer's behaviour when an external trigger arrives:
|
||||||
|
|
|
@ -39,7 +39,6 @@ class Digitizer{
|
||||||
uint32_t VMEBaseAddress; /// For direct USB or Optical-link connection, VMEBaseAddress must be 0
|
uint32_t VMEBaseAddress; /// For direct USB or Optical-link connection, VMEBaseAddress must be 0
|
||||||
CAEN_DGTZ_ConnectionType LinkType; /// USB or Optic
|
CAEN_DGTZ_ConnectionType LinkType; /// USB or Optic
|
||||||
CAEN_DGTZ_IOLevel_t IOlev; /// TTL signal (1 = 1.5 to 5V, 0 = 0 to 0.7V ) or NIM signal (1 = -1 to -0.8V, 0 = 0V)
|
CAEN_DGTZ_IOLevel_t IOlev; /// TTL signal (1 = 1.5 to 5V, 0 = 0 to 0.7V ) or NIM signal (1 = -1 to -0.8V, 0 = 0V)
|
||||||
CAEN_DGTZ_DPP_AcqMode_t AcqMode;
|
|
||||||
|
|
||||||
///------- other parameters
|
///------- other parameters
|
||||||
int ret; /// return value, refer to CAEN_DGTZ_ErrorCode
|
int ret; /// return value, refer to CAEN_DGTZ_ErrorCode
|
||||||
|
|
114
FSUDAQ.cpp
114
FSUDAQ.cpp
|
@ -52,8 +52,21 @@ long get_time(){
|
||||||
return time_ms;
|
return time_ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
///make static members
|
///============= Global variable
|
||||||
Digitizer ** MainWindow::digi = NULL;
|
TH1F * hEnergy[MaxNBoards][MaxNChannels] = {NULL};
|
||||||
|
TH1F * hChannel[MaxNBoards] = {NULL};
|
||||||
|
|
||||||
|
TGraph * gAnaTrace1 = NULL ;
|
||||||
|
TGraph * gAnaTrace2 = NULL ;
|
||||||
|
TGraph * gDigiTrace1 = NULL ;
|
||||||
|
TGraph * gDigiTrace2 = NULL ;
|
||||||
|
|
||||||
|
Pixel_t red, blue, green;
|
||||||
|
|
||||||
|
unsigned short nDigi;
|
||||||
|
Digitizer ** digi = NULL;
|
||||||
|
|
||||||
|
///============ static members
|
||||||
TGTextEdit * MainWindow::teLog = NULL;
|
TGTextEdit * MainWindow::teLog = NULL;
|
||||||
TRootEmbeddedCanvas * MainWindow::fEcanvas = NULL;
|
TRootEmbeddedCanvas * MainWindow::fEcanvas = NULL;
|
||||||
TGNumberEntry * MainWindow::boardIDEntry = NULL;
|
TGNumberEntry * MainWindow::boardIDEntry = NULL;
|
||||||
|
@ -64,18 +77,15 @@ TGNumberEntry * MainWindow::runIDEntry = NULL;
|
||||||
|
|
||||||
BoardSetting * MainWindow::boardSetting = NULL;
|
BoardSetting * MainWindow::boardSetting = NULL;
|
||||||
|
|
||||||
TH1F * MainWindow::hEnergy[MaxNBoards][MaxNChannels] = {NULL};
|
|
||||||
TH1F * MainWindow::hChannel[MaxNBoards] = {NULL};
|
|
||||||
|
|
||||||
TGraph * MainWindow::gAnaTrace1 = NULL ;
|
|
||||||
TGraph * MainWindow::gAnaTrace2 = NULL ;
|
|
||||||
TGraph * MainWindow::gDigiTrace1 = NULL ;
|
|
||||||
TGraph * MainWindow::gDigiTrace2 = NULL ;
|
|
||||||
|
|
||||||
MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
||||||
|
|
||||||
nDigi = 0;
|
nDigi = 0;
|
||||||
|
|
||||||
|
gClient->GetColorByName("red", red);
|
||||||
|
gClient->GetColorByName("blue", blue);
|
||||||
|
gClient->GetColorByName("green", green);
|
||||||
|
|
||||||
/// Create a main frame
|
/// Create a main frame
|
||||||
fMain = new TGMainFrame(p,w,h);
|
fMain = new TGMainFrame(p,w,h);
|
||||||
///fMain->SetWMPosition(500, 500); //does not work
|
///fMain->SetWMPosition(500, 500); //does not work
|
||||||
|
@ -147,7 +157,7 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
||||||
cbMode->AddEntry("Count Hist.", Mode_CountHist);
|
cbMode->AddEntry("Count Hist.", Mode_CountHist);
|
||||||
cbMode->AddEntry("Ocsilloscope.", Mode_Oscilloscope);
|
cbMode->AddEntry("Ocsilloscope.", Mode_Oscilloscope);
|
||||||
cbMode->AddEntry("Data Run", Mode_DataRun);
|
cbMode->AddEntry("Data Run", Mode_DataRun);
|
||||||
cbMode->Select(1, false);
|
cbMode->Select(Mode_Oscilloscope, false);
|
||||||
cbMode->Resize(80, 20);
|
cbMode->Resize(80, 20);
|
||||||
cbMode->Connect("Changed()", "MainWindow", this, "ChangePlot()");
|
cbMode->Connect("Changed()", "MainWindow", this, "ChangePlot()");
|
||||||
|
|
||||||
|
@ -226,17 +236,25 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
||||||
LogMsg((char*)"The LogMsg is not complete for all actions. [update later]");
|
LogMsg((char*)"The LogMsg is not complete for all actions. [update later]");
|
||||||
LogMsg((char*)"Please \"Open Digitizers\" to start.");
|
LogMsg((char*)"Please \"Open Digitizers\" to start.");
|
||||||
|
|
||||||
HandleMenu(M_DIGITIZER_OPEN);
|
//HandleMenu(M_DIGITIZER_OPEN);
|
||||||
//HandleMenu(M_BOARD_SETTINGS);
|
//HandleMenu(M_BOARD_SETTINGS);
|
||||||
//HandleMenu(M_CH_SETTING_PHA);
|
//HandleMenu(M_CH_SETTING_PHA);
|
||||||
//HandleMenu(M_CH_SETTING_PSD);
|
//HandleMenu(M_CH_SETTING_PSD);
|
||||||
//HandleMenu(M_REGISTER_SETTING);
|
//HandleMenu(M_REGISTER_SETTING);
|
||||||
//HandleMenu(M_TRIGGER_SUMMARY);
|
//HandleMenu(M_TRIGGER_SUMMARY);
|
||||||
|
|
||||||
gAnaTrace1 = new TGraph(); gAnaTrace1->GetYaxis()->SetRangeUser(0, 0x3FFF);
|
gAnaTrace1 = new TGraph();
|
||||||
gAnaTrace2 = new TGraph(); gAnaTrace2->SetLineColor(2);
|
gAnaTrace1->SetName("Analog Trace 1");
|
||||||
gDigiTrace1 = new TGraph(); gDigiTrace1->SetLineColor(4);
|
gAnaTrace1->GetXaxis()->SetTitle("[ns]");
|
||||||
gDigiTrace2 = new TGraph(); gDigiTrace2->SetLineColor(6);
|
gAnaTrace2 = new TGraph();
|
||||||
|
gAnaTrace2->SetName("Analog Trace 2");
|
||||||
|
gAnaTrace2->SetLineColor(2);
|
||||||
|
gDigiTrace1 = new TGraph();
|
||||||
|
gDigiTrace1->SetName("Digital Trace 1");
|
||||||
|
gDigiTrace1->SetLineColor(4);
|
||||||
|
gDigiTrace2 = new TGraph();
|
||||||
|
gDigiTrace2->SetName("Digital Trace 2");
|
||||||
|
gDigiTrace2->SetLineColor(6);
|
||||||
|
|
||||||
gStyle->SetOptStat("neiou");
|
gStyle->SetOptStat("neiou");
|
||||||
|
|
||||||
|
@ -265,8 +283,6 @@ MainWindow::~MainWindow() {
|
||||||
delete bPlotSingleTrace;
|
delete bPlotSingleTrace;
|
||||||
delete bFitTrace;
|
delete bFitTrace;
|
||||||
|
|
||||||
delete [] digi;
|
|
||||||
|
|
||||||
delete boardSetting;
|
delete boardSetting;
|
||||||
delete channelSettingPHA;
|
delete channelSettingPHA;
|
||||||
delete channelSettingPSD;
|
delete channelSettingPSD;
|
||||||
|
@ -276,16 +292,6 @@ MainWindow::~MainWindow() {
|
||||||
|
|
||||||
delete fillHistThread;
|
delete fillHistThread;
|
||||||
|
|
||||||
delete gAnaTrace1;
|
|
||||||
delete gAnaTrace2;
|
|
||||||
delete gDigiTrace1;
|
|
||||||
delete gDigiTrace2;
|
|
||||||
|
|
||||||
for( int i = 0; i < MaxNBoards; i++){
|
|
||||||
delete hChannel[i];
|
|
||||||
for( int j = 0; j < MaxNChannels; j++) delete hEnergy[i][j];
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Clean up used widgets: frames, buttons, layout hints
|
/// Clean up used widgets: frames, buttons, layout hints
|
||||||
fMain->Cleanup();
|
fMain->Cleanup();
|
||||||
delete fMain;
|
delete fMain;
|
||||||
|
@ -314,7 +320,7 @@ void MainWindow::HandleMenu(Int_t id){
|
||||||
|
|
||||||
///========================= Trigger summary
|
///========================= Trigger summary
|
||||||
case M_TRIGGER_SUMMARY: {
|
case M_TRIGGER_SUMMARY: {
|
||||||
triggerSummary = new TriggerSummary(gClient->GetRoot(), 600, 600, digi, nDigi);
|
triggerSummary = new TriggerSummary(gClient->GetRoot(), 600, 600);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
case M_LOAD_SETTINGS:{
|
case M_LOAD_SETTINGS:{
|
||||||
|
@ -323,27 +329,27 @@ void MainWindow::HandleMenu(Int_t id){
|
||||||
|
|
||||||
///========================= Channel setting
|
///========================= Channel setting
|
||||||
case M_CH_SETTING_PHA:
|
case M_CH_SETTING_PHA:
|
||||||
channelSettingPHA = new ChannelSettingPHA(gClient->GetRoot(), 600, 600, digi, nDigi, 0);
|
channelSettingPHA = new ChannelSettingPHA(gClient->GetRoot(), 600, 600, 0);
|
||||||
channelSettingPHA->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
channelSettingPHA->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
||||||
channelSettingPHA->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
channelSettingPHA->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_CH_SETTING_PSD:
|
case M_CH_SETTING_PSD:
|
||||||
channelSettingPSD = new ChannelSettingPSD(gClient->GetRoot(), 600, 600, digi, nDigi, 0);
|
channelSettingPSD = new ChannelSettingPSD(gClient->GetRoot(), 600, 600, 0);
|
||||||
channelSettingPSD->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
channelSettingPSD->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
||||||
//channelSettingPSD->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
//channelSettingPSD->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
///========================= Board setting
|
///========================= Board setting
|
||||||
case M_BOARD_SETTINGS:{
|
case M_BOARD_SETTINGS:{
|
||||||
boardSetting = new BoardSetting(gClient->GetRoot(), 600, 600, digi, nDigi);
|
boardSetting = new BoardSetting(gClient->GetRoot(), 600, 600);
|
||||||
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)");
|
boardSetting->Connect("Haha(Int_t)", "MainWindow", this, "OpenChannelSetting(Int_t)");
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
///========================= Setting Summary
|
///========================= Setting Summary
|
||||||
case M_REGISTER_SETTING:{
|
case M_REGISTER_SETTING:{
|
||||||
registerSetting = new RegisterSetting(gClient->GetRoot(), 600, 600, digi, nDigi, Register::DPP::RecordLength_G);
|
registerSetting = new RegisterSetting(gClient->GetRoot(), 600, 600, Register::DPP::RecordLength_G);
|
||||||
///registerSetting->Connect("SendChangeSignal()", "ChannelSettingPHA", this, "ChangeCh()");
|
///registerSetting->Connect("SendChangeSignal()", "ChannelSettingPHA", this, "ChangeCh()");
|
||||||
///registerSetting->Connect("SendChangeSignal()", "ChannelSettingPSD", this, "ChangeCh()");
|
///registerSetting->Connect("SendChangeSignal()", "ChannelSettingPSD", this, "ChangeCh()");
|
||||||
}break;
|
}break;
|
||||||
|
@ -544,7 +550,11 @@ void MainWindow::StopRun(){
|
||||||
|
|
||||||
for( int i = 0; i < nDigi; i++){
|
for( int i = 0; i < nDigi; i++){
|
||||||
digi[i]->StopACQ();
|
digi[i]->StopACQ();
|
||||||
//Save last bit of buffer
|
}
|
||||||
|
|
||||||
|
fillHistThread->Join();
|
||||||
|
|
||||||
|
for( int i = 0; i < nDigi; i++){
|
||||||
///===== clear data;
|
///===== clear data;
|
||||||
digi[i]->GetData()->ClearTriggerRate();
|
digi[i]->GetData()->ClearTriggerRate();
|
||||||
}
|
}
|
||||||
|
@ -569,13 +579,13 @@ void MainWindow::OpenChannelSetting(Int_t boardID){
|
||||||
if( digi == NULL ) return;
|
if( digi == NULL ) return;
|
||||||
|
|
||||||
if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ){
|
if( digi[boardID]->GetDPPType() == V1730_DPP_PHA_CODE ){
|
||||||
channelSettingPHA = new ChannelSettingPHA(gClient->GetRoot(), 600, 600, digi, nDigi, boardID);
|
channelSettingPHA = new ChannelSettingPHA(gClient->GetRoot(), 600, 600, boardID);
|
||||||
channelSettingPHA->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
channelSettingPHA->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
||||||
channelSettingPHA->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
channelSettingPHA->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
||||||
}
|
}
|
||||||
|
|
||||||
if( digi[boardID]->GetDPPType() == V1730_DPP_PSD_CODE ){
|
if( digi[boardID]->GetDPPType() == V1730_DPP_PSD_CODE ){
|
||||||
channelSettingPSD = new ChannelSettingPSD(gClient->GetRoot(), 600, 600, digi, nDigi, boardID);
|
channelSettingPSD = new ChannelSettingPSD(gClient->GetRoot(), 600, 600, boardID);
|
||||||
channelSettingPSD->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
channelSettingPSD->Connect("LogMsg(char*)", "MainWindow", this, "LogMsg(char*)");
|
||||||
//channelSettingPSD->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
//channelSettingPSD->Connect("SendPlotTraceCmd()", "MainWindow", this, "PlotSingleTrace()");
|
||||||
}
|
}
|
||||||
|
@ -775,6 +785,7 @@ void * MainWindow::RunThread(void * ptr){
|
||||||
|
|
||||||
uint32_t bdConfig = digi[boardID]->GetSettingFromMemory(Register::DPP::BoardConfiguration);
|
uint32_t bdConfig = digi[boardID]->GetSettingFromMemory(Register::DPP::BoardConfiguration);
|
||||||
bool isDualTrace = ( bdConfig >> 11 ) & 0x1;
|
bool isDualTrace = ( bdConfig >> 11 ) & 0x1;
|
||||||
|
bool hasTrace = (bdConfig >> 16 ) & 0x1;
|
||||||
|
|
||||||
Data * data = digi[boardID]->GetData();
|
Data * data = digi[boardID]->GetData();
|
||||||
|
|
||||||
|
@ -813,8 +824,8 @@ void * MainWindow::RunThread(void * ptr){
|
||||||
fEcanvas->GetCanvas()->cd();
|
fEcanvas->GetCanvas()->cd();
|
||||||
|
|
||||||
///Fill trace
|
///Fill trace
|
||||||
if( cbMode->GetSelected() == Mode_Oscilloscope){
|
if( cbMode->GetSelected() == Mode_Oscilloscope && hasTrace){
|
||||||
|
|
||||||
unsigned short nData = data->NumEvents[ch];
|
unsigned short nData = data->NumEvents[ch];
|
||||||
traceLength = (data->Waveform1[ch][nData-1]).size();
|
traceLength = (data->Waveform1[ch][nData-1]).size();
|
||||||
if( traceLength > 0 ){
|
if( traceLength > 0 ){
|
||||||
|
@ -829,9 +840,10 @@ void * MainWindow::RunThread(void * ptr){
|
||||||
if( isDualTrace) gAnaTrace2->RemovePoint(i);
|
if( isDualTrace) gAnaTrace2->RemovePoint(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gAnaTrace1->GetYaxis()->SetRangeUser(0, 0x3FFF);
|
gAnaTrace1->Draw("AL");
|
||||||
gAnaTrace1->Draw("APL");
|
///this causes warning
|
||||||
gAnaTrace2->Draw("L");
|
gAnaTrace1->GetYaxis()->SetRangeUser(0, 0x3FFF);
|
||||||
|
gAnaTrace2->Draw("same L");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -844,21 +856,20 @@ void * MainWindow::RunThread(void * ptr){
|
||||||
for( int i = 0 ; i < digi[boardID]->GetNChannel(); i++){
|
for( int i = 0 ; i < digi[boardID]->GetNChannel(); i++){
|
||||||
for( int j = 0; j < data->NumEvents[i]; j++) hChannel[boardID]->Fill(i);
|
for( int j = 0; j < data->NumEvents[i]; j++) hChannel[boardID]->Fill(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
///Fill Energy histogram
|
///Fill Energy histogram
|
||||||
for( int i = 0; i < data->NumEvents[ch]; i++){
|
for( int i = 0; i < data->NumEvents[ch]; i++){
|
||||||
hEnergy[boardID][ch]->Fill( data->Energy[ch][i]);
|
hEnergy[boardID][ch]->Fill( data->Energy[ch][i] );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( cbMode->GetSelected() == Mode_EnergyHist ) hEnergy[boardID][ch]->Draw("hist");
|
if( cbMode->GetSelected() == Mode_EnergyHist ) hEnergy[boardID][ch]->Draw("hist");
|
||||||
if( cbMode->GetSelected() == Mode_CountHist ) hChannel[boardID]->Draw("hist");
|
if( cbMode->GetSelected() == Mode_CountHist ) hChannel[boardID]->Draw("hist");
|
||||||
|
|
||||||
data->ClearData();
|
data->ClearData();
|
||||||
PreviousTime = CurrentTime;
|
PreviousTime = CurrentTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
fEcanvas->GetCanvas()->Update();
|
fEcanvas->GetCanvas()->Update();
|
||||||
gSystem->ProcessEvents();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data->ClearData();
|
data->ClearData();
|
||||||
|
@ -874,5 +885,16 @@ int main(int argc, char **argv) {
|
||||||
TApplication theApp("App",&argc,argv);
|
TApplication theApp("App",&argc,argv);
|
||||||
new MainWindow(gClient->GetRoot(),800,800);
|
new MainWindow(gClient->GetRoot(),800,800);
|
||||||
theApp.Run();
|
theApp.Run();
|
||||||
|
|
||||||
|
delete gAnaTrace1;
|
||||||
|
delete gAnaTrace2;
|
||||||
|
delete gDigiTrace1;
|
||||||
|
delete gDigiTrace2;
|
||||||
|
|
||||||
|
for( int i = 0; i < MaxNBoards; i++){
|
||||||
|
delete hChannel[i];
|
||||||
|
for( int j = 0; j < MaxNChannels; j++) delete hEnergy[i][j];
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
12
FSUDAQ.h
12
FSUDAQ.h
|
@ -52,11 +52,9 @@ private:
|
||||||
TGTextButton *bPlotSingleTrace;
|
TGTextButton *bPlotSingleTrace;
|
||||||
TGTextButton *bFitTrace;
|
TGTextButton *bFitTrace;
|
||||||
|
|
||||||
unsigned short nDigi;
|
|
||||||
std::vector<int> portID;
|
std::vector<int> portID;
|
||||||
std::vector<int> boardID;
|
std::vector<int> boardID;
|
||||||
std::vector<int> serialNum;
|
std::vector<int> serialNum;
|
||||||
static Digitizer ** digi;
|
|
||||||
|
|
||||||
static BoardSetting * boardSetting;
|
static BoardSetting * boardSetting;
|
||||||
ChannelSettingPHA * channelSettingPHA;
|
ChannelSettingPHA * channelSettingPHA;
|
||||||
|
@ -66,15 +64,7 @@ private:
|
||||||
ProgramSetting * programSetting;
|
ProgramSetting * programSetting;
|
||||||
|
|
||||||
TThread * fillHistThread;
|
TThread * fillHistThread;
|
||||||
|
|
||||||
static TH1F * hEnergy [MaxNBoards][MaxNChannels];
|
|
||||||
static TH1F * hChannel[MaxNBoards];
|
|
||||||
|
|
||||||
static TGraph * gAnaTrace1; /// analogy trace 1
|
|
||||||
static TGraph * gAnaTrace2; /// analogy trace 2
|
|
||||||
static TGraph * gDigiTrace1; /// digital trace 1
|
|
||||||
static TGraph * gDigiTrace2; /// digital trace 1
|
|
||||||
|
|
||||||
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();
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "boardSetting.h"
|
#include "boardSetting.h"
|
||||||
|
|
||||||
|
|
||||||
TString boardSettingName[NUM_BOARD_INFO] = { "Model",
|
TString boardSettingName[NUM_BOARD_INFO] = { "Model",
|
||||||
"DPP Type",
|
"DPP Type",
|
||||||
"Link Type",
|
"Link Type",
|
||||||
|
@ -20,14 +21,13 @@ TString boardSettingName[NUM_BOARD_INFO] = { "Model",
|
||||||
"AMC version"
|
"AMC version"
|
||||||
};
|
};
|
||||||
|
|
||||||
BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nBoard){
|
///======== declared at FSUDAQ.cpp
|
||||||
|
extern Pixel_t red, blue, green;
|
||||||
this->nDigi = nBoard;
|
extern unsigned short nDigi;
|
||||||
this->digi = digi;
|
extern Digitizer ** digi;
|
||||||
|
|
||||||
gClient->GetColorByName("red", red);
|
BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h){
|
||||||
gClient->GetColorByName("blue", blue);
|
|
||||||
|
|
||||||
fMain = new TGMainFrame(p,w,h);
|
fMain = new TGMainFrame(p,w,h);
|
||||||
fMain->SetWindowName("Board Settings & Status");
|
fMain->SetWindowName("Board Settings & Status");
|
||||||
fMain->Connect("CloseWindow()", "BoardSetting", this, "CloseWindow()");
|
fMain->Connect("CloseWindow()", "BoardSetting", this, "CloseWindow()");
|
||||||
|
@ -42,9 +42,9 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
|
||||||
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, 0, 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, nBoard-1);
|
boardIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, nDigi-1);
|
||||||
boardIDEntry->Connect("Modified()", "BoardSetting", this, "ChangeBoard()");
|
boardIDEntry->Connect("Modified()", "BoardSetting", this, "ChangeBoard()");
|
||||||
if( nBoard <= 1 ) boardIDEntry->SetState(false);
|
if( nDigi <= 1 ) boardIDEntry->SetState(false);
|
||||||
|
|
||||||
int boardID = boardIDEntry->GetNumber();
|
int boardID = boardIDEntry->GetNumber();
|
||||||
|
|
||||||
|
@ -621,6 +621,10 @@ BoardSetting::BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** d
|
||||||
|
|
||||||
TGTextButton * bReadData = new TGTextButton(vfButton, "Read Data"); vfButton->AddFrame(bReadData, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
|
TGTextButton * bReadData = new TGTextButton(vfButton, "Read Data"); vfButton->AddFrame(bReadData, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
|
||||||
bReadData->Connect("Clicked()", "BoardSetting", this, "ReadData()");
|
bReadData->Connect("Clicked()", "BoardSetting", this, "ReadData()");
|
||||||
|
|
||||||
|
TGTextButton * bCaliADC = new TGTextButton(vfButton, "Calibrate ADC"); vfButton->AddFrame(bCaliADC, new TGLayoutHints( kLHintsExpandX | kLHintsExpandY, 5, 0, 5, 0));
|
||||||
|
bCaliADC->Connect("Clicked()", "ChannelSettingPHA", this, "CaliADC()");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TGHorizontalFrame * hRow2 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow2, new TGLayoutHints(kLHintsExpandX));
|
TGHorizontalFrame * hRow2 = new TGHorizontalFrame(vframe); vframe->AddFrame(hRow2, new TGLayoutHints(kLHintsExpandX));
|
||||||
|
@ -1435,7 +1439,7 @@ void BoardSetting::ReadData(){
|
||||||
digi[boardID]->ReadData();
|
digi[boardID]->ReadData();
|
||||||
|
|
||||||
//data->PrintBuffer();
|
//data->PrintBuffer();
|
||||||
data->DecodeBuffer(2);
|
data->DecodeBuffer(false, 3);
|
||||||
|
|
||||||
data->PrintStat();
|
data->PrintStat();
|
||||||
|
|
||||||
|
@ -1542,3 +1546,9 @@ void BoardSetting::FillBufferSizeTextBox(){
|
||||||
uint32_t buffer = digi[boardID]->CalByteForBuffer();
|
uint32_t buffer = digi[boardID]->CalByteForBuffer();
|
||||||
txtBufferSize->SetText(Form("%.2f", buffer/1024./1024.));
|
txtBufferSize->SetText(Form("%.2f", buffer/1024./1024.));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BoardSetting::CaliADC(){
|
||||||
|
if ( digi == NULL ) return;
|
||||||
|
short boardID = boardIDEntry->GetNumber();
|
||||||
|
if( digi != NULL ) digi[boardID]->WriteRegister(Register::DPP::ADCCalibration_W, 1);
|
||||||
|
}
|
||||||
|
|
|
@ -21,17 +21,12 @@ class BoardSetting{
|
||||||
private:
|
private:
|
||||||
TGMainFrame * fMain;
|
TGMainFrame * fMain;
|
||||||
|
|
||||||
Pixel_t red, blue;
|
|
||||||
|
|
||||||
TGNumberEntry * boardIDEntry;
|
TGNumberEntry * boardIDEntry;
|
||||||
|
|
||||||
TGTextEntry * entry[NUM_BOARD_INFO];
|
TGTextEntry * entry[NUM_BOARD_INFO];
|
||||||
|
|
||||||
TGTextEntry * txtSettingFile;
|
TGTextEntry * txtSettingFile;
|
||||||
|
|
||||||
int nDigi;
|
|
||||||
Digitizer ** digi;
|
|
||||||
|
|
||||||
/// board failure status
|
/// board failure status
|
||||||
TGTextEntry * enPLLStatus;
|
TGTextEntry * enPLLStatus;
|
||||||
TGTextEntry * enTempStatus;
|
TGTextEntry * enTempStatus;
|
||||||
|
@ -131,7 +126,7 @@ class BoardSetting{
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BoardSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nBoard);
|
BoardSetting(const TGWindow *p, UInt_t w, UInt_t h);
|
||||||
virtual ~BoardSetting();
|
virtual ~BoardSetting();
|
||||||
|
|
||||||
bool IsOpen() {return isOpened;}
|
bool IsOpen() {return isOpened;}
|
||||||
|
@ -189,6 +184,7 @@ class BoardSetting{
|
||||||
void ProgramDefaultBoard();
|
void ProgramDefaultBoard();
|
||||||
void ProgramBoardFromFile();
|
void ProgramBoardFromFile();
|
||||||
void SaveSettingFile();
|
void SaveSettingFile();
|
||||||
|
void CaliADC();
|
||||||
|
|
||||||
void FillBufferSizeTextBox();
|
void FillBufferSizeTextBox();
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,14 +10,13 @@
|
||||||
|
|
||||||
#include "channelSettingPHA.h"
|
#include "channelSettingPHA.h"
|
||||||
|
|
||||||
ChannelSettingPHA::ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi, int boardID){
|
///========= declared at FSUDAQ.cpp
|
||||||
|
extern Pixel_t red, blue, green;
|
||||||
this->digi = digi;
|
|
||||||
this->nDigi = nDigi;
|
extern unsigned short nDigi;
|
||||||
|
extern Digitizer ** digi;
|
||||||
Pixel_t red, green;
|
|
||||||
gClient->GetColorByName("red", red);
|
ChannelSettingPHA::ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, int boardID){
|
||||||
gClient->GetColorByName("green", green);
|
|
||||||
|
|
||||||
fMain = new TGMainFrame(p,w,h);
|
fMain = new TGMainFrame(p,w,h);
|
||||||
fMain->SetWindowName("Channel Settings PHA");
|
fMain->SetWindowName("Channel Settings PHA");
|
||||||
|
@ -66,6 +65,27 @@ ChannelSettingPHA::ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digi
|
||||||
int ch = chIDEntry->GetNumber();
|
int ch = chIDEntry->GetNumber();
|
||||||
int width = 80;
|
int width = 80;
|
||||||
|
|
||||||
|
TGHorizontalFrame *hframeStatus = new TGHorizontalFrame(vframe, w, 50 ); vframe->AddFrame(hframeStatus, new TGLayoutHints(kLHintsCenterX, 2,2,2,2));
|
||||||
|
|
||||||
|
{///================== Channel Status
|
||||||
|
|
||||||
|
txtSPIBus = new TGTextEntry(hframeStatus, new TGTextBuffer(1)); hframeStatus->AddFrame(txtSPIBus, new TGLayoutHints(kLHintsLeft, 5,5,0,0));
|
||||||
|
txtSPIBus->SetEnabled(false);
|
||||||
|
txtSPIBus->Resize(200, 20);
|
||||||
|
txtSPIBus->SetText( "SPI bus not busy" );
|
||||||
|
|
||||||
|
txtADCCaliStatus = new TGTextEntry(hframeStatus, new TGTextBuffer(1)); hframeStatus->AddFrame(txtADCCaliStatus, new TGLayoutHints(kLHintsLeft, 5,5,0,0));
|
||||||
|
txtADCCaliStatus->SetEnabled(false);
|
||||||
|
txtADCCaliStatus->Resize(200, 20);
|
||||||
|
txtADCCaliStatus->SetText( "ADC Calibration None" );
|
||||||
|
|
||||||
|
txtADCPowerStatus = new TGTextEntry(hframeStatus, new TGTextBuffer(1)); hframeStatus->AddFrame(txtADCPowerStatus, new TGLayoutHints(kLHintsLeft, 5,5,0,0));
|
||||||
|
txtADCPowerStatus->SetEnabled(false);
|
||||||
|
txtADCPowerStatus->Resize(300, 20);
|
||||||
|
txtADCPowerStatus->SetText( "ADC Power OK." );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
TGHorizontalFrame *hframe1 = new TGHorizontalFrame(vframe, w, 50 ); vframe->AddFrame(hframe1, new TGLayoutHints(kLHintsCenterX, 2,2,2,2));
|
TGHorizontalFrame *hframe1 = new TGHorizontalFrame(vframe, w, 50 ); vframe->AddFrame(hframe1, new TGLayoutHints(kLHintsCenterX, 2,2,2,2));
|
||||||
|
|
||||||
{///================== Input Setting
|
{///================== Input Setting
|
||||||
|
@ -391,7 +411,7 @@ ChannelSettingPHA::ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digi
|
||||||
}
|
}
|
||||||
|
|
||||||
{///================== Commands Buttons
|
{///================== Commands Buttons
|
||||||
TGGroupFrame * gfCmd = new TGGroupFrame(hframe2, "Commands", kHorizontalFrame); hframe2->AddFrame(gfCmd);
|
TGGroupFrame * gfCmd = new TGGroupFrame(hframe2, "Commands", kHorizontalFrame); hframe2->AddFrame(gfCmd, new TGLayoutHints(kLHintsExpandY));
|
||||||
TGVerticalFrame * vfCmd = new TGVerticalFrame(gfCmd); gfCmd->AddFrame(vfCmd, new TGLayoutHints(kLHintsExpandX));
|
TGVerticalFrame * vfCmd = new TGVerticalFrame(gfCmd); gfCmd->AddFrame(vfCmd, new TGLayoutHints(kLHintsExpandX));
|
||||||
|
|
||||||
TGTextButton * bReadSetting = new TGTextButton(vfCmd, "Read Settings"); vfCmd->AddFrame(bReadSetting, new TGLayoutHints(kLHintsExpandX, 5,5,3,4));
|
TGTextButton * bReadSetting = new TGTextButton(vfCmd, "Read Settings"); vfCmd->AddFrame(bReadSetting, new TGLayoutHints(kLHintsExpandX, 5,5,3,4));
|
||||||
|
@ -399,7 +419,7 @@ ChannelSettingPHA::ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digi
|
||||||
|
|
||||||
TGTextButton * bReadTrace = new TGTextButton(vfCmd, "Read Trace"); vfCmd->AddFrame(bReadTrace, new TGLayoutHints(kLHintsExpandX, 5,5,3,4));
|
TGTextButton * bReadTrace = new TGTextButton(vfCmd, "Read Trace"); vfCmd->AddFrame(bReadTrace, new TGLayoutHints(kLHintsExpandX, 5,5,3,4));
|
||||||
bReadTrace->Connect("Clicked()", "ChannelSettingPHA", this, "ReadTrace()");
|
bReadTrace->Connect("Clicked()", "ChannelSettingPHA", this, "ReadTrace()");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{///=================== Comment
|
{///=================== Comment
|
||||||
|
@ -432,10 +452,55 @@ ChannelSettingPHA::~ChannelSettingPHA(){
|
||||||
isOpened = false;
|
isOpened = false;
|
||||||
|
|
||||||
delete boardIDEntry;
|
delete boardIDEntry;
|
||||||
|
delete chIDEntry;
|
||||||
|
|
||||||
|
delete eTemp ;
|
||||||
|
|
||||||
|
delete txtSPIBus;
|
||||||
|
delete txtADCCaliStatus;
|
||||||
|
delete txtADCPowerStatus;
|
||||||
|
|
||||||
delete cbOnOff;
|
delete cbOnOff;
|
||||||
delete cbInputDynamicRange;
|
|
||||||
delete cbPolarity;
|
delete cbPolarity;
|
||||||
|
delete cbInputDynamicRange;
|
||||||
|
delete numRecordLength;
|
||||||
|
delete numPreTrigger;
|
||||||
|
delete numEventAgg;
|
||||||
|
delete eBuffer ;
|
||||||
|
|
||||||
|
delete numTriggerThreshold;
|
||||||
|
delete numTriggerHoldOff;
|
||||||
|
delete numDCOffset;
|
||||||
|
delete cbTriggerSmoothing;
|
||||||
|
delete numInputRiseTime;
|
||||||
|
delete numRiseTimeValidWin;
|
||||||
|
delete cbTriggerMode;
|
||||||
|
|
||||||
|
delete numTrapRiseTime;
|
||||||
|
delete numTrapFlatTop;
|
||||||
|
delete numDecay;
|
||||||
|
delete numPeaking;
|
||||||
|
delete numPeakHoldOff;
|
||||||
|
delete cbPeakMean;
|
||||||
|
delete cbBaseLineAvg;
|
||||||
|
|
||||||
|
delete numTrapScale;
|
||||||
|
delete cbDecimation;
|
||||||
|
delete cbDecimationGain;
|
||||||
|
delete cbRollOver;
|
||||||
|
delete cbPileUp;
|
||||||
|
delete cbLocalShapedTrigger;
|
||||||
|
|
||||||
|
delete cbLocalTriggerValid;
|
||||||
|
delete cbVetoSource;
|
||||||
|
delete cbTriggerCounterRate;
|
||||||
|
delete cbBaselineCal;
|
||||||
|
delete cbTagCorrelatedEvent;
|
||||||
|
delete cbBaselineOptimize;
|
||||||
|
|
||||||
|
delete cbDisableSelfTrigger;
|
||||||
|
delete cbExtra2WordOption;
|
||||||
|
|
||||||
|
|
||||||
/// fMain must be delete last;
|
/// fMain must be delete last;
|
||||||
fMain->Cleanup();
|
fMain->Cleanup();
|
||||||
|
@ -497,14 +562,37 @@ void ChannelSettingPHA::ChangeCh(){
|
||||||
}
|
}
|
||||||
|
|
||||||
LogMsg(Form("Read Channel %d Setting", (int)chIDEntry->GetNumber()));
|
LogMsg(Form("Read Channel %d Setting", (int)chIDEntry->GetNumber()));
|
||||||
|
|
||||||
|
uint32_t temp = 0;
|
||||||
|
if( digi[boardID]->IsDummy() ) {
|
||||||
|
txtADCCaliStatus->SetText("No Digitizer is opened!!!", false); txtADCCaliStatus->SetTextColor(red);
|
||||||
|
}else{
|
||||||
|
temp = digi[boardID]->GetSettingFromMemory(Register::DPP::ChannelStatus_R, ch);
|
||||||
|
|
||||||
|
if( (( temp >> 2 ) & 0x1 ) == 0 ){
|
||||||
|
txtSPIBus->SetText("SPI bus is not busy.", false); txtSPIBus->SetTextColor(blue);
|
||||||
|
}else{
|
||||||
|
txtSPIBus->SetText("SPI bus is BUSY.", false); txtSPIBus->SetTextColor(red);
|
||||||
|
}
|
||||||
|
if( (( temp >> 3 ) & 0x1 ) == 0 ){
|
||||||
|
txtADCCaliStatus->SetText("ADC has not been calibrated.", false); txtADCCaliStatus->SetTextColor(red);
|
||||||
|
}else{
|
||||||
|
txtADCCaliStatus->SetText("ADC has been calibrated.", false); txtADCCaliStatus->SetTextColor(blue);
|
||||||
|
}
|
||||||
|
if( (( temp >> 8 ) & 0x1 ) == 0 ){
|
||||||
|
txtADCPowerStatus->SetText("ADC OK.", false); txtADCPowerStatus->SetTextColor(blue);
|
||||||
|
}else{
|
||||||
|
txtADCPowerStatus->SetText("ADC Power down due to over-heat.", false); txtADCPowerStatus->SetTextColor(red);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cbOnOff->Select( (digi[boardID]->GetChannelMask() >> ch) & 0x1, false); /// don't emit signal
|
cbOnOff->Select( (digi[boardID]->GetChannelMask() >> ch) & 0x1, false); /// don't emit signal
|
||||||
cbInputDynamicRange->Select( digi[boardID]->GetSettingFromMemory(Register::DPP::InputDynamicRange, ch), false);
|
cbInputDynamicRange->Select( digi[boardID]->GetSettingFromMemory(Register::DPP::InputDynamicRange, ch), false);
|
||||||
numRecordLength->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::RecordLength_G, ch) * 8 * ch2ns, false);
|
numRecordLength->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::RecordLength_G, ch) * 8 * ch2ns, false);
|
||||||
numPreTrigger->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PreTrigger, ch) * 4 * ch2ns, false);
|
numPreTrigger->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PreTrigger, ch) * 4 * ch2ns, false);
|
||||||
numEventAgg->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::NumberEventsPerAggregate_G, ch), false);
|
numEventAgg->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::NumberEventsPerAggregate_G, ch), false);
|
||||||
|
|
||||||
uint32_t temp = digi[boardID]->GetSettingFromMemory(Register::DPP::ChannelDCOffset, ch);
|
temp = digi[boardID]->GetSettingFromMemory(Register::DPP::ChannelDCOffset, ch);
|
||||||
numDCOffset->SetNumber( 100.0 - temp * 100.0/0xFFFF , false);
|
numDCOffset->SetNumber( 100.0 - temp * 100.0/0xFFFF , false);
|
||||||
|
|
||||||
eTemp->SetText(Form("%d C", digi[boardID]->GetSettingFromMemory(Register::DPP::ChannelADCTemperature_R, ch)), false);
|
eTemp->SetText(Form("%d C", digi[boardID]->GetSettingFromMemory(Register::DPP::ChannelADCTemperature_R, ch)), false);
|
||||||
|
@ -550,6 +638,9 @@ void ChannelSettingPHA::ChangeCh(){
|
||||||
cbTagCorrelatedEvent->Select( ( (temp >> 19) & 0x1), false);
|
cbTagCorrelatedEvent->Select( ( (temp >> 19) & 0x1), false);
|
||||||
cbBaselineOptimize->Select( ( (temp >> 29) & 0x1), false);
|
cbBaselineOptimize->Select( ( (temp >> 29) & 0x1), false);
|
||||||
cbExtra2WordOption->Select( ( (temp >> 8) & 0x7), false);
|
cbExtra2WordOption->Select( ( (temp >> 8) & 0x7), false);
|
||||||
|
|
||||||
|
uint32_t buffer = digi[boardID]->CalByteForBuffer();
|
||||||
|
eBuffer->SetText(Form("%.2f", buffer/1024./1024.));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,10 @@ class ChannelSettingPHA{
|
||||||
|
|
||||||
TGTextEntry * eTemp ;
|
TGTextEntry * eTemp ;
|
||||||
|
|
||||||
|
TGTextEntry * txtSPIBus;
|
||||||
|
TGTextEntry * txtADCCaliStatus;
|
||||||
|
TGTextEntry * txtADCPowerStatus;
|
||||||
|
|
||||||
TGComboBox * cbOnOff;
|
TGComboBox * cbOnOff;
|
||||||
TGComboBox * cbPolarity;
|
TGComboBox * cbPolarity;
|
||||||
TGComboBox * cbInputDynamicRange;
|
TGComboBox * cbInputDynamicRange;
|
||||||
|
@ -63,8 +67,6 @@ class ChannelSettingPHA{
|
||||||
TGComboBox * cbDisableSelfTrigger;
|
TGComboBox * cbDisableSelfTrigger;
|
||||||
TGComboBox * cbExtra2WordOption;
|
TGComboBox * cbExtra2WordOption;
|
||||||
|
|
||||||
Digitizer ** digi;
|
|
||||||
int nDigi;
|
|
||||||
int NChannel; // hard coded = 16
|
int NChannel; // hard coded = 16
|
||||||
bool isOpened;
|
bool isOpened;
|
||||||
|
|
||||||
|
@ -75,7 +77,7 @@ class ChannelSettingPHA{
|
||||||
void ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address);
|
void ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi, int boardID);
|
ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, int boardID);
|
||||||
virtual ~ChannelSettingPHA();
|
virtual ~ChannelSettingPHA();
|
||||||
|
|
||||||
void CloseWindow() { delete this; }
|
void CloseWindow() { delete this; }
|
||||||
|
|
|
@ -10,14 +10,11 @@
|
||||||
|
|
||||||
#include "channelSettingPSD.h"
|
#include "channelSettingPSD.h"
|
||||||
|
|
||||||
ChannelSettingPSD::ChannelSettingPSD(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi, int boardID){
|
extern Pixel_t red, blue, green;
|
||||||
|
extern unsigned short nDigi;
|
||||||
this->digi = digi;
|
extern Digitizer ** digi;
|
||||||
this->nDigi = nDigi;
|
|
||||||
|
ChannelSettingPSD::ChannelSettingPSD(const TGWindow *p, UInt_t w, UInt_t h, int boardID){
|
||||||
Pixel_t red, green;
|
|
||||||
gClient->GetColorByName("red", red);
|
|
||||||
gClient->GetColorByName("green", green);
|
|
||||||
|
|
||||||
fMain = new TGMainFrame(p,w,h);
|
fMain = new TGMainFrame(p,w,h);
|
||||||
fMain->SetWindowName("Channel Settings PSD");
|
fMain->SetWindowName("Channel Settings PSD");
|
||||||
|
|
|
@ -75,8 +75,6 @@ class ChannelSettingPSD{
|
||||||
TGComboBox * cbDisableSelfTrigger;
|
TGComboBox * cbDisableSelfTrigger;
|
||||||
TGComboBox * cbExtraWordOption;
|
TGComboBox * cbExtraWordOption;
|
||||||
|
|
||||||
Digitizer ** digi;
|
|
||||||
int nDigi;
|
|
||||||
int NChannel; // hard coded = 16
|
int NChannel; // hard coded = 16
|
||||||
bool isOpened;
|
bool isOpened;
|
||||||
|
|
||||||
|
@ -87,7 +85,7 @@ class ChannelSettingPSD{
|
||||||
void ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address);
|
void ChangeAStep(TGNumberEntry * numEntry, unsigned short stepSize, uint32_t address);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ChannelSettingPSD(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nDigi, int boardID);
|
ChannelSettingPSD(const TGWindow *p, UInt_t w, UInt_t h, int boardID);
|
||||||
virtual ~ChannelSettingPSD();
|
virtual ~ChannelSettingPSD();
|
||||||
|
|
||||||
void CloseWindow() { delete this; }
|
void CloseWindow() { delete this; }
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
|
|
||||||
#include "registerSetting.h"
|
#include "registerSetting.h"
|
||||||
|
|
||||||
RegisterSetting::RegisterSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nBoard, uint32_t address){
|
extern unsigned short nDigi;
|
||||||
|
extern Digitizer ** digi;
|
||||||
this->nDigi = nBoard;
|
|
||||||
this->digi = digi;
|
RegisterSetting::RegisterSetting(const TGWindow *p, UInt_t w, UInt_t h, uint32_t address){
|
||||||
|
|
||||||
for( int i = 0; i < MaxNChannels; i++) value[i] = 0;
|
for( int i = 0; i < MaxNChannels; i++) value[i] = 0;
|
||||||
|
|
||||||
|
@ -40,9 +40,9 @@ RegisterSetting::RegisterSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitize
|
||||||
|
|
||||||
boardIDEntry = new TGNumberEntry(hframe11, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframe11->AddFrame(boardIDEntry, kaka);
|
boardIDEntry = new TGNumberEntry(hframe11, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); hframe11->AddFrame(boardIDEntry, kaka);
|
||||||
boardIDEntry->SetWidth(50);
|
boardIDEntry->SetWidth(50);
|
||||||
boardIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, nBoard-1);
|
boardIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, nDigi-1);
|
||||||
boardIDEntry->Connect("Modified()", "RegisterSetting", this, "ChangeBoard()");
|
boardIDEntry->Connect("Modified()", "RegisterSetting", this, "ChangeBoard()");
|
||||||
if( nBoard <= 1 ) boardIDEntry->SetState(false);
|
if( nDigi <= 1 ) boardIDEntry->SetState(false);
|
||||||
boardID = boardIDEntry->GetNumber();
|
boardID = boardIDEntry->GetNumber();
|
||||||
|
|
||||||
TGLabel * lb1 = new TGLabel(hframe11, Form("Serial Number : %03d", digi == NULL ? -1 : digi[boardID]->GetSerialNumber())); hframe11->AddFrame(lb1, new TGLayoutHints(kLHintsCenterY, 5,5,3,3));
|
TGLabel * lb1 = new TGLabel(hframe11, Form("Serial Number : %03d", digi == NULL ? -1 : digi[boardID]->GetSerialNumber())); hframe11->AddFrame(lb1, new TGLayoutHints(kLHintsCenterY, 5,5,3,3));
|
||||||
|
@ -142,8 +142,6 @@ RegisterSetting::~RegisterSetting(){
|
||||||
delete txtValueUnit[i];
|
delete txtValueUnit[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
for( int i = 0; i < nDigi; i++ ) digi[i] = 0;
|
|
||||||
|
|
||||||
fMain->Cleanup();
|
fMain->Cleanup();
|
||||||
delete fMain;
|
delete fMain;
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,6 @@ class RegisterSetting{
|
||||||
|
|
||||||
int textID;
|
int textID;
|
||||||
|
|
||||||
int nDigi;
|
|
||||||
Digitizer ** digi;
|
|
||||||
int DPPType;
|
int DPPType;
|
||||||
|
|
||||||
unsigned int ConvertHexToDec(const char * text);
|
unsigned int ConvertHexToDec(const char * text);
|
||||||
|
@ -49,7 +47,7 @@ class RegisterSetting{
|
||||||
///static bool updateFlag;
|
///static bool updateFlag;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RegisterSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nBoard, uint32_t address);
|
RegisterSetting(const TGWindow *p, UInt_t w, UInt_t h, uint32_t address);
|
||||||
virtual ~RegisterSetting();
|
virtual ~RegisterSetting();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,9 @@
|
||||||
|
|
||||||
#include "triggerSummary.h"
|
#include "triggerSummary.h"
|
||||||
|
|
||||||
Digitizer ** TriggerSummary::digi = NULL;
|
extern unsigned short nDigi;
|
||||||
int TriggerSummary::nDigi = 0;
|
extern Digitizer ** digi;
|
||||||
|
|
||||||
bool TriggerSummary::updateFlag = true;
|
bool TriggerSummary::updateFlag = true;
|
||||||
TGTextEntry * TriggerSummary::txtTrigger[MaxNBoards][MaxNChannels] = {NULL};
|
TGTextEntry * TriggerSummary::txtTrigger[MaxNBoards][MaxNChannels] = {NULL};
|
||||||
TGTextEntry * TriggerSummary::txtThresholdValue[MaxNBoards][MaxNChannels] = {NULL};
|
TGTextEntry * TriggerSummary::txtThresholdValue[MaxNBoards][MaxNChannels] = {NULL};
|
||||||
|
@ -19,10 +20,7 @@ TGNumberEntry * TriggerSummary::numUpdateTime = NULL;
|
||||||
unsigned short TriggerSummary::value[MaxNBoards][MaxNChannels] = {0};
|
unsigned short TriggerSummary::value[MaxNBoards][MaxNChannels] = {0};
|
||||||
|
|
||||||
|
|
||||||
TriggerSummary::TriggerSummary(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nBoard){
|
TriggerSummary::TriggerSummary(const TGWindow *p, UInt_t w, UInt_t h){
|
||||||
|
|
||||||
this->nDigi = nBoard;
|
|
||||||
this->digi = digi;
|
|
||||||
|
|
||||||
fMain = new TGMainFrame(p,w,h);
|
fMain = new TGMainFrame(p,w,h);
|
||||||
fMain->SetWindowName("Scalar Panel");
|
fMain->SetWindowName("Scalar Panel");
|
||||||
|
|
|
@ -18,9 +18,6 @@ class TriggerSummary{
|
||||||
RQ_OBJECT("TriggerSummary")
|
RQ_OBJECT("TriggerSummary")
|
||||||
private:
|
private:
|
||||||
TGMainFrame * fMain;
|
TGMainFrame * fMain;
|
||||||
|
|
||||||
static int nDigi;
|
|
||||||
static Digitizer ** digi;
|
|
||||||
|
|
||||||
static TGTextEntry * txtTrigger[MaxNBoards][MaxNChannels];
|
static TGTextEntry * txtTrigger[MaxNBoards][MaxNChannels];
|
||||||
static TGTextEntry * txtThresholdValue[MaxNBoards][MaxNChannels];
|
static TGTextEntry * txtThresholdValue[MaxNBoards][MaxNChannels];
|
||||||
|
@ -33,7 +30,7 @@ class TriggerSummary{
|
||||||
static unsigned short value[MaxNBoards][MaxNChannels];
|
static unsigned short value[MaxNBoards][MaxNChannels];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TriggerSummary(const TGWindow *p, UInt_t w, UInt_t h, Digitizer ** digi, int nBoard);
|
TriggerSummary(const TGWindow *p, UInt_t w, UInt_t h);
|
||||||
virtual ~TriggerSummary();
|
virtual ~TriggerSummary();
|
||||||
|
|
||||||
void CloseWindow() { delete this;}
|
void CloseWindow() { delete this;}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user