channel setting can change setting

This commit is contained in:
Ryan Tang 2022-04-01 16:07:18 -04:00
parent 114a24d076
commit be1620d3ba
4 changed files with 114 additions and 40 deletions

View File

@ -10,32 +10,47 @@
#include "channelSetting.h" #include "channelSetting.h"
///---------------------------------------------- NAME, DIGI, unit
TString settingName[NUM_CHANNEL_SETTING] = { "TRIGGER_RISETIME", TString settingName[NUM_CHANNEL_SETTING][3] = {{"TRIGGER_RISETIME", "2", "us"},
"TRIGGER_FLATTOP", {"TRIGGER_FLATTOP", "2", "us"},
"TRIGGER_THRESHOLD", {"TRIGGER_THRESHOLD", "0", "ADC"},
"ENERGY_RISETIME", {"ENERGY_RISETIME", "1", "us"},
"ENERGY_FLATTOP", {"ENERGY_FLATTOP", "1", "us"},
"TAU", {"TAU", "2", "us"},
"TRACE_LENGTH", {"TRACE_LENGTH", "2", "us"},
"TRACE_DELAY", {"TRACE_DELAY", "2", "us"},
"VOFFSET", {"VOFFSET", "2", "V"},
"XDT", {"XDT", "2", "us"},
"BASELINE_PERCENT", {"BASELINE_PERCENT", "0", "%"},
"BASELINE_AVERAGE", {"BASELINE_AVERAGE", "0", ""},
"BLCUT", {"BLCUT", "0", ""},
"EMIN", {"EMIN", "0", ""},
"QDCLen0", {"QDCLen0", "3", "us"},
"QDCLen1", {"QDCLen1", "3", "us"},
"QDCLen2", {"QDCLen2", "3", "us"},
"QDCLen3", {"QDCLen3", "3", "us"},
"QDCLen4", {"QDCLen4", "3", "us"},
"QDCLen5", {"QDCLen5", "3", "us"},
"QDCLen6", {"QDCLen6", "3", "us"},
"QDCLen7", {"QDCLen7", "3", "us"},
"MultiplicityMaskL", {"MultiplicityMaskL", "0", ""},
"MultiplicityMaskH", {"MultiplicityMaskH", "0", ""},
"CHANNEL_CSRA"}; {"CHANNEL_CSRA", "0", ""}};
///==== missing parameters
///"PEAK_SAMPLE"
///"PEAK_SEP"
///"BINFACTOR"
///"FASTTRIGBACKLEN"
///"INTEGRATOR"
///"CFDDelay"
///"CFDScale"
///"CFDThresh"
///"ExtTrigStretch"
///"VetoStretch"
///"ExternDelayLen"
///"FtrigoutDelay"
///"ChanTrigStretch"
ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pixie){ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pixie){
@ -74,6 +89,28 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 *
int modID = modIDEntry->GetNumber(); int modID = modIDEntry->GetNumber();
int ch = chIDEntry->GetNumber(); int ch = chIDEntry->GetNumber();
int width = 135;
TGHorizontalFrame *hframeOnOff = new TGHorizontalFrame(vframe, 50, 50 );
vframe->AddFrame(hframeOnOff, new TGLayoutHints(kLHintsRight, 2,2,2,2));
cbOnOff = new TGComboBox(hframeOnOff);
cbOnOff->AddEntry("ON", 1);
cbOnOff->AddEntry("off", 0);
cbOnOff->Resize(width, 20);
if( pixie->GetChannelOnOff(modID, ch) ){
cbOnOff->Select(1);
}else{
cbOnOff->Select(0);
}
cbOnOff->Connect("Selected(Int_t, Int_t)", "ChannelSetting", this, "ChangeOnOff()");
hframeOnOff->AddFrame(cbOnOff, new TGLayoutHints(kLHintsRight, 5,5,3,4));
TGLabel * lbOnOff = new TGLabel(hframeOnOff, "On/Off");
hframeOnOff->AddFrame(lbOnOff, new TGLayoutHints(kLHintsRight | kLHintsCenterY, 5, 5, 3, 4));
TGHorizontalFrame *hframe[NUM_CHANNEL_SETTING]; TGHorizontalFrame *hframe[NUM_CHANNEL_SETTING];
TGLabel * lb[NUM_CHANNEL_SETTING]; TGLabel * lb[NUM_CHANNEL_SETTING];
@ -82,16 +119,22 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 *
hframe[i] = new TGHorizontalFrame(vframe, 50, 50 ); hframe[i] = new TGHorizontalFrame(vframe, 50, 50 );
vframe->AddFrame(hframe[i], new TGLayoutHints(kLHintsRight, 2,2,2,2)); vframe->AddFrame(hframe[i], new TGLayoutHints(kLHintsRight, 2,2,2,2));
double temp = pixie->GetChannelSetting(settingName[i].Data(), modID, ch, false); double temp = pixie->GetChannelSetting(settingName[i][0].Data(), modID, ch, false);
entry[i] = new TGTextEntry(hframe[i], new TGTextBuffer(1));
//if( i < 2 || i == NUM_CHANNEL_SETTING -1 ) entry[i]->SetEnabled(false); TGNumberFormat::EStyle digi = TGNumberFormat::kNESInteger;
entry[i]->SetEnabled(false); if( settingName[i][1] == "0" ) digi = TGNumberFormat::kNESInteger;
if( settingName[i][1] == "1" ) digi = TGNumberFormat::kNESRealOne;
if( settingName[i][1] == "2" ) digi = TGNumberFormat::kNESRealTwo;
if( settingName[i][1] == "3" ) digi = TGNumberFormat::kNESRealThree;
entry[i] = new TGNumberEntry(hframe[i], temp, 0, 0, digi, TGNumberFormat::kNEANonNegative);
entry[i]->Resize(width, 20);
entry[i]->Connect("Modified()", "ChannelSetting", this, Form("ChangeID(=%d)", i));
entry[i]->SetText( Form("%f", temp) );
hframe[i]->AddFrame(entry[i], new TGLayoutHints(kLHintsRight, 5,5,3,4)); hframe[i]->AddFrame(entry[i], new TGLayoutHints(kLHintsRight, 5,5,3,4));
lb[i] = new TGLabel(hframe[i], settingName[i]); lb[i] = new TGLabel(hframe[i], settingName[i][0] + (settingName[i][2] != "" ? " [" + settingName[i][2] + "]" : ""));
hframe[i]->AddFrame(lb[i], new TGLayoutHints(kLHintsRight | kLHintsCenterY, 5, 5, 3, 4)); hframe[i]->AddFrame(lb[i], new TGLayoutHints(kLHintsRight | kLHintsCenterY, 5, 5, 3, 4));
} }
@ -110,12 +153,13 @@ ChannelSetting::~ChannelSetting(){
isOpened = false; isOpened = false;
delete modIDEntry; delete modIDEntry;
delete cbOnOff;
for ( int i = 0; i < NUM_CHANNEL_SETTING; i++){ for ( int i = 0; i < NUM_CHANNEL_SETTING; i++){
delete entry[i]; delete entry[i];
} }
/// fMain must be delete last; /// fMain must be delete last;
fMain->Cleanup(); fMain->Cleanup();
delete fMain; delete fMain;
@ -132,9 +176,35 @@ void ChannelSetting::ChangeCh(){
int modID = modIDEntry->GetNumber(); int modID = modIDEntry->GetNumber();
int ch = chIDEntry->GetNumber(); int ch = chIDEntry->GetNumber();
if( pixie->GetChannelOnOff(modID, ch) ){
cbOnOff->Select(1);
}else{
cbOnOff->Select(0);
}
for( int i = 0 ; i < NUM_CHANNEL_SETTING; i++){ for( int i = 0 ; i < NUM_CHANNEL_SETTING; i++){
double temp = pixie->GetChannelSetting(settingName[i].Data(), modID, ch, false); double temp = pixie->GetChannelSetting(settingName[i][0].Data(), modID, ch, false);
entry[i]->SetText( Form("%f", temp) ); entry[i]->SetNumber(temp );
} }
} }
void ChannelSetting::ChangeOnOff(){
short modID = modIDEntry->GetNumber();
short ch = chIDEntry->GetNumber();
int val = cbOnOff->GetSelected();
pixie->SetChannelOnOff(val, modID, ch);
pixie->SaveSettings(pixie->GetSettingFile(modIDEntry->GetNumber()));
}
void ChannelSetting::ChangeID(int id){
short modID = modIDEntry->GetNumber();
short ch = chIDEntry->GetNumber();
double val = entry[id]->GetNumber();
pixie->SetChannelSetting(settingName[id][0].Data(), val, modID, ch, 1);
pixie->SaveSettings(pixie->GetSettingFile(modIDEntry->GetNumber()));
}

View File

@ -20,7 +20,9 @@ private:
TGNumberEntry * modIDEntry, * chIDEntry; TGNumberEntry * modIDEntry, * chIDEntry;
TGTextEntry * entry[NUM_CHANNEL_SETTING]; TGComboBox * cbOnOff;
TGNumberEntry * entry[NUM_CHANNEL_SETTING];
Pixie16 * pixie; Pixie16 * pixie;
@ -33,6 +35,9 @@ public:
void ChangeMod(); void ChangeMod();
void ChangeCh(); void ChangeCh();
void ChangeOnOff();
void ChangeID(int id);
bool isOpened; bool isOpened;
}; };

View File

@ -490,7 +490,6 @@ void * MainWindow::SaveData(void* ptr){
teLog->AddLine(Form("[%4d-%02d-%02d %02d:%02d:%02d] File Size : %.2f MB [%.2f MB/s], %.2f MB readed", teLog->AddLine(Form("[%4d-%02d-%02d %02d:%02d:%02d] File Size : %.2f MB [%.2f MB/s], %.2f MB readed",
year, month, day, hour, minute, secound, newFileSize, rate, MByteRead)); year, month, day, hour, minute, secound, newFileSize, rate, MByteRead));
teLog->LineDown(); teLog->LineDown();
} }

View File

@ -417,7 +417,7 @@
2 2
], ],
"OffsetDAC": [ "OffsetDAC": [
32768, 32986,
32768, 32768,
32768, 32768,
32768, 32768,
@ -1016,7 +1016,7 @@
"ChanNum": 0, "ChanNum": 0,
"CoincPattern": 0, "CoincPattern": 0,
"CoincWait": 0, "CoincWait": 0,
"ControlTask": 23, "ControlTask": 0,
"CrateID": 0, "CrateID": 0,
"FIFOLength": 8188, "FIFOLength": 8188,
"FastFilterRange": 0, "FastFilterRange": 0,