checked data processes online = data saved. need to update the statsitics

This commit is contained in:
Ryan Tang 2022-03-16 21:10:12 -04:00
parent d60ad72d84
commit cc9854a79d
9 changed files with 142 additions and 44 deletions

View File

@ -44,7 +44,6 @@ Pixie16Class.o : Pixie16Class.h Pixie16Class.cpp DataBlock.h
pixieDict.cxx : pixieDAQ.h pixieDAQLinkDef.h pixieDict.cxx : pixieDAQ.h pixieDAQLinkDef.h
@echo "--------- creating pcm and cxx " @echo "--------- creating pcm and cxx "
@rootcling -f pixieDict.cxx -c pixieDAQ.h -p $(PIXIE_LIB_PATH) pixieDAQLinkDef.h @rootcling -f pixieDict.cxx -c pixieDAQ.h -p $(PIXIE_LIB_PATH) pixieDAQLinkDef.h
# @rootcling -f pixieDict.cxx -c pixieDAQ.h mainSettings.h -p $(PIXIE_LIB_PATH) pixieDAQLinkDef.h
pixieDAQ.o : pixieDict.cxx pixieDAQ.cpp pixieDAQ.h pixieDAQ.o : pixieDict.cxx pixieDAQ.cpp pixieDAQ.h
@echo "--------- creating pixieDAQ.o" @echo "--------- creating pixieDAQ.o"
@ -53,8 +52,6 @@ pixieDAQ.o : pixieDict.cxx pixieDAQ.cpp pixieDAQ.h
mainSettings.o : mainSettings.cpp mainSettings.h mainSettings.o : mainSettings.cpp mainSettings.h
@echo "--------- creating mainSettings.o" @echo "--------- creating mainSettings.o"
$(CC) $(CFLAGS) $(PIXIE_LIB_PATH) mainSettings.cpp $(ROOT_FLAG) $(CC) $(CFLAGS) $(PIXIE_LIB_PATH) mainSettings.cpp $(ROOT_FLAG)
# $(CC) $(CFLAGS) $(PIXIE_LIB_PATH) Pixie16Class.o mainSettings.cpp $(ROOT_FLAG)
# $(CC) $(CFLAGS) $(PIXIE_LIB_PATH) Pixie16Class.o mainSettings.cpp pixieDict.cxx $(ROOT_FLAG)
#-------------------------- #--------------------------

View File

@ -337,12 +337,20 @@ void Pixie16::AdjustOffset(){
} }
void Pixie16::CaptureBaseLine(unsigned short modID, unsigned short ch){ void Pixie16::CaptureBaseLine(unsigned short modID, unsigned short ch){
retval = Pixie16AcquireBaselines(modID); retval = Pixie16AcquireBaselines(modID);
if( CheckError("Pixie16AcquireBaselines::MOD::"+std::to_string(modID)) < 0 ) return; if( CheckError("Pixie16AcquireBaselines::MOD::"+std::to_string(modID)) < 0 ) return;
///somehow, this change the DSPParFile
std::string temp = DSPParFile[modID];
retval = Pixie16ReadSglChanBaselines(Baselines, TimeStamps, 3640, modID, ch); retval = Pixie16ReadSglChanBaselines(Baselines, TimeStamps, 3640, modID, ch);
if( CheckError("Pixie16ReadSglChanBaselines::MOD::"+std::to_string(modID) + "CH::"+std::to_string(ch)) < 0 ) return; if( CheckError("Pixie16ReadSglChanBaselines::MOD::"+std::to_string(modID) + "CH::"+std::to_string(ch)) < 0 ) return;
strcpy(DSPParFile[modID], temp.c_str());
} }
void Pixie16::CaptureADCTrace(unsigned short modID, unsigned short ch){ void Pixie16::CaptureADCTrace(unsigned short modID, unsigned short ch){
@ -359,17 +367,13 @@ void Pixie16::StartRun(bool listMode){
unsigned short mode = NEW_RUN; //RESUME_RUN unsigned short mode = NEW_RUN; //RESUME_RUN
//listmode
if( listMode ){ if( listMode ){
///listmode
//SetDigitizerSynchWait(1, i);
//SetDigitizerInSynch(0, i);
retval = Pixie16StartListModeRun(NumModules, LIST_MODE_RUN, mode); retval = Pixie16StartListModeRun(NumModules, LIST_MODE_RUN, mode);
if( CheckError("Pixie16StartListModeRun") < 0 ) return; if( CheckError("Pixie16StartListModeRun") < 0 ) return;
printf("\033[32m LIST_MODE run\033[0m\n"); printf("\033[32m LIST_MODE run\033[0m\n");
}else{ }else{
//MCA mode ///MCA mode
retval = Pixie16StartHistogramRun(NumModules, mode); retval = Pixie16StartHistogramRun(NumModules, mode);
if( CheckError("Pixie16StartHistogramRun") < 0 ) return; if( CheckError("Pixie16StartHistogramRun") < 0 ) return;
printf("\033[32m MCA MODE run\033[0m\n"); printf("\033[32m MCA MODE run\033[0m\n");
@ -628,13 +632,13 @@ void Pixie16::PrintChannelAllSettings(unsigned short modID, unsigned short ch){
void Pixie16::PrintChannelsMainSettings(unsigned short modID){ void Pixie16::PrintChannelsMainSettings(unsigned short modID){
printf("====+=====+======+========+========+===========+==========+==========+==========+========+========+=========+=======+====== \n"); printf("====+=====+======+========+========+===========+==========+==========+==========+=======+=========+=========+=======+====== \n");
printf(" ch | En | Gain | Trig_L | Trig_G | Threshold | Polarity | Energy_L | Energy_G | Tau | Trace | Trace_d | Voff | BL \n"); printf(" ch | En | Gain | Trig_L | Trig_G | Threshold | Polarity | Energy_L | Energy_G | Tau | Trace | Trace_d | Voff | BL \n");
printf("----+-----+------+--------+--------+-----------+----------+----------+----------+--------+--------+---------+-------+------ \n"); printf("----+-----+------+--------+--------+-----------+----------+----------+----------+-------+---------+---------+-------+------ \n");
for( int ch = 0; ch < 16; ch ++){ for( int ch = 0; ch < 16; ch ++){
printf(" %2d |", ch); printf(" %2d |", ch);
printf(" %3s |", GetChannelOnOff(modID, ch) ? "On" : "Off" ); printf(" %3s |", GetChannelOnOff(modID, ch) ? "On" : "Off" );
printf(" %3s |", GetChannelGain(modID, ch) ? "x1" : "1/4" ); printf(" %4s |", GetChannelGain(modID, ch) ? "x1" : "1/4" );
printf(" %6.2f |", GetChannelTriggerRiseTime(modID, ch)); printf(" %6.2f |", GetChannelTriggerRiseTime(modID, ch));
printf(" %6.2f |", GetChannelTriggerFlatTop(modID, ch)); printf(" %6.2f |", GetChannelTriggerFlatTop(modID, ch));
printf(" %9.2f |", GetChannelTriggerThreshold(modID, ch)); printf(" %9.2f |", GetChannelTriggerThreshold(modID, ch));

View File

@ -32,7 +32,7 @@ MainSettings::MainSettings(const TGWindow *p, UInt_t w, UInt_t h, Pixie16 * pixi
modIDEntry = new TGNumberEntry(hframe, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); modIDEntry = new TGNumberEntry(hframe, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative);
modIDEntry->SetWidth(50); modIDEntry->SetWidth(50);
modIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, pixie->GetNumModule()-1); modIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, pixie->GetNumModule()-1);
//modIDEntry->Connect("Modified()", "MainSettings", this, "ChangeMod()"); modIDEntry->Connect("Modified()", "MainSettings", this, "ChangeMod()");
hframe->AddFrame(modIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); hframe->AddFrame(modIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4));
TGLabel * lb2 = new TGLabel(hframe, "Setting File :"); TGLabel * lb2 = new TGLabel(hframe, "Setting File :");
@ -347,6 +347,7 @@ void MainSettings::OpenFile(){
if( fi.fFilename != NULL ) { if( fi.fFilename != NULL ) {
settingFileName = fi.fFilename; settingFileName = fi.fFilename;
teFileName->SetText(settingFileName + " (not saved)"); teFileName->SetText(settingFileName + " (not saved)");
//TODO change the pixie->DSPParFile[]
} }
dir = fi.fIniDir; dir = fi.fIniDir;
} }

View File

@ -58,29 +58,70 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
/// Create a horizontal frame widget with buttons /// Create a horizontal frame widget with buttons
TGHorizontalFrame *hframe = new TGHorizontalFrame(fMain,200,40); TGHorizontalFrame *hframe = new TGHorizontalFrame(fMain,200,40);
fMain->AddFrame(hframe, new TGLayoutHints(kLHintsCenterX,2,2,2,2));
TGLabel * lb1 = new TGLabel(hframe, "Module ID :"); ///================= signal Channel group
hframe->AddFrame(lb1, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4)); TGGroupFrame * group1 = new TGGroupFrame(hframe, "Single Channel", kHorizontalFrame);
hframe->AddFrame(group1, new TGLayoutHints(kLHintsCenterX, 5,5,3,3) );
modIDEntry = new TGNumberEntry(hframe, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); TGHorizontalFrame *hframe1 = new TGHorizontalFrame(group1,200,30);
group1->AddFrame(hframe1);
TGLabel * lb1 = new TGLabel(hframe1, "Module ID :");
hframe1->AddFrame(lb1, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 2, 2, 2, 2));
modIDEntry = new TGNumberEntry(hframe1, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative);
modIDEntry->SetWidth(50); modIDEntry->SetWidth(50);
modIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, pixie->GetNumModule()-1); modIDEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, pixie->GetNumModule()-1);
hframe->AddFrame(modIDEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); hframe1->AddFrame(modIDEntry, new TGLayoutHints(kLHintsCenterX , 2, 2, 3, 2));
TGLabel * lb2 = new TGLabel(hframe, "Ch :"); TGLabel * lb2 = new TGLabel(hframe1, "Ch :");
hframe->AddFrame(lb2, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 5, 5, 3, 4)); hframe1->AddFrame(lb2, new TGLayoutHints(kLHintsCenterX | kLHintsCenterY, 2, 2, 3, 2));
chEntry = new TGNumberEntry(hframe, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative); chEntry = new TGNumberEntry(hframe1, 0, 0, 0, TGNumberFormat::kNESInteger, TGNumberFormat::kNEANonNegative);
chEntry->SetWidth(50); chEntry->SetWidth(50);
chEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, pixie->GetDigitizerNumChannel(0)); chEntry->SetLimits(TGNumberFormat::kNELLimitMinMax, 0, pixie->GetDigitizerNumChannel(0));
hframe->AddFrame(chEntry, new TGLayoutHints(kLHintsCenterX , 5, 5, 3, 4)); hframe1->AddFrame(chEntry, new TGLayoutHints(kLHintsCenterX , 2, 2, 3, 2));
TGTextButton *bGetADCTrace = new TGTextButton(hframe,"&Get ADC Trace"); TGTextButton *bGetADCTrace = new TGTextButton(hframe1,"Get &ADC Trace");
bGetADCTrace->Connect("Clicked()","MainWindow",this,"getADCTrace()"); bGetADCTrace->Connect("Clicked()","MainWindow",this,"getADCTrace()");
hframe->AddFrame(bGetADCTrace, new TGLayoutHints(kLHintsCenterX, 5,5,3,4)); hframe1->AddFrame(bGetADCTrace, new TGLayoutHints(kLHintsCenterX, 2,2,3,2));
TGTextButton *bGetBaseLine = new TGTextButton(hframe1,"Get &BaseLine");
bGetBaseLine->Connect("Clicked()","MainWindow",this,"getBaseLine()");
hframe1->AddFrame(bGetBaseLine, new TGLayoutHints(kLHintsCenterX, 2,2,3,2));
///================= Start Run group
TGGroupFrame * group2 = new TGGroupFrame(hframe, "Start run", kHorizontalFrame);
hframe->AddFrame(group2, new TGLayoutHints(kLHintsCenterX, 2,2,3,3) );
TGHorizontalFrame *hframe2 = new TGHorizontalFrame(group2,200,30);
group2->AddFrame(hframe2);
TGTextButton *bStartRun = new TGTextButton(hframe2,"Start &Run");
bStartRun->Connect("Clicked()","MainWindow",this,"StartRun()");
hframe2->AddFrame(bStartRun, new TGLayoutHints(kLHintsCenterX, 2,2,3,2));
TGTextButton *bStopRun = new TGTextButton(hframe2,"Stop Run");
bStopRun->Connect("Clicked()","MainWindow",this,"StopRun()");
hframe2->AddFrame(bStopRun, new TGLayoutHints(kLHintsCenterX, 2,2,3,4));
TGTextButton *bScalar = new TGTextButton(hframe2,"Scalar");
//bScalar->Connect("Clicked()","MainWindow",this,"getADCTrace()");
hframe2->AddFrame(bScalar, new TGLayoutHints(kLHintsCenterX, 2,2,3,2));
fMain->AddFrame(hframe, new TGLayoutHints(kLHintsCenterX,2,2,2,2)); ///================= Read evt group
TGGroupFrame * group3 = new TGGroupFrame(hframe, "Read Evt", kHorizontalFrame);
hframe->AddFrame(group3, new TGLayoutHints(kLHintsCenterX, 2,2,3,3) );
TGHorizontalFrame *hframe3 = new TGHorizontalFrame(group3,200,30);
group3->AddFrame(hframe3);
TGTextButton *bOpenEVT = new TGTextButton(hframe3,"OpenEvt");
//bOpenEVT->Connect("Clicked()","MainWindow",this,"StartRun()");
hframe3->AddFrame(bOpenEVT, new TGLayoutHints(kLHintsCenterX, 2,2,3,2));
/// Create canvas widget /// Create canvas widget
fEcanvas = new TRootEmbeddedCanvas("Ecanvas",fMain,800,400); fEcanvas = new TRootEmbeddedCanvas("Ecanvas",fMain,800,400);
@ -102,7 +143,7 @@ MainWindow::MainWindow(const TGWindow *p,UInt_t w,UInt_t h) {
fMain->MapWindow(); fMain->MapWindow();
//HandleMenu(M_MAIN_CH_SETTINGS); ///HandleMenu(M_MAIN_CH_SETTINGS);
///================ pixie ///================ pixie
///printf("Removing Pixie16Msg.log \n"); ///printf("Removing Pixie16Msg.log \n");
@ -166,12 +207,12 @@ void MainWindow::getADCTrace() {
double dt = pixie->GetChannelSetting("XDT", modID, ch); double dt = pixie->GetChannelSetting("XDT", modID, ch);
TGraph * gTrace = new TGraph(); TGraph * gTrace = new TGraph();
for( int i = 0 ; i < pixie->GetADCTraceLength(); i++){ for( int i = 0 ; i < pixie->GetADCTraceLength(); i++){
gTrace->SetPoint(i, i*dt, haha[i]); gTrace->SetPoint(i, i*dt, haha[i]);
} }
gTrace->GetXaxis()->SetTitle("time [us]"); gTrace->GetXaxis()->SetTitle("time [us]");
gTrace->Draw("AP"); gTrace->Draw("APL");
TCanvas *fCanvas = fEcanvas->GetCanvas(); TCanvas *fCanvas = fEcanvas->GetCanvas();
fCanvas->cd(); fCanvas->cd();
@ -179,6 +220,37 @@ void MainWindow::getADCTrace() {
} }
void MainWindow::getBaseLine(){
printf("1 %s \n", pixie->GetSettingFile(0).c_str());
int modID = modIDEntry->GetNumber();
int ch = chEntry->GetNumber();
pixie->CaptureBaseLine(modID, ch);
printf("2 %s \n", pixie->GetSettingFile(0).c_str());
double * baseline = pixie->GetBasline();
double * baselineTime = pixie->GetBaselineTimestamp();
printf("3 %s \n", pixie->GetSettingFile(0).c_str());
TGraph * gTrace = new TGraph();
for( int i = 0 ; i < pixie->GetBaslineLength(); i++){
gTrace->SetPoint(i, baselineTime[i]*1000, baseline[i]);
}
gTrace->GetXaxis()->SetTitle("time [ns]");
gTrace->Draw("APL");
printf("4 %s \n", pixie->GetSettingFile(0).c_str());
TCanvas *fCanvas = fEcanvas->GetCanvas();
fCanvas->cd();
fCanvas->Update();
}
void MainWindow::GoodBye(){ void MainWindow::GoodBye(){
@ -191,6 +263,22 @@ void MainWindow::GoodBye(){
} }
void MainWindow::StartRun(){
pixie->StartRun(1);
///start a loop that show scalar, plot
}
void MainWindow::StopRun(){
pixie->StopRun();
pixie->PrintStatistics(0);
}
int main(int argc, char **argv) { int main(int argc, char **argv) {
printf(" Welcome to pixie16 DQ \n"); printf(" Welcome to pixie16 DQ \n");

View File

@ -37,14 +37,13 @@ public:
void HandleMenu(Int_t id); void HandleMenu(Int_t id);
void openPixie(); void openPixie();
void getADCTrace(); void getADCTrace();
void getBaseLine();
void openMainSettings(); void StartRun();
void StopRun();
void GoodBye(); void GoodBye();

View File

@ -14,7 +14,7 @@
#include "TString.h" #include "TString.h"
#include "TBenchmark.h" #include "TBenchmark.h"
#include "../armory/DataBlock.h" #include "../DataBlock.h"
#define MAX_CRATES 2 #define MAX_CRATES 2
#define MAX_BOARDS_PER_CRATE 13 #define MAX_BOARDS_PER_CRATE 13

View File

@ -2,4 +2,4 @@
rm -f Pixie16Msg.log rm -f Pixie16Msg.log
./example $1 --config=example_config.json ./testing/example $1 --config=testing/example_config.json

View File

@ -3,7 +3,7 @@
"slot": 2, "slot": 2,
"dsp": { "dsp": {
"ldr": "/usr/opt/Pixie16/pixie16_revf_general_12b250m_41847_2019-05-18/dsp/Pixie16DSP_revfgeneral_12b250m_r41847.ldr", "ldr": "/usr/opt/Pixie16/pixie16_revf_general_12b250m_41847_2019-05-18/dsp/Pixie16DSP_revfgeneral_12b250m_r41847.ldr",
"par": "/home/ryan/Pixie16/ryan/test_ryan.set", "par": "/home/ryan/Pixie16/GUI/test_ryan.set",
"var": "/usr/opt/Pixie16/pixie16_revf_general_12b250m_41847_2019-05-18/dsp/Pixie16DSP_revfgeneral_12b250m_r41847.var" "var": "/usr/opt/Pixie16/pixie16_revf_general_12b250m_41847_2019-05-18/dsp/Pixie16DSP_revfgeneral_12b250m_r41847.var"
}, },
"fpga": { "fpga": {

View File

@ -131,14 +131,14 @@ int main(int argc, char *argv[]){
pixie->PrintChannelsMainSettings(0); pixie->PrintChannelsMainSettings(0);
pixie->CaptureADCTrace(0, ch); //pixie->CaptureADCTrace(0, ch);
unsigned short * haha = pixie->GetADCTrace(); //unsigned short * haha = pixie->GetADCTrace();
double dt = pixie->GetChannelSetting("XDT", 0, ch); //double dt = pixie->GetChannelSetting("XDT", 0, ch);
for( int i = 0 ; i < pixie->GetADCTraceLength(); i++){ //for( int i = 0 ; i < pixie->GetADCTraceLength(); i++){
gTrace->SetPoint(i, i*dt, haha[i]); // gTrace->SetPoint(i, i*dt, haha[i]);
} //}
gTrace->GetXaxis()->SetTitle("time [us]"); //gTrace->GetXaxis()->SetTitle("time [us]");
canvas->cd(3); gTrace->Draw("APL"); //canvas->cd(3); gTrace->Draw("APL");
@ -152,7 +152,8 @@ int main(int argc, char *argv[]){
//canvas->cd(2); gTrace->Draw("APL"); //canvas->cd(2); gTrace->Draw("APL");
/* pixie->OpenFile("haha.evt", false);
printf("start run for %f sec\n", time); printf("start run for %f sec\n", time);
uint32_t StartTime = get_time(), CurrentTime = get_time(); uint32_t StartTime = get_time(), CurrentTime = get_time();
@ -163,6 +164,7 @@ int main(int argc, char *argv[]){
while( CurrentTime - StartTime < time * 1000 ){ while( CurrentTime - StartTime < time * 1000 ){
pixie->ReadData(0); pixie->ReadData(0);
pixie->SaveData();
while( pixie->GetNextWord() < pixie->GetnFIFOWords() ){ while( pixie->GetNextWord() < pixie->GetnFIFOWords() ){
@ -200,6 +202,13 @@ int main(int argc, char *argv[]){
} }
pixie->StopRun(); pixie->StopRun();
pixie->CloseFile();
canvas->cd(1); hch->Draw();
canvas->cd(2); hE->Draw();
canvas->Modified();
canvas->Update();
gSystem->ProcessEvents();
//pixie->PrintData(); //pixie->PrintData();