fix some bugs
This commit is contained in:
parent
8fa455925b
commit
44527bba49
|
@ -102,9 +102,9 @@ inline void Data::AllocateMemory(){
|
||||||
|
|
||||||
delete buffer;
|
delete buffer;
|
||||||
//TODO calculate Suitable buffer size
|
//TODO calculate Suitable buffer size
|
||||||
BufferSize = 1000000; /// 1M byte
|
BufferSize = 1* 1024* 1024; /// 10M byte
|
||||||
buffer = (char *) malloc( BufferSize);
|
buffer = (char *) malloc( BufferSize);
|
||||||
printf("Allocated %d byte for buffer \n", BufferSize);
|
printf("Allocated %d (%lu) byte for buffer \n", BufferSize, sizeof(buffer));
|
||||||
///for( int i = 0 ; i < MaxNChannels ; i++ ) Events[i] = (CAEN_DGTZ_DPP_PHA_Event_t *) malloc( BufferSize);
|
///for( int i = 0 ; i < MaxNChannels ; i++ ) Events[i] = (CAEN_DGTZ_DPP_PHA_Event_t *) malloc( BufferSize);
|
||||||
///printf("Allocated %d byte for Events for each channel \n", BufferSize);
|
///printf("Allocated %d byte for Events for each channel \n", BufferSize);
|
||||||
|
|
||||||
|
|
|
@ -363,24 +363,35 @@ void Digitizer::WriteRegister(uint32_t registerAddress, uint32_t value, int ch )
|
||||||
if( ch < 0 ){
|
if( ch < 0 ){
|
||||||
for( int i = 0; i < NChannel/2; i++){
|
for( int i = 0; i < NChannel/2; i++){
|
||||||
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + 4*i, value);
|
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + 4*i, value);
|
||||||
SaveSettingToFile(registerAddress, value, i);
|
ReadRegister(registerAddress, i);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + 4*(ch/2), value);
|
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + 4*(ch/2), value);
|
||||||
SaveSettingToFile(registerAddress, value, ch);
|
ReadRegister(registerAddress, ch);
|
||||||
}
|
}
|
||||||
}else if( registerAddress < 0x8000){
|
}else if( registerAddress < 0x8000){
|
||||||
if( ch < 0 ) {
|
if( ch < 0 ) {
|
||||||
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + 0x7000, value);
|
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + 0x7000, value);
|
||||||
for( int i = 0; i < NChannel; i++) SaveSettingToFile(value, registerAddress, i);
|
for( int i = 0; i < NChannel; i++) ReadRegister(registerAddress, i);
|
||||||
}else{
|
}else{
|
||||||
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + (ch<<8), value);
|
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress + (ch<<8), value);
|
||||||
SaveSettingToFile(registerAddress, value, ch);
|
ReadRegister(registerAddress, ch);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress, value);
|
ret = CAEN_DGTZ_WriteRegister(handle, registerAddress, value);
|
||||||
SaveSettingToFile(registerAddress, value);
|
ReadRegister(registerAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// for grouped address
|
||||||
|
if( registerAddress == Register::DPP::RecordLength_G ||
|
||||||
|
registerAddress == Register::DPP::NumberEventsPerAggregate_G ||
|
||||||
|
registerAddress == Register::DPP::PHA::DPPAlgorithmControl2_G ||
|
||||||
|
registerAddress == Register::DPP::PSD::DPPAlgorithmControl2_G ||
|
||||||
|
registerAddress == Register::DPP::TriggerValidationMask_G
|
||||||
|
){
|
||||||
|
ReadRegister(registerAddress, ch + (ch%2 == 1 ? -1 : +1));
|
||||||
|
}
|
||||||
|
|
||||||
ErrorMsg("WriteRegister:" + std::to_string(registerAddress));
|
ErrorMsg("WriteRegister:" + std::to_string(registerAddress));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,7 +411,7 @@ uint32_t Digitizer::ReadRegister(uint32_t registerAddress, int ch, string str ){
|
||||||
uint32_t data[1];
|
uint32_t data[1];
|
||||||
ret = CAEN_DGTZ_ReadRegister(handle, actualAddress, data);
|
ret = CAEN_DGTZ_ReadRegister(handle, actualAddress, data);
|
||||||
|
|
||||||
SaveSettingToFile(registerAddress, data[0], ch);
|
if( ret == 0 ) SaveSettingToFile(registerAddress, data[0], ch);
|
||||||
ErrorMsg("ReadRegister:" + std::to_string(registerAddress));
|
ErrorMsg("ReadRegister:" + std::to_string(registerAddress));
|
||||||
if( str != "" ) printf("%s : 0x%04X(0x%04X) is 0x%08X \n", str.c_str(), actualAddress, registerAddress, data[0]);
|
if( str != "" ) printf("%s : 0x%04X(0x%04X) is 0x%08X \n", str.c_str(), actualAddress, registerAddress, data[0]);
|
||||||
return data[0];
|
return data[0];
|
||||||
|
@ -649,6 +660,9 @@ int Digitizer::ProgramPHABoard(){
|
||||||
|
|
||||||
printf("End of program board and channels\n");
|
printf("End of program board and channels\n");
|
||||||
|
|
||||||
|
isSettingFilledinMemeory = false;
|
||||||
|
FillAllSettings();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -222,8 +222,8 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
||||||
//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 = new TGraph();
|
||||||
gAnaTrace2 = new TGraph();
|
gAnaTrace2 = new TGraph();
|
||||||
|
@ -403,6 +403,7 @@ void MainWindow::OpenDigitizers(){
|
||||||
fMenuDigitizers->DisableEntry( M_DIGITIZER_OPEN);
|
fMenuDigitizers->DisableEntry( M_DIGITIZER_OPEN);
|
||||||
fMenuDigitizers->EnableEntry( M_LOAD_SETTINGS);
|
fMenuDigitizers->EnableEntry( M_LOAD_SETTINGS);
|
||||||
fMenuDigitizers->EnableEntry( M_TRIGGER_SUMMARY);
|
fMenuDigitizers->EnableEntry( M_TRIGGER_SUMMARY);
|
||||||
|
fMenuDigitizers->EnableEntry( M_REGISTER_SETTING);
|
||||||
bOpenDigitizers->SetEnabled(false);
|
bOpenDigitizers->SetEnabled(false);
|
||||||
|
|
||||||
bStartRun->SetEnabled(true);
|
bStartRun->SetEnabled(true);
|
||||||
|
@ -433,8 +434,9 @@ void MainWindow::ChangeBoard(){
|
||||||
|
|
||||||
void MainWindow::GoodBye(){
|
void MainWindow::GoodBye(){
|
||||||
|
|
||||||
printf("----- bye bye ---- \n");
|
for( int i = 0; i < nDigi; i++) digi[i]->CloseDigitizer();
|
||||||
|
|
||||||
|
printf("----- bye bye ---- \n");
|
||||||
gApplication->Terminate(0);
|
gApplication->Terminate(0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -444,6 +446,7 @@ void MainWindow::StartRun(){
|
||||||
if( digi == NULL) return;
|
if( digi == NULL) return;
|
||||||
|
|
||||||
for( int bd = 0; bd < nDigi; bd++){
|
for( int bd = 0; bd < nDigi; bd++){
|
||||||
|
hChannel[bd]->Reset();
|
||||||
for( int ch = 0; ch < MaxNChannels; ch++){
|
for( int ch = 0; ch < MaxNChannels; ch++){
|
||||||
hEnergy[bd][ch]->Reset();
|
hEnergy[bd][ch]->Reset();
|
||||||
}
|
}
|
||||||
|
|
|
@ -695,11 +695,14 @@ BoardSetting::~BoardSetting(){
|
||||||
|
|
||||||
printf("close BoardSetting window\n");
|
printf("close BoardSetting window\n");
|
||||||
|
|
||||||
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;
|
||||||
//delete readStatusThread;
|
//delete readStatusThread;
|
||||||
|
|
||||||
|
delete boardIDEntry;
|
||||||
|
for(int i = 0; i < NUM_BOARD_INFO; i++) delete entry[i];
|
||||||
|
|
||||||
fMain->Cleanup();
|
fMain->Cleanup();
|
||||||
delete fMain;
|
delete fMain;
|
||||||
|
|
||||||
|
@ -716,7 +719,7 @@ void BoardSetting::ReadStatus(){
|
||||||
|
|
||||||
/// ACQ Status
|
/// ACQ Status
|
||||||
///digi[boardID]->PrintRegister(Register::DPP::AcquisitionStatus, "ACQ Status");
|
///digi[boardID]->PrintRegister(Register::DPP::AcquisitionStatus, "ACQ Status");
|
||||||
uint32_t temp = digi[boardID]->ReadRegister(Register::DPP::AcquisitionStatus_R);
|
uint32_t temp = digi[boardID]->GetSettingFromMemory(Register::DPP::AcquisitionStatus_R);
|
||||||
|
|
||||||
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);
|
||||||
|
@ -737,7 +740,7 @@ void BoardSetting::ReadStatus(){
|
||||||
|
|
||||||
/// Redaout Status
|
/// Redaout Status
|
||||||
///digi[boardID]->PrintRegister(Register::DPP::ReadoutStatus, "Readout Status");
|
///digi[boardID]->PrintRegister(Register::DPP::ReadoutStatus, "Readout Status");
|
||||||
temp = digi[boardID]->ReadRegister(Register::DPP::ReadoutStatus_R);
|
temp = digi[boardID]->GetSettingFromMemory(Register::DPP::ReadoutStatus_R);
|
||||||
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{
|
||||||
|
@ -758,7 +761,7 @@ void BoardSetting::ReadStatus(){
|
||||||
|
|
||||||
///================ Board Failure Status
|
///================ Board Failure Status
|
||||||
///digi[boardID]->PrintRegister(Register::DPP::BoardFailureStatus, "Board Fail");
|
///digi[boardID]->PrintRegister(Register::DPP::BoardFailureStatus, "Board Fail");
|
||||||
temp = digi[boardID]->ReadRegister(Register::DPP::BoardFailureStatus_R);
|
temp = digi[boardID]->GetSettingFromMemory(Register::DPP::BoardFailureStatus_R);
|
||||||
if( ((temp >> 4) & 0x1) == 0 ) {
|
if( ((temp >> 4) & 0x1) == 0 ) {
|
||||||
enPLLStatus->SetText( "OK" , false); enPLLStatus->SetTextColor(1);
|
enPLLStatus->SetText( "OK" , false); enPLLStatus->SetTextColor(1);
|
||||||
}else{
|
}else{
|
||||||
|
@ -819,36 +822,36 @@ void BoardSetting::ChangeBoard(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cbAggOrg->Select( digi[boardID]->ReadRegister(Register::DPP::AggregateOrganization) , false);
|
cbAggOrg->Select( digi[boardID]->GetSettingFromMemory(Register::DPP::AggregateOrganization) , false);
|
||||||
numAggBLT->SetNumber( digi[boardID]->ReadRegister(Register::DPP::MaxAggregatePerBlockTransfer) , false);
|
numAggBLT->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::MaxAggregatePerBlockTransfer) , false);
|
||||||
|
|
||||||
if( digi[boardID]->GetNChannel() == 8 ){
|
if( digi[boardID]->GetNChannel() == 8 ){
|
||||||
///FAN Speed control only for desktop version
|
///FAN Speed control only for desktop version
|
||||||
cbFanCtrl->SetEnabled(true);
|
cbFanCtrl->SetEnabled(true);
|
||||||
cbFanCtrl->Select( digi[boardID]->ReadRegister(Register::DPP::FanSpeedControl) , false);
|
cbFanCtrl->Select( digi[boardID]->GetSettingFromMemory(Register::DPP::FanSpeedControl) , false);
|
||||||
}else{
|
}else{
|
||||||
cbFanCtrl->SetEnabled(false);
|
cbFanCtrl->SetEnabled(false);
|
||||||
cbFanCtrl->Select( 0 , false);
|
cbFanCtrl->Select( 0 , false);
|
||||||
}
|
}
|
||||||
|
|
||||||
numRunStartStopDelay->SetNumber( digi[boardID]->ReadRegister(Register::DPP::RunStartStopDelay), false);
|
numRunStartStopDelay->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::RunStartStopDelay), false);
|
||||||
bEnableExtTRG->SetState( (digi[boardID]->ReadRegister(Register::DPP::DisableExternalTrigger) & 0x1) ? kButtonDown : kButtonUp, false);
|
bEnableExtTRG->SetState( (digi[boardID]->GetSettingFromMemory(Register::DPP::DisableExternalTrigger) & 0x1) ? kButtonDown : kButtonUp, false);
|
||||||
///numExtendVetoDelay->SetNumber( digi[boardID]->ReadRegister(Register::DPP::ExtendedVetoDelay) , false);
|
///numExtendVetoDelay->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::ExtendedVetoDelay) , false);
|
||||||
|
|
||||||
cbAnaMonitor->Select( digi[boardID]->ReadRegister(Register::DPP::AnalogMonitorMode) & 0x7 , false);
|
cbAnaMonitor->Select( digi[boardID]->GetSettingFromMemory(Register::DPP::AnalogMonitorMode) & 0x7 , false);
|
||||||
numBufferOccpGain->SetNumber( digi[boardID]->ReadRegister(Register::DPP::BufferOccupancyGain) & 0xf, false);
|
numBufferOccpGain->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::BufferOccupancyGain) & 0xf, false);
|
||||||
|
|
||||||
ReadStatus();
|
ReadStatus();
|
||||||
|
|
||||||
/// ACQ Control
|
/// ACQ Control
|
||||||
//digi[boardID]->PrintRegister(Register::DPP::AcquisitionControl, "AcquisitionControl");
|
//digi[boardID]->PrintRegister(Register::DPP::AcquisitionControl, "AcquisitionControl");
|
||||||
uint32_t tempBits = digi[boardID]->ReadRegister(Register::DPP::AcquisitionControl);
|
uint32_t tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::AcquisitionControl);
|
||||||
cbAcqMode->Select( tempBits & 0x3 , false);
|
cbAcqMode->Select( tempBits & 0x3 , false);
|
||||||
bAcqArm->SetState( ((tempBits >> 2) & 0x1) ? kButtonDown : kButtonUp, false);
|
bAcqArm->SetState( ((tempBits >> 2) & 0x1) ? kButtonDown : kButtonUp, false);
|
||||||
cbPLLref->Select( ((tempBits >> 6) & 0x1), false);
|
cbPLLref->Select( ((tempBits >> 6) & 0x1), false);
|
||||||
|
|
||||||
/// Global Trigger Mask
|
/// Global Trigger Mask
|
||||||
tempBits = digi[boardID]->ReadRegister(Register::DPP::GlobalTriggerMask);
|
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::GlobalTriggerMask);
|
||||||
for( int i = 0; i < 8; i++){
|
for( int i = 0; i < 8; i++){
|
||||||
cbGbTRGMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
|
cbGbTRGMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
|
||||||
}
|
}
|
||||||
|
@ -858,7 +861,7 @@ void BoardSetting::ChangeBoard(){
|
||||||
bGLBSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
|
bGLBSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
|
||||||
|
|
||||||
/// Trigger Validation Mask
|
/// Trigger Validation Mask
|
||||||
tempBits = digi[boardID]->ReadRegister(Register::DPP::TriggerValidationMask_G);
|
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G);
|
||||||
for( int i = 0; i < 8; i++){
|
for( int i = 0; i < 8; i++){
|
||||||
cbTRGValMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
|
cbTRGValMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown , false);
|
||||||
}
|
}
|
||||||
|
@ -868,7 +871,7 @@ void BoardSetting::ChangeBoard(){
|
||||||
bTRGSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
|
bTRGSoftwareTrigger->SetState( (( tempBits >> 31) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false);
|
||||||
|
|
||||||
/// Front Panel TRG-OUT Enable Mask , PHA = PSD only for bit[19:0]
|
/// Front Panel TRG-OUT Enable Mask , PHA = PSD only for bit[19:0]
|
||||||
tempBits = digi[boardID]->ReadRegister(Register::DPP::FrontPanelTRGOUTEnableMask);
|
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::FrontPanelTRGOUTEnableMask);
|
||||||
for( int i = 0; i < 8; i++){
|
for( int i = 0; i < 8; i++){
|
||||||
cbTRGOUTMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown, false );
|
cbTRGOUTMskCh[i]->SetState( ((tempBits >> i ) & 0x1) == 0 ? kButtonUp : kButtonDown, false );
|
||||||
}
|
}
|
||||||
|
@ -878,7 +881,7 @@ void BoardSetting::ChangeBoard(){
|
||||||
bTRGOUTSoftwareTrigger->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]
|
/// Front Panel I/O Control, PHA = PSD only for bit[19:0]
|
||||||
tempBits = digi[boardID]->ReadRegister(Register::DPP::FrontPanelIOControl);
|
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::FrontPanelIOControl);
|
||||||
cbLEMOIO->Select( tempBits & 0x1 , false);
|
cbLEMOIO->Select( tempBits & 0x1 , false);
|
||||||
if( ((tempBits >> 1) & 0x1 ) == 0 ) {
|
if( ((tempBits >> 1) & 0x1 ) == 0 ) {
|
||||||
cbTRGOUTmode->Select( 2 , false);
|
cbTRGOUTmode->Select( 2 , false);
|
||||||
|
@ -889,7 +892,7 @@ void BoardSetting::ChangeBoard(){
|
||||||
cbTRGINMezzanines->Select( (tempBits >> 11) & 0x1 , false);
|
cbTRGINMezzanines->Select( (tempBits >> 11) & 0x1 , false);
|
||||||
|
|
||||||
/// Readout Control
|
/// Readout Control
|
||||||
tempBits = digi[boardID]->ReadRegister(Register::DPP::ReadoutControl);
|
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::ReadoutControl);
|
||||||
cbVMEInterrupLevel->Select( tempBits & 0x3 , false);
|
cbVMEInterrupLevel->Select( tempBits & 0x3 , false);
|
||||||
bOpticalLinkInterrupt->SetState( (( tempBits >> 3 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
|
bOpticalLinkInterrupt->SetState( (( tempBits >> 3 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
|
||||||
bEventAligned->SetState( (( tempBits >> 4 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
|
bEventAligned->SetState( (( tempBits >> 4 ) & 0x1 ) == 0 ? kButtonUp : kButtonDown, false) ;
|
||||||
|
@ -939,7 +942,7 @@ void BoardSetting::ChangeBoard(){
|
||||||
|
|
||||||
/// Board Configuration
|
/// Board Configuration
|
||||||
//digi[boardID]->PrintRegister(Register::DPP::BoardConfiguration, "BoardConfiguration");
|
//digi[boardID]->PrintRegister(Register::DPP::BoardConfiguration, "BoardConfiguration");
|
||||||
tempBits = digi[boardID]->ReadRegister(Register::DPP::BoardConfiguration);
|
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::BoardConfiguration);
|
||||||
|
|
||||||
bAutoDataFlush->SetState( (tempBits & 0x1) ? kButtonDown : kButtonUp, false);
|
bAutoDataFlush->SetState( (tempBits & 0x1) ? kButtonDown : kButtonUp, false);
|
||||||
bDecimateWF->SetState( ((tempBits >> 1) & 0x1) ? kButtonDown : kButtonUp, false );
|
bDecimateWF->SetState( ((tempBits >> 1) & 0x1) ? kButtonDown : kButtonUp, false );
|
||||||
|
@ -997,7 +1000,7 @@ void BoardSetting::ChangeBoard(){
|
||||||
cbDP2->AddEntry("Baseline freeze", 6);
|
cbDP2->AddEntry("Baseline freeze", 6);
|
||||||
cbDP2->AddEntry("Trigger", 7);
|
cbDP2->AddEntry("Trigger", 7);
|
||||||
|
|
||||||
tempBits = digi[boardID]->ReadRegister(Register::DPP::BoardConfiguration);
|
tempBits = digi[boardID]->GetSettingFromMemory(Register::DPP::BoardConfiguration);
|
||||||
|
|
||||||
bAutoDataFlush->SetState( (tempBits & 0x1) ? kButtonDown : kButtonUp, false);
|
bAutoDataFlush->SetState( (tempBits & 0x1) ? kButtonDown : kButtonUp, false);
|
||||||
bTrigPropa->SetState( ((tempBits >> 2) & 0x1) ? kButtonDown : kButtonUp, false );
|
bTrigPropa->SetState( ((tempBits >> 2) & 0x1) ? kButtonDown : kButtonUp, false );
|
||||||
|
@ -1323,7 +1326,7 @@ void BoardSetting::ReadData(){
|
||||||
if( digi == NULL ) return;
|
if( digi == NULL ) return;
|
||||||
int boardID = boardIDEntry->GetNumber();
|
int boardID = boardIDEntry->GetNumber();
|
||||||
|
|
||||||
uint32_t temp = digi[boardID]->ReadRegister(Register::DPP::ReadoutStatus_R);
|
uint32_t temp = digi[boardID]->GetSettingFromMemory(Register::DPP::ReadoutStatus_R);
|
||||||
if( (temp & 0x1) == 0 ) {
|
if( (temp & 0x1) == 0 ) {
|
||||||
printf("No data. \n");
|
printf("No data. \n");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -115,6 +115,7 @@ ChannelSettingPHA::ChannelSettingPHA(const TGWindow *p, UInt_t w, UInt_t h, Digi
|
||||||
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->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, 511);
|
||||||
numEventAgg->Connect("Modified()", "ChannelSettingPHA", this, "SetEventAggregate()");
|
numEventAgg->Connect("Modified()", "ChannelSettingPHA", this, "SetEventAggregate()");
|
||||||
|
|
||||||
///const uint32_t ChannelDCOffset = 0x1098; /// R/W
|
///const uint32_t ChannelDCOffset = 0x1098; /// R/W
|
||||||
|
@ -491,29 +492,29 @@ void ChannelSettingPHA::ChangeCh(){
|
||||||
LogMsg(Form("Read Channel %d Setting", (int)chIDEntry->GetNumber()));
|
LogMsg(Form("Read Channel %d Setting", (int)chIDEntry->GetNumber()));
|
||||||
|
|
||||||
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]->ReadRegister(Register::DPP::InputDynamicRange, ch), false);
|
cbInputDynamicRange->Select( digi[boardID]->GetSettingFromMemory(Register::DPP::InputDynamicRange, ch), false);
|
||||||
numRecordLength->SetNumber( digi[boardID]->ReadRegister(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]->ReadRegister(Register::DPP::PreTrigger, ch) * 4 * ch2ns, false);
|
numPreTrigger->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PreTrigger, ch) * 4 * ch2ns, false);
|
||||||
numEventAgg->SetNumber( digi[boardID]->ReadRegister(Register::DPP::NumberEventsPerAggregate_G, ch), false);
|
numEventAgg->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::NumberEventsPerAggregate_G, ch), false);
|
||||||
|
|
||||||
uint32_t temp = digi[boardID]->ReadRegister(Register::DPP::ChannelDCOffset, ch);
|
uint32_t temp = digi[boardID]->GetSettingFromMemory(Register::DPP::ChannelDCOffset, ch);
|
||||||
numDCOffset->SetNumber( 1.0 - temp * 1.0/0xFFFF , false);
|
numDCOffset->SetNumber( 1.0 - temp * 1.0/0xFFFF , false);
|
||||||
|
|
||||||
eTemp->SetText(Form("%d C", digi[boardID]->ReadRegister(Register::DPP::ChannelADCTemperature_R, ch)), false);
|
eTemp->SetText(Form("%d C", digi[boardID]->GetSettingFromMemory(Register::DPP::ChannelADCTemperature_R, ch)), false);
|
||||||
|
|
||||||
numTriggerThreshold->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TriggerThreshold, ch), false);
|
numTriggerThreshold->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::TriggerThreshold, ch), false);
|
||||||
numTriggerHoldOff ->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TriggerHoldOffWidth, ch) * 4 * ch2ns, false);
|
numTriggerHoldOff ->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::TriggerHoldOffWidth, ch) * 4 * ch2ns, false);
|
||||||
cbTriggerSmoothing ->Select( digi[boardID]->ReadRegister(Register::DPP::PHA::RCCR2SmoothingFactor, ch), false);
|
cbTriggerSmoothing ->Select( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::RCCR2SmoothingFactor, ch), false);
|
||||||
numInputRiseTime ->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::InputRiseTime, ch) * 4 * ch2ns, false);
|
numInputRiseTime ->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::InputRiseTime, ch) * 4 * ch2ns, false);
|
||||||
numRiseTimeValidWin->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::RiseTimeValidationWindow, ch) * ch2ns, false);
|
numRiseTimeValidWin->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::RiseTimeValidationWindow, ch) * ch2ns, false);
|
||||||
|
|
||||||
numTrapRiseTime->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TrapezoidRiseTime, ch) * 4 * ch2ns, false);
|
numTrapRiseTime->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::TrapezoidRiseTime, ch) * 4 * ch2ns, false);
|
||||||
numTrapFlatTop->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::TrapezoidFlatTop, ch) * 4 * ch2ns, false);
|
numTrapFlatTop->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::TrapezoidFlatTop, ch) * 4 * ch2ns, false);
|
||||||
numDecay->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::DecayTime, ch) * 4 * ch2ns, false);
|
numDecay->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::DecayTime, ch) * 4 * ch2ns, false);
|
||||||
numPeaking->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::PeakingTime, ch) * 4 * ch2ns, false);
|
numPeaking->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::PeakingTime, ch) * 4 * ch2ns, false);
|
||||||
numPeakHoldOff->SetNumber( digi[boardID]->ReadRegister(Register::DPP::PHA::PeakHoldOff, ch) * 4 * ch2ns, false);
|
numPeakHoldOff->SetNumber( digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::PeakHoldOff, ch) * 4 * ch2ns, false);
|
||||||
|
|
||||||
temp = digi[boardID]->ReadRegister(Register::DPP::DPPAlgorithmControl, ch);
|
temp = digi[boardID]->GetSettingFromMemory(Register::DPP::DPPAlgorithmControl, ch);
|
||||||
numTrapScale->SetNumber( temp & 0x3F, false );
|
numTrapScale->SetNumber( temp & 0x3F, false );
|
||||||
cbDecimation->Select( ( (temp >> 8) & 0x3), false);
|
cbDecimation->Select( ( (temp >> 8) & 0x3), false);
|
||||||
cbDecimationGain->Select( ( (temp >> 10) & 0x3), false);
|
cbDecimationGain->Select( ( (temp >> 10) & 0x3), false);
|
||||||
|
@ -525,7 +526,7 @@ void ChannelSettingPHA::ChangeCh(){
|
||||||
cbRollOver->Select( ( (temp >> 26) & 0x1), false);
|
cbRollOver->Select( ( (temp >> 26) & 0x1), false);
|
||||||
cbPileUp->Select( ( (temp >> 27) & 0x1), false);
|
cbPileUp->Select( ( (temp >> 27) & 0x1), false);
|
||||||
|
|
||||||
temp = digi[boardID]->ReadRegister(Register::DPP::PHA::DPPAlgorithmControl2_G, ch);
|
temp = digi[boardID]->GetSettingFromMemory(Register::DPP::PHA::DPPAlgorithmControl2_G, ch);
|
||||||
if( (((temp >> 2)) & 0x1 ) == 1 ){
|
if( (((temp >> 2)) & 0x1 ) == 1 ){
|
||||||
cbLocalShapedTrigger->Select( (temp & 0x3), false);
|
cbLocalShapedTrigger->Select( (temp & 0x3), false);
|
||||||
}else{
|
}else{
|
||||||
|
@ -687,8 +688,6 @@ void ChannelSettingPHA::ChangeAStep(TGNumberEntry * numEntry, unsigned short ste
|
||||||
|
|
||||||
void ChannelSettingPHA::SetRecordLength() {printf("=== %s\n", __func__); ChangeAStep(numRecordLength, 8, Register::DPP::RecordLength_G); }
|
void ChannelSettingPHA::SetRecordLength() {printf("=== %s\n", __func__); ChangeAStep(numRecordLength, 8, Register::DPP::RecordLength_G); }
|
||||||
void ChannelSettingPHA::SetPreTrigger() {printf("=== %s\n", __func__); ChangeAStep(numPreTrigger, 4, Register::DPP::PreTrigger);}
|
void ChannelSettingPHA::SetPreTrigger() {printf("=== %s\n", __func__); ChangeAStep(numPreTrigger, 4, Register::DPP::PreTrigger);}
|
||||||
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::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::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::SetRiseTimeValidWin(){printf("=== %s\n", __func__); ChangeAStep(numRiseTimeValidWin, 1, Register::DPP::PHA::RiseTimeValidationWindow);}
|
||||||
|
@ -698,6 +697,26 @@ void ChannelSettingPHA::SetDecay() {printf("=== %s\n", __func__); Chan
|
||||||
void ChannelSettingPHA::SetPeaking() {printf("=== %s\n", __func__); ChangeAStep(numPeaking, 4, Register::DPP::PHA::PeakingTime);}
|
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 ChannelSettingPHA::SetPeakHoldOff() {printf("=== %s\n", __func__); ChangeAStep(numPeakHoldOff, 4, Register::DPP::PHA::PeakHoldOff);}
|
||||||
|
|
||||||
|
void ChannelSettingPHA::SetEventAggregate() {
|
||||||
|
printf("=== %s\n", __func__);
|
||||||
|
if ( digi == NULL ) return;
|
||||||
|
short boardID = boardIDEntry->GetNumber();
|
||||||
|
short ch = chIDEntry->GetNumber();
|
||||||
|
unsigned int temp = numEventAgg->GetNumber();
|
||||||
|
if( digi != NULL ) digi[boardID]->WriteRegister(Register::DPP::NumberEventsPerAggregate_G, temp , ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ChannelSettingPHA::SetTriggerThreshold(){
|
||||||
|
printf("=== %s\n", __func__);
|
||||||
|
if ( digi == NULL ) return;
|
||||||
|
short boardID = boardIDEntry->GetNumber();
|
||||||
|
short ch = chIDEntry->GetNumber();
|
||||||
|
unsigned int temp = numTriggerThreshold->GetNumber();
|
||||||
|
if( digi != NULL ) digi[boardID]->WriteRegister(Register::DPP::PHA::TriggerThreshold, temp , ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ChannelSettingPHA::SetDCOffset(){
|
void ChannelSettingPHA::SetDCOffset(){
|
||||||
printf("=== %s\n", __func__);
|
printf("=== %s\n", __func__);
|
||||||
if ( digi == NULL ) return;
|
if ( digi == NULL ) return;
|
||||||
|
|
|
@ -86,7 +86,7 @@ RegisterSetting::RegisterSetting(const TGWindow *p, UInt_t w, UInt_t h, Digitize
|
||||||
|
|
||||||
for( int i = 0; i < ( digi == NULL ? MaxNChannels : digi[boardID]->GetNChannel() ); i++){
|
for( int i = 0; i < ( digi == NULL ? MaxNChannels : digi[boardID]->GetNChannel() ); i++){
|
||||||
|
|
||||||
lbCh[i] = new TGLabel(vframe0, Form("%02d", i)); vframe0->AddFrame(lbCh[i], new TGLayoutHints(kLHintsRight, 5,5,3,2));
|
lbCh[i] = new TGLabel(vframe0, Form("%02d", i)); vframe0->AddFrame(lbCh[i], new TGLayoutHints(kLHintsRight, 5,5,4,2));
|
||||||
|
|
||||||
txtValueHex[i] = new TGTextEntry(vframe1, ""); vframe1->AddFrame(txtValueHex[i], kaka);
|
txtValueHex[i] = new TGTextEntry(vframe1, ""); vframe1->AddFrame(txtValueHex[i], kaka);
|
||||||
txtValueHex[i]->Resize(100,20);
|
txtValueHex[i]->Resize(100,20);
|
||||||
|
@ -295,7 +295,18 @@ void RegisterSetting::UpdateRegister(){
|
||||||
uint32_t address = cbName->GetSelected();
|
uint32_t address = cbName->GetSelected();
|
||||||
txtAddress->SetText(Form("0x%04X", address), false);
|
txtAddress->SetText(Form("0x%04X", address), false);
|
||||||
|
|
||||||
if( digi == NULL ) return;
|
if( address == 0 || digi == NULL ) {
|
||||||
|
for( int ch = 0; ch < MaxNChannels; ch++){
|
||||||
|
txtValueHex[ch]->SetText("", false);
|
||||||
|
txtValueDec[ch]->SetText("", false);
|
||||||
|
txtValueUnit[ch]->SetText("", false);
|
||||||
|
|
||||||
|
txtValueHex[ch]->SetEnabled(false);
|
||||||
|
txtValueDec[ch]->SetEnabled(false);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int boardID = boardIDEntry->GetNumber();
|
int boardID = boardIDEntry->GetNumber();
|
||||||
|
|
||||||
///check is the register readable
|
///check is the register readable
|
||||||
|
@ -303,7 +314,6 @@ void RegisterSetting::UpdateRegister(){
|
||||||
int type = haha.back();
|
int type = haha.back();
|
||||||
|
|
||||||
if( address >= 0x8000 ) {
|
if( address >= 0x8000 ) {
|
||||||
bSetALLChannel->SetState(kButtonDown);
|
|
||||||
bSetALLChannel->SetEnabled(false);
|
bSetALLChannel->SetEnabled(false);
|
||||||
for( int ch = 0; ch < digi[boardID]->GetNChannel(); ch++){
|
for( int ch = 0; ch < digi[boardID]->GetNChannel(); ch++){
|
||||||
txtValueHex[ch]->SetText("", false);
|
txtValueHex[ch]->SetText("", false);
|
||||||
|
@ -336,20 +346,32 @@ void RegisterSetting::UpdateRegister(){
|
||||||
txtValueHex[0]->SetEnabled(true);
|
txtValueHex[0]->SetEnabled(true);
|
||||||
txtValueDec[0]->SetEnabled(true);
|
txtValueDec[0]->SetEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
|
EButtonState bState = bSetALLChannel->GetState();
|
||||||
|
//printf("========= %d \n", bState);
|
||||||
bSetALLChannel->SetEnabled(true); /// this will also set the buttonUP
|
bSetALLChannel->SetEnabled(true); /// this will also set the buttonUP
|
||||||
|
if( bState == kButtonDisabled) bState = kButtonUp;
|
||||||
|
bSetALLChannel->SetState(bState);
|
||||||
|
|
||||||
if( type == 87){ /// 'W'
|
if( type == 87){ /// 'W'
|
||||||
for( int ch = 0; ch < digi[boardID]->GetNChannel(); ch++){
|
for( int ch = 0; ch < digi[boardID]->GetNChannel(); ch++){
|
||||||
txtValueHex[ch]->SetText("Register", false);
|
txtValueHex[ch]->SetText("Register", false);
|
||||||
txtValueDec[ch]->SetText("WRITE", false);
|
txtValueDec[ch]->SetText("WRITE", false);
|
||||||
txtValueUnit[ch]->SetText("ONLY", false);
|
txtValueUnit[ch]->SetText("ONLY", false);
|
||||||
txtValueHex[ch]->SetEnabled(true);
|
|
||||||
txtValueDec[ch]->SetEnabled(true);
|
if( bState == kButtonUp ){
|
||||||
|
txtValueHex[ch]->SetEnabled(true);
|
||||||
|
txtValueDec[ch]->SetEnabled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( bState == kButtonDown ){
|
||||||
|
txtValueHex[0]->SetEnabled(true);
|
||||||
|
txtValueDec[0]->SetEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
for( int ch = 0; ch < digi[boardID]->GetNChannel(); ch++){
|
for( int ch = 0; ch < digi[boardID]->GetNChannel(); ch++){
|
||||||
if (type == 82 ){ /// Read only
|
if (type == 82 ){ /// Read only
|
||||||
|
@ -377,6 +399,7 @@ void RegisterSetting::UpdateRegister(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,9 @@ class RegisterSetting{
|
||||||
|
|
||||||
void SetTxtValueUnit(uint32_t address, int ch);
|
void SetTxtValueUnit(uint32_t address, int ch);
|
||||||
|
|
||||||
|
///TThread * thread;
|
||||||
|
///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, Digitizer ** digi, int nBoard, uint32_t address);
|
||||||
virtual ~RegisterSetting();
|
virtual ~RegisterSetting();
|
||||||
|
|
24
test.cpp
24
test.cpp
|
@ -81,7 +81,7 @@ long get_time(){
|
||||||
|
|
||||||
int main(int argc, char* argv[]){
|
int main(int argc, char* argv[]){
|
||||||
|
|
||||||
const int nBoard = 2;
|
const int nBoard = 1;
|
||||||
Digitizer **dig = new Digitizer *[nBoard];
|
Digitizer **dig = new Digitizer *[nBoard];
|
||||||
|
|
||||||
for( int i = 0 ; i < nBoard; i++){
|
for( int i = 0 ; i < nBoard; i++){
|
||||||
|
@ -106,6 +106,7 @@ int main(int argc, char* argv[]){
|
||||||
//dig[0]->WriteRegister(Register::DPP::TriggerValidationMask_G, 0x600, 3);
|
//dig[0]->WriteRegister(Register::DPP::TriggerValidationMask_G, 0x600, 3);
|
||||||
//dig[0]->WriteRegister(Register::DPP::Scratch, 0x12345678);
|
//dig[0]->WriteRegister(Register::DPP::Scratch, 0x12345678);
|
||||||
|
|
||||||
|
dig[0]->ReadRegister(Register::DPP::PHA::TriggerThreshold, 0, "A0");
|
||||||
//dig[0]->ReadRegister(Register::DPP::RecordLength_G, 0, "A0");
|
//dig[0]->ReadRegister(Register::DPP::RecordLength_G, 0, "A0");
|
||||||
//dig[0]->ReadRegister(Register::DPP::RecordLength_G, 3, "A0");
|
//dig[0]->ReadRegister(Register::DPP::RecordLength_G, 3, "A0");
|
||||||
//dig[0]->ReadRegister(Register::DPP::DPPAlgorithmControl, 0, "A1");
|
//dig[0]->ReadRegister(Register::DPP::DPPAlgorithmControl, 0, "A1");
|
||||||
|
@ -114,16 +115,17 @@ int main(int argc, char* argv[]){
|
||||||
//dig[0]->ReadRegister(Register::DPP::TriggerValidationMask_G, 3, "A3");
|
//dig[0]->ReadRegister(Register::DPP::TriggerValidationMask_G, 3, "A3");
|
||||||
//dig[0]->ReadRegister(Register::DPP::Scratch);
|
//dig[0]->ReadRegister(Register::DPP::Scratch);
|
||||||
|
|
||||||
printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::RecordLength_G, 0));
|
printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::PHA::TriggerThreshold, 0));
|
||||||
printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::RecordLength_G, 3));
|
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::RecordLength_G, 0));
|
||||||
|
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::RecordLength_G, 3));
|
||||||
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::DPPAlgorithmControl, 0));
|
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::DPPAlgorithmControl, 0));
|
||||||
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G, 1));
|
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G, 1));
|
||||||
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G, 2));
|
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G, 2));
|
||||||
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G, 3));
|
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::TriggerValidationMask_G, 3));
|
||||||
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::Scratch));
|
//printf(" ======== %u \n", dig[0]->GetSettingFromMemory(Register::DPP::Scratch));
|
||||||
|
|
||||||
printf("////// %u \n", dig[0]->ReadSettingFromFile(Register::DPP::RecordLength_G, 0));
|
//printf("////// %u \n", dig[0]->ReadSettingFromFile(Register::DPP::RecordLength_G, 0));
|
||||||
printf("////// %u \n", dig[0]->ReadSettingFromFile(Register::DPP::RecordLength_G, 3));
|
//printf("////// %u \n", dig[0]->ReadSettingFromFile(Register::DPP::RecordLength_G, 3));
|
||||||
//dig[0]->ReadSettingFromFile(Register::DPP::DPPAlgorithmControl, 0);
|
//dig[0]->ReadSettingFromFile(Register::DPP::DPPAlgorithmControl, 0);
|
||||||
//dig[0]->ReadSettingFromFile(Register::DPP::TriggerValidationMask_G, 1);
|
//dig[0]->ReadSettingFromFile(Register::DPP::TriggerValidationMask_G, 1);
|
||||||
//dig[0]->ReadSettingFromFile(Register::DPP::TriggerValidationMask_G, 2);
|
//dig[0]->ReadSettingFromFile(Register::DPP::TriggerValidationMask_G, 2);
|
||||||
|
@ -133,13 +135,15 @@ int main(int argc, char* argv[]){
|
||||||
//dig[0]->PrintSettingFromMemory();
|
//dig[0]->PrintSettingFromMemory();
|
||||||
|
|
||||||
|
|
||||||
dig[1]->LoadSettingBinary("setting_323.bin");
|
//dig[1]->LoadSettingBinary("setting_323.bin");
|
||||||
|
//
|
||||||
|
//printf(" ======== %u \n", dig[1]->GetSettingFromMemory(Register::DPP::RecordLength_G, 0));
|
||||||
|
//printf(" ======== %u \n", dig[1]->GetSettingFromMemory(Register::DPP::RecordLength_G, 3));
|
||||||
|
//
|
||||||
|
//printf("////// %u \n", dig[1]->ReadSettingFromFile(Register::DPP::RecordLength_G, 0));
|
||||||
|
//printf("////// %u \n", dig[1]->ReadSettingFromFile(Register::DPP::RecordLength_G, 3));
|
||||||
|
|
||||||
printf(" ======== %u \n", dig[1]->GetSettingFromMemory(Register::DPP::RecordLength_G, 0));
|
|
||||||
printf(" ======== %u \n", dig[1]->GetSettingFromMemory(Register::DPP::RecordLength_G, 3));
|
|
||||||
|
|
||||||
printf("////// %u \n", dig[1]->ReadSettingFromFile(Register::DPP::RecordLength_G, 0));
|
|
||||||
printf("////// %u \n", dig[1]->ReadSettingFromFile(Register::DPP::RecordLength_G, 3));
|
|
||||||
/**
|
/**
|
||||||
///============================ Get Data
|
///============================ Get Data
|
||||||
TApplication * app = new TApplication("app", &argc, argv);
|
TApplication * app = new TApplication("app", &argc, argv);
|
||||||
|
|
|
@ -13,8 +13,11 @@ Digitizer ** TriggerSummary::digi = NULL;
|
||||||
int TriggerSummary::nDigi = 0;
|
int TriggerSummary::nDigi = 0;
|
||||||
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::txtThreshold[MaxNBoards][MaxNChannels] = {NULL};
|
TGTextEntry * TriggerSummary::txtThreshold[MaxNBoards][MaxNChannels] = {NULL};
|
||||||
TGNumberEntry * TriggerSummary::numUpdateTime = NULL;
|
TGNumberEntry * TriggerSummary::numUpdateTime = NULL;
|
||||||
|
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, Digitizer ** digi, int nBoard){
|
||||||
|
|
||||||
|
@ -39,31 +42,39 @@ TriggerSummary::TriggerSummary(const TGWindow *p, UInt_t w, UInt_t h, Digitizer
|
||||||
TGVerticalFrame * vframe0 = new TGVerticalFrame(gBD[bd]); gBD[bd]->AddFrame(vframe0, new TGLayoutHints(kLHintsCenterX, 0, 0, 0, 0));
|
TGVerticalFrame * vframe0 = new TGVerticalFrame(gBD[bd]); gBD[bd]->AddFrame(vframe0, new TGLayoutHints(kLHintsCenterX, 0, 0, 0, 0));
|
||||||
TGVerticalFrame * vframe1 = new TGVerticalFrame(gBD[bd]); gBD[bd]->AddFrame(vframe1, new TGLayoutHints(kLHintsCenterX, 0, 0, 0, 0));
|
TGVerticalFrame * vframe1 = new TGVerticalFrame(gBD[bd]); gBD[bd]->AddFrame(vframe1, new TGLayoutHints(kLHintsCenterX, 0, 0, 0, 0));
|
||||||
TGVerticalFrame * vframe2 = new TGVerticalFrame(gBD[bd]); gBD[bd]->AddFrame(vframe2, new TGLayoutHints(kLHintsCenterX, 0, 0, 0, 0));
|
TGVerticalFrame * vframe2 = new TGVerticalFrame(gBD[bd]); gBD[bd]->AddFrame(vframe2, new TGLayoutHints(kLHintsCenterX, 0, 0, 0, 0));
|
||||||
|
TGVerticalFrame * vframe3 = new TGVerticalFrame(gBD[bd]); gBD[bd]->AddFrame(vframe3, new TGLayoutHints(kLHintsCenterX, 0, 0, 0, 0));
|
||||||
|
|
||||||
TGLabel * lbCh0 = new TGLabel(vframe0, "ch"); vframe0->AddFrame(lbCh0, new TGLayoutHints(kLHintsCenterY, 0,5,3,2));
|
TGLabel * lbCh0 = new TGLabel(vframe0, "ch"); vframe0->AddFrame(lbCh0, new TGLayoutHints(kLHintsCenterY, 0,5,3,2));
|
||||||
TGLabel * lbTrigger = new TGLabel(vframe1, "Trig.[Hz]"); vframe1->AddFrame(lbTrigger, new TGLayoutHints(kLHintsCenterY, 5,5,3,2));
|
TGLabel * lbTrigger = new TGLabel(vframe1, "Trig.[Hz]"); vframe1->AddFrame(lbTrigger, new TGLayoutHints(kLHintsCenterY, 5,5,3,2));
|
||||||
TGLabel * lbThreshold = new TGLabel(vframe2, "Thres."); vframe2->AddFrame(lbThreshold, new TGLayoutHints(kLHintsCenterY, 5,5,3,2));
|
TGLabel * lbThreshold = new TGLabel(vframe2, "Thres."); vframe2->AddFrame(lbThreshold, new TGLayoutHints(kLHintsCenterY, 5,5,3,2));
|
||||||
|
TGLabel * lbdummy = new TGLabel(vframe3, ""); vframe3->AddFrame(lbdummy, new TGLayoutHints(kLHintsCenterY, 5,5,3,2));
|
||||||
|
|
||||||
for( int ch = 0; ch < (digi == NULL ? MaxNChannels: digi[bd]->GetNChannel()); ch++){
|
for( int ch = 0; ch < (digi == NULL ? MaxNChannels: digi[bd]->GetNChannel()); ch++){
|
||||||
lbCh[bd][ch] = new TGLabel(vframe0, Form("%02d", ch)); vframe0->AddFrame(lbCh[bd][ch], new TGLayoutHints(kLHintsCenterY, 0,5,3,2));
|
lbCh[bd][ch] = new TGLabel(vframe0, Form("%02d", ch)); vframe0->AddFrame(lbCh[bd][ch], new TGLayoutHints(kLHintsCenterY, 0,5,4,2));
|
||||||
|
|
||||||
txtTrigger[bd][ch] = new TGTextEntry(vframe1, ""); vframe1->AddFrame(txtTrigger[bd][ch], kaka);
|
txtTrigger[bd][ch] = new TGTextEntry(vframe1, ""); vframe1->AddFrame(txtTrigger[bd][ch], kaka);
|
||||||
txtTrigger[bd][ch]->Resize(50,20);
|
txtTrigger[bd][ch]->Resize(50,20);
|
||||||
txtTrigger[bd][ch]->SetEnabled(false);
|
txtTrigger[bd][ch]->SetEnabled(false);
|
||||||
txtTrigger[bd][ch]->SetAlignment(kTextRight);
|
txtTrigger[bd][ch]->SetAlignment(kTextRight);
|
||||||
|
|
||||||
txtThreshold[bd][ch] = new TGTextEntry(vframe2, ""); vframe2->AddFrame(txtThreshold[bd][ch], kaka);
|
txtThresholdValue[bd][ch] = new TGTextEntry(vframe2, ""); vframe2->AddFrame(txtThresholdValue[bd][ch], kaka);
|
||||||
|
txtThresholdValue[bd][ch]->Resize(50,20);
|
||||||
|
txtThresholdValue[bd][ch]->SetEnabled(false);
|
||||||
|
txtThresholdValue[bd][ch]->SetAlignment(kTextRight);
|
||||||
|
|
||||||
|
value[bd][ch] = 0;
|
||||||
|
if( digi != NULL ){
|
||||||
|
if( digi[bd]->GetDPPType() == V1730_DPP_PSD_CODE ) value[bd][ch] = digi[bd]->GetSettingFromMemory(Register::DPP::PSD::TriggerThreshold, ch);
|
||||||
|
if( digi[bd]->GetDPPType() == V1730_DPP_PHA_CODE ) value[bd][ch] = digi[bd]->GetSettingFromMemory(Register::DPP::PHA::TriggerThreshold, ch);
|
||||||
|
}
|
||||||
|
txtThresholdValue[bd][ch]->SetText(Form("%d", value[bd][ch]), false);
|
||||||
|
|
||||||
|
txtThreshold[bd][ch] = new TGTextEntry(vframe3, ""); vframe3->AddFrame(txtThreshold[bd][ch], kaka);
|
||||||
txtThreshold[bd][ch]->Resize(50,20);
|
txtThreshold[bd][ch]->Resize(50,20);
|
||||||
txtThreshold[bd][ch]->SetAlignment(kTextRight);
|
txtThreshold[bd][ch]->SetAlignment(kTextRight);
|
||||||
txtThreshold[bd][ch]->Connect("ReturnPressed()", "TriggerSummary", this, "SetThreshold()");
|
txtThreshold[bd][ch]->Connect("ReturnPressed()", "TriggerSummary", this, "SetThreshold()");
|
||||||
|
|
||||||
value[bd][ch] = 0;
|
|
||||||
|
|
||||||
if( digi != NULL ){
|
|
||||||
if( digi[bd]->GetDPPType() == V1730_DPP_PSD_CODE ) value[bd][ch] = digi[bd]->ReadRegister(Register::DPP::PSD::TriggerThreshold, ch);
|
|
||||||
if( digi[bd]->GetDPPType() == V1730_DPP_PHA_CODE ) value[bd][ch] = digi[bd]->ReadRegister(Register::DPP::PHA::TriggerThreshold, ch);
|
|
||||||
}
|
|
||||||
txtThreshold[bd][ch]->SetText(Form("%d", value[bd][ch]), false);
|
txtThreshold[bd][ch]->SetText(Form("%d", value[bd][ch]), false);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,6 +107,7 @@ TriggerSummary::~TriggerSummary(){
|
||||||
for(int i = 0; i < nDigi; i++){
|
for(int i = 0; i < nDigi; i++){
|
||||||
for(int j = 0; j < MaxNChannels; j++){
|
for(int j = 0; j < MaxNChannels; j++){
|
||||||
delete txtTrigger[i][j];
|
delete txtTrigger[i][j];
|
||||||
|
delete txtThresholdValue[i][j];
|
||||||
delete txtThreshold[i][j];
|
delete txtThreshold[i][j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,7 +115,7 @@ TriggerSummary::~TriggerSummary(){
|
||||||
delete numUpdateTime;
|
delete numUpdateTime;
|
||||||
|
|
||||||
updateFlag = false;
|
updateFlag = false;
|
||||||
usleep(1000 * 1000);
|
//usleep(500 * 1000);
|
||||||
|
|
||||||
///delete thread; /// Don;t delete the thread, otherwise, thread will not run after close and reopen.
|
///delete thread; /// Don;t delete the thread, otherwise, thread will not run after close and reopen.
|
||||||
|
|
||||||
|
@ -114,15 +126,19 @@ TriggerSummary::~TriggerSummary(){
|
||||||
void * TriggerSummary::UpdateTriggerRate(void * ptr){
|
void * TriggerSummary::UpdateTriggerRate(void * ptr){
|
||||||
|
|
||||||
while( updateFlag){
|
while( updateFlag){
|
||||||
|
///printf("==================== %s\n", __func__);
|
||||||
for( int bd = 0; bd < nDigi; bd++){
|
for( int bd = 0; bd < nDigi; bd++){
|
||||||
for( int ch = 0; ch < digi[bd]->GetNChannel(); ch++){
|
for( int ch = 0; ch < digi[bd]->GetNChannel(); ch++){
|
||||||
txtTrigger[bd][ch]->SetText(Form("%.2f", digi[bd]->GetData()->TriggerRate[ch]));
|
txtTrigger[bd][ch]->SetText(Form("%.2f", digi[bd]->GetData()->TriggerRate[ch]));
|
||||||
|
value[bd][ch] = digi[bd]->GetSettingFromMemory(Register::DPP::PHA::TriggerThreshold, ch);
|
||||||
|
txtThresholdValue[bd][ch]->SetText(Form("%d", value[bd][ch]), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
usleep(numUpdateTime->GetNumber() * 1000);
|
usleep(numUpdateTime->GetNumber() * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TriggerSummary::SetThreshold(){
|
void TriggerSummary::SetThreshold(){
|
||||||
|
@ -139,17 +155,17 @@ void TriggerSummary::SetThreshold(){
|
||||||
|
|
||||||
digi[bd]->WriteRegister(Register::DPP::PSD::TriggerThreshold, haha, ch);
|
digi[bd]->WriteRegister(Register::DPP::PSD::TriggerThreshold, haha, ch);
|
||||||
|
|
||||||
value[bd][ch] = digi[bd]->ReadRegister(Register::DPP::PSD::TriggerThreshold, ch);
|
value[bd][ch] = digi[bd]->GetSettingFromMemory(Register::DPP::PSD::TriggerThreshold, ch);
|
||||||
|
|
||||||
}
|
}
|
||||||
if( digi[bd]->GetDPPType() == V1730_DPP_PHA_CODE ) {
|
if( digi[bd]->GetDPPType() == V1730_DPP_PHA_CODE ) {
|
||||||
digi[bd]->WriteRegister(Register::DPP::PHA::TriggerThreshold, haha, ch);
|
digi[bd]->WriteRegister(Register::DPP::PHA::TriggerThreshold, haha, ch);
|
||||||
|
|
||||||
value[bd][ch] = digi[bd]->ReadRegister(Register::DPP::PHA::TriggerThreshold, ch);
|
value[bd][ch] = digi[bd]->GetSettingFromMemory(Register::DPP::PHA::TriggerThreshold, ch);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
txtThreshold[bd][ch]->SetText(Form("%d", value[bd][ch]), false);
|
txtThresholdValue[bd][ch]->SetText(Form("%d", value[bd][ch]), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,13 +23,14 @@ class TriggerSummary{
|
||||||
static Digitizer ** digi;
|
static Digitizer ** digi;
|
||||||
|
|
||||||
static TGTextEntry * txtTrigger[MaxNBoards][MaxNChannels];
|
static TGTextEntry * txtTrigger[MaxNBoards][MaxNChannels];
|
||||||
|
static TGTextEntry * txtThresholdValue[MaxNBoards][MaxNChannels];
|
||||||
static TGTextEntry * txtThreshold[MaxNBoards][MaxNChannels];
|
static TGTextEntry * txtThreshold[MaxNBoards][MaxNChannels];
|
||||||
|
|
||||||
TThread * thread;
|
TThread * thread;
|
||||||
static bool updateFlag;
|
static bool updateFlag;
|
||||||
static TGNumberEntry * numUpdateTime;
|
static TGNumberEntry * numUpdateTime;
|
||||||
|
|
||||||
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, Digitizer ** digi, int nBoard);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user