added debug code and solve the peak average issue

This commit is contained in:
carina@hades 2023-08-17 12:38:15 -04:00
parent c20771567b
commit 58dcd0d717
5 changed files with 21 additions and 15 deletions

View File

@ -398,6 +398,7 @@ inline void Data::DecodeBuffer(bool fastDecode, int verbose){
///Calculate trigger rate and first and last Timestamp ///Calculate trigger rate and first and last Timestamp
for(int ch = 0; ch < MaxNChannels; ch++){ for(int ch = 0; ch < MaxNChannels; ch++){
if( NumEventsDecoded[ch] > 0 ) { if( NumEventsDecoded[ch] > 0 ) {
// printf("%s | ch %d | %d %d \n", __func__, ch, LoopIndex[ch], DataIndex[ch]);
IsNotRollOverFakeAgg = true; IsNotRollOverFakeAgg = true;
}else{ }else{
continue; continue;

View File

@ -501,7 +501,7 @@ int Digitizer::ReadData(){
ret = CAEN_DGTZ_ReadData(handle, CAEN_DGTZ_SLAVE_TERMINATED_READOUT_MBLT, data->buffer, &(data->nByte)); ret = CAEN_DGTZ_ReadData(handle, CAEN_DGTZ_SLAVE_TERMINATED_READOUT_MBLT, data->buffer, &(data->nByte));
//uint32_t EventSize = ReadRegister(DPP::EventSize); // Is it as same as data->nByte? //uint32_t EventSize = ReadRegister(DPP::EventSize); // Is it as same as data->nByte?
//printf("Read Buffer size %d byte, Event Size : %d byte \n", data->nByte, EventSize); // if( data->nByte > 0 ) printf("Read Buffer size %d byte \n", data->nByte);
if (ret || data->nByte == 0) { if (ret || data->nByte == 0) {
ErrorMsg(__func__); ErrorMsg(__func__);

View File

@ -98,6 +98,9 @@ Those file can be compiled using
`make -f Makefile_test` `make -f Makefile_test`
# Known Issues
* for PHA firmware, when the peak average changed, the Events per Agg need to be changed.
# Known Bugs # Known Bugs
* for PHA firmware, when the peak average changed, trace disapear and causing program lag.

View File

@ -104,6 +104,7 @@ Scope::Scope(Digitizer ** digi, unsigned int nDigi, ReadDataThread ** readDataTh
cbScopeDigi->setCurrentIndex(0); cbScopeDigi->setCurrentIndex(0);
for( int i = 0; i < digi[0]->GetNChannels(); i++) cbScopeCh->addItem("Ch-" + QString::number(i)); for( int i = 0; i < digi[0]->GetNChannels(); i++) cbScopeCh->addItem("Ch-" + QString::number(i));
tick2ns = digi[ID]->GetTick2ns(); tick2ns = digi[ID]->GetTick2ns();
factor = digi[ID]->IsDualTrace_PHA() ? 2 : 1;
connect(cbScopeDigi, &RComboBox::currentIndexChanged, this, [=](int index){ connect(cbScopeDigi, &RComboBox::currentIndexChanged, this, [=](int index){
if( !enableSignalSlot ) return; if( !enableSignalSlot ) return;
@ -113,6 +114,8 @@ Scope::Scope(Digitizer ** digi, unsigned int nDigi, ReadDataThread ** readDataTh
ID = index; ID = index;
tick2ns = digi[ID]->GetTick2ns(); tick2ns = digi[ID]->GetTick2ns();
factor = digi[ID]->IsDualTrace_PHA() ? 2 : 1;
//---setup cbScopeCh //---setup cbScopeCh
cbScopeCh->clear(); cbScopeCh->clear();
for( int i = 0; i < digi[ID]->GetNChannels(); i++) cbScopeCh->addItem("Ch-" + QString::number(i)); for( int i = 0; i < digi[ID]->GetNChannels(); i++) cbScopeCh->addItem("Ch-" + QString::number(i));
@ -253,6 +256,7 @@ void Scope::StartScope(){
if( !digi ) return; if( !digi ) return;
//TODO set other channel to be no trace; //TODO set other channel to be no trace;
emit UpdateOtherPanels();
for( unsigned int iDigi = 0; iDigi < nDigi; iDigi ++){ for( unsigned int iDigi = 0; iDigi < nDigi; iDigi ++){
@ -269,10 +273,9 @@ void Scope::StartScope(){
readDataThread[iDigi]->SetScopeMode(true); readDataThread[iDigi]->SetScopeMode(true);
readDataThread[iDigi]->SetSaveData(false); readDataThread[iDigi]->SetSaveData(false);
readDataThread[iDigi]->start(); readDataThread[iDigi]->start();
printf("----- readDataThread running ? %d.\n", readDataThread[iDigi]->isRunning());
} }
emit UpdateOtherPanels();
updateTraceThread->start(); updateTraceThread->start();
bnScopeStart->setEnabled(false); bnScopeStart->setEnabled(false);
@ -335,8 +338,7 @@ void Scope::UpdateScope(){
if( digi[ID]->GetChannelOnOff(ch) == false) return; if( digi[ID]->GetChannelOnOff(ch) == false) return;
int tick2ns = digi[ID]->GetTick2ns(); // printf("### %d %d \n", ch, digi[ID]->GetData()->DataIndex[ch]);
int factor = digi[ID]->IsDualTrace_PHA() ? 2 : 1;
digiMTX[ID].lock(); digiMTX[ID].lock();
Data * data = digi[ID]->GetData(); Data * data = digi[ID]->GetData();
@ -344,18 +346,17 @@ void Scope::UpdateScope(){
//leTriggerRate->setText(QString::number(data->TriggerRate[ch]) + " [" + QString::number(data->NumEventsDecoded[ch]) + "]"); //leTriggerRate->setText(QString::number(data->TriggerRate[ch]) + " [" + QString::number(data->NumEventsDecoded[ch]) + "]");
leTriggerRate->setText(QString::number(data->TriggerRate[ch])); leTriggerRate->setText(QString::number(data->TriggerRate[ch]));
unsigned short index = data->DataIndex[ch]; int index = data->DataIndex[ch];
unsigned short traceLength = data->Waveform1[ch][index].size(); int traceLength = data->Waveform1[ch][index].size();
// printf("--- %s| %d, %d, %d | %d | %d, %d\n", __func__, ch, data->LoopIndex[ch], index, traceLength, factor, tick2ns );
if( data->TriggerRate[ch] > 0 ){ if( data->TriggerRate[ch] > 0 ){
//printf("--- %d | %d \n", index, traceLength );
QVector<QPointF> points[4]; QVector<QPointF> points[4];
if( digi[ID]->GetDPPType() == V1730_DPP_PHA_CODE ) { if( digi[ID]->GetDPPType() == V1730_DPP_PHA_CODE ) {
for( int i = 0; i < (int) (data->Waveform1[ch][index]).size() ; i++ ) { for( int i = 0; i < traceLength ; i++ ) {
points[0].append(QPointF(tick2ns * i * factor, (data->Waveform1[ch][index])[i])); points[0].append(QPointF(tick2ns * i * factor, (data->Waveform1[ch][index])[i]));
if( i < (int) data->Waveform2[ch][index].size() ) points[1].append(QPointF(tick2ns * i * factor, (data->Waveform2[ch][index])[i])); if( i < (int) data->Waveform2[ch][index].size() ) points[1].append(QPointF(tick2ns * i * factor, (data->Waveform2[ch][index])[i]));
if( i < (int) data->DigiWaveform1[ch][index].size() ) points[2].append(QPointF(tick2ns * i * factor, (data->DigiWaveform1[ch][index])[i] * 1000)); if( i < (int) data->DigiWaveform1[ch][index].size() ) points[2].append(QPointF(tick2ns * i * factor, (data->DigiWaveform1[ch][index])[i] * 1000));
if( i < (int) data->DigiWaveform2[ch][index].size() ) points[3].append(QPointF(tick2ns * i * factor, (data->DigiWaveform2[ch][index])[i] * 1000 + 500)); if( i < (int) data->DigiWaveform2[ch][index].size() ) points[3].append(QPointF(tick2ns * i * factor, (data->DigiWaveform2[ch][index])[i] * 1000 + 500));
} }
@ -364,9 +365,9 @@ void Scope::UpdateScope(){
if( digi[ID]->GetDPPType() == V1730_DPP_PSD_CODE ) { if( digi[ID]->GetDPPType() == V1730_DPP_PSD_CODE ) {
for( int i = 0; i < (int) (data->DigiWaveform1[ch][index]).size() ; i++ ) { for( int i = 0; i < (int) (data->DigiWaveform1[ch][index]).size() ; i++ ) {
points[0].append(QPointF(tick2ns * i * factor, (data->Waveform1[ch][index])[i])); points[0].append(QPointF(tick2ns * i * factor, (data->Waveform1[ch][index])[i]));
if( i < (int) data->Waveform2[ch][index].size() ) points[1].append(QPointF(tick2ns * i * factor, (data->Waveform2[ch][index])[i])); if( i < (int) data->Waveform2[ch][index].size() ) points[1].append(QPointF(tick2ns * i * factor, (data->Waveform2[ch][index])[i]));
if( i < (int) data->DigiWaveform1[ch][index].size() ) points[2].append(QPointF(tick2ns * i, (data->DigiWaveform1[ch][index])[i] * 1000)); if( i < (int) data->DigiWaveform1[ch][index].size() ) points[2].append(QPointF(tick2ns * i, (data->DigiWaveform1[ch][index])[i] * 1000));
if( i < (int) data->DigiWaveform2[ch][index].size() ) points[3].append(QPointF(tick2ns * i, (data->DigiWaveform2[ch][index])[i] * 1000 + 500)); if( i < (int) data->DigiWaveform2[ch][index].size() ) points[3].append(QPointF(tick2ns * i, (data->DigiWaveform2[ch][index])[i] * 1000 + 500));
} }
} }
dataTrace[0]->replace(points[0]); dataTrace[0]->replace(points[0]);

View File

@ -73,6 +73,7 @@ private:
unsigned short ID; // the id of digi, index of cbScopeDigi unsigned short ID; // the id of digi, index of cbScopeDigi
bool isACQStarted; bool isACQStarted;
int tick2ns; int tick2ns;
int factor; // whether dual trace or not
bool traceOn[MaxNDigitizer]; bool traceOn[MaxNDigitizer];
ReadDataThread ** readDataThread; ReadDataThread ** readDataThread;