found that thereshold, onOff, and DC offset can be set during ACQ ON
This commit is contained in:
parent
ac81be92f7
commit
70ad421fbd
|
@ -18,5 +18,5 @@ LIBS += -lcurl -lCAEN_FELib -lX11
|
|||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
# Input
|
||||
HEADERS += ClassDigitizer2Gen.h Event.h influxdb.h mainwindow.h digiSettingsPanel.h Digiparameters.h scope.h manyThread.h CustomWidgets.h macro.h
|
||||
SOURCES += ClassDigitizer2Gen.cpp influxdb.cpp main.cpp mainwindow.cpp digiSettingsPanel.cpp scope.cpp
|
||||
HEADERS += ClassDigitizer2Gen.h Event.h influxdb.h mainwindow.h digiSettingsPanel.h Digiparameters.h scope.h manyThread.h CustomWidgets.h macro.h SOLARISpanel.h
|
||||
SOURCES += ClassDigitizer2Gen.cpp influxdb.cpp main.cpp mainwindow.cpp digiSettingsPanel.cpp scope.cpp SOLARISpanel.cpp
|
||||
|
|
71
SOLARISpanel.cpp
Normal file
71
SOLARISpanel.cpp
Normal file
|
@ -0,0 +1,71 @@
|
|||
#include "SOLARISpanel.h"
|
||||
|
||||
#include <QFile>
|
||||
|
||||
SOLARISpanel::SOLARISpanel(Digitizer2Gen **digi, unsigned short nDigi,
|
||||
std::vector<std::vector<int>> mapping,
|
||||
QStringList detType,
|
||||
std::vector<int> detMaxID,
|
||||
QWidget *parent) : QWidget(parent){
|
||||
|
||||
setWindowTitle("SOLARIS Settings");
|
||||
setGeometry(0, 0, 1850, 1000);
|
||||
|
||||
this->digi = digi;
|
||||
this->nDigi = nDigi;
|
||||
this->mapping = mapping;
|
||||
this->detType = detType;
|
||||
this->detMaxID = detMaxID;
|
||||
|
||||
//Check number of detector type; Array 0-199, Recoil 200-299, other 300-
|
||||
int nDetType = detType.size();
|
||||
|
||||
int nDet[nDetType];
|
||||
for( int k = 0 ; k < nDetType; k++) nDet[k] = 0;
|
||||
|
||||
for( int i = 0; i < (int) mapping.size() ; i++){
|
||||
for( int j = 0; j < (int) mapping[i].size(); j++ ){
|
||||
for( int k = 0 ; k < nDetType; k++){
|
||||
int lowID = (k == 0 ? 0 : detMaxID[k-1]);
|
||||
if( lowID <= mapping[i][j] && mapping[i][j] < detMaxID[k] ) nDet[k] ++ ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QVBoxLayout * mainLayout = new QVBoxLayout(this); this->setLayout(mainLayout);
|
||||
QTabWidget * tabWidget = new QTabWidget(this); mainLayout->addWidget(tabWidget);
|
||||
|
||||
for( int detTypeID = 0; detTypeID < nDetType; detTypeID ++ ){
|
||||
|
||||
QWidget * tab = new QWidget(this);
|
||||
tabWidget->addTab(tab, detType[detTypeID]);
|
||||
|
||||
QGridLayout * layout = new QGridLayout(tab);
|
||||
|
||||
//QLineEdit * leNDet = new QLineEdit(QString::number(nDet[detTypeID]), tab);
|
||||
//layout->addWidget(leNDet, 0, 0);
|
||||
|
||||
///Create threshold tab
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
SOLARISpanel::~SOLARISpanel(){
|
||||
|
||||
}
|
||||
|
||||
void SOLARISpanel::CreateSpinBoxGroup(const Reg para, int detID, QGridLayout * &layout, int row, int col){
|
||||
|
||||
//QLineEdit * leTrigRate
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void SOLARISpanel::CreateTab(const Reg para){
|
||||
|
||||
|
||||
}
|
54
SOLARISpanel.h
Normal file
54
SOLARISpanel.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
#ifndef SOLARIS_PANEL_H
|
||||
#define SOLARIS_PANEL_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QLineEdit>
|
||||
#include <QSpinBox>
|
||||
#include <QDoubleSpinBox>
|
||||
#include <QGridLayout>
|
||||
#include <QScrollArea>
|
||||
#include <QTabWidget>
|
||||
#include <QGroupBox>
|
||||
#include <QRadioButton>
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QTableWidget>
|
||||
#include <QDebug>
|
||||
#include <QPushButton>
|
||||
#include <QFrame>
|
||||
#include <QSignalMapper>
|
||||
|
||||
#include "ClassDigitizer2Gen.h"
|
||||
#include "CustomWidgets.h"
|
||||
#include "macro.h"
|
||||
|
||||
class SOLARISpanel : public QWidget{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SOLARISpanel(Digitizer2Gen ** digi,
|
||||
unsigned short nDigi,
|
||||
std::vector<std::vector<int>> mapping,
|
||||
QStringList detType,
|
||||
std::vector<int> detMaxID,
|
||||
QWidget * parent = nullptr);
|
||||
~SOLARISpanel();
|
||||
|
||||
private slots:
|
||||
|
||||
void CreateSpinBoxGroup(const Reg para, int detID, QGridLayout * &layout, int row, int col);
|
||||
void CreateTab(const Reg para);
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
Digitizer2Gen ** digi;
|
||||
unsigned short nDigi;
|
||||
std::vector<std::vector<int>> mapping;
|
||||
QStringList detType;
|
||||
std::vector<int> detMaxID;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -60,13 +60,10 @@ QStringList chToolTip = { "Channel signal delay initialization status (1 = initi
|
|||
|
||||
DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi, QWidget * parent) : QWidget(parent){
|
||||
|
||||
qDebug() << "DigiSettingsPanel constructor";
|
||||
|
||||
setWindowTitle("Digitizers Settings");
|
||||
setGeometry(0, 0, 1850, 1000);
|
||||
//setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
||||
|
||||
|
||||
this->digi = digi;
|
||||
this->nDigi = nDigi;
|
||||
if( nDigi > MaxNumberOfDigitizer ) {
|
||||
|
@ -1215,12 +1212,12 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
|
|||
leChSettingsUnit->setReadOnly(true);
|
||||
inquiryLayout->addWidget(leChSettingsUnit, rowID, 4);
|
||||
|
||||
cbChAns = new RComboBox(ICTab);
|
||||
cbChAns->setFixedWidth(200);
|
||||
inquiryLayout->addWidget(cbChAns, rowID, 6);
|
||||
connect(cbChAns, &RComboBox::currentIndexChanged, this, [=](){
|
||||
cbChSettingsWrite = new RComboBox(ICTab);
|
||||
cbChSettingsWrite->setFixedWidth(200);
|
||||
inquiryLayout->addWidget(cbChSettingsWrite, rowID, 6);
|
||||
connect(cbChSettingsWrite, &RComboBox::currentIndexChanged, this, [=](){
|
||||
if( !enableSignalSlot ) return;
|
||||
std::string value = cbChAns->currentData().toString().toStdString();
|
||||
std::string value = cbChSettingsWrite->currentData().toString().toStdString();
|
||||
leChSettingsWrite->setText(QString::fromStdString(value));
|
||||
leChSettingsWrite->setStyleSheet("");
|
||||
|
||||
|
@ -1230,16 +1227,16 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
|
|||
QString msg;
|
||||
msg = QString::fromStdString(para.GetPara()) + "|DIG:"+ QString::number(digi[ID]->GetSerialNumber());
|
||||
msg += ",CH:" + QString::number(ch_index);
|
||||
msg += " = " + cbChAns->currentData().toString();
|
||||
msg += " = " + cbChSettingsWrite->currentData().toString();
|
||||
if( digi[ID]->WriteValue(para, value, ch_index) ){
|
||||
leChSettingsRead->setText( QString::fromStdString(digi[ID]->GetSettingValue(para)));
|
||||
SendLogMsg(msg + "|OK.");
|
||||
cbChAns->setStyleSheet("");
|
||||
cbChSettingsWrite->setStyleSheet("");
|
||||
ShowSettingsToPanel();
|
||||
}else{
|
||||
leChSettingsRead->setText("fail write value");
|
||||
SendLogMsg(msg + "|Fail.");
|
||||
cbChAns->setStyleSheet("color:red;");
|
||||
cbChSettingsWrite->setStyleSheet("color:red;");
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1255,7 +1252,7 @@ DigiSettingsPanel::DigiSettingsPanel(Digitizer2Gen ** digi, unsigned short nDigi
|
|||
sbChSettingsWrite->setValue( (std::round(value/step) * step) );
|
||||
}
|
||||
|
||||
Reg para = PHA::CH::AllSettings[cbBdSettings->currentIndex()];
|
||||
Reg para = PHA::CH::AllSettings[cbChSettings->currentIndex()];
|
||||
ID = cbIQDigi->currentIndex();
|
||||
int ch_index = cbIQCh->currentIndex();
|
||||
QString msg;
|
||||
|
@ -1551,6 +1548,7 @@ void DigiSettingsPanel::EnableControl(){
|
|||
|
||||
for( int k = 0; k < tempArray.size(); k++){
|
||||
for( int i = 0; i < tempArray[k]->count(); i++) {
|
||||
if( k == 0 && (i == 0 || i == 1 || i == 2 ) ) continue;
|
||||
QWidget* currentTab = tempArray[k]->widget(i);
|
||||
if( currentTab ){
|
||||
QList<QWidget*> childWidgets = currentTab->findChildren<QWidget*>();
|
||||
|
@ -2170,25 +2168,25 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
|
|||
if( PHA::CH::AllSettings[cbIndex].ReadWrite() != RW::ReadOnly && haha != ANSTYPE::NONE ){
|
||||
|
||||
if( haha == ANSTYPE::FLOAT || haha == ANSTYPE::INTEGER ){
|
||||
cbChAns->clear();
|
||||
cbChAns->setEnabled(false);
|
||||
cbChSettingsWrite->clear();
|
||||
cbChSettingsWrite->setEnabled(false);
|
||||
leChSettingsWrite->setEnabled(false);
|
||||
leChSettingsWrite->clear();
|
||||
sbChSettingsWrite->setEnabled(true);
|
||||
sbChSettingsWrite->setMinimum(atof(PHA::CH::AllSettings[cbIndex].GetAnswers()[0].first.c_str()));
|
||||
sbChSettingsWrite->setMaximum(atof(PHA::CH::AllSettings[cbIndex].GetAnswers()[1].first.c_str()));
|
||||
sbChSettingsWrite->setSingleStep(atof(PHA::CH::AllSettings[cbIndex].GetAnswers()[2].first.c_str()));
|
||||
sbChSettingsWrite->setValue(00);
|
||||
sbChSettingsWrite->setDecimals(0);
|
||||
sbChSettingsWrite->setValue(ans.toFloat());
|
||||
sbChSettingsWrite->setDecimals(3);
|
||||
}
|
||||
if( haha == ANSTYPE::FLOAT) sbBdSettingsWrite->setDecimals(3);
|
||||
if( haha == ANSTYPE::INTEGER) sbBdSettingsWrite->setDecimals(0);
|
||||
if( haha == ANSTYPE::LIST){
|
||||
cbChAns->setEnabled(true);
|
||||
cbChAns->clear();
|
||||
cbChSettingsWrite->setEnabled(true);
|
||||
cbChSettingsWrite->clear();
|
||||
int ansIndex = -1;
|
||||
QString ans2 = "";
|
||||
for( int i = 0; i < (int) PHA::CH::AllSettings[cbIndex].GetAnswers().size(); i++){
|
||||
cbChAns->addItem(QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].second),
|
||||
cbChSettingsWrite->addItem(QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].second),
|
||||
QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].first));
|
||||
|
||||
if( ans == QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].first)) {
|
||||
|
@ -2196,7 +2194,7 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
|
|||
ans2 = QString::fromStdString(PHA::CH::AllSettings[cbIndex].GetAnswers()[i].second);
|
||||
}
|
||||
}
|
||||
cbChAns->setCurrentIndex(ansIndex);
|
||||
cbChSettingsWrite->setCurrentIndex(ansIndex);
|
||||
leChSettingsRead->setText( ans + " [ " + ans2 + " ]");
|
||||
sbChSettingsWrite->setEnabled(false);
|
||||
sbChSettingsWrite->setStyleSheet("");
|
||||
|
@ -2205,8 +2203,8 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
|
|||
leChSettingsWrite->setText(ans2);
|
||||
}
|
||||
if( haha == ANSTYPE::STR || haha == ANSTYPE::BYTE || haha == ANSTYPE::BINARY){
|
||||
cbChAns->clear();
|
||||
cbChAns->setEnabled(false);
|
||||
cbChSettingsWrite->clear();
|
||||
cbChSettingsWrite->setEnabled(false);
|
||||
leChSettingsWrite->setEnabled(true);
|
||||
leChSettingsWrite->clear();
|
||||
sbChSettingsWrite->setEnabled(false);
|
||||
|
@ -2214,8 +2212,8 @@ void DigiSettingsPanel::ReadChannelSetting(int cbIndex){
|
|||
sbChSettingsWrite->setValue(0);
|
||||
}
|
||||
}else{
|
||||
cbChAns->clear();
|
||||
cbChAns->setEnabled(false);
|
||||
cbChSettingsWrite->clear();
|
||||
cbChSettingsWrite->setEnabled(false);
|
||||
sbChSettingsWrite->setEnabled(false);
|
||||
sbChSettingsWrite->setStyleSheet("");
|
||||
sbChSettingsWrite->cleanText();
|
||||
|
|
|
@ -97,7 +97,7 @@ private:
|
|||
QLineEdit * leChSettingsType;
|
||||
QLineEdit * leChSettingsRead;
|
||||
QLineEdit * leChSettingsUnit;
|
||||
RComboBox * cbChAns;
|
||||
RComboBox * cbChSettingsWrite;
|
||||
RSpinBox * sbChSettingsWrite;
|
||||
QLineEdit * leChSettingsWrite;
|
||||
|
||||
|
|
124
mainwindow.cpp
124
mainwindow.cpp
|
@ -107,6 +107,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
|||
|
||||
bnSOLSettings = new QPushButton("SOLARIS Settings", this);
|
||||
bnSOLSettings->setEnabled(false);
|
||||
connect(bnSOLSettings, SIGNAL(clicked()), this, SLOT(OpenSOLARISpanel()));
|
||||
|
||||
layout1->addWidget(bnProgramSettings, 0, 0);
|
||||
layout1->addWidget(bnNewExp, 0, 1);
|
||||
|
@ -127,7 +128,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
|
|||
|
||||
}
|
||||
|
||||
|
||||
{//====================== ACD control
|
||||
QGroupBox * box2 = new QGroupBox("ACQ control", mainLayoutWidget);
|
||||
layoutMain->addWidget(box2);
|
||||
|
@ -279,6 +279,9 @@ MainWindow::~MainWindow(){
|
|||
printf("-------- delete digiSetting\n");
|
||||
if( digiSetting != NULL ) delete digiSetting;
|
||||
|
||||
printf("-------- delete Solaris panel\n");
|
||||
if( solarisSetting != NULL ) delete solarisSetting;
|
||||
|
||||
printf("-------- delete influx\n");
|
||||
if( influx != NULL ) {
|
||||
influx->ClearDataPointsBuffer();
|
||||
|
@ -287,6 +290,7 @@ MainWindow::~MainWindow(){
|
|||
delete influx;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//^################################################################ ACQ control
|
||||
|
@ -613,6 +617,8 @@ void MainWindow::OpenDigitizers(){
|
|||
bnProgramSettings->setEnabled(false);
|
||||
bnNewExp->setEnabled(false);
|
||||
|
||||
bnSOLSettings->setEnabled(CheckSOLARISpanelOK());
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::CloseDigitizers(){
|
||||
|
@ -644,7 +650,7 @@ void MainWindow::CloseDigitizers(){
|
|||
if( digiSetting != NULL ) digiSetting->close();
|
||||
|
||||
if( readDataThread[i] != NULL ){
|
||||
LogMsg("Waiting for digitizer .....");
|
||||
LogMsg("Waiting for readData Thread .....");
|
||||
readDataThread[i]->quit();
|
||||
readDataThread[i]->wait();
|
||||
delete readDataThread[i];
|
||||
|
@ -655,10 +661,17 @@ void MainWindow::CloseDigitizers(){
|
|||
digi = NULL;
|
||||
readDataThread = NULL;
|
||||
|
||||
if( solarisSetting ){
|
||||
solarisSetting->close();
|
||||
delete solarisSetting;
|
||||
solarisSetting = NULL;
|
||||
}
|
||||
|
||||
bnOpenDigitizers->setEnabled(true);
|
||||
bnOpenDigitizers->setFocus();
|
||||
bnCloseDigitizers->setEnabled(false);
|
||||
bnDigiSettings->setEnabled(false);
|
||||
bnSOLSettings->setEnabled(false);
|
||||
bnStartACQ->setEnabled(false);
|
||||
bnStopACQ->setEnabled(false);
|
||||
bnOpenScope->setEnabled(false);
|
||||
|
@ -669,6 +682,8 @@ void MainWindow::CloseDigitizers(){
|
|||
bnProgramSettings->setEnabled(true);
|
||||
bnNewExp->setEnabled(true);
|
||||
|
||||
LogMsg("Closed all digitizers and readData Threads.");
|
||||
|
||||
}
|
||||
|
||||
//^###################################################################### Open Scope
|
||||
|
@ -728,6 +743,98 @@ void MainWindow::OpenDigitizersSettings(){
|
|||
}
|
||||
}
|
||||
|
||||
//^###################################################################### Open SOLARIS setting panel
|
||||
void MainWindow::OpenSOLARISpanel(){
|
||||
solarisSetting->show();
|
||||
}
|
||||
|
||||
bool MainWindow::CheckSOLARISpanelOK(){
|
||||
|
||||
QFile file(analysisPath + "/Mapping.h");
|
||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
LogMsg("Fail to open <b>" + analysisPath + "/Mapping.h </b>. SOLARIS panel disabled.");
|
||||
|
||||
//TODO ----- Create a template of the mapping
|
||||
|
||||
return false;
|
||||
}
|
||||
mapping.clear();
|
||||
std::vector<int> singleDigiMap;
|
||||
detType.clear();
|
||||
detMaxID.clear();
|
||||
|
||||
bool startRecord = false;
|
||||
QTextStream in(&file);
|
||||
while (!in.atEnd()) {
|
||||
QString line = in.readLine();
|
||||
if( line.contains("//*=")){
|
||||
int in1 = line.indexOf("{");
|
||||
int in2 = line.lastIndexOf("}");
|
||||
if( in2 > in1){
|
||||
QString subLine = line.mid(in1+1, in2 - in1 -1).trimmed().remove(QRegularExpression("[\"\\\\]"));
|
||||
detType = subLine.split(",");
|
||||
}else{
|
||||
LogMsg("Problem Found for the Mapping.h.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if( line.contains("//*#")){
|
||||
int in1 = line.indexOf("{");
|
||||
int in2 = line.lastIndexOf("}");
|
||||
if( in2 > in1){
|
||||
QString subLine = line.mid(in1+1, in2 - in1 -1).trimmed().remove(QRegularExpression("[\"\\\\]"));
|
||||
QStringList haha = subLine.split(",");
|
||||
for( int i = 0; i < haha.size(); i++) detMaxID.push_back(haha[i].toInt());
|
||||
}else{
|
||||
LogMsg("Problem Found for the Mapping.h.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if( line.contains("//* ") ) {
|
||||
startRecord = true;
|
||||
singleDigiMap.clear();
|
||||
continue;
|
||||
}
|
||||
if( startRecord && line.contains("//*----")){
|
||||
startRecord = false;
|
||||
mapping.push_back(singleDigiMap);
|
||||
continue;
|
||||
}
|
||||
if( startRecord ){
|
||||
int index = line.lastIndexOf("///");
|
||||
if( index != -1 ) {
|
||||
line = line.left(index).trimmed();
|
||||
if( line.endsWith(",") ){
|
||||
line.remove( line.length() -1, 1);
|
||||
}
|
||||
}
|
||||
QStringList list = line.replace(' ', "").split(",");
|
||||
for( int i = 0; i < list.size() ; i ++){
|
||||
singleDigiMap.push_back(list[i].toInt());
|
||||
}
|
||||
}
|
||||
}
|
||||
file.close();
|
||||
|
||||
LogMsg("Mapping.h | Num. Digi : " + QString::number(mapping.size()));
|
||||
for( int i = 0 ; i < (int) mapping.size(); i ++){
|
||||
LogMsg(" Digi-" + QString::number(i) + " : " + QString::number(mapping[i].size()) + " Ch. | Digi-"
|
||||
+ QString::number(digi[i]->GetSerialNumber()) + " : "
|
||||
+ QString::number(digi[i]->GetNChannels()) + " Ch.");
|
||||
}
|
||||
|
||||
|
||||
if( (int) detMaxID.size() != detType.size() ){
|
||||
LogMsg("Size of detector Name and detctor max ID does not match.");
|
||||
return false;
|
||||
}
|
||||
|
||||
//@============= Create SOLAIRS panel
|
||||
solarisSetting = new SOLARISpanel(digi, nDigi, mapping, detType, detMaxID);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//^###################################################################### Open Scaler, when DAQ is running
|
||||
void MainWindow::OpenScaler(){
|
||||
scalar->show();
|
||||
|
@ -735,7 +842,7 @@ void MainWindow::OpenScaler(){
|
|||
|
||||
void MainWindow::SetUpScalar(){
|
||||
|
||||
scalar->setGeometry(0, 0, 10 + nDigi * 230, 800);
|
||||
scalar->setGeometry(0, 0, 10 + nDigi * 230, 1500);
|
||||
|
||||
lbLastUpdateTime = new QLabel("Last update : ");
|
||||
lbLastUpdateTime->setAlignment(Qt::AlignCenter);
|
||||
|
@ -851,11 +958,15 @@ void MainWindow::UpdateScalar(){
|
|||
unsigned long kaka = std::stoul(kakaStr.c_str()) ;
|
||||
unsigned long time = std::stoul(timeStr.c_str()) ;
|
||||
leTrigger[iDigi][ch]->setText(QString::fromStdString(haha[ch]));
|
||||
|
||||
|
||||
if( oldTimeStamp[iDigi][ch] > 0 && time - oldTimeStamp[iDigi][ch] > 1e9){
|
||||
acceptRate[ch] = (kaka - oldSavedCount[iDigi][ch]) * 1e9 *1.0 / (time - oldTimeStamp[iDigi][ch]);
|
||||
}else{
|
||||
acceptRate[ch] = 0;
|
||||
}
|
||||
if( acceptRate[ch] > 10000 ) printf("%d-%2d | old (%lu, %lu), new (%lu, %lu)\n", iDigi, ch, oldTimeStamp[iDigi][ch], oldSavedCount[iDigi][ch], time, kaka);
|
||||
|
||||
oldSavedCount[iDigi][ch] = kaka;
|
||||
oldTimeStamp[iDigi][ch] = time;
|
||||
//if( kaka != "0" ) printf("%s, %s | %.2f\n", time.c_str(), kaka.c_str(), acceptRate);
|
||||
|
@ -1082,7 +1193,7 @@ void MainWindow::DecodeIPList(){
|
|||
//------- decode IPListStr
|
||||
nDigi = 0;
|
||||
IPList.clear();
|
||||
QStringList parts = IPListStr.split(".");
|
||||
QStringList parts = IPListStr.replace(' ', "").split(".");
|
||||
QString IPDomain = parts[0] + "." + parts[1] + "." + parts[2] + ".";
|
||||
parts = parts[3].split(",");
|
||||
for(int i = 0; i < parts.size(); i++){
|
||||
|
@ -1623,6 +1734,7 @@ void MainWindow::CreateRawDataFolderAndLink(){
|
|||
}
|
||||
|
||||
//^###################################################################### log msg
|
||||
|
||||
void MainWindow::LogMsg(QString msg){
|
||||
|
||||
QString outputStr = QStringLiteral("[%1] %2").arg(QDateTime::currentDateTime().toString("MM.dd hh:mm:ss"), msg);
|
||||
|
@ -1639,7 +1751,7 @@ void MainWindow::LogMsg(QString msg){
|
|||
|
||||
void MainWindow::WriteElog(QString htmlText, QString subject, QString category, int runNumber){
|
||||
|
||||
if( elogID < 0 ) return;
|
||||
//if( elogID < 0 ) return;
|
||||
if( expName == "" ) return;
|
||||
|
||||
//TODO ===== user name and pwd load from a file.
|
||||
|
@ -1652,7 +1764,7 @@ void MainWindow::WriteElog(QString htmlText, QString subject, QString category,
|
|||
|
||||
arg << "-a" << "Subject=" + subject
|
||||
<< "-n " << "2" << htmlText ;
|
||||
|
||||
|
||||
QProcess elogBash(this);
|
||||
elogBash.start("elog", arg);
|
||||
elogBash.waitForFinished();
|
||||
|
|
48
mainwindow.h
48
mainwindow.h
|
@ -27,6 +27,7 @@
|
|||
|
||||
#include "digiSettingsPanel.h"
|
||||
#include "scope.h"
|
||||
#include "SOLARISpanel.h"
|
||||
|
||||
const int chromeWindowID = -1; // disable capture screenshot
|
||||
|
||||
|
@ -47,6 +48,11 @@ private slots:
|
|||
void OpenScope();
|
||||
void OpenDigitizersSettings();
|
||||
|
||||
void OpenSOLARISpanel();
|
||||
bool CheckSOLARISpanelOK();
|
||||
|
||||
void StartACQ();
|
||||
void StopACQ();
|
||||
void AutoRun();
|
||||
|
||||
void OpenScaler();
|
||||
|
@ -70,8 +76,9 @@ private slots:
|
|||
void CreateRawDataFolderAndLink();
|
||||
|
||||
void closeEvent(QCloseEvent * event){
|
||||
if( digiSetting != NULL ) digiSetting->close();
|
||||
if( scope != NULL ) scope->close();
|
||||
if( digiSetting ) digiSetting->close();
|
||||
if( scope ) scope->close();
|
||||
if( solarisSetting ) solarisSetting->close();
|
||||
event->accept();
|
||||
}
|
||||
|
||||
|
@ -83,7 +90,16 @@ private slots:
|
|||
signals :
|
||||
|
||||
private:
|
||||
|
||||
static Digitizer2Gen ** digi;
|
||||
unsigned short nDigi;
|
||||
|
||||
//@----- log msg
|
||||
QPlainTextEdit * logInfo;
|
||||
void LogMsg(QString msg);
|
||||
bool logMsgHTMLMode = true;
|
||||
|
||||
//@----- buttons
|
||||
QPushButton * bnProgramSettings;
|
||||
QPushButton * bnNewExp;
|
||||
QLineEdit * leExpName;
|
||||
|
@ -94,7 +110,7 @@ private:
|
|||
QPushButton * bnDigiSettings;
|
||||
QPushButton * bnSOLSettings;
|
||||
|
||||
//@--- new scope
|
||||
//@----- scope
|
||||
Scope * scope;
|
||||
QPushButton * bnOpenScope;
|
||||
|
||||
|
@ -118,24 +134,23 @@ private:
|
|||
QLineEdit * leRawDataPath;
|
||||
QLineEdit * leRunComment;
|
||||
ReadDataThread ** readDataThread;
|
||||
void StartACQ();
|
||||
void StopACQ();
|
||||
QString startComment;
|
||||
QString stopComment;
|
||||
bool needManualComment;
|
||||
bool isRunning;
|
||||
QTimer * runTimer;
|
||||
unsigned int autoRunStartRunID;
|
||||
|
||||
//@----- digi Setting panel
|
||||
DigiSettingsPanel * digiSetting;
|
||||
|
||||
QPlainTextEdit * logInfo;
|
||||
//@----- SOLARIS setting panel
|
||||
SOLARISpanel * solarisSetting;
|
||||
std::vector<std::vector<int>> mapping;
|
||||
QStringList detType;
|
||||
std::vector<int> detMaxID;
|
||||
|
||||
static Digitizer2Gen ** digi;
|
||||
unsigned short nDigi;
|
||||
|
||||
void LogMsg(QString msg);
|
||||
bool logMsgHTMLMode = true;
|
||||
|
||||
//---------------- Program settings
|
||||
//@----- Program settings
|
||||
QLineEdit * lSaveSettingPath; // only live in ProgramSettigns()
|
||||
QLineEdit * lAnalysisPath; // only live in ProgramSettigns()
|
||||
QLineEdit * lDataPath; // only live in ProgramSettigns()
|
||||
|
@ -154,7 +169,7 @@ private:
|
|||
QString DatabaseName;
|
||||
QString ElogIP;
|
||||
|
||||
//------------- experiment settings
|
||||
//@------ experiment settings
|
||||
bool isGitExist;
|
||||
bool useGit;
|
||||
QString expName;
|
||||
|
@ -163,10 +178,7 @@ private:
|
|||
QString runIDStr;
|
||||
int elogID; // 0 = ready, -1 = disable, >1 = elogID
|
||||
|
||||
QTimer * runTimer;
|
||||
unsigned int autoRunStartRunID;
|
||||
|
||||
//-------------- calculate instant accept Rate
|
||||
//@------ calculate instant accept Rate
|
||||
unsigned long oldSavedCount[MaxNumberOfDigitizer][MaxNumberOfChannel];
|
||||
unsigned long oldTimeStamp[MaxNumberOfDigitizer][MaxNumberOfChannel];
|
||||
|
||||
|
|
12
scope.cpp
12
scope.cpp
|
@ -529,8 +529,6 @@ void Scope::ScopeControlOnOff(bool on){
|
|||
|
||||
sbRL->setEnabled(on);
|
||||
sbPT->setEnabled(on);
|
||||
sbDCOffset->setEnabled(on);
|
||||
sbThreshold->setEnabled(on);
|
||||
sbTimeRiseTime->setEnabled(on);
|
||||
sbTimeGuard->setEnabled(on);
|
||||
sbTrapRiseTime->setEnabled(on);
|
||||
|
@ -541,11 +539,13 @@ void Scope::ScopeControlOnOff(bool on){
|
|||
cbPolarity->setEnabled(on);
|
||||
cbWaveRes->setEnabled(on);
|
||||
cbTrapPeakAvg->setEnabled(on);
|
||||
|
||||
sbBaselineGuard->setEnabled(on);
|
||||
sbPileUpGuard->setEnabled(on);
|
||||
cbBaselineAvg->setEnabled(on);
|
||||
cbLowFreqFilter->setEnabled(on);
|
||||
|
||||
//sbDCOffset->setEnabled(on);
|
||||
//sbThreshold->setEnabled(on);
|
||||
//sbBaselineGuard->setEnabled(on);
|
||||
//sbPileUpGuard->setEnabled(on);
|
||||
//cbLowFreqFilter->setEnabled(on);
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user