fix the TriggerMask bit-shift bug
This commit is contained in:
parent
8ba54cefc1
commit
a0861130af
|
@ -224,6 +224,7 @@ SOLARISpanel::~SOLARISpanel(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//^######################################################################
|
||||||
int SOLARISpanel::FindDetTypID(QList<int> detIDListElement){
|
int SOLARISpanel::FindDetTypID(QList<int> detIDListElement){
|
||||||
for( int i = 0; i < (int) detType.size(); i++){
|
for( int i = 0; i < (int) detType.size(); i++){
|
||||||
int lowID = (i == 0) ? 0 : detMaxID[i-1];
|
int lowID = (i == 0) ? 0 : detMaxID[i-1];
|
||||||
|
@ -243,6 +244,7 @@ void SOLARISpanel::CreateDetGroup(int SettingID, QList<int> detID, QGridLayout *
|
||||||
layout0->setSpacing(0);
|
layout0->setSpacing(0);
|
||||||
layout0->setAlignment(Qt::AlignLeft);
|
layout0->setAlignment(Qt::AlignLeft);
|
||||||
|
|
||||||
|
//@======================================== SpinBox and Display
|
||||||
for( int i = 1; i < (int) detID.size(); i ++){
|
for( int i = 1; i < (int) detID.size(); i ++){
|
||||||
|
|
||||||
QLabel * lb = new QLabel(arrayLabel[i-1], this);
|
QLabel * lb = new QLabel(arrayLabel[i-1], this);
|
||||||
|
@ -327,6 +329,7 @@ void SOLARISpanel::CreateDetGroup(int SettingID, QList<int> detID, QGridLayout *
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//@======================================== Trigger Combox
|
||||||
//=================== The Trigger depnds on 5 settings (at least)
|
//=================== The Trigger depnds on 5 settings (at least)
|
||||||
// EventTriggerSource, WaveTriggerSource, CoincidentMask, AntiCoincidentMask
|
// EventTriggerSource, WaveTriggerSource, CoincidentMask, AntiCoincidentMask
|
||||||
// 1, EventTriggerSource has 8 settings, ITLA, ITLB, GlobalTriggerSource, TRGIN, SWTrigger, ChSelfTrigger, Ch64Trigger, Disabled
|
// 1, EventTriggerSource has 8 settings, ITLA, ITLB, GlobalTriggerSource, TRGIN, SWTrigger, ChSelfTrigger, Ch64Trigger, Disabled
|
||||||
|
@ -372,8 +375,8 @@ void SOLARISpanel::CreateDetGroup(int SettingID, QList<int> detID, QGridLayout *
|
||||||
digi[digiID]->WriteValue(PHA::CH::CoincidenceLength, "100", chID);
|
digi[digiID]->WriteValue(PHA::CH::CoincidenceLength, "100", chID);
|
||||||
|
|
||||||
//Form the trigger bit
|
//Form the trigger bit
|
||||||
unsigned long mask = 1 << (detID[1] & 0xFF ); // trigger by energy
|
unsigned long mask = 1ULL << (detID[1] & 0xFF ); // trigger by energy
|
||||||
QString maskStr = "0x"+QString::number(mask, 16);
|
QString maskStr = QString::number(mask);
|
||||||
digi[digiID]->WriteValue(PHA::CH::ChannelsTriggerMask, maskStr.toStdString() , chID);
|
digi[digiID]->WriteValue(PHA::CH::ChannelsTriggerMask, maskStr.toStdString() , chID);
|
||||||
}
|
}
|
||||||
}; break;
|
}; break;
|
||||||
|
|
|
@ -1449,7 +1449,7 @@ void DigiSettingsPanel::onTriggerClick(int haha){
|
||||||
unsigned short ch = (haha >> 8 ) & 0xFF;
|
unsigned short ch = (haha >> 8 ) & 0xFF;
|
||||||
unsigned short ch2 = haha & 0xFF;
|
unsigned short ch2 = haha & 0xFF;
|
||||||
|
|
||||||
qDebug() << "Digi-" << iDig << ", Ch-" << ch << ", " << ch2;
|
//qDebug() << "Digi-" << iDig << ", Ch-" << ch << ", " << ch2;
|
||||||
|
|
||||||
if(trgMapClickStatus[iDig][ch][ch2]){
|
if(trgMapClickStatus[iDig][ch][ch2]){
|
||||||
trgMap[iDig][ch][ch2]->setStyleSheet("");
|
trgMap[iDig][ch][ch2]->setStyleSheet("");
|
||||||
|
@ -1462,13 +1462,15 @@ void DigiSettingsPanel::onTriggerClick(int haha){
|
||||||
//format triggermask for ch;
|
//format triggermask for ch;
|
||||||
unsigned long mask = 0;
|
unsigned long mask = 0;
|
||||||
for( int i = 0; i < digi[iDig]->GetNChannels(); i++){
|
for( int i = 0; i < digi[iDig]->GetNChannels(); i++){
|
||||||
if( trgMapClickStatus[iDig][ch][i] ) mask += (1 << i);
|
if( trgMapClickStatus[iDig][ch][i] ) {
|
||||||
|
mask += (1ULL << i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString kaka = "0x"+QString::number(mask, 16);
|
QString kaka = QString::number(mask);
|
||||||
|
|
||||||
QString msg;
|
QString msg;
|
||||||
msg = QString::fromStdString(PHA::CH::ChannelsTriggerMask.GetPara() ) + "|DIG:" + QString::number(digi[iDig]->GetNChannels()) + ",CH:" + QString::number(ch) + " = " + kaka;
|
msg = QString::fromStdString(PHA::CH::ChannelsTriggerMask.GetPara() ) + "|DIG:" + QString::number(digi[iDig]->GetNChannels()) + ",CH:" + QString::number(ch) + " = 0x" + QString::number(mask,16);
|
||||||
|
|
||||||
if( digi[iDig]->WriteValue(PHA::CH::ChannelsTriggerMask, kaka.toStdString(), ch) ){
|
if( digi[iDig]->WriteValue(PHA::CH::ChannelsTriggerMask, kaka.toStdString(), ch) ){
|
||||||
SendLogMsg(msg + "|OK.");
|
SendLogMsg(msg + "|OK.");
|
||||||
|
@ -1491,8 +1493,11 @@ void DigiSettingsPanel::ReadTriggerMap(){
|
||||||
sbAllCoinLength[ID]->setValue(spbCoinLength[ID][MaxNumberOfChannel]->value());
|
sbAllCoinLength[ID]->setValue(spbCoinLength[ID][MaxNumberOfChannel]->value());
|
||||||
|
|
||||||
for( int ch = 0; ch < (int) digi[ID]->GetNChannels(); ch ++){
|
for( int ch = 0; ch < (int) digi[ID]->GetNChannels(); ch ++){
|
||||||
|
|
||||||
|
std::string ans = digi[ID]->GetSettingValue(PHA::CH::ChannelsTriggerMask, ch);
|
||||||
bool ok;
|
bool ok;
|
||||||
unsigned long mask = QString::fromStdString(digi[ID]->GetSettingValue(PHA::CH::ChannelsTriggerMask, ch)).toULong(&ok, 16);
|
unsigned long mask = QString::fromStdString(ans).toULong(&ok, 10);
|
||||||
|
//printf("Trigger Mask of ch-%2d : 0x%s |%s| \n", ch, QString::number(mask, 16).toStdString().c_str(), ans.c_str());
|
||||||
|
|
||||||
for( int k = 0; k < (int) digi[ID]->GetNChannels(); k ++ ){
|
for( int k = 0; k < (int) digi[ID]->GetNChannels(); k ++ ){
|
||||||
trgMapClickStatus[ID][ch][k] = ( (mask >> k) & 0x1 );
|
trgMapClickStatus[ID][ch][k] = ( (mask >> k) & 0x1 );
|
||||||
|
|
Loading…
Reference in New Issue
Block a user