can change Sych_wait InSych, and Slow Filter Range in Module setting
This commit is contained in:
parent
f761936958
commit
114a24d076
|
@ -406,7 +406,7 @@ void Pixie16::ReadData(unsigned short modID){
|
|||
if( CheckError("Pixie16CheckExternalFIFOStatus") < 0 ) return;
|
||||
///if(nFIFOWords *1.0 / EXTERNAL_FIFO_LENGTH > 0.2) {
|
||||
if(nFIFOWords > 0) {
|
||||
//printf("\033[1;31m####### READ DATA \033[m: number of word in module-%d FIFO : %d \n", modID, nFIFOWords);
|
||||
///printf("\033[1;31m####### READ DATA \033[m: number of word in module-%d FIFO : %d (%.2f kB)\n", modID, nFIFOWords, nFIFOWords*4./1024.);
|
||||
if( ExtFIFO_Data != NULL ) delete ExtFIFO_Data;
|
||||
ExtFIFO_Data = new unsigned int [nFIFOWords];
|
||||
retval = Pixie16ReadDataFromExternalFIFO(ExtFIFO_Data, nFIFOWords, modID);
|
||||
|
|
|
@ -116,7 +116,6 @@ public:
|
|||
void CaptureADCTrace(unsigned short modID, unsigned short ch);
|
||||
int GetADCTraceLength() {return 8192;}
|
||||
unsigned short * GetADCTrace() {return ADCTrace;}
|
||||
|
||||
///========================= Setting
|
||||
|
||||
unsigned int GetNumModule() {return NumModules;}
|
||||
|
@ -124,6 +123,7 @@ public:
|
|||
unsigned short GetDigitizerRev(unsigned short modID) { return ModRev[modID];}
|
||||
unsigned short GetDigitizerADCBits(unsigned short modID) { return ModADCBits[modID];}
|
||||
unsigned short GetDigitizerNumChannel(unsigned short modID) { return numChannels[modID];}
|
||||
unsigned short GetDigitizerSamplingRate(unsigned short modID) { return ModADCMSPS[modID];}
|
||||
std::string GetSettingFile(unsigned modID) {return DSPParFile[modID];}
|
||||
|
||||
unsigned int GetDigitizerSetting(std::string parName, unsigned short modID, bool verbose = false);
|
||||
|
@ -133,6 +133,7 @@ public:
|
|||
void SetDigitizerSetting(std::string parName, unsigned int val, unsigned short modID, bool verbose = false);
|
||||
void SetDigitizerSynchWait(unsigned int val, unsigned short modID) { SetDigitizerSetting("SYNCH_WAIT", val, modID, 1);}
|
||||
void SetDigitizerInSynch(unsigned int val, unsigned short modID) { SetDigitizerSetting("IN_SYNCH", val, modID, 1);}
|
||||
void SetDigitizerSlowFilterRange(unsigned int val, unsigned short modID) { SetDigitizerSetting("SLOW_FILTER_RANGE", val, modID, 1);}
|
||||
void SetDigitizerPresetRunTime(double val_in_sec, unsigned short modID) { SetDigitizerSetting("HOST_RT_PRESET", Decimal2IEEEFloating(val_in_sec), modID, 1);}
|
||||
|
||||
double GetChannelSetting(std::string parName, unsigned short modID, unsigned short ch, bool verbose = false);
|
||||
|
|
|
@ -11,6 +11,33 @@
|
|||
#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"};
|
||||
|
||||
|
||||
ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pixie){
|
||||
|
||||
this->pixie = pixie;
|
||||
|
@ -41,41 +68,13 @@ ChannelSetting::ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 *
|
|||
|
||||
chIDEntry = new TGNumberEntry(hframe0, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative);
|
||||
chIDEntry->SetWidth(50);
|
||||
chIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, MAXCH);
|
||||
chIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, MAXCH-1);
|
||||
chIDEntry->Connect("Modified()", "ChannelSetting", this, "ChangeCh()");
|
||||
hframe0->AddFrame(chIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
|
||||
|
||||
int modID = modIDEntry->GetNumber();
|
||||
int ch = chIDEntry->GetNumber();
|
||||
|
||||
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",
|
||||
};
|
||||
|
||||
TGHorizontalFrame *hframe[NUM_CHANNEL_SETTING];
|
||||
TGLabel * lb[NUM_CHANNEL_SETTING];
|
||||
|
||||
|
@ -125,13 +124,17 @@ ChannelSetting::~ChannelSetting(){
|
|||
|
||||
|
||||
void ChannelSetting::ChangeMod(){
|
||||
|
||||
|
||||
|
||||
ChangeCh();
|
||||
}
|
||||
|
||||
void ChannelSetting::ChangeCh(){
|
||||
|
||||
int modID = modIDEntry->GetNumber();
|
||||
int ch = chIDEntry->GetNumber();
|
||||
|
||||
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) );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public:
|
|||
ChannelSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pixie);
|
||||
virtual ~ChannelSetting();
|
||||
|
||||
void CloseWindow() { printf("close window\n"); delete this; }
|
||||
void CloseWindow() { printf("close ChannelSetting window\n"); delete this; }
|
||||
|
||||
void ChangeMod();
|
||||
void ChangeCh();
|
||||
|
|
|
@ -10,6 +10,20 @@
|
|||
|
||||
#include "moduleSetting.h"
|
||||
|
||||
TString modSettingName[NUM_MOD_SETTING] = { "CrateID",
|
||||
"SlotID",
|
||||
"SYNCH_WAIT",
|
||||
"IN_SYNCH",
|
||||
"SLOW_FILTER_RANGE",
|
||||
"FAST_FILTER_RANGE",
|
||||
"FastTrigBackplaneEna",
|
||||
"TrigConfig0",
|
||||
"TrigConfig1",
|
||||
"TrigConfig2",
|
||||
"TrigConfig3",
|
||||
"HOST_RT_PRESET",
|
||||
"MODULE_CSRB"};
|
||||
|
||||
|
||||
ModuleSetting::ModuleSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pixie){
|
||||
|
||||
|
@ -38,21 +52,8 @@ ModuleSetting::ModuleSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pi
|
|||
|
||||
int modID = modIDEntry->GetNumber();
|
||||
|
||||
TString settingName[NUM_MOD_SETTING] = {
|
||||
"CrateID",
|
||||
"SlotID",
|
||||
"SYNCH_WAIT",
|
||||
"IN_SYNCH",
|
||||
"SLOW_FILTER_RANGE",
|
||||
"FAST_FILTER_RANGE",
|
||||
"FastTrigBackplaneEna",
|
||||
"TrigConfig0",
|
||||
"TrigConfig1",
|
||||
"TrigConfig2",
|
||||
"TrigConfig3",
|
||||
"HOST_RT_PRESET",
|
||||
"MODULE_CSRB",
|
||||
};
|
||||
int comboBoxWidth = 135;
|
||||
int comboBoxHeigth = 30;
|
||||
|
||||
TGHorizontalFrame *hframe[NUM_MOD_SETTING];
|
||||
TGLabel * lb[NUM_MOD_SETTING];
|
||||
|
@ -61,16 +62,75 @@ ModuleSetting::ModuleSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pi
|
|||
hframe[i] = new TGHorizontalFrame(vframe, 50, 50 );
|
||||
vframe->AddFrame(hframe[i], new TGLayoutHints(kLHintsRight, 2,2,2,2));
|
||||
|
||||
int temp = pixie->GetDigitizerSetting(settingName[i].Data(), modID, false);
|
||||
entry[i] = new TGTextEntry(hframe[i], new TGTextBuffer(1));
|
||||
//if( i < 2 || i == NUM_MOD_SETTING -1 ) entry[i]->SetEnabled(false);
|
||||
entry[i]->SetEnabled(false);
|
||||
int temp = pixie->GetDigitizerSetting(modSettingName[i].Data(), modID, false);
|
||||
|
||||
entry[i]->SetText( Form("%d", temp) );
|
||||
if( i < 2 || i > 4){
|
||||
entry[i] = new TGTextEntry(hframe[i], new TGTextBuffer(1));
|
||||
entry[i]->SetEnabled(false);
|
||||
entry[i]->SetText( Form("%d", temp) );
|
||||
|
||||
hframe[i]->AddFrame(entry[i], new TGLayoutHints(kLHintsRight, 5,5,3,4));
|
||||
if( i == 5 ) entry[i]->SetText( Form("%d (only 0 supported)", temp) );
|
||||
|
||||
lb[i] = new TGLabel(hframe[i], settingName[i]);
|
||||
hframe[i]->AddFrame(entry[i], new TGLayoutHints(kLHintsRight, 5,5,3,4));
|
||||
}
|
||||
|
||||
if( i == 2 ){
|
||||
cbSyncWait = new TGComboBox(hframe[i]);
|
||||
cbSyncWait->SetWidth(comboBoxWidth);
|
||||
cbSyncWait->SetHeight(comboBoxHeigth);
|
||||
|
||||
cbSyncWait->AddEntry("Sync", 1);
|
||||
cbSyncWait->AddEntry("not Sync", 0);
|
||||
cbSyncWait->Select(temp);
|
||||
cbSyncWait->Connect("Selected(Int_t, Int_t)", "ModuleSetting", this, "ChangeSyncWait()");
|
||||
|
||||
hframe[i]->AddFrame(cbSyncWait, new TGLayoutHints(kLHintsRight, 5,5,3,4));
|
||||
}
|
||||
|
||||
if( i == 3 ){
|
||||
cbInSych = new TGComboBox(hframe[i]);
|
||||
cbInSych->SetWidth(comboBoxWidth);
|
||||
cbInSych->SetHeight(comboBoxHeigth);
|
||||
|
||||
cbInSych->AddEntry("Clock clear", 0);
|
||||
cbInSych->AddEntry("Common Clock", 1);
|
||||
cbInSych->Select(temp);
|
||||
cbInSych->Connect("Selected(Int_t, Int_t)", "ModuleSetting", this, "ChangeInSync()");
|
||||
|
||||
hframe[i]->AddFrame(cbInSych, new TGLayoutHints(kLHintsRight, 5,5,3,4));
|
||||
}
|
||||
|
||||
if( i == 4 ){
|
||||
|
||||
cbSlowFilterRange = new TGComboBox(hframe[i]);
|
||||
cbSlowFilterRange->SetWidth(comboBoxWidth);
|
||||
cbSlowFilterRange->SetHeight(comboBoxHeigth);
|
||||
|
||||
unsigned short sampleRate = pixie->GetDigitizerSamplingRate(modID);
|
||||
if( sampleRate == 100 || sampleRate == 500 ){
|
||||
cbSlowFilterRange->AddEntry("off", 0);
|
||||
cbSlowFilterRange->AddEntry("0.02 us", 1);
|
||||
cbSlowFilterRange->AddEntry("0.04 us", 2);
|
||||
cbSlowFilterRange->AddEntry("0.08 us", 3);
|
||||
cbSlowFilterRange->AddEntry("0.16 us", 4);
|
||||
cbSlowFilterRange->AddEntry("0.32 us", 5);
|
||||
cbSlowFilterRange->AddEntry("0.64 us", 6);
|
||||
}else{
|
||||
cbSlowFilterRange->AddEntry("off", 0);
|
||||
cbSlowFilterRange->AddEntry("0.016 us", 1);
|
||||
cbSlowFilterRange->AddEntry("0.032 us", 2);
|
||||
cbSlowFilterRange->AddEntry("0.064 us", 3);
|
||||
cbSlowFilterRange->AddEntry("0.128 us", 4);
|
||||
cbSlowFilterRange->AddEntry("0.256 us", 5);
|
||||
cbSlowFilterRange->AddEntry("0.512 us", 6);
|
||||
}
|
||||
cbSlowFilterRange->Select(temp);
|
||||
cbSlowFilterRange->Connect("Selected(Int_t, Int_t)", "ModuleSetting", this, "ChangeSlowFilterRange()");
|
||||
|
||||
hframe[i]->AddFrame(cbSlowFilterRange, new TGLayoutHints(kLHintsRight, 5,5,3,4));
|
||||
}
|
||||
|
||||
lb[i] = new TGLabel(hframe[i], modSettingName[i]);
|
||||
hframe[i]->AddFrame(lb[i], new TGLayoutHints(kLHintsRight | kLHintsCenterY, 5, 5, 3, 4));
|
||||
|
||||
}
|
||||
|
@ -91,9 +151,12 @@ ModuleSetting::~ModuleSetting(){
|
|||
delete modIDEntry;
|
||||
|
||||
for ( int i = 0; i < NUM_MOD_SETTING; i++){
|
||||
delete entry[i];
|
||||
if( i < 2 || i > 5 ) delete entry[i];
|
||||
}
|
||||
|
||||
delete cbSyncWait;
|
||||
delete cbInSych;
|
||||
delete cbSlowFilterRange;
|
||||
|
||||
/// fMain must be delete last;
|
||||
fMain->Cleanup();
|
||||
|
@ -103,7 +166,59 @@ ModuleSetting::~ModuleSetting(){
|
|||
|
||||
|
||||
void ModuleSetting::ChangeMod(){
|
||||
int modID = modIDEntry->GetNumber();
|
||||
|
||||
for( int i = 0 ; i < NUM_MOD_SETTING; i++){
|
||||
int temp = pixie->GetDigitizerSetting(modSettingName[i].Data(), modID, false);
|
||||
|
||||
if( i < 2 || i > 4){
|
||||
entry[i]->SetText( Form("%d", temp) );
|
||||
}
|
||||
|
||||
if( i == 2 ) cbSyncWait->Select(temp);
|
||||
if( i == 3 ) cbInSych->Select(temp);
|
||||
|
||||
if( i == 4 ) {
|
||||
|
||||
cbSlowFilterRange->RemoveAll();
|
||||
unsigned short sampleRate = pixie->GetDigitizerSamplingRate(modID);
|
||||
if( sampleRate == 100 || sampleRate == 500 ){
|
||||
cbSlowFilterRange->AddEntry("off", 0);
|
||||
cbSlowFilterRange->AddEntry("0.02 us", 1);
|
||||
cbSlowFilterRange->AddEntry("0.04 us", 2);
|
||||
cbSlowFilterRange->AddEntry("0.08 us", 3);
|
||||
cbSlowFilterRange->AddEntry("0.16 us", 4);
|
||||
cbSlowFilterRange->AddEntry("0.32 us", 5);
|
||||
cbSlowFilterRange->AddEntry("0.64 us", 6);
|
||||
}else{
|
||||
cbSlowFilterRange->AddEntry("off", 0);
|
||||
cbSlowFilterRange->AddEntry("0.016 us", 1);
|
||||
cbSlowFilterRange->AddEntry("0.032 us", 2);
|
||||
cbSlowFilterRange->AddEntry("0.064 us", 3);
|
||||
cbSlowFilterRange->AddEntry("0.128 us", 4);
|
||||
cbSlowFilterRange->AddEntry("0.256 us", 5);
|
||||
cbSlowFilterRange->AddEntry("0.512 us", 6);
|
||||
}
|
||||
cbSlowFilterRange->Select(temp);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ModuleSetting::ChangeSyncWait(){
|
||||
pixie->SetDigitizerSynchWait(cbSyncWait->GetSelected(), modIDEntry->GetNumber());
|
||||
|
||||
///printf("%s \n", pixie->GetSettingFile(modIDEntry->GetNumber()).c_str());
|
||||
pixie->SaveSettings(pixie->GetSettingFile(modIDEntry->GetNumber()));
|
||||
}
|
||||
|
||||
void ModuleSetting::ChangeInSync(){
|
||||
pixie->SetDigitizerInSynch(cbInSych->GetSelected(), modIDEntry->GetNumber());
|
||||
pixie->SaveSettings(pixie->GetSettingFile(modIDEntry->GetNumber()));
|
||||
}
|
||||
|
||||
void ModuleSetting::ChangeSlowFilterRange(){
|
||||
pixie->SetDigitizerSlowFilterRange(cbInSych->GetSelected(), modIDEntry->GetNumber());
|
||||
pixie->SaveSettings(pixie->GetSettingFile(modIDEntry->GetNumber()));
|
||||
}
|
||||
|
||||
|
|
|
@ -22,16 +22,27 @@ private:
|
|||
|
||||
TGTextEntry * entry[NUM_MOD_SETTING];
|
||||
|
||||
TGComboBox * cbSyncWait;
|
||||
TGComboBox * cbInSych;
|
||||
|
||||
TGComboBox * cbSlowFilterRange;
|
||||
TGComboBox * cbFastFilterRange;
|
||||
|
||||
|
||||
Pixie16 * pixie;
|
||||
|
||||
public:
|
||||
ModuleSetting(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pixie);
|
||||
virtual ~ModuleSetting();
|
||||
|
||||
void CloseWindow() { printf("close window\n"); delete this; }
|
||||
void CloseWindow() { printf("close ModuleSetting window\n"); delete this; }
|
||||
|
||||
void ChangeMod();
|
||||
|
||||
void ChangeSyncWait();
|
||||
void ChangeInSync();
|
||||
void ChangeSlowFilterRange();
|
||||
|
||||
bool isOpened;
|
||||
|
||||
};
|
||||
|
|
14
pixieDAQ.cpp
14
pixieDAQ.cpp
|
@ -174,10 +174,13 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
|
|||
|
||||
/// Initialize the layout algorithm
|
||||
fMain->Resize(fMain->GetDefaultSize());
|
||||
fMain->SetWMPosition(200, 200); //does not work??
|
||||
|
||||
/// Map main frame
|
||||
fMain->MapWindow();
|
||||
|
||||
|
||||
|
||||
/// setup thread
|
||||
thread = new TThread("hahaha", SaveData, (void *) 1);
|
||||
fillHistThread = new TThread("kakaka", FillHistogram, (void *) 1);
|
||||
|
@ -449,15 +452,21 @@ void * MainWindow::SaveData(void* ptr){
|
|||
localClock.Reset();
|
||||
localClock.Start("timer");
|
||||
|
||||
int pauseTime = 500 ; ///msec
|
||||
|
||||
while( pixie->IsRunning() ){
|
||||
|
||||
usleep(500*1000); /// 500 msec
|
||||
if( pauseTime > 10 ) usleep(pauseTime*1000);
|
||||
|
||||
if( !pixie->IsRunning() ) break;
|
||||
|
||||
pixie->ReadData(0);
|
||||
pixie->SaveData();
|
||||
|
||||
double MByteRead = pixie->GetnFIFOWords()*4./1024./1024.;
|
||||
|
||||
if( MByteRead > 70 && pauseTime > 10) pauseTime = pauseTime - 20;
|
||||
|
||||
//TODO Fill HISTORGRAM;
|
||||
time_t now = time(0);
|
||||
tm * ltm = localtime(&now);
|
||||
|
@ -478,7 +487,8 @@ void * MainWindow::SaveData(void* ptr){
|
|||
oldFileSize = newFileSize;
|
||||
oldTime = newTime;
|
||||
|
||||
teLog->AddLine(Form("[%4d-%02d-%02d %02d:%02d:%02d] File Size : %.2f MB [%.2f MB/s]", year, month, day, hour, minute, secound, newFileSize, rate));
|
||||
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();
|
||||
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ public:
|
|||
virtual ~SettingsSummary();
|
||||
|
||||
|
||||
void CloseWindow() { printf("close window\n"); delete this; }
|
||||
void CloseWindow() { printf("close SettingsSummary window\n"); delete this; }
|
||||
|
||||
void ChangeOnOff(unsigned short ch);
|
||||
void ChangeGain(unsigned short ch);
|
||||
|
|
|
@ -1016,7 +1016,7 @@
|
|||
"ChanNum": 0,
|
||||
"CoincPattern": 0,
|
||||
"CoincWait": 0,
|
||||
"ControlTask": 5,
|
||||
"ControlTask": 23,
|
||||
"CrateID": 0,
|
||||
"FIFOLength": 8188,
|
||||
"FastFilterRange": 0,
|
||||
|
@ -1040,7 +1040,7 @@
|
|||
0
|
||||
],
|
||||
"HostRunTimePreset": 1092616192,
|
||||
"InSynch": 1,
|
||||
"InSynch": 0,
|
||||
"MaxEvents": 0,
|
||||
"ModCSRA": 0,
|
||||
"ModCSRB": 1,
|
||||
|
|
Loading…
Reference in New Issue
Block a user