bugs fix for QDC
This commit is contained in:
parent
5279dfad72
commit
3819e422bd
34
ClassData.h
34
ClassData.h
|
@ -503,6 +503,9 @@ inline void Data::DecodeBuffer(bool fastDecode, int verbose){
|
||||||
|
|
||||||
unsigned long long t0 = Timestamp[ch][(calIndexes[ch][0]) % MaxNData]; // earlier
|
unsigned long long t0 = Timestamp[ch][(calIndexes[ch][0]) % MaxNData]; // earlier
|
||||||
unsigned long long t1 = Timestamp[ch][(calIndexes[ch][1]) % MaxNData];; // latest
|
unsigned long long t1 = Timestamp[ch][(calIndexes[ch][1]) % MaxNData];; // latest
|
||||||
|
|
||||||
|
if( t0 > t1 ) printf("data is not in time order");
|
||||||
|
|
||||||
double sec = ( t1 - t0 ) * tick2ns / 1e9;
|
double sec = ( t1 - t0 ) * tick2ns / 1e9;
|
||||||
|
|
||||||
TriggerRate[ch] = nEvent / sec;
|
TriggerRate[ch] = nEvent / sec;
|
||||||
|
@ -516,37 +519,6 @@ inline void Data::DecodeBuffer(bool fastDecode, int verbose){
|
||||||
|
|
||||||
//printf("%2d | %10llu %10llu, %.0f = %f sec, rate = %f, nEvent %d pileUp %d \n", ch, tList.front() ,tList.back(), tick2ns, sec, nEvent / sec, nEvent, pileUpCount);
|
//printf("%2d | %10llu %10llu, %.0f = %f sec, rate = %f, nEvent %d pileUp %d \n", ch, tList.front() ,tList.back(), tick2ns, sec, nEvent / sec, nEvent, pileUpCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// if( calIndexes[ch][0] == -1 ) calIndexes[ch][0] = 0;
|
|
||||||
// if( calIndexes[ch][0] > -1 && calIndexes[ch][1] == -1 ) calIndexes[ch][1] = DataIndex[ch];
|
|
||||||
|
|
||||||
// short nEvent = calIndexes[ch][1] - calIndexes[ch][0] ;
|
|
||||||
// if( nEvent < 0 ) nEvent += MaxNData;
|
|
||||||
// printf("ch %2d ----- %d %d | %d \n", ch, calIndexes[ch][0], calIndexes[ch][1], nEvent);
|
|
||||||
|
|
||||||
// if( calIndexes[ch][0] > -1 && calIndexes[ch][1] > -1 && nEvent > 2 ){
|
|
||||||
// unsigned long long dTime = Timestamp[ch][calIndexes[ch][1]] - Timestamp[ch][calIndexes[ch][0]];
|
|
||||||
// double sec = dTime * tick2ns / 1e9;
|
|
||||||
|
|
||||||
|
|
||||||
// TriggerRate[ch] = nEvent / sec;
|
|
||||||
|
|
||||||
// short pileUpCount = 0;
|
|
||||||
// for( int i = calIndexes[ch][0] ; i <= calIndexes[ch][0] + nEvent; i++ ) {
|
|
||||||
// if( PileUp[ch][i % MaxNData] ) pileUpCount ++;
|
|
||||||
// }
|
|
||||||
// printf("%2d | %10llu %10llu, %.0f = %f sec, rate = %f, nEvent %d pileUp %d \n", ch, Timestamp[ch][calIndexes[ch][0]], Timestamp[ch][calIndexes[ch][1]], tick2ns, sec, nEvent / sec, nEvent, pileUpCount);
|
|
||||||
|
|
||||||
// NonPileUpRate[ch] = (nEvent - pileUpCount)/sec;
|
|
||||||
|
|
||||||
// calIndexes[ch][0] = calIndexes[ch][1];
|
|
||||||
// calIndexes[ch][1] = -1;
|
|
||||||
|
|
||||||
// }else{
|
|
||||||
// calIndexes[ch][1] = -1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -398,15 +398,16 @@ int Digitizer::ProgramBoard_QDC(){
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
WriteRegister(DPP::QDC::NumberEventsPerAggregate, 0x10, -1);
|
WriteRegister(DPP::QDC::NumberEventsPerAggregate, 0x10, -1);
|
||||||
WriteRegister(DPP::QDC::RecordLength, 31, -1); // 248 sample = 3968 ns
|
WriteRegister(DPP::QDC::RecordLength_W, 16, -1); // 128 sample = 2048 ns
|
||||||
WriteRegister(DPP::QDC::PreTrigger, 60, -1); // at 60 sample = 960 ns
|
WriteRegister(DPP::QDC::PreTrigger, 60, -1); // at 60 sample = 960 ns
|
||||||
|
|
||||||
WriteRegister(DPP::QDC::GateWidth, 100/16, -1);
|
WriteRegister(DPP::QDC::GateWidth, 100/16, -1);
|
||||||
WriteRegister(DPP::QDC::GateOffset, 0, -1);
|
WriteRegister(DPP::QDC::GateOffset, 0, -1);
|
||||||
WriteRegister(DPP::QDC::FixedBaseline, 0, -1);
|
WriteRegister(DPP::QDC::FixedBaseline, 0, -1);
|
||||||
|
|
||||||
//WriteRegister(DPP::QDC::DPPAlgorithmControl, 0x300112); // with test pulse
|
//WriteRegister(DPP::QDC::DPPAlgorithmControl, 0x300112); // with test pulse, positive
|
||||||
WriteRegister(DPP::QDC::DPPAlgorithmControl, 0x300102); // No test pulse
|
//WriteRegister(DPP::QDC::DPPAlgorithmControl, 0x300102); // No test pulse, positive
|
||||||
|
WriteRegister(DPP::QDC::DPPAlgorithmControl, 0x310102); // No test pulse, negative
|
||||||
|
|
||||||
WriteRegister(DPP::QDC::TriggerHoldOffWidth, 100/16, -1);
|
WriteRegister(DPP::QDC::TriggerHoldOffWidth, 100/16, -1);
|
||||||
WriteRegister(DPP::QDC::TRGOUTWidth, 100/16, -1);
|
WriteRegister(DPP::QDC::TRGOUTWidth, 100/16, -1);
|
||||||
|
@ -770,9 +771,8 @@ void Digitizer::ReadAllSettingsFromBoard(bool force){
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
printf("BoardID : 0x%X = DataFormat \n", GetSettingFromMemory(DPP::BoardID));
|
//printf("BoardID : 0x%X = DataFormat \n", GetSettingFromMemory(DPP::BoardID));
|
||||||
|
|
||||||
isSettingFilledinMemeory = true;
|
isSettingFilledinMemeory = true;
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QMutex>
|
#include <QMutex>
|
||||||
#include <QWaitCondition>
|
#include <QWaitCondition>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
#include "ClassDigitizer.h"
|
#include "ClassDigitizer.h"
|
||||||
|
@ -116,7 +117,7 @@ class TimingThread : public QThread {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
TimingThread(QObject * parent = 0 ) : QThread(parent){
|
TimingThread(QObject * parent = 0 ) : QThread(parent){
|
||||||
waitTime = 20; // 10 x 100 milisec
|
waitTime = 20; // multiple of 100 mili sec
|
||||||
stop = false;
|
stop = false;
|
||||||
}
|
}
|
||||||
void Stop() { this->stop = true;}
|
void Stop() { this->stop = true;}
|
||||||
|
|
|
@ -3051,15 +3051,12 @@ void DigiSettingsPanel::SetUpChannel_QDC(){
|
||||||
}
|
}
|
||||||
|
|
||||||
//&###########################################################
|
//&###########################################################
|
||||||
void DigiSettingsPanel::UpdateBoardAndChannelsStatus(){
|
void DigiSettingsPanel::UpdateACQStatus(uint32_t status){
|
||||||
|
|
||||||
//*========================================
|
leACQStatus[ID]->setText( "0x" + QString::number(status, 16).toUpper());
|
||||||
uint32_t AcqStatus = digi[ID]->ReadRegister(DPP::AcquisitionStatus_R);
|
|
||||||
|
|
||||||
leACQStatus[ID]->setText( "0x" + QString::number(AcqStatus, 16).toUpper());
|
|
||||||
|
|
||||||
for( int i = 0; i < 9; i++){
|
for( int i = 0; i < 9; i++){
|
||||||
if( Digitizer::ExtractBits(AcqStatus, {1, ACQToolTip[i].second}) == 0 ){
|
if( Digitizer::ExtractBits(status, {1, ACQToolTip[i].second}) == 0 ){
|
||||||
bnACQStatus[ID][i]->setStyleSheet("");
|
bnACQStatus[ID][i]->setStyleSheet("");
|
||||||
bnACQStatus[ID][i]->setToolTip(ACQToolTip[i].first.first);
|
bnACQStatus[ID][i]->setToolTip(ACQToolTip[i].first.first);
|
||||||
if(ACQToolTip[i].second == 19 ) bnACQStatus[ID][i]->setStyleSheet("background-color: green;");
|
if(ACQToolTip[i].second == 19 ) bnACQStatus[ID][i]->setStyleSheet("background-color: green;");
|
||||||
|
@ -3070,26 +3067,14 @@ void DigiSettingsPanel::UpdateBoardAndChannelsStatus(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//*========================================
|
}
|
||||||
uint32_t BdFailStatus = digi[ID]->ReadRegister(DPP::BoardFailureStatus_R);
|
|
||||||
leBdFailStatus[ID]->setText( "0x" + QString::number(BdFailStatus, 16).toUpper());
|
|
||||||
|
|
||||||
for( int i = 0; i < 3; i++){
|
|
||||||
if( Digitizer::ExtractBits(BdFailStatus, {1, BdFailToolTip[i].second}) == 0 ){
|
|
||||||
bnBdFailStatus[ID][i]->setStyleSheet("background-color: green;");
|
|
||||||
bnBdFailStatus[ID][i]->setToolTip(BdFailToolTip[i].first.first);
|
|
||||||
}else{
|
|
||||||
bnBdFailStatus[ID][i]->setStyleSheet("background-color: red;");
|
|
||||||
bnBdFailStatus[ID][i]->setToolTip(BdFailToolTip[i].first.second);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//*========================================
|
void DigiSettingsPanel::UpdateReadOutStatus(uint32_t status){
|
||||||
uint32_t ReadoutStatus = digi[ID]->ReadRegister(DPP::ReadoutStatus_R);
|
|
||||||
leReadOutStatus[ID]->setText( "0x" + QString::number(ReadoutStatus, 16).toUpper());
|
leReadOutStatus[ID]->setText( "0x" + QString::number(status, 16).toUpper());
|
||||||
|
|
||||||
for( int i = 0; i < 3; i++){
|
for( int i = 0; i < 3; i++){
|
||||||
if( Digitizer::ExtractBits(ReadoutStatus, {1, ReadoutToolTip[i].second}) == 0 ){
|
if( Digitizer::ExtractBits(status, {1, ReadoutToolTip[i].second}) == 0 ){
|
||||||
if( ReadoutToolTip[i].second != 2 ) {
|
if( ReadoutToolTip[i].second != 2 ) {
|
||||||
bnReadOutStatus[ID][i]->setStyleSheet("");
|
bnReadOutStatus[ID][i]->setStyleSheet("");
|
||||||
}else{
|
}else{
|
||||||
|
@ -3105,6 +3090,31 @@ void DigiSettingsPanel::UpdateBoardAndChannelsStatus(){
|
||||||
bnReadOutStatus[ID][i]->setToolTip(ReadoutToolTip[i].first.second);
|
bnReadOutStatus[ID][i]->setToolTip(ReadoutToolTip[i].first.second);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DigiSettingsPanel::UpdateBoardAndChannelsStatus(){
|
||||||
|
|
||||||
|
//*========================================
|
||||||
|
uint32_t AcqStatus = digi[ID]->ReadRegister(DPP::AcquisitionStatus_R);
|
||||||
|
UpdateACQStatus(AcqStatus);
|
||||||
|
|
||||||
|
//*========================================
|
||||||
|
uint32_t ReadoutStatus = digi[ID]->ReadRegister(DPP::ReadoutStatus_R);
|
||||||
|
UpdateReadOutStatus(ReadoutStatus);
|
||||||
|
|
||||||
|
//*========================================
|
||||||
|
uint32_t BdFailStatus = digi[ID]->ReadRegister(DPP::BoardFailureStatus_R);
|
||||||
|
leBdFailStatus[ID]->setText( "0x" + QString::number(BdFailStatus, 16).toUpper());
|
||||||
|
|
||||||
|
for( int i = 0; i < 3; i++){
|
||||||
|
if( Digitizer::ExtractBits(BdFailStatus, {1, BdFailToolTip[i].second}) == 0 ){
|
||||||
|
bnBdFailStatus[ID][i]->setStyleSheet("background-color: green;");
|
||||||
|
bnBdFailStatus[ID][i]->setToolTip(BdFailToolTip[i].first.first);
|
||||||
|
}else{
|
||||||
|
bnBdFailStatus[ID][i]->setStyleSheet("background-color: red;");
|
||||||
|
bnBdFailStatus[ID][i]->setToolTip(BdFailToolTip[i].first.second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//*========================================== Channel Status
|
//*========================================== Channel Status
|
||||||
for( int i = 0; i < digi[ID]->GetNumRegChannels(); i++){
|
for( int i = 0; i < digi[ID]->GetNumRegChannels(); i++){
|
||||||
|
|
|
@ -21,10 +21,13 @@ public:
|
||||||
DigiSettingsPanel(Digitizer ** digi, unsigned int nDigi, QString rawDataPath, QMainWindow * parent = nullptr);
|
DigiSettingsPanel(Digitizer ** digi, unsigned int nDigi, QString rawDataPath, QMainWindow * parent = nullptr);
|
||||||
~DigiSettingsPanel();
|
~DigiSettingsPanel();
|
||||||
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void UpdatePanelFromMemory();
|
void UpdatePanelFromMemory();
|
||||||
void ReadSettingsFromBoard();
|
void ReadSettingsFromBoard();
|
||||||
void UpdateBoardAndChannelsStatus(); // will ReadRegister
|
void UpdateACQStatus(uint32_t status);
|
||||||
|
void UpdateReadOutStatus(uint32_t status);
|
||||||
|
void UpdateBoardAndChannelsStatus(); // directly read from register
|
||||||
|
|
||||||
void SaveSetting(int opt);
|
void SaveSetting(int opt);
|
||||||
void LoadSetting();
|
void LoadSetting();
|
||||||
|
|
53
FSUDAQ.cpp
53
FSUDAQ.cpp
|
@ -39,7 +39,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
||||||
runRecord = nullptr;
|
runRecord = nullptr;
|
||||||
model = nullptr;
|
model = nullptr;
|
||||||
influx = nullptr;
|
influx = nullptr;
|
||||||
|
|
||||||
QWidget * mainLayoutWidget = new QWidget(this);
|
QWidget * mainLayoutWidget = new QWidget(this);
|
||||||
setCentralWidget(mainLayoutWidget);
|
setCentralWidget(mainLayoutWidget);
|
||||||
QVBoxLayout * layoutMain = new QVBoxLayout(mainLayoutWidget);
|
QVBoxLayout * layoutMain = new QVBoxLayout(mainLayoutWidget);
|
||||||
|
@ -234,16 +234,16 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
||||||
connect( bnStartACQ, &QPushButton::clicked, this, &MainWindow::AutoRun);
|
connect( bnStartACQ, &QPushButton::clicked, this, &MainWindow::AutoRun);
|
||||||
bnStopACQ = new QPushButton("Stop ACQ", this);
|
bnStopACQ = new QPushButton("Stop ACQ", this);
|
||||||
connect( bnStopACQ, &QPushButton::clicked, this, [=](){
|
connect( bnStopACQ, &QPushButton::clicked, this, [=](){
|
||||||
if( runTimer->isActive() ){
|
if( runTimer->isActive() ){
|
||||||
runTimer->stop();
|
runTimer->stop();
|
||||||
runTimer->disconnect(runTimerConnection);
|
runTimer->disconnect(runTimerConnection);
|
||||||
}else{
|
}else{
|
||||||
breakAutoRepeat = true;
|
breakAutoRepeat = true;
|
||||||
runTimer->disconnect(runTimerConnection);
|
runTimer->disconnect(runTimerConnection);
|
||||||
}
|
}
|
||||||
needManualComment = true;
|
needManualComment = true;
|
||||||
StopACQ();
|
StopACQ();
|
||||||
});
|
});
|
||||||
|
|
||||||
layout->addWidget(lbPrefix, rowID, 0);
|
layout->addWidget(lbPrefix, rowID, 0);
|
||||||
layout->addWidget(lePrefix, rowID, 1);
|
layout->addWidget(lePrefix, rowID, 1);
|
||||||
|
@ -381,7 +381,7 @@ void MainWindow::OpenDataPath(){
|
||||||
|
|
||||||
SaveProgramSettings();
|
SaveProgramSettings();
|
||||||
|
|
||||||
//TODO Check us the dataPath empty, check is the lastRun.sh exist and load the last run.
|
LoadLastRunFile();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -695,7 +695,7 @@ void MainWindow::OpenDigitizers(){
|
||||||
|
|
||||||
SetupScalar();
|
SetupScalar();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::CloseDigitizers(){
|
void MainWindow::CloseDigitizers(){
|
||||||
|
|
||||||
|
@ -968,8 +968,6 @@ void MainWindow::UpdateScalar(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//if( digiSettings && digiSettings->isVisible()) digiSettings->UpdateBoardAndChannelsStatus();
|
|
||||||
|
|
||||||
digiMTX[iDigi].unlock();
|
digiMTX[iDigi].unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1017,7 +1015,7 @@ void MainWindow::StartACQ(){
|
||||||
|
|
||||||
readDataThread[i]->start();
|
readDataThread[i]->start();
|
||||||
}
|
}
|
||||||
if( chkSaveData->isChecked() ) SaveLastRunFile();
|
if( chkSaveData->isChecked() ) SaveLastRunFile();
|
||||||
|
|
||||||
// printf("------------ wait for 2 sec \n");
|
// printf("------------ wait for 2 sec \n");
|
||||||
// usleep(1000*1000);
|
// usleep(1000*1000);
|
||||||
|
@ -1225,20 +1223,23 @@ void MainWindow::SetSyncMode(){
|
||||||
QPushButton * bnNoSync = new QPushButton("No Sync");
|
QPushButton * bnNoSync = new QPushButton("No Sync");
|
||||||
QPushButton * bnMethod1 = new QPushButton("Software TRG-OUT --> TRG-IN ");
|
QPushButton * bnMethod1 = new QPushButton("Software TRG-OUT --> TRG-IN ");
|
||||||
QPushButton * bnMethod2 = new QPushButton("Software TRG-OUT --> S-IN ");
|
QPushButton * bnMethod2 = new QPushButton("Software TRG-OUT --> S-IN ");
|
||||||
QPushButton * bnMethod3 = new QPushButton("External TRG-OUT --> S-IN ");
|
QPushButton * bnMethod3 = new QPushButton("External --> 1st S-IN,\nTRG-OUT --> S-IN ");
|
||||||
|
QPushButton * bnMethod4 = new QPushButton("External All S-IN ");
|
||||||
|
|
||||||
layout->addWidget(lbInfo1, 0);
|
layout->addWidget(lbInfo1, 0);
|
||||||
layout->addWidget( bnNoSync, 2);
|
layout->addWidget( bnNoSync, 2);
|
||||||
layout->addWidget(bnMethod1, 3);
|
layout->addWidget(bnMethod1, 3);
|
||||||
layout->addWidget(bnMethod2, 4);
|
layout->addWidget(bnMethod2, 4);
|
||||||
layout->addWidget(bnMethod3, 5);
|
layout->addWidget(bnMethod3, 5);
|
||||||
|
layout->addWidget(bnMethod4, 6);
|
||||||
|
|
||||||
bnNoSync->setFixedHeight(40);
|
bnNoSync->setFixedHeight(40);
|
||||||
bnMethod1->setFixedHeight(40);
|
bnMethod1->setFixedHeight(40);
|
||||||
bnMethod2->setFixedHeight(40);
|
bnMethod2->setFixedHeight(40);
|
||||||
bnMethod3->setFixedHeight(40);
|
bnMethod3->setFixedHeight(40);
|
||||||
|
bnMethod4->setFixedHeight(40);
|
||||||
|
|
||||||
connect(bnNoSync, &QPushButton::clicked, [&](){
|
connect(bnNoSync, &QPushButton::clicked, [&](){ /// No Sync
|
||||||
for(unsigned int i = 0; i < nDigi; i++){
|
for(unsigned int i = 0; i < nDigi; i++){
|
||||||
digi[i]->WriteRegister(DPP::AcquisitionControl, 0);
|
digi[i]->WriteRegister(DPP::AcquisitionControl, 0);
|
||||||
digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0);
|
digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0);
|
||||||
|
@ -1247,7 +1248,7 @@ void MainWindow::SetSyncMode(){
|
||||||
dialog.accept();
|
dialog.accept();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(bnMethod1, &QPushButton::clicked, [&](){
|
connect(bnMethod1, &QPushButton::clicked, [&](){ /// Software TRG-OUT --> TRG-IN
|
||||||
digi[0]->WriteRegister(DPP::AcquisitionControl, 0);
|
digi[0]->WriteRegister(DPP::AcquisitionControl, 0);
|
||||||
digi[0]->WriteRegister(DPP::FrontPanelIOControl, 0x10000); //RUN
|
digi[0]->WriteRegister(DPP::FrontPanelIOControl, 0x10000); //RUN
|
||||||
for(unsigned int i = 1; i < nDigi; i++){
|
for(unsigned int i = 1; i < nDigi; i++){
|
||||||
|
@ -1258,7 +1259,7 @@ void MainWindow::SetSyncMode(){
|
||||||
dialog.accept();
|
dialog.accept();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(bnMethod2, &QPushButton::clicked, [&](){
|
connect(bnMethod2, &QPushButton::clicked, [&](){ /// Software TRG-OUT --> S-IN
|
||||||
digi[0]->WriteRegister(DPP::AcquisitionControl, 0);
|
digi[0]->WriteRegister(DPP::AcquisitionControl, 0);
|
||||||
digi[0]->WriteRegister(DPP::FrontPanelIOControl, 0x10000); //RUN
|
digi[0]->WriteRegister(DPP::FrontPanelIOControl, 0x10000); //RUN
|
||||||
for(unsigned int i = 1; i < nDigi; i++){
|
for(unsigned int i = 1; i < nDigi; i++){
|
||||||
|
@ -1269,7 +1270,8 @@ void MainWindow::SetSyncMode(){
|
||||||
dialog.accept();
|
dialog.accept();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(bnMethod3, &QPushButton::clicked, [&](){
|
connect(bnMethod3, &QPushButton::clicked, [&](){ ///External TRG-OUT --> S-IN
|
||||||
|
digi[0]->WriteRegister(DPP::AcquisitionControl, 0x01);
|
||||||
for(unsigned int i = 0; i < nDigi; i++){
|
for(unsigned int i = 0; i < nDigi; i++){
|
||||||
digi[i]->WriteRegister(DPP::AcquisitionControl, 0x41);
|
digi[i]->WriteRegister(DPP::AcquisitionControl, 0x41);
|
||||||
digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0x30000); // S-IN
|
digi[i]->WriteRegister(DPP::FrontPanelIOControl, 0x30000); // S-IN
|
||||||
|
@ -1278,6 +1280,15 @@ void MainWindow::SetSyncMode(){
|
||||||
dialog.accept();
|
dialog.accept();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(bnMethod4, &QPushButton::clicked, [&](){ /// External All S-IN
|
||||||
|
digi[0]->WriteRegister(DPP::AcquisitionControl, 0x01);
|
||||||
|
for(unsigned int i = 1; i < nDigi; i++){
|
||||||
|
digi[i]->WriteRegister(DPP::AcquisitionControl, 0x41);
|
||||||
|
}
|
||||||
|
if( digiSettings && digiSettings->isVisible() ) digiSettings->UpdatePanelFromMemory();
|
||||||
|
dialog.accept();
|
||||||
|
});
|
||||||
|
|
||||||
dialog.exec();
|
dialog.exec();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
2
FSUDAQ.h
2
FSUDAQ.h
|
@ -160,7 +160,7 @@ private:
|
||||||
|
|
||||||
//@----- ACQ
|
//@----- ACQ
|
||||||
ReadDataThread ** readDataThread;
|
ReadDataThread ** readDataThread;
|
||||||
|
|
||||||
//@----- Scope
|
//@----- Scope
|
||||||
Scope * scope;
|
Scope * scope;
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,7 @@ Those file can be compiled using
|
||||||
* DC offset issue. When porgram default settings, the DC offset is not the same for all channels.
|
* DC offset issue. When porgram default settings, the DC offset is not the same for all channels.
|
||||||
* for PHA firmware, when the trigger average changed, the Events per Agg need to be changed.
|
* for PHA firmware, when the trigger average changed, the Events per Agg need to be changed.
|
||||||
* Sometimes, the buffer is not in time order, and make the trigger/Accept rate to be nagative. This is nothing to do with the program but the digitizer settings. Recommand reporgram the digitizer.
|
* Sometimes, the buffer is not in time order, and make the trigger/Accept rate to be nagative. This is nothing to do with the program but the digitizer settings. Recommand reporgram the digitizer.
|
||||||
|
* for 1740 QDC, RecordLenght is board setting, but readout is indivuial group.
|
||||||
|
|
||||||
# Known Bugs
|
# Known Bugs
|
||||||
|
|
||||||
|
|
|
@ -787,7 +787,7 @@ namespace DPP {
|
||||||
|
|
||||||
namespace QDC { // Register already grouped in channel. and there no control for indiviual channel except the Fine DC offset and threshold, so it is like no group
|
namespace QDC { // Register already grouped in channel. and there no control for indiviual channel except the Fine DC offset and threshold, so it is like no group
|
||||||
const Reg NumberEventsPerAggregate ("Number of Events per Aggregate", 0x1020, RW::ReadWrite, false, 0x3FF, -1); /// R/W
|
const Reg NumberEventsPerAggregate ("Number of Events per Aggregate", 0x1020, RW::ReadWrite, false, 0x3FF, -1); /// R/W
|
||||||
const Reg RecordLength ("Record Length" , 0x1024, RW::ReadWrite, false, 0x1FFF, 8); /// R/W
|
const Reg RecordLength ("Record Length_R" , 0x1024, RW::ReadWrite, false, 0x1FFF, 8); /// R/W
|
||||||
const Reg GateWidth ("GateWidth" , 0x1030, RW::ReadWrite, false, 0xFFF, 1); /// R/W
|
const Reg GateWidth ("GateWidth" , 0x1030, RW::ReadWrite, false, 0xFFF, 1); /// R/W
|
||||||
const Reg GateOffset ("GateOfset" , 0x1034, RW::ReadWrite, false, 0xFF, 1); /// R/W
|
const Reg GateOffset ("GateOfset" , 0x1034, RW::ReadWrite, false, 0xFF, 1); /// R/W
|
||||||
const Reg FixedBaseline ("FixedBaseline" , 0x1038, RW::ReadWrite, false, 0xFFF, -1); /// R/W
|
const Reg FixedBaseline ("FixedBaseline" , 0x1038, RW::ReadWrite, false, 0xFFF, -1); /// R/W
|
||||||
|
@ -811,8 +811,8 @@ namespace DPP {
|
||||||
const Reg TriggerThreshold_sub6 ("Trigger Threshold sub6" , 0x10E8, RW::ReadWrite, false, 0xFFF, -1); /// R/W
|
const Reg TriggerThreshold_sub6 ("Trigger Threshold sub6" , 0x10E8, RW::ReadWrite, false, 0xFFF, -1); /// R/W
|
||||||
const Reg TriggerThreshold_sub7 ("Trigger Threshold sub7" , 0x10EC, RW::ReadWrite, false, 0xFFF, -1); /// R/W
|
const Reg TriggerThreshold_sub7 ("Trigger Threshold sub7" , 0x10EC, RW::ReadWrite, false, 0xFFF, -1); /// R/W
|
||||||
|
|
||||||
|
const Reg RecordLength_W ("Record Length_W" , 0x8024, RW::WriteONLY, false, 0x1FFF, 8); /// /W
|
||||||
const Reg GroupEnableMask ("Group Enable Mask" , 0x8120, RW::ReadWrite, false, 0xFF, -1); /// R/W
|
const Reg GroupEnableMask ("Group Enable Mask" , 0x8120, RW::ReadWrite, false, 0xFF, -1); /// R/W
|
||||||
|
|
||||||
namespace Bit_DPPAlgorithmControl {
|
namespace Bit_DPPAlgorithmControl {
|
||||||
const std::pair<unsigned short, unsigned short> ChargeSensitivity = {3, 0} ; /// length, smallest pos
|
const std::pair<unsigned short, unsigned short> ChargeSensitivity = {3, 0} ; /// length, smallest pos
|
||||||
|
@ -1025,6 +1025,7 @@ const std::vector<Reg> RegisterBoardList_QDC = {
|
||||||
DPP::BoardConfiguration ,
|
DPP::BoardConfiguration ,
|
||||||
DPP::AggregateOrganization,
|
DPP::AggregateOrganization,
|
||||||
DPP::QDC::NumberEventsPerAggregate,
|
DPP::QDC::NumberEventsPerAggregate,
|
||||||
|
DPP::QDC::RecordLength_W,
|
||||||
DPP::AcquisitionControl,
|
DPP::AcquisitionControl,
|
||||||
DPP::AcquisitionStatus_R,
|
DPP::AcquisitionStatus_R,
|
||||||
DPP::SoftwareTrigger_W,
|
DPP::SoftwareTrigger_W,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user