diff --git a/channelSetting.cpp b/channelSetting.cpp index 01b5a1f..ea237ba 100644 --- a/channelSetting.cpp +++ b/channelSetting.cpp @@ -10,32 +10,47 @@ #include "channelSetting.h" - -TString settingName[NUM_CHANNEL_SETTING] = { "TRIGGER_RISETIME", - "TRIGGER_FLATTOP", - "TRIGGER_THRESHOLD", - "ENERGY_RISETIME", - "ENERGY_FLATTOP", - "TAU", - "TRACE_LENGTH", - "TRACE_DELAY", - "VOFFSET", - "XDT", - "BASELINE_PERCENT", - "BASELINE_AVERAGE", - "BLCUT", - "EMIN", - "QDCLen0", - "QDCLen1", - "QDCLen2", - "QDCLen3", - "QDCLen4", - "QDCLen5", - "QDCLen6", - "QDCLen7", - "MultiplicityMaskL", - "MultiplicityMaskH", - "CHANNEL_CSRA"}; +///---------------------------------------------- NAME, DIGI, unit +TString settingName[NUM_CHANNEL_SETTING][3] = {{"TRIGGER_RISETIME", "2", "us"}, + {"TRIGGER_FLATTOP", "2", "us"}, + {"TRIGGER_THRESHOLD", "0", "ADC"}, + {"ENERGY_RISETIME", "1", "us"}, + {"ENERGY_FLATTOP", "1", "us"}, + {"TAU", "2", "us"}, + {"TRACE_LENGTH", "2", "us"}, + {"TRACE_DELAY", "2", "us"}, + {"VOFFSET", "2", "V"}, + {"XDT", "2", "us"}, + {"BASELINE_PERCENT", "0", "%"}, + {"BASELINE_AVERAGE", "0", ""}, + {"BLCUT", "0", ""}, + {"EMIN", "0", ""}, + {"QDCLen0", "3", "us"}, + {"QDCLen1", "3", "us"}, + {"QDCLen2", "3", "us"}, + {"QDCLen3", "3", "us"}, + {"QDCLen4", "3", "us"}, + {"QDCLen5", "3", "us"}, + {"QDCLen6", "3", "us"}, + {"QDCLen7", "3", "us"}, + {"MultiplicityMaskL", "0", ""}, + {"MultiplicityMaskH", "0", ""}, + {"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){ @@ -74,6 +89,28 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * int modID = modIDEntry->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]; 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 ); vframe->AddFrame(hframe[i], new TGLayoutHints(kLHintsRight, 2,2,2,2)); - double temp = pixie->GetChannelSetting(settingName[i].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); - entry[i]->SetEnabled(false); + double temp = pixie->GetChannelSetting(settingName[i][0].Data(), modID, ch, false); + + TGNumberFormat::EStyle digi = TGNumberFormat::kNESInteger; + 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)); - 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)); } @@ -110,12 +153,13 @@ ChannelSetting::~ChannelSetting(){ isOpened = false; delete modIDEntry; + + delete cbOnOff; for ( int i = 0; i < NUM_CHANNEL_SETTING; i++){ delete entry[i]; } - /// fMain must be delete last; fMain->Cleanup(); delete fMain; @@ -132,9 +176,35 @@ void ChannelSetting::ChangeCh(){ int modID = modIDEntry->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++){ - double temp = pixie->GetChannelSetting(settingName[i].Data(), modID, ch, false); - entry[i]->SetText( Form("%f", temp) ); + double temp = pixie->GetChannelSetting(settingName[i][0].Data(), modID, ch, false); + 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())); +} + diff --git a/channelSetting.h b/channelSetting.h index 527ff5e..8c3300b 100644 --- a/channelSetting.h +++ b/channelSetting.h @@ -20,7 +20,9 @@ private: TGNumberEntry * modIDEntry, * chIDEntry; - TGTextEntry * entry[NUM_CHANNEL_SETTING]; + TGComboBox * cbOnOff; + + TGNumberEntry * entry[NUM_CHANNEL_SETTING]; Pixie16 * pixie; @@ -33,6 +35,9 @@ public: void ChangeMod(); void ChangeCh(); + void ChangeOnOff(); + void ChangeID(int id); + bool isOpened; }; diff --git a/pixieDAQ.cpp b/pixieDAQ.cpp index 1e634eb..f9415d5 100644 --- a/pixieDAQ.cpp +++ b/pixieDAQ.cpp @@ -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", year, month, day, hour, minute, secound, newFileSize, rate, MByteRead)); teLog->LineDown(); - } diff --git a/test_ryan.set b/test_ryan.set index 8123c41..2959d2a 100644 --- a/test_ryan.set +++ b/test_ryan.set @@ -417,7 +417,7 @@ 2 ], "OffsetDAC": [ - 32768, + 32986, 32768, 32768, 32768, @@ -1016,7 +1016,7 @@ "ChanNum": 0, "CoincPattern": 0, "CoincWait": 0, - "ControlTask": 23, + "ControlTask": 0, "CrateID": 0, "FIFOLength": 8188, "FastFilterRange": 0,