mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
removed jctb, use repository instead
This commit is contained in:
parent
b9d42d274c
commit
de8f04a058
@ -1,157 +0,0 @@
|
|||||||
#include <TApplication.h>
|
|
||||||
#include <TColor.h>
|
|
||||||
|
|
||||||
#include <TStyle.h>
|
|
||||||
#include <TROOT.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
#include "sls_detector_defs.h"
|
|
||||||
#include "sls_receiver_defs.h"
|
|
||||||
#include "jctbMain.h"
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
|
|
||||||
|
|
||||||
string afname, cfname, pfname;
|
|
||||||
int id=0;
|
|
||||||
|
|
||||||
int af=0, cf=0, pf=0;
|
|
||||||
|
|
||||||
|
|
||||||
cout << " *** " << argc << endl;
|
|
||||||
for (int ia=0; ia<argc; ia++) {
|
|
||||||
if (strcmp(argv[ia],"-alias")==0) {
|
|
||||||
if (ia+1<argc) {
|
|
||||||
afname=argv[ia+1];
|
|
||||||
ia++;
|
|
||||||
af=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (strcmp(argv[ia],"-config")==0) {
|
|
||||||
if (ia+1<argc) {
|
|
||||||
cfname=argv[ia+1];
|
|
||||||
ia++;
|
|
||||||
cf=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} else if (strcmp(argv[ia],"-par")==0) {
|
|
||||||
if (ia+1<argc) {
|
|
||||||
pfname=argv[ia+1];
|
|
||||||
ia++;
|
|
||||||
pf=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
} else if (strcmp(argv[ia],"-id")==0) {
|
|
||||||
if (ia+1<argc) {
|
|
||||||
id=atoi(argv[ia+1]);
|
|
||||||
ia++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
cout << " *** " << endl;
|
|
||||||
|
|
||||||
/****** Create detector ****************/
|
|
||||||
multiSlsDetector *myDet=new multiSlsDetector(id);
|
|
||||||
myDet->setOnline(slsDetectorDefs::ONLINE_FLAG);
|
|
||||||
|
|
||||||
|
|
||||||
if (cf) {
|
|
||||||
myDet->readConfigurationFile(cfname);
|
|
||||||
} else
|
|
||||||
cout << "No config file specified" << endl;
|
|
||||||
|
|
||||||
|
|
||||||
cout << "Created multi detector id " << id << " hostname " << myDet->getHostname() << endl;
|
|
||||||
|
|
||||||
if (pf) {
|
|
||||||
myDet->retrieveDetectorSetup(pfname);
|
|
||||||
} else
|
|
||||||
cout << "No parameter file specified" << endl;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********Create GUI stuff *******************/
|
|
||||||
TApplication theApp("App",&argc,argv);
|
|
||||||
|
|
||||||
|
|
||||||
gStyle->SetDrawBorder(0);
|
|
||||||
gStyle->SetCanvasColor(kWhite);
|
|
||||||
gStyle->SetCanvasDefH(800);
|
|
||||||
gStyle->SetCanvasDefW(800);
|
|
||||||
gStyle->SetCanvasBorderMode(0);
|
|
||||||
gStyle->SetPadBorderMode(0);
|
|
||||||
gStyle->SetPaintTextFormat("5.2f");
|
|
||||||
gStyle->SetLineWidth(2);
|
|
||||||
gStyle->SetTextSize(1.1);
|
|
||||||
gStyle->SetLabelSize(0.04,"xy");
|
|
||||||
gStyle->SetTitleSize(0.05,"xy");
|
|
||||||
gStyle->SetTitleOffset(1.0,"x");
|
|
||||||
gStyle->SetTitleOffset(1.1,"y");
|
|
||||||
gStyle->SetPadTopMargin(0.15);
|
|
||||||
gStyle->SetPadRightMargin(0.15);
|
|
||||||
gStyle->SetPadBottomMargin(0.15);
|
|
||||||
gStyle->SetPadLeftMargin(0.15);
|
|
||||||
gStyle->SetLegendBorderSize(1);
|
|
||||||
gStyle->SetFrameBorderMode(0);
|
|
||||||
gStyle->SetFrameFillColor(kWhite);
|
|
||||||
// gStyle->SetLegendFillColor(kWhite);
|
|
||||||
gStyle->SetTitleFillColor(kWhite);
|
|
||||||
gStyle->SetFillColor(kWhite);
|
|
||||||
gStyle->SetStatFontSize(0.03);
|
|
||||||
gStyle->SetStatBorderSize(1);
|
|
||||||
gStyle->SetStatFormat("6.4g");
|
|
||||||
gStyle->SetStatX(0.95);
|
|
||||||
gStyle->SetStatY(0.95);
|
|
||||||
gStyle->SetStatW(0.2);
|
|
||||||
gStyle->SetStatH(0.2);
|
|
||||||
gStyle->SetTitleX(0.1);
|
|
||||||
gStyle->SetTitleY(0.95);
|
|
||||||
gStyle->SetTitleBorderSize(0);
|
|
||||||
gStyle->SetTitleFontSize(0.05);
|
|
||||||
gROOT->SetStyle("Default");
|
|
||||||
|
|
||||||
|
|
||||||
TColor::InitializeColors();
|
|
||||||
const Int_t NRGBs = 5;
|
|
||||||
const Int_t NCont = 90;
|
|
||||||
|
|
||||||
Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
|
|
||||||
Double_t red[NRGBs] = { 0.00, 0.00, 0.87, 1.00, 0.51 };
|
|
||||||
Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
|
|
||||||
Double_t blue[NRGBs] = { 0.51, 1.00, 0.12, 0.00, 0.00 };
|
|
||||||
TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
|
|
||||||
gStyle->SetNumberContours(NCont);
|
|
||||||
|
|
||||||
|
|
||||||
gROOT->ForceStyle();
|
|
||||||
jctbMain *mf=new jctbMain(gClient->GetRoot(),myDet);
|
|
||||||
|
|
||||||
cout << " *** " << argc << endl;
|
|
||||||
for (int ia=0; ia<argc; ia++)
|
|
||||||
cout << argv[ia] << endl;
|
|
||||||
|
|
||||||
|
|
||||||
cout << " *** " << endl;
|
|
||||||
|
|
||||||
if (af)
|
|
||||||
mf->loadAlias(afname);
|
|
||||||
else
|
|
||||||
cout << "no alias specified" << endl;
|
|
||||||
|
|
||||||
theApp.Run();
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
|
|
||||||
SRC=jctbDict.cpp jctbMain.cpp jctbDacs.cpp jctbDac.cpp jctbPattern.cpp jctbSignals.cpp jctbSignal.cpp jctbAdcs.cpp jctbAcquisition.cpp
|
|
||||||
INCS=jctbSignals.h jctbSignal.h jctbPattern.h jctbDacs.h jctbDac.h jctbMain.h jctbAdcs.h jctbAcquisition.h
|
|
||||||
LINKDEF=jctbLinkDef.h
|
|
||||||
|
|
||||||
INCDIR=-I../slsReceiverSoftware/include/ -I../slsDetectorSoftware/multiSlsDetector/ -I../slsDetectorSoftware/slsDetector -I../slsDetectorSoftware/commonFiles -I../slsDetectorSoftware/slsDetectorAnalysis -I../slsDetectorSoftware/slsDetectorUsers -I../slsDetectorSoftware/usersFunctions
|
|
||||||
LDFLAG=-L../bin -lSlsDetector -L/usr/lib64/ -lpthread
|
|
||||||
|
|
||||||
MAIN=JCTBGui.cpp
|
|
||||||
|
|
||||||
DESTDIR?=../bin
|
|
||||||
|
|
||||||
all: $(DESTDIR)/JCTBGui
|
|
||||||
|
|
||||||
doc:
|
|
||||||
cd manual && make DESTDIR=$(DESTDIR)
|
|
||||||
|
|
||||||
htmldoc:
|
|
||||||
cd manual && make html DESTDIR=$(DESTDIR)
|
|
||||||
|
|
||||||
jctbDict.cpp: $(INCS) $(LINKDEF)
|
|
||||||
rootcint -f jctbDict.cpp -c $(INCS) $(LINKDEF)
|
|
||||||
|
|
||||||
$(DESTDIR)/JCTBGui: $(SRC) $(MAIN) $(LINKDEF) $(INCS)
|
|
||||||
g++ -DMYROOT `root-config --cflags --glibs` -lMinuit $(LDFLAG) -o JCTBGui $(INCDIR) $(SRC) $(MAIN)
|
|
||||||
mv JCTBGui $(DESTDIR)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f JCTBGui *.o jctbDict.*
|
|
@ -1,176 +0,0 @@
|
|||||||
# this is a comment (every line starting with no keyword is such)
|
|
||||||
|
|
||||||
# space in label not allowed (tbf)
|
|
||||||
|
|
||||||
#BITX bitName plotFlag plotColorRGB (from 0!)
|
|
||||||
|
|
||||||
|
|
||||||
#BIT1 compTestOUT 1 2 #you can put comments also here (leave a space bef. #)
|
|
||||||
|
|
||||||
BIT1 compTestIN
|
|
||||||
|
|
||||||
BIT32 curON
|
|
||||||
|
|
||||||
BIT2 side_clk
|
|
||||||
|
|
||||||
BIT3 side_din
|
|
||||||
|
|
||||||
BIT4 clear_shr
|
|
||||||
|
|
||||||
BIT5 bottom_din
|
|
||||||
|
|
||||||
BIT6 bottom_clk
|
|
||||||
|
|
||||||
BIT7 gHF
|
|
||||||
|
|
||||||
BIT31 bypassCDS
|
|
||||||
|
|
||||||
BIT8 ENprechPRE
|
|
||||||
|
|
||||||
BIT9 res
|
|
||||||
|
|
||||||
BIT30 pulseOFF
|
|
||||||
|
|
||||||
BIT27 connCDS #INVERTED NAME to match logical behaviour, chipname disconnCDS
|
|
||||||
|
|
||||||
BIT24 Dsg_1
|
|
||||||
|
|
||||||
BIT25 Dsg_2
|
|
||||||
|
|
||||||
BIT23 Dsg_3
|
|
||||||
|
|
||||||
BIT10 sto0
|
|
||||||
|
|
||||||
BIT11 sto1
|
|
||||||
|
|
||||||
BIT12 sto2
|
|
||||||
|
|
||||||
BIT13 resCDS
|
|
||||||
|
|
||||||
BIT14 prechargeConnect
|
|
||||||
|
|
||||||
BIT15 pulse
|
|
||||||
|
|
||||||
BIT21 PCT_mode
|
|
||||||
|
|
||||||
BIT16 res_DGS
|
|
||||||
|
|
||||||
#BIT26 dbit1
|
|
||||||
|
|
||||||
#BIT27 dbit0
|
|
||||||
|
|
||||||
#CMOS_IN
|
|
||||||
|
|
||||||
#CMOS_IN1 out_DGS
|
|
||||||
|
|
||||||
#LVDS_IN
|
|
||||||
|
|
||||||
# now the names of ADC channels (lt. 12 characters)
|
|
||||||
|
|
||||||
ADC1 T_boa.(C)
|
|
||||||
|
|
||||||
ADC2 Va+
|
|
||||||
|
|
||||||
ADC3 Vdd_ps
|
|
||||||
|
|
||||||
ADC4 Vsh
|
|
||||||
|
|
||||||
ADC5 Vcc_int
|
|
||||||
|
|
||||||
ADC6 Vcc_iochip
|
|
||||||
|
|
||||||
ADC7 Vcc1.8A
|
|
||||||
|
|
||||||
ADC8 Vcc1.8D
|
|
||||||
|
|
||||||
ADC9 T_chip
|
|
||||||
|
|
||||||
ADC10 _nc
|
|
||||||
|
|
||||||
ADC11 _nc
|
|
||||||
|
|
||||||
ADC12 _Vcc_io # 0.068 ohm resistor
|
|
||||||
|
|
||||||
ADC13 _nc # 0.068 ohm resistor
|
|
||||||
|
|
||||||
ADC14 _Va # 0.068 ohm resistor
|
|
||||||
|
|
||||||
ADC15 _nc
|
|
||||||
|
|
||||||
ADC16 _vdd_ana
|
|
||||||
|
|
||||||
I1 _I_va(mA) # this values are computed as spec.
|
|
||||||
|
|
||||||
I1a 2 #by the following lines ((ADCa-ADCb)/R)
|
|
||||||
|
|
||||||
I1b 14 # all the values comes mainly from the adapter board
|
|
||||||
|
|
||||||
I1r 0.068
|
|
||||||
|
|
||||||
I2 _I_vdd(mA) #
|
|
||||||
|
|
||||||
I2a 3
|
|
||||||
|
|
||||||
I2b 16
|
|
||||||
|
|
||||||
I2r 0.068 #
|
|
||||||
|
|
||||||
I3 _nn
|
|
||||||
|
|
||||||
I3a 14
|
|
||||||
|
|
||||||
I3b 2
|
|
||||||
|
|
||||||
I3r 0.068
|
|
||||||
|
|
||||||
I4 _I_io(mA)
|
|
||||||
|
|
||||||
I4a 6
|
|
||||||
|
|
||||||
I4b 12
|
|
||||||
|
|
||||||
I4r 0.068 #shuld be 5000000 for mA readout
|
|
||||||
|
|
||||||
# now the names of DAC channels (lt. 12 characters)
|
|
||||||
|
|
||||||
DAC7 vbp_colbuf
|
|
||||||
|
|
||||||
DAC8 vIpreCDS
|
|
||||||
|
|
||||||
DAC9 vIpre
|
|
||||||
|
|
||||||
DAC10 VprechPre
|
|
||||||
|
|
||||||
DAC11 prechargeV
|
|
||||||
|
|
||||||
DAC12 ibias_SFP
|
|
||||||
|
|
||||||
DAC1 vcasc_SFP
|
|
||||||
|
|
||||||
DAC3 VPH
|
|
||||||
|
|
||||||
DAC4 VPL
|
|
||||||
|
|
||||||
DAC2 ibias_CS
|
|
||||||
|
|
||||||
DAC5 vrefDGS
|
|
||||||
|
|
||||||
DAC6 vIpreDGS
|
|
||||||
|
|
||||||
DAC1 vcascSFP
|
|
||||||
|
|
||||||
DAC13 s2d_vcascp
|
|
||||||
|
|
||||||
#POT1 s2d_vcascn
|
|
||||||
|
|
||||||
DAC14 vin_com
|
|
||||||
|
|
||||||
DAC15 vout_com
|
|
||||||
|
|
||||||
DAC16 vb_sda
|
|
||||||
|
|
||||||
# number (1-16) of the adc "reading" the pot controlled VR. (should be always 2)
|
|
||||||
|
|
||||||
DACFORPOTVR 2
|
|
||||||
|
|
||||||
#SCHEMATIC jungfrau01_ADP.pdf #those files are located in doc/ folder
|
|
@ -1,228 +0,0 @@
|
|||||||
|
|
||||||
#include <TGButtonGroup.h>
|
|
||||||
#include <TGNumberEntry.h>
|
|
||||||
#include <TGLabel.h>
|
|
||||||
#include <TList.h>
|
|
||||||
#include <TThread.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "jctbAcquisition.h"
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
#include "sls_detector_defs.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbAcquisition::jctbAcquisition(TGVerticalFrame *page, multiSlsDetector *det) : TGGroupFrame(page,"Acquisition",kVerticalFrame), myDet(det) {
|
|
||||||
|
|
||||||
page->AddFrame(this,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
TGHorizontalFrame *hframe=new TGHorizontalFrame(this, 800,50);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
|
|
||||||
cFileSave= new TGCheckButton(hframe, "Output file: ");
|
|
||||||
hframe->AddFrame(cFileSave,new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
cFileSave->MapWindow();
|
|
||||||
cFileSave->SetTextJustify(kTextRight);
|
|
||||||
cFileSave->Connect("Toggled(Bool_t)","jctbAcquisition",this,"setFsave(Bool_t)");
|
|
||||||
|
|
||||||
|
|
||||||
eFname = new TGTextEntry(hframe, (myDet->getFileName()).c_str());
|
|
||||||
|
|
||||||
hframe->AddFrame(eFname,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
eFname->MapWindow();
|
|
||||||
eFname->Resize(150,30);
|
|
||||||
|
|
||||||
eFname->Connect("ReturnPressed()","jctbAcquisition",this,"setFname()");
|
|
||||||
|
|
||||||
|
|
||||||
TGLabel *label=new TGLabel(hframe,"index: ");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextRight);
|
|
||||||
|
|
||||||
|
|
||||||
eFindex = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELNoLimits);
|
|
||||||
hframe->AddFrame( eFindex,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eFindex->MapWindow();
|
|
||||||
eFindex->Resize(150,30);
|
|
||||||
TGTextEntry *e= eFindex->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbAcquisition",this,"setFindex()");
|
|
||||||
|
|
||||||
|
|
||||||
hframe=new TGHorizontalFrame(this, 800,50);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
label=new TGLabel(hframe,"Output directory: ");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextRight);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eOutdir = new TGTextEntry(hframe, (myDet->getFilePath()).c_str());
|
|
||||||
|
|
||||||
hframe->AddFrame(eOutdir,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
eOutdir->MapWindow();
|
|
||||||
eOutdir->Resize(150,30);
|
|
||||||
|
|
||||||
|
|
||||||
eOutdir->Connect("ReturnPressed()","jctbAcquisition",this,"setOutdir()");
|
|
||||||
|
|
||||||
hframe=new TGHorizontalFrame(this, 800,50);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
bStatus=new TGTextButton(hframe, "Start");
|
|
||||||
hframe->AddFrame(bStatus,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
bStatus->MapWindow();
|
|
||||||
bStatus->Connect("Clicked()","jctbAcquisition",this,"toggleAcquisition()");
|
|
||||||
|
|
||||||
|
|
||||||
acqThread = new TThread("acqThread",
|
|
||||||
jctbAcquisition::ThreadHandle,(void*)this);
|
|
||||||
// acqThread->Run();
|
|
||||||
|
|
||||||
myDet->registerProgressCallback(&progressCallback,(void*)this);
|
|
||||||
|
|
||||||
|
|
||||||
myDet->registerDataCallback(&dataCallback, (void*)this);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int jctbAcquisition::dataCallback(detectorData *data, int index, void* pArgs) {
|
|
||||||
|
|
||||||
|
|
||||||
cout <<"------"<< index << " " << data->npoints << " "<< data->npy << endl;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbAcquisition::setOutdir() {
|
|
||||||
|
|
||||||
myDet->setFilePath(eOutdir->GetText());
|
|
||||||
|
|
||||||
// // cout << "setting dac! "<< id << endl;
|
|
||||||
|
|
||||||
// myDet->setDAC(dacsEntry->GetIntNumber(), (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
|
|
||||||
|
|
||||||
// getValue();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAcquisition::setFname() {
|
|
||||||
myDet->setFileName(eFname->GetText());
|
|
||||||
// int val=myDet->setDAC(-1, (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
|
|
||||||
// char s[100];
|
|
||||||
|
|
||||||
// sprintf(s,"%d",val);
|
|
||||||
|
|
||||||
// dacsValue->SetText(s);
|
|
||||||
|
|
||||||
|
|
||||||
// return val;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAcquisition::setFindex() {
|
|
||||||
myDet->setFileIndex(eFindex->GetNumber());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void jctbAcquisition::setFsave(Bool_t b) {
|
|
||||||
myDet->enableWriteToFile(b);
|
|
||||||
eFname->SetState(b);
|
|
||||||
eOutdir->SetState(b);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAcquisition::update() {
|
|
||||||
|
|
||||||
|
|
||||||
eFname->SetText((myDet->getFileName()).c_str());
|
|
||||||
eOutdir->SetText((myDet->getFilePath()).c_str());
|
|
||||||
eFindex->SetNumber(myDet->getFileIndex());
|
|
||||||
cFileSave->SetOn(myDet->enableWriteToFile());
|
|
||||||
eFname->SetState(cFileSave->IsOn());
|
|
||||||
eOutdir->SetState(cFileSave->IsOn());
|
|
||||||
eFindex->SetState(cFileSave->IsOn());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbAcquisition::toggleAcquisition() {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (acqThread->GetState()==1 || acqThread->GetState()==6) {
|
|
||||||
bStatus->SetText("Stop");
|
|
||||||
acqThread->Run();
|
|
||||||
//myDet->startAcquisition();
|
|
||||||
StopFlag=0;
|
|
||||||
} else {
|
|
||||||
StopFlag=1;
|
|
||||||
myDet->stopAcquisition();
|
|
||||||
bStatus->SetText("Start");
|
|
||||||
// acqThread->Kill();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAcquisition::acquisitionFinished() {
|
|
||||||
bStatus->SetText("Start");
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAcquisition::startAcquisition(){
|
|
||||||
cout << "Detector started " << endl;
|
|
||||||
myDet->acquire();
|
|
||||||
}
|
|
||||||
|
|
||||||
void* jctbAcquisition::ThreadHandle(void *arg)
|
|
||||||
{
|
|
||||||
jctbAcquisition *acq = static_cast<jctbAcquisition*>(arg);
|
|
||||||
int i=0;
|
|
||||||
|
|
||||||
acq->startAcquisition();
|
|
||||||
acq->acquisitionFinished();
|
|
||||||
|
|
||||||
// while(!(classInstance->StopFlag))
|
|
||||||
// {
|
|
||||||
// cout << "thread " << i++ << endl;
|
|
||||||
// usleep(100000);
|
|
||||||
// }
|
|
||||||
//myDet->readFrame();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int jctbAcquisition::progressCallback(double f,void* arg) {
|
|
||||||
|
|
||||||
|
|
||||||
// jctbAcquisition *acq = static_cast<jctbAcquisition*>(arg);
|
|
||||||
|
|
||||||
|
|
||||||
cout << "*********" << f << "*******" << endl;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
#ifndef JCTBACQUISITION_H
|
|
||||||
#define JCTBACQUISITION_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TGTextEntry;
|
|
||||||
class TGLabel;
|
|
||||||
class TGNumberEntry;
|
|
||||||
class TGCheckButton;
|
|
||||||
class TThread;
|
|
||||||
|
|
||||||
class TGTextButton;
|
|
||||||
|
|
||||||
class multiSlsDetector;
|
|
||||||
class detectorData;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class jctbAcquisition : public TGGroupFrame {
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
TGTextEntry *eOutdir;
|
|
||||||
TGTextEntry *eFname;
|
|
||||||
TGNumberEntry *eFindex;
|
|
||||||
TGCheckButton *cFileSave;
|
|
||||||
TGTextButton *bStatus;
|
|
||||||
// TGTextButton
|
|
||||||
|
|
||||||
TThread *acqThread;
|
|
||||||
|
|
||||||
multiSlsDetector* myDet;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
jctbAcquisition(TGVerticalFrame*, multiSlsDetector*);
|
|
||||||
void setOutdir();
|
|
||||||
void setFname();
|
|
||||||
void setFsave(Bool_t);
|
|
||||||
void setFindex();
|
|
||||||
void toggleAcquisition();
|
|
||||||
static void* ThreadHandle(void *arg);
|
|
||||||
void update();
|
|
||||||
void acquisitionFinished();
|
|
||||||
|
|
||||||
void startAcquisition();
|
|
||||||
static int progressCallback(double,void*);
|
|
||||||
static int dataCallback(detectorData*, int, void*);
|
|
||||||
int StopFlag;
|
|
||||||
|
|
||||||
ClassDef(jctbAcquisition,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,215 +0,0 @@
|
|||||||
#include <TApplication.h>
|
|
||||||
#include <TGClient.h>
|
|
||||||
#include <TCanvas.h>
|
|
||||||
#include <TF1.h>
|
|
||||||
#include <TRandom.h>
|
|
||||||
#include <TGButton.h>
|
|
||||||
#include <TRootEmbeddedCanvas.h>
|
|
||||||
#include <TGButtonGroup.h>
|
|
||||||
#include <TGNumberEntry.h>
|
|
||||||
#include <TGLabel.h>
|
|
||||||
#include <TList.h>
|
|
||||||
#include <TGFileDialog.h>
|
|
||||||
#include <TGComboBox.h>
|
|
||||||
#include <TH2F.h>
|
|
||||||
#include <TColor.h>
|
|
||||||
#include <TH1F.h>
|
|
||||||
#include <TGraphErrors.h>
|
|
||||||
#include <TGColorSelect.h>
|
|
||||||
#include <THStack.h>
|
|
||||||
#include <TGTab.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "jctbAdcs.h"
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbAdc::jctbAdc(TGVerticalFrame *page, int i, multiSlsDetector *det)
|
|
||||||
: TGHorizontalFrame(page, 800,800), id(i), myDet(det) {
|
|
||||||
|
|
||||||
TGHorizontalFrame *hframe=this;
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "ADC%d", id);
|
|
||||||
|
|
||||||
sAdcLabel= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(sAdcLabel,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
sAdcLabel->MapWindow();
|
|
||||||
sAdcLabel->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sAdcEnable= new TGCheckButton(hframe, "Enable");
|
|
||||||
hframe->AddFrame( sAdcEnable,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
sAdcEnable->MapWindow();
|
|
||||||
sAdcEnable->SetOn(kTRUE);
|
|
||||||
sAdcEnable->SetEnabled(kFALSE);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sAdcPlot= new TGCheckButton(hframe, "Plot");
|
|
||||||
hframe->AddFrame( sAdcPlot,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
sAdcPlot->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
sAdcPlot->Connect("Toggled(Bool_t)","jctbAdc",this,"ToggledPlot(Bool_t)");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fColorSel = new TGColorSelect(hframe, id+1, 0);
|
|
||||||
hframe->AddFrame(fColorSel, new TGLayoutHints(kLHintsTop |
|
|
||||||
kLHintsLeft, 2, 0, 2, 2));
|
|
||||||
|
|
||||||
|
|
||||||
fColorSel->SetColor(TColor::Number2Pixel(id+1));
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
void jctbAdc::setAdcAlias(char *tit, int plot, int color) {
|
|
||||||
if (tit)
|
|
||||||
sAdcLabel->SetText(tit);
|
|
||||||
if (plot)
|
|
||||||
sAdcPlot->SetOn(kTRUE,kTRUE);
|
|
||||||
else
|
|
||||||
sAdcPlot->SetOn(kFALSE,kTRUE);
|
|
||||||
if (color>=0)
|
|
||||||
fColorSel->SetColor(color);
|
|
||||||
fColorSel->SetEnabled(sAdcPlot->IsOn());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string jctbAdc::getAdcAlias() {
|
|
||||||
|
|
||||||
char line[1000];
|
|
||||||
sprintf(line,"ADC%d %s %d %x\n",id,sAdcLabel->GetText()->Data(),sAdcPlot->IsOn(),fColorSel->GetColor());
|
|
||||||
return string(line);
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAdc::update() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void jctbAdc::ToggledPlot(Bool_t b){
|
|
||||||
|
|
||||||
Long_t mask=b<<id;
|
|
||||||
ToggledAdcPlot(mask);
|
|
||||||
fColorSel->SetEnabled(b);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAdc::ToggledAdcPlot(Int_t b){
|
|
||||||
|
|
||||||
|
|
||||||
Emit("ToggledAdcPlot(Int_t)", id);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbAdcs::jctbAdcs(TGVerticalFrame *page, multiSlsDetector *det)
|
|
||||||
: TGGroupFrame(page,"Adcs",kVerticalFrame), myDet(det) {
|
|
||||||
|
|
||||||
|
|
||||||
SetTitlePos(TGGroupFrame::kLeft);
|
|
||||||
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
|
|
||||||
TGHorizontalFrame* hframe=new TGHorizontalFrame(this, 800,800);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int idac=0;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TGHorizontalFrame* hhframe=new TGHorizontalFrame(this, 800,800);
|
|
||||||
AddFrame(hhframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hhframe->MapWindow();
|
|
||||||
|
|
||||||
TGVerticalFrame *vframe;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (idac=0; idac<NADCS; idac++) {
|
|
||||||
if (idac%16==0) {
|
|
||||||
|
|
||||||
|
|
||||||
vframe=new TGVerticalFrame(hhframe, 400,800);
|
|
||||||
hhframe->AddFrame(vframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
vframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
sAdc[idac]=new jctbAdc(vframe,idac,myDet);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbAdcs::update() {
|
|
||||||
|
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int jctbAdcs::setAdcAlias(string line) {
|
|
||||||
|
|
||||||
int is=-1, plot=0, color=-1;
|
|
||||||
char tit[100];
|
|
||||||
int narg=sscanf(line.c_str(),"ADC%d %s %d %x",&is,tit,&plot, &color);
|
|
||||||
if (narg<2)
|
|
||||||
return -1;
|
|
||||||
if (narg!=3)
|
|
||||||
color=-1;
|
|
||||||
if (is>=0 && is<NADCS) {
|
|
||||||
sAdc[is]->setAdcAlias(tit,plot,color);
|
|
||||||
}
|
|
||||||
return is;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
string jctbAdcs::getAdcAlias() {
|
|
||||||
|
|
||||||
ostringstream line;
|
|
||||||
|
|
||||||
for (int is=0; is<NADCS; is++)
|
|
||||||
line << sAdc[is]->getAdcAlias();
|
|
||||||
|
|
||||||
return line.str();
|
|
||||||
}
|
|
@ -1,83 +0,0 @@
|
|||||||
#ifndef JCTBADCS_H
|
|
||||||
#define JCTBADCS_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define NADCS 32
|
|
||||||
|
|
||||||
class TRootEmbeddedCanvas;
|
|
||||||
class TGButtonGroup;
|
|
||||||
class TGVerticalFrame;
|
|
||||||
class TGHorizontalFrame;
|
|
||||||
class TGTextEntry;
|
|
||||||
class TGLabel;
|
|
||||||
class TGNumberEntry;
|
|
||||||
class TH2F;
|
|
||||||
class TGComboBox;
|
|
||||||
class TGCheckButton;
|
|
||||||
class TGColorSelect;
|
|
||||||
|
|
||||||
class THStack;
|
|
||||||
class TGraphErrors;
|
|
||||||
class TGTextButton;
|
|
||||||
class TGTab;
|
|
||||||
|
|
||||||
class TGraph;
|
|
||||||
|
|
||||||
class multiSlsDetector;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class jctbAdc : public TGHorizontalFrame {
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
TGLabel *sAdcLabel;
|
|
||||||
TGCheckButton *sAdcEnable;
|
|
||||||
TGCheckButton *sAdcPlot;
|
|
||||||
|
|
||||||
TGColorSelect *fColorSel;
|
|
||||||
|
|
||||||
TGraph *gADC;
|
|
||||||
|
|
||||||
int id;
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
jctbAdc(TGVerticalFrame *page, int i, multiSlsDetector *det);
|
|
||||||
|
|
||||||
|
|
||||||
void setAdcAlias(char *tit, int plot, int color);
|
|
||||||
string getAdcAlias();
|
|
||||||
void ToggledAdcPlot(Int_t b);
|
|
||||||
void ToggledPlot(Bool_t b);
|
|
||||||
|
|
||||||
void update();
|
|
||||||
|
|
||||||
ClassDef(jctbAdc,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class jctbAdcs : public TGGroupFrame {
|
|
||||||
private:
|
|
||||||
|
|
||||||
jctbAdc *sAdc[NADCS];
|
|
||||||
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
jctbAdcs(TGVerticalFrame *page, multiSlsDetector *det);
|
|
||||||
int setAdcAlias(string line);
|
|
||||||
string getAdcAlias();
|
|
||||||
|
|
||||||
void update();
|
|
||||||
|
|
||||||
ClassDef(jctbAdcs,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,122 +0,0 @@
|
|||||||
|
|
||||||
#include <TGButtonGroup.h>
|
|
||||||
#include <TGNumberEntry.h>
|
|
||||||
#include <TGLabel.h>
|
|
||||||
#include <TList.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "jctbDac.h"
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
#include "sls_detector_defs.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbDac::jctbDac(TGGroupFrame *page, int idac, multiSlsDetector *det) : TGHorizontalFrame(page, 800,50) , id(idac), myDet(det) {
|
|
||||||
|
|
||||||
|
|
||||||
TGHorizontalFrame *hframe=this;
|
|
||||||
|
|
||||||
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "DAC %d:",idac);
|
|
||||||
|
|
||||||
dacsLabel= new TGLabel(hframe, tit);
|
|
||||||
|
|
||||||
hframe->AddFrame(dacsLabel,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
dacsLabel->MapWindow();
|
|
||||||
dacsLabel->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
dacsEntry = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 65535);
|
|
||||||
|
|
||||||
hframe->AddFrame(dacsEntry,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
dacsEntry->MapWindow();
|
|
||||||
dacsEntry->Resize(150,30);
|
|
||||||
|
|
||||||
|
|
||||||
dacsUnit= new TGCheckButton(hframe, "mV");
|
|
||||||
hframe->AddFrame( dacsUnit,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
dacsUnit->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "xxx");
|
|
||||||
dacsValue= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame( dacsValue,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 5, 5, 5, 5));
|
|
||||||
dacsValue->MapWindow();
|
|
||||||
dacsValue->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
TGTextEntry *e=dacsEntry->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbDac",this,"setValue()");
|
|
||||||
// cout << "(((((((((((((((((((((((((((((((" << dacsEntry->GetListOfSignals()->At(0)->IsA() << endl;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbDac::setLabel(char *tit, int mv) {
|
|
||||||
if(tit)
|
|
||||||
dacsLabel->SetText(tit);
|
|
||||||
if (mv>0)
|
|
||||||
dacsUnit->SetOn(kTRUE,kTRUE);
|
|
||||||
else if (mv==0)
|
|
||||||
dacsUnit->SetOn(kFALSE,kTRUE);
|
|
||||||
|
|
||||||
|
|
||||||
return id;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
string jctbDac::getLabel() {
|
|
||||||
|
|
||||||
ostringstream line;
|
|
||||||
|
|
||||||
line << "DAC" << dec << id << " " << dacsUnit->IsOn() << endl;
|
|
||||||
|
|
||||||
return line.str();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void jctbDac::setValue() {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// cout << "setting dac! "<< id << endl;
|
|
||||||
|
|
||||||
myDet->setDAC(dacsEntry->GetIntNumber(), (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
|
|
||||||
|
|
||||||
getValue();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int jctbDac::getValue() {
|
|
||||||
|
|
||||||
int val=myDet->setDAC(-1, (slsDetectorDefs::dacIndex)id, dacsUnit->IsOn());
|
|
||||||
char s[100];
|
|
||||||
cout << "dac " << id << " " << val << endl;
|
|
||||||
sprintf(s,"%d",val);
|
|
||||||
|
|
||||||
dacsValue->SetText(s);
|
|
||||||
|
|
||||||
|
|
||||||
return val;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
|||||||
#ifndef JCTBDAC_H
|
|
||||||
#define JCTBDAC_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TGTextEntry;
|
|
||||||
class TGLabel;
|
|
||||||
class TGNumberEntry;
|
|
||||||
class TGCheckButton;
|
|
||||||
|
|
||||||
|
|
||||||
class multiSlsDetector;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class jctbDac : public TGHorizontalFrame {
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
TGLabel *dacsLabel;
|
|
||||||
TGNumberEntry *dacsEntry;
|
|
||||||
TGCheckButton *dacsUnit;
|
|
||||||
TGLabel *dacsValue;
|
|
||||||
int id;
|
|
||||||
|
|
||||||
multiSlsDetector* myDet;
|
|
||||||
public:
|
|
||||||
jctbDac(TGGroupFrame*, int , multiSlsDetector*);
|
|
||||||
void setValue();
|
|
||||||
int getValue();
|
|
||||||
|
|
||||||
|
|
||||||
int setLabel(char *tit, int mv);
|
|
||||||
string getLabel();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ClassDef(jctbDac,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,88 +0,0 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "jctbDac.h"
|
|
||||||
#include "jctbDacs.h"
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
#include "sls_detector_defs.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbDacs::jctbDacs(TGVerticalFrame *page, multiSlsDetector *det) : TGGroupFrame(page,"DACs",kVerticalFrame) , myDet(det){
|
|
||||||
|
|
||||||
|
|
||||||
SetTitlePos(TGGroupFrame::kLeft);
|
|
||||||
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
// cout << "window mapped " << endl;
|
|
||||||
|
|
||||||
for (int idac=0; idac<NDACS; idac++) {
|
|
||||||
|
|
||||||
dacs[idac]=new jctbDac(this, idac, myDet);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int jctbDacs::setDacAlias(string line) {
|
|
||||||
|
|
||||||
int is=-1, mv=0;
|
|
||||||
char tit[100];
|
|
||||||
int narg=sscanf(line.c_str(),"DAC%d %s %d",&is,tit,&mv);
|
|
||||||
if (narg<2)
|
|
||||||
return -1;
|
|
||||||
if (is>=0 && is<NDACS)
|
|
||||||
dacs[is]->setLabel(tit,mv);
|
|
||||||
return is;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
string jctbDacs::getDacAlias() {
|
|
||||||
|
|
||||||
ostringstream line;
|
|
||||||
|
|
||||||
for (int i=0; i<NDACS; i++)
|
|
||||||
line << dacs[i]->getLabel() << endl;
|
|
||||||
return line.str();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string jctbDacs::getDacParameters() {
|
|
||||||
|
|
||||||
|
|
||||||
ostringstream line;
|
|
||||||
|
|
||||||
for (int i=0; i<NDACS; i++) {
|
|
||||||
//line << "dacs:" << i << " " << dacs[i]->getValue << endl;
|
|
||||||
line << "dac:" << i << " " << dacs[i]->getValue() << endl;
|
|
||||||
}
|
|
||||||
return line.str();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbDacs::update() {
|
|
||||||
|
|
||||||
for (int idac=0; idac<NDACS; idac++) {
|
|
||||||
|
|
||||||
dacs[idac]->getValue();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
#ifndef JCTBDACS_H
|
|
||||||
#define JCTBDACS_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define NDACS 16
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class multiSlsDetector;
|
|
||||||
class jctbDac;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
class jctbDacs : public TGGroupFrame {
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbDac *dacs[NDACS];
|
|
||||||
|
|
||||||
multiSlsDetector* myDet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
jctbDacs(TGVerticalFrame *page, multiSlsDetector*);
|
|
||||||
|
|
||||||
int setDacAlias(string line);
|
|
||||||
string getDacAlias();
|
|
||||||
string getDacParameters();
|
|
||||||
|
|
||||||
void update();
|
|
||||||
|
|
||||||
ClassDef(jctbDacs,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
4274
JCTBGui/jctbDict.cpp
4274
JCTBGui/jctbDict.cpp
File diff suppressed because it is too large
Load Diff
@ -1,98 +0,0 @@
|
|||||||
/********************************************************************
|
|
||||||
* jctbDict.h
|
|
||||||
* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED
|
|
||||||
* FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX().
|
|
||||||
* CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE.
|
|
||||||
********************************************************************/
|
|
||||||
#ifdef __CINT__
|
|
||||||
#error jctbDict.h/C is only for compilation. Abort cint.
|
|
||||||
#endif
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <string.h>
|
|
||||||
#define G__ANSIHEADER
|
|
||||||
#define G__DICTIONARY
|
|
||||||
#define G__PRIVATE_GVALUE
|
|
||||||
#include "G__ci.h"
|
|
||||||
#include "FastAllocString.h"
|
|
||||||
extern "C" {
|
|
||||||
extern void G__cpp_setup_tagtablejctbDict();
|
|
||||||
extern void G__cpp_setup_inheritancejctbDict();
|
|
||||||
extern void G__cpp_setup_typetablejctbDict();
|
|
||||||
extern void G__cpp_setup_memvarjctbDict();
|
|
||||||
extern void G__cpp_setup_globaljctbDict();
|
|
||||||
extern void G__cpp_setup_memfuncjctbDict();
|
|
||||||
extern void G__cpp_setup_funcjctbDict();
|
|
||||||
extern void G__set_cpp_environmentjctbDict();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#include "TObject.h"
|
|
||||||
#include "TMemberInspector.h"
|
|
||||||
#include "jctbSignals.h"
|
|
||||||
#include "jctbSignal.h"
|
|
||||||
#include "jctbPattern.h"
|
|
||||||
#include "jctbDacs.h"
|
|
||||||
#include "jctbDac.h"
|
|
||||||
#include "jctbMain.h"
|
|
||||||
#include "jctbAdcs.h"
|
|
||||||
#include "jctbAcquisition.h"
|
|
||||||
#include <algorithm>
|
|
||||||
namespace std { }
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#ifndef G__MEMFUNCBODY
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TClass;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TBuffer;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TMemberInspector;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TObject;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_string;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGObject;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TQObject;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGWindow;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGFrame;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGCompositeFrame;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGLayoutHints;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_iteratorlEbidirectional_iterator_tagcOTObjectmUcOlongcOconstsPTObjectmUmUcOconstsPTObjectmUaNgR;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGTextButton;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGVerticalFrame;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGHorizontalFrame;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGMainFrame;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGGroupFrame;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGNumberEntry;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_multiSlsDetector;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbSignal;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbSignals;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGTextEntry;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGLabel;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGCheckButton;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TH1I;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGColorSelect;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TRootEmbeddedCanvas;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGButtonGroup;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGTab;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbLoop;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbWait;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbPattern;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbDac;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbDacs;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGMenuBar;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGPopupMenu;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGDockableFrame;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbAdcs;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbAcquisition;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbMain;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TGraph;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_jctbAdc;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_TThread;
|
|
||||||
extern G__linked_taginfo G__jctbDictLN_detectorData;
|
|
||||||
|
|
||||||
/* STUB derived class for protected member access */
|
|
@ -1,11 +0,0 @@
|
|||||||
#pragma link C++ class jctbMain;
|
|
||||||
#pragma link C++ class jctbDacs;
|
|
||||||
#pragma link C++ class jctbDac;
|
|
||||||
#pragma link C++ class jctbSignals;
|
|
||||||
#pragma link C++ class jctbSignal;
|
|
||||||
#pragma link C++ class jctbAdc;
|
|
||||||
#pragma link C++ class jctbAdcs;
|
|
||||||
#pragma link C++ class jctbLoop;
|
|
||||||
#pragma link C++ class jctbWait;
|
|
||||||
#pragma link C++ class jctbPattern;
|
|
||||||
#pragma link C++ class jctbAcquisition;
|
|
@ -1,665 +0,0 @@
|
|||||||
#include <TApplication.h>
|
|
||||||
#include <TGClient.h>
|
|
||||||
#include <TCanvas.h>
|
|
||||||
#include <TF1.h>
|
|
||||||
#include <TRandom.h>
|
|
||||||
#include <TGButton.h>
|
|
||||||
#include <TRootEmbeddedCanvas.h>
|
|
||||||
#include <TGButtonGroup.h>
|
|
||||||
#include <TGNumberEntry.h>
|
|
||||||
#include <TGLabel.h>
|
|
||||||
#include <TList.h>
|
|
||||||
#include <TGFileDialog.h>
|
|
||||||
#include <TGComboBox.h>
|
|
||||||
#include <TH2F.h>
|
|
||||||
#include <TColor.h>
|
|
||||||
#include <TH1F.h>
|
|
||||||
#include <TGraphErrors.h>
|
|
||||||
#include <THStack.h>
|
|
||||||
#include <TGTab.h>
|
|
||||||
#include <TApplication.h>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <TGMenu.h>
|
|
||||||
#include <TGDockableFrame.h>
|
|
||||||
//#include <TGMenuBar.h>
|
|
||||||
//#include <TGPopupMenu.h>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
#include "jctbMain.h"
|
|
||||||
#include "jctbDacs.h"
|
|
||||||
#include "jctbSignals.h"
|
|
||||||
#include "jctbPattern.h"
|
|
||||||
#include "jctbAdcs.h"
|
|
||||||
#include "jctbAcquisition.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbMain::jctbMain(const TGWindow *p, multiSlsDetector *det)
|
|
||||||
: TGMainFrame(p,800,800) {
|
|
||||||
|
|
||||||
myDet=det;
|
|
||||||
|
|
||||||
Connect("CloseWindow()", "jctbMain", this, "CloseWindow()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// fMenuDock = new TGDockableFrame(this);
|
|
||||||
// AddFrame(fMenuDock, new TGLayoutHints(kLHintsExpandX, 0, 0, 1, 0));
|
|
||||||
// fMenuDock->SetWindowName("GuiTest Menu");
|
|
||||||
|
|
||||||
fMenuBarLayout = new TGLayoutHints(kLHintsTop | kLHintsExpandX);
|
|
||||||
fMenuBarItemLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0);
|
|
||||||
fMenuBarHelpLayout = new TGLayoutHints(kLHintsTop | kLHintsRight);
|
|
||||||
|
|
||||||
fMenuFile = new TGPopupMenu(gClient->GetRoot());
|
|
||||||
int im=0;
|
|
||||||
|
|
||||||
fMenuFile->AddEntry("Open Alias", im++);
|
|
||||||
fMenuFile->AddEntry("Save Alias", im++);
|
|
||||||
fMenuFile->AddSeparator();
|
|
||||||
fMenuFile->AddEntry("Open Parameters", im++);
|
|
||||||
fMenuFile->AddEntry("Save Parameters", im++);
|
|
||||||
fMenuFile->AddSeparator();
|
|
||||||
fMenuFile->AddEntry("Open Configuration", im++);
|
|
||||||
fMenuFile->AddEntry("Save Configuration", im++);
|
|
||||||
fMenuFile->AddSeparator();
|
|
||||||
fMenuFile->AddEntry("Open Pattern", im++);
|
|
||||||
fMenuFile->AddEntry("Save Pattern", im++);
|
|
||||||
fMenuFile->AddSeparator();
|
|
||||||
fMenuFile->AddEntry("Exit", im++);
|
|
||||||
|
|
||||||
fMenuFile->Connect("Activated(Int_t)", "jctbMain", this,
|
|
||||||
"HandleMenu(Int_t)");
|
|
||||||
// fMenuFile->Connect("PoppedUp()", "TestMainFrame", this, "HandlePopup()");
|
|
||||||
// fMenuFile->Connect("PoppedDown()", "TestMainFrame", this, "HandlePopdown()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// fCascade2Menu = new TGPopupMenu(gClient->GetRoot());
|
|
||||||
// fCascade2Menu->AddEntry("ID = 2&3", im++);
|
|
||||||
// fCascade2Menu->AddEntry("ID = 2&4", im++);
|
|
||||||
// fCascade2Menu->AddEntry("ID = 2&5", im++);
|
|
||||||
|
|
||||||
// fCascade1Menu = new TGPopupMenu(gClient->GetRoot());
|
|
||||||
// fCascade1Menu->AddEntry("ID = 4&1", 41);
|
|
||||||
// fCascade1Menu->AddEntry("ID = 4&2", 42);
|
|
||||||
// fCascade1Menu->AddEntry("ID = 4&3", 43);
|
|
||||||
// fCascade1Menu->AddSeparator();
|
|
||||||
// fCascade1Menu->AddPopup("Cascade&d 2", fCascade2Menu);
|
|
||||||
|
|
||||||
// fCascadeMenu = new TGPopupMenu(gClient->GetRoot());
|
|
||||||
// fCascadeMenu->AddEntry("ID = 5&1", 51);
|
|
||||||
// fCascadeMenu->AddEntry("ID = 5&2", 52);
|
|
||||||
// fCascadeMenu->AddEntry("ID = 5&3", 53);
|
|
||||||
// fCascadeMenu->AddSeparator();
|
|
||||||
// fCascadeMenu->AddPopup("&Cascaded 1", fCascade1Menu);
|
|
||||||
|
|
||||||
// fMenuTest = new TGPopupMenu(gClient->GetRoot());
|
|
||||||
// fMenuTest->AddLabel("Test different features...");
|
|
||||||
// fMenuTest->AddSeparator();
|
|
||||||
// fMenuTest->AddEntry("&Dialog...", im++);
|
|
||||||
// fMenuTest->AddEntry("&Message Box...", im++);
|
|
||||||
// fMenuTest->AddEntry("&Sliders...", im++);
|
|
||||||
// fMenuTest->AddEntry("Sh&utter...", im++);
|
|
||||||
// fMenuTest->AddEntry("&List Directory...", im++);
|
|
||||||
// fMenuTest->AddEntry("&File List...", im++);
|
|
||||||
// fMenuTest->AddEntry("&Progress...", im++);
|
|
||||||
// fMenuTest->AddEntry("&Number Entry...", im++);
|
|
||||||
// fMenuTest->AddEntry("F&ont Dialog...", im++);
|
|
||||||
// fMenuTest->AddSeparator();
|
|
||||||
// fMenuTest->AddEntry("Add New Menus", im++);
|
|
||||||
// fMenuTest->AddSeparator();
|
|
||||||
// fMenuTest->AddPopup("&Cascaded menus", fCascadeMenu);
|
|
||||||
|
|
||||||
// fMenuView = new TGPopupMenu(gClient->GetRoot());
|
|
||||||
// fMenuView->AddEntry("&Dock", im++);
|
|
||||||
// fMenuView->AddEntry("&Undock", im++);
|
|
||||||
// fMenuView->AddSeparator();
|
|
||||||
// fMenuView->AddEntry("Enable U&ndock", im++);
|
|
||||||
// fMenuView->AddEntry("Enable &Hide", im++);
|
|
||||||
// fMenuView->DisableEntry(im);
|
|
||||||
|
|
||||||
// fMenuDock->EnableUndock(kTRUE);
|
|
||||||
// fMenuDock->EnableHide(kTRUE);
|
|
||||||
// fMenuView->CheckEntry(im);
|
|
||||||
// fMenuView->CheckEntry(im);
|
|
||||||
|
|
||||||
// // When using the DockButton of the MenuDock,
|
|
||||||
// // the states 'enable' and 'disable' of menus have to be updated.
|
|
||||||
// fMenuDock->Connect("Undocked()", "TestMainFrame", this, "HandleMenu(=M_VIEW_UNDOCK)");
|
|
||||||
|
|
||||||
// fMenuHelp = new TGPopupMenu(gClient->GetRoot());
|
|
||||||
// fMenuHelp->AddEntry("&Contents", im++);
|
|
||||||
// fMenuHelp->AddEntry("&Search...", im++);
|
|
||||||
// fMenuHelp->AddSeparator();
|
|
||||||
// fMenuHelp->AddEntry("&About", im++);
|
|
||||||
|
|
||||||
// fMenuNew1 = new TGPopupMenu();
|
|
||||||
// fMenuNew1->AddEntry("Remove New Menus", im++);
|
|
||||||
|
|
||||||
// fMenuNew2 = new TGPopupMenu();
|
|
||||||
// fMenuNew2->AddEntry("Remove New Menus", im++);
|
|
||||||
|
|
||||||
// Menu button messages are handled by the main frame (i.e. "this")
|
|
||||||
// HandleMenu() method.
|
|
||||||
// fMenuFile->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fMenuFile->Connect("PoppedUp()", "TestMainFrame", this, "HandlePopup()");
|
|
||||||
// fMenuFile->Connect("PoppedDown()", "TestMainFrame", this, "HandlePopdown()");
|
|
||||||
// fMenuTest->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fMenuView->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fMenuHelp->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fCascadeMenu->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fCascade1Menu->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fCascade2Menu->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fMenuNew1->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
// fMenuNew2->Connect("Activated(Int_t)", "TestMainFrame", this,
|
|
||||||
// "HandleMenu(Int_t)");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TGVerticalFrame *vframe=new TGVerticalFrame(this, 800,1200); //main frame
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fMenuBar = new TGMenuBar(vframe, 1, 1, kHorizontalFrame);
|
|
||||||
fMenuBar->AddPopup("&File", fMenuFile, fMenuBarItemLayout);
|
|
||||||
// fMenuBar->AddPopup("&Test", fMenuTest, fMenuBarItemLayout);
|
|
||||||
// fMenuBar->AddPopup("&View", fMenuView, fMenuBarItemLayout);
|
|
||||||
// fMenuBar->AddPopup("&Help", fMenuHelp, fMenuBarHelpLayout);
|
|
||||||
|
|
||||||
vframe->AddFrame(fMenuBar, fMenuBarLayout);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TGHorizontalFrame* hpage=new TGHorizontalFrame(vframe, 800,1200); //horizontal frame. Inside there should be the tab and the canvas
|
|
||||||
mtab=new TGTab(hpage, 1500, 1200); //tab!
|
|
||||||
// page=new TGVerticalFrame(mtab, 1500,1200);
|
|
||||||
|
|
||||||
TGCompositeFrame *tf = mtab->AddTab("DACs");
|
|
||||||
TGVerticalFrame *page=new TGVerticalFrame(tf, 1500,1200);
|
|
||||||
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
dacs=new jctbDacs(page, myDet);
|
|
||||||
|
|
||||||
|
|
||||||
tf = mtab->AddTab("Signals");
|
|
||||||
page=new TGVerticalFrame(tf, 1500,1200);
|
|
||||||
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
sig=new jctbSignals(page, myDet);
|
|
||||||
|
|
||||||
|
|
||||||
tf = mtab->AddTab("ADCs");
|
|
||||||
page=new TGVerticalFrame(tf, 1500,1200);
|
|
||||||
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
adcs=new jctbAdcs(page, myDet);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tf = mtab->AddTab("Pattern");
|
|
||||||
page=new TGVerticalFrame(tf, 1500,1200);
|
|
||||||
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
pat=new jctbPattern(page, myDet);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tf = mtab->AddTab("Acquisition");
|
|
||||||
page=new TGVerticalFrame(tf, 1500,1200);
|
|
||||||
tf->AddFrame(page, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
acq=new jctbAcquisition(page, myDet);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hpage->AddFrame(mtab,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
|
|
||||||
vframe->AddFrame(hpage,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
|
|
||||||
AddFrame(vframe,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 10,10,10,1));
|
|
||||||
vframe->MapWindow();
|
|
||||||
hpage->MapWindow();
|
|
||||||
mtab->MapWindow();
|
|
||||||
page->MapWindow();
|
|
||||||
|
|
||||||
// Sets window name and shows the main frame
|
|
||||||
SetWindowName("JCTB Gui");
|
|
||||||
MapSubwindows();
|
|
||||||
MapWindow();
|
|
||||||
Resize(1500,1200);
|
|
||||||
|
|
||||||
|
|
||||||
// // Creates widgets of the example
|
|
||||||
fEcanvas = new TRootEmbeddedCanvas ("Ecanvas",hpage,800,800);
|
|
||||||
fEcanvas->Resize();
|
|
||||||
fEcanvas->GetCanvas()->Update();
|
|
||||||
|
|
||||||
hpage->AddFrame(fEcanvas, new TGLayoutHints(kLHintsBottom | kLHintsCenterX | kLHintsExpandX | kLHintsExpandY, 10,10,10,10));
|
|
||||||
|
|
||||||
|
|
||||||
fEcanvas->MapWindow();
|
|
||||||
hpage->MapSubwindows();
|
|
||||||
mtab->Connect("Selected(Int_t)","jctbMain",this,"tabSelected(Int_t)");
|
|
||||||
|
|
||||||
|
|
||||||
tabSelected(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbMain::CloseWindow() {
|
|
||||||
gApplication->Terminate();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbMain::HandleMenu(Int_t id)
|
|
||||||
{
|
|
||||||
// Handle menu items.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch (id) {
|
|
||||||
|
|
||||||
case 0: // fMenuFile->AddEntry("Open Alias", im++);
|
|
||||||
cout << "Open Alias" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
|
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
loadAlias(fi.fFilename);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1: // fMenuFile->AddEntry("Save Alias", im++);
|
|
||||||
cout << "Save Alias" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
|
|
||||||
printf("Save file: %s (dir: %s)\n", fi.fFilename);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
saveAlias(fi.fFilename);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: //fMenuFile->AddEntry("Open Parameters", im++);
|
|
||||||
cout << "Open Parameters" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
|
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
loadParameters(fi.fFilename);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: //fMenuFile->AddEntry("Save Parameters", im++);
|
|
||||||
cout << "Save Parameters" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
|
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
saveParameters(fi.fFilename);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4: // fMenuFile->AddEntry("Open Configuration", im++);
|
|
||||||
cout << "Open configuration" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
|
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5: // fMenuFile->AddEntry("Save Configuration", im++);
|
|
||||||
cout << "Save configuration" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
|
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 6: //fMenuFile->AddEntry("Open Pattern", im++);
|
|
||||||
cout << "Open pattern" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDOpen, &fi);
|
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 7: //fMenuFile->AddEntry("Save Pattern", im++);
|
|
||||||
cout << "Save pattern" << endl;
|
|
||||||
{
|
|
||||||
static TString dir(".");
|
|
||||||
TGFileInfo fi;
|
|
||||||
//fi.fFileTypes = filetypes;
|
|
||||||
fi.fIniDir = StrDup(dir);
|
|
||||||
printf("fIniDir = %s\n", fi.fIniDir);
|
|
||||||
new TGFileDialog(gClient->GetRoot(), this, kFDSave, &fi);
|
|
||||||
printf("Open file: %s (dir: %s)\n", fi.fFilename, fi.fIniDir);
|
|
||||||
// dir = fi.fIniDir;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 8: // fMenuFile->AddEntry("Exit", im++);
|
|
||||||
CloseWindow();
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf("Menu item %d selected\n", id);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbMain::loadConfiguration(string fname) {
|
|
||||||
|
|
||||||
myDet->readConfigurationFile(fname);
|
|
||||||
|
|
||||||
// string line;
|
|
||||||
// int i;
|
|
||||||
// ifstream myfile (fname.c_str());
|
|
||||||
// if (myfile.is_open())
|
|
||||||
// {
|
|
||||||
// while ( getline (myfile,line) )
|
|
||||||
// {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// }
|
|
||||||
// myfile.close();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// else cout << "Unable to open file";
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbMain::saveConfiguration(string fname) {
|
|
||||||
|
|
||||||
|
|
||||||
string line;
|
|
||||||
int i;
|
|
||||||
ofstream myfile (fname.c_str());
|
|
||||||
if (myfile.is_open())
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
myfile.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
else cout << "Unable to open file";
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbMain::loadParameters(string fname) {
|
|
||||||
|
|
||||||
myDet->retrieveDetectorSetup(fname);
|
|
||||||
|
|
||||||
// string line;
|
|
||||||
// int i;
|
|
||||||
// ifstream myfile (fname.c_str());
|
|
||||||
// if (myfile.is_open())
|
|
||||||
// {
|
|
||||||
// while ( getline (myfile,line) )
|
|
||||||
// {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// }
|
|
||||||
// myfile.close();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// else cout << "Unable to open file";
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbMain::saveParameters(string fname) {
|
|
||||||
|
|
||||||
|
|
||||||
string line;
|
|
||||||
int i;
|
|
||||||
ofstream myfile (fname.c_str());
|
|
||||||
if (myfile.is_open())
|
|
||||||
{
|
|
||||||
|
|
||||||
myfile << dacs->getDacParameters();
|
|
||||||
myfile.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
else cout << "Unable to open file";
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbMain::loadAlias(string fname) {
|
|
||||||
|
|
||||||
|
|
||||||
string line;
|
|
||||||
int i;
|
|
||||||
ifstream myfile (fname.c_str());
|
|
||||||
if (myfile.is_open())
|
|
||||||
{
|
|
||||||
while ( getline (myfile,line) )
|
|
||||||
{
|
|
||||||
// cout << line ;
|
|
||||||
if (sscanf(line.c_str(),"BIT%d",&i)>0) {
|
|
||||||
//cout << "*******" << line<< endl;
|
|
||||||
sig->setSignalAlias(line);
|
|
||||||
// cout << line ;
|
|
||||||
} else if (sscanf(line.c_str(),"DAC%d",&i)>0) {
|
|
||||||
dacs->setDacAlias(line);
|
|
||||||
// cout << "+++++++++" << line<< endl;
|
|
||||||
} else if (sscanf(line.c_str(),"ADC%d",&i)>0) {
|
|
||||||
adcs->setAdcAlias(line);
|
|
||||||
// cout << "---------" << line<< endl;
|
|
||||||
} // else
|
|
||||||
// cout << "<<<<<<<" << line << endl;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
myfile.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
else cout << "Unable to open file";
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbMain::saveAlias(string fname) {
|
|
||||||
|
|
||||||
|
|
||||||
string line;
|
|
||||||
int i;
|
|
||||||
ofstream myfile (fname.c_str());
|
|
||||||
if (myfile.is_open())
|
|
||||||
{
|
|
||||||
//while ( getline (myfile,line) )
|
|
||||||
// {
|
|
||||||
// cout << line ;
|
|
||||||
//if (sscanf(line.c_str(),"BIT%d",&i)>0) {
|
|
||||||
//cout << "*******" << line<< endl;
|
|
||||||
myfile << sig->getSignalAlias();
|
|
||||||
// cout << line ;
|
|
||||||
// } else if (sscanf(line.c_str(),"DAC%d",&i)>0) {
|
|
||||||
myfile << dacs->getDacAlias();
|
|
||||||
// cout << "+++++++++" << line<< endl;
|
|
||||||
// } else if (sscanf(line.c_str(),"ADC%d",&i)>0) {
|
|
||||||
myfile << adcs->getAdcAlias();
|
|
||||||
// cout << "---------" << line<< endl;
|
|
||||||
// } // else
|
|
||||||
// cout << "<<<<<<<" << line << endl;
|
|
||||||
|
|
||||||
|
|
||||||
//}
|
|
||||||
myfile.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
else cout << "Unable to open file";
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbMain::tabSelected(Int_t i) {
|
|
||||||
|
|
||||||
// cout << "Selected tab " << i << endl;
|
|
||||||
// cout << "Current tab is " << mtab->GetCurrent() << endl;
|
|
||||||
|
|
||||||
switch (i) {
|
|
||||||
|
|
||||||
case 0: //dacs
|
|
||||||
dacs->update();
|
|
||||||
break;
|
|
||||||
case 1: //signals
|
|
||||||
sig->update();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: //adcs
|
|
||||||
adcs->update();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3: //pattern
|
|
||||||
pat->update();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4: //acq
|
|
||||||
acq->update();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,94 +0,0 @@
|
|||||||
#ifndef JCTBMAIN_H
|
|
||||||
#define JCTBMAIN_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
class TRootEmbeddedCanvas;
|
|
||||||
class TGButtonGroup;
|
|
||||||
class TGVerticalFrame;
|
|
||||||
class TGHorizontalFrame;
|
|
||||||
class TGTextEntry;
|
|
||||||
class TGLabel;
|
|
||||||
class TGNumberEntry;
|
|
||||||
class TH2F;
|
|
||||||
class TGComboBox;
|
|
||||||
class TGCheckButton;
|
|
||||||
|
|
||||||
class THStack;
|
|
||||||
class TGraphErrors;
|
|
||||||
class TGTextButton;
|
|
||||||
class TGTab;
|
|
||||||
|
|
||||||
class TGMenuBar;
|
|
||||||
class TGPopupMenu;
|
|
||||||
class TGDockableFrame;
|
|
||||||
class TGLayoutHints;
|
|
||||||
|
|
||||||
class jctbDacs;
|
|
||||||
|
|
||||||
|
|
||||||
class jctbSignals;
|
|
||||||
|
|
||||||
class multiSlsDetector;
|
|
||||||
|
|
||||||
class jctbPattern;
|
|
||||||
class jctbAdcs;
|
|
||||||
class jctbAcquisition;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class jctbMain : public TGMainFrame {
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TRootEmbeddedCanvas *fEcanvas;
|
|
||||||
TRootEmbeddedCanvas *fModulecanvas;
|
|
||||||
TGButtonGroup *br;
|
|
||||||
|
|
||||||
TGTab *mtab;
|
|
||||||
|
|
||||||
|
|
||||||
jctbDacs *dacs;
|
|
||||||
|
|
||||||
|
|
||||||
jctbSignals *sig;
|
|
||||||
jctbAdcs *adcs;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbPattern *pat;
|
|
||||||
jctbAcquisition *acq;
|
|
||||||
|
|
||||||
TGDockableFrame *fMenuDock;
|
|
||||||
|
|
||||||
TGMenuBar *fMenuBar;
|
|
||||||
TGPopupMenu *fMenuFile, *fMenuTest, *fMenuView, *fMenuHelp;
|
|
||||||
TGPopupMenu *fCascadeMenu, *fCascade1Menu, *fCascade2Menu;
|
|
||||||
TGPopupMenu *fMenuNew1, *fMenuNew2;
|
|
||||||
TGLayoutHints *fMenuBarLayout, *fMenuBarItemLayout, *fMenuBarHelpLayout;
|
|
||||||
|
|
||||||
public:
|
|
||||||
jctbMain(const TGWindow *p, multiSlsDetector *det);
|
|
||||||
|
|
||||||
|
|
||||||
int loadAlias(string fname);
|
|
||||||
int saveAlias(string fname);
|
|
||||||
int loadParameters(string fname);
|
|
||||||
int saveParameters(string fname);
|
|
||||||
int loadConfiguration(string fname);
|
|
||||||
int saveConfiguration(string fname);
|
|
||||||
void tabSelected(Int_t);
|
|
||||||
|
|
||||||
void CloseWindow();
|
|
||||||
|
|
||||||
void HandleMenu(Int_t);
|
|
||||||
|
|
||||||
ClassDef(jctbMain,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,532 +0,0 @@
|
|||||||
#include <TApplication.h>
|
|
||||||
#include <TGClient.h>
|
|
||||||
#include <TCanvas.h>
|
|
||||||
#include <TF1.h>
|
|
||||||
#include <TRandom.h>
|
|
||||||
#include <TGButton.h>
|
|
||||||
#include <TRootEmbeddedCanvas.h>
|
|
||||||
#include <TGButtonGroup.h>
|
|
||||||
#include <TGNumberEntry.h>
|
|
||||||
#include <TGLabel.h>
|
|
||||||
#include <TList.h>
|
|
||||||
#include <TGFileDialog.h>
|
|
||||||
#include <TGComboBox.h>
|
|
||||||
#include <TH2F.h>
|
|
||||||
#include <TColor.h>
|
|
||||||
#include <TH1F.h>
|
|
||||||
#include <TGraphErrors.h>
|
|
||||||
#include <THStack.h>
|
|
||||||
#include <TGTab.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "jctbPattern.h"
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbLoop::jctbLoop(TGGroupFrame *page, int i, multiSlsDetector *det) : TGHorizontalFrame(page, 800,800), id(i), myDet(det) {
|
|
||||||
|
|
||||||
TGHorizontalFrame *hframe=this;
|
|
||||||
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "Loop %d Repetitions: ", id);
|
|
||||||
|
|
||||||
TGLabel *label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eLoopNumber = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELNoLimits);
|
|
||||||
hframe->AddFrame( eLoopNumber,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eLoopNumber->MapWindow();
|
|
||||||
eLoopNumber->Resize(150,30);
|
|
||||||
TGTextEntry *e= eLoopNumber->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbLoop",this,"setNLoops()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "Start Address: ");
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eLoopStartAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 1024);
|
|
||||||
hframe->AddFrame( eLoopStartAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eLoopStartAddr->MapWindow();
|
|
||||||
eLoopStartAddr->Resize(150,30);
|
|
||||||
|
|
||||||
eLoopStartAddr->SetState(kFALSE);
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, "Stop Address: ");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eLoopStopAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 1024);
|
|
||||||
hframe->AddFrame( eLoopStopAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eLoopStopAddr->MapWindow();
|
|
||||||
eLoopStopAddr->Resize(150,30);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eLoopStopAddr->SetState(kFALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbLoop::setNLoops() {
|
|
||||||
|
|
||||||
int start, stop, n;
|
|
||||||
|
|
||||||
|
|
||||||
start=-1;
|
|
||||||
stop=-1;
|
|
||||||
n=eLoopNumber->GetNumber();
|
|
||||||
myDet->setCTBPatLoops(id,start, stop,n);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbLoop::update() {
|
|
||||||
|
|
||||||
int start, stop, n;
|
|
||||||
|
|
||||||
|
|
||||||
start=-1;
|
|
||||||
stop=-1;
|
|
||||||
n=-1;
|
|
||||||
myDet->setCTBPatLoops(id,start, stop,n);
|
|
||||||
eLoopStartAddr->SetHexNumber(start);
|
|
||||||
eLoopStopAddr->SetHexNumber(stop);
|
|
||||||
eLoopNumber->SetNumber(n);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbWait::jctbWait(TGGroupFrame *page, int i, multiSlsDetector *det) : TGHorizontalFrame(page, 800,800), id(i), myDet(det) {
|
|
||||||
|
|
||||||
char tit[100];
|
|
||||||
TGHorizontalFrame *hframe=this;
|
|
||||||
page->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "Wait %d (run clk): ", id);
|
|
||||||
|
|
||||||
TGLabel *label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eWaitTime = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELNoLimits);
|
|
||||||
hframe->AddFrame( eWaitTime,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eWaitTime->MapWindow();
|
|
||||||
eWaitTime->Resize(150,30);
|
|
||||||
TGTextEntry *e= eWaitTime->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbWait",this,"setWaitTime()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "Wait Address: ");
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eWaitAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 1024);
|
|
||||||
hframe->AddFrame( eWaitAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eWaitAddr->MapWindow();
|
|
||||||
eWaitAddr->Resize(150,30);
|
|
||||||
|
|
||||||
eWaitAddr->SetState(kFALSE);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbWait::setWaitTime() {
|
|
||||||
|
|
||||||
|
|
||||||
Long64_t t=eWaitTime->GetNumber();
|
|
||||||
|
|
||||||
t=myDet->setCTBPatWaitTime(id,t);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbWait::update() {
|
|
||||||
|
|
||||||
int start, stop, n, addr;
|
|
||||||
|
|
||||||
Long64_t t=-1;
|
|
||||||
|
|
||||||
|
|
||||||
t=myDet->setCTBPatWaitTime(id,t);
|
|
||||||
addr=myDet->setCTBPatWaitAddr(id,-1);
|
|
||||||
eWaitAddr->SetHexNumber(addr);
|
|
||||||
eWaitTime->SetNumber(t);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbPattern::jctbPattern(TGVerticalFrame *page, multiSlsDetector *det)
|
|
||||||
: TGGroupFrame(page,"Pattern",kVerticalFrame), myDet(det) {
|
|
||||||
|
|
||||||
|
|
||||||
SetTitlePos(TGGroupFrame::kLeft);
|
|
||||||
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
|
|
||||||
TGHorizontalFrame* hframe=new TGHorizontalFrame(this, 800,800);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "ADC Clock Frequency (MHz): ");
|
|
||||||
|
|
||||||
TGLabel *label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eAdcClkFreq = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 40);
|
|
||||||
hframe->AddFrame( eAdcClkFreq,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eAdcClkFreq->MapWindow();
|
|
||||||
eAdcClkFreq->Resize(150,30);
|
|
||||||
TGTextEntry *e= eAdcClkFreq->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbPattern",this,"setAdcFreq()");
|
|
||||||
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, " Phase (0.15ns step): ");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eAdcClkPhase = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 200);
|
|
||||||
hframe->AddFrame( eAdcClkPhase,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eAdcClkPhase->MapWindow();
|
|
||||||
eAdcClkPhase->Resize(150,30);
|
|
||||||
e= eAdcClkPhase->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbPattern",this,"setAdcPhase()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hframe=new TGHorizontalFrame(this, 800,800);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "Run Clock Frequency (MHz): ");
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eRunClkFreq = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 160);
|
|
||||||
hframe->AddFrame( eRunClkFreq,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eRunClkFreq->MapWindow();
|
|
||||||
eRunClkFreq->Resize(150,30);
|
|
||||||
e= eRunClkFreq->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbPattern",this,"setRunFreq()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, " Phase (0.15ns step): ");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eRunClkPhase = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 200);
|
|
||||||
hframe->AddFrame( eRunClkPhase,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eRunClkPhase->MapWindow();
|
|
||||||
eRunClkPhase->Resize(150,30);
|
|
||||||
e= eRunClkPhase->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbPattern",this,"setRunPhase()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hframe=new TGHorizontalFrame(this, 800,800);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "Number of frames: ");
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eFrames = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELNoLimits);
|
|
||||||
hframe->AddFrame( eFrames,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eFrames->MapWindow();
|
|
||||||
eFrames->Resize(150,30);
|
|
||||||
e= eFrames->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbPattern",this,"setFrames()");
|
|
||||||
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, " Period (s): ");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ePeriod = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESInteger,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELNoLimits);
|
|
||||||
hframe->AddFrame( ePeriod,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
ePeriod->MapWindow();
|
|
||||||
ePeriod->Resize(150,30);
|
|
||||||
e= ePeriod->TGNumberEntry::GetNumberEntry();
|
|
||||||
e->Connect("ReturnPressed()","jctbPattern",this,"setPeriod()");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hframe=new TGHorizontalFrame(this, 800,800);
|
|
||||||
AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "Start Address: ");
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eStartAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 1024);
|
|
||||||
hframe->AddFrame( eStartAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eStartAddr->MapWindow();
|
|
||||||
eStartAddr->Resize(150,30);
|
|
||||||
|
|
||||||
eStartAddr->SetState(kFALSE);
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, "Stop Address: ");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eStopAddr = new TGNumberEntry(hframe, 0, 9,999, TGNumberFormat::kNESHex,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELLimitMinMax,
|
|
||||||
0, 1024);
|
|
||||||
hframe->AddFrame( eStopAddr,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eStopAddr->MapWindow();
|
|
||||||
eStopAddr->Resize(150,30);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eStopAddr->SetState(kFALSE);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int idac=0;
|
|
||||||
for (idac=0; idac<NLOOPS; idac++) {
|
|
||||||
|
|
||||||
eLoop[idac]=new jctbLoop(this,idac,myDet);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (idac=0; idac<NWAITS; idac++) {
|
|
||||||
|
|
||||||
|
|
||||||
eWait[idac]=new jctbWait(this,idac,myDet);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbPattern::update() {
|
|
||||||
|
|
||||||
int start, stop, n, addr;
|
|
||||||
|
|
||||||
Long_t t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
eAdcClkFreq->SetNumber(myDet->setSpeed(slsDetectorDefs::ADC_CLOCK,-1));
|
|
||||||
eRunClkFreq->SetNumber(myDet->setSpeed(slsDetectorDefs::CLOCK_DIVIDER,-1));
|
|
||||||
//ADC_PHASE
|
|
||||||
//PHASE_SHIFT
|
|
||||||
eFrames->SetNumber(myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,-1));
|
|
||||||
ePeriod->SetNumber(((Double_t)myDet->setTimer(slsDetectorDefs::FRAME_PERIOD,-1))*1E-9);
|
|
||||||
|
|
||||||
start=-1;
|
|
||||||
stop=-1;
|
|
||||||
n=-1;
|
|
||||||
myDet->setCTBPatLoops(-1,start, stop,n);
|
|
||||||
eStartAddr->SetHexNumber(start);
|
|
||||||
eStopAddr->SetHexNumber(stop);
|
|
||||||
|
|
||||||
for (int iloop=0; iloop<NLOOPS; iloop++) {
|
|
||||||
eLoop[iloop]->update();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int iwait=0; iwait<NWAITS; iwait++) {
|
|
||||||
eWait[iwait]->update();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbPattern::setFrames() {
|
|
||||||
myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,eFrames->GetNumber());
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbPattern::setPeriod() {
|
|
||||||
myDet->setTimer(slsDetectorDefs::FRAME_PERIOD,eFrames->GetNumber()*1E9);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbPattern::setAdcFreq() {
|
|
||||||
myDet->setSpeed(slsDetectorDefs::ADC_CLOCK,eAdcClkFreq->GetNumber());
|
|
||||||
}
|
|
||||||
void jctbPattern::setRunFreq() {
|
|
||||||
myDet->setSpeed(slsDetectorDefs::CLOCK_DIVIDER,eRunClkFreq->GetNumber());
|
|
||||||
|
|
||||||
}
|
|
||||||
void jctbPattern::setAdcPhase() {
|
|
||||||
myDet->setSpeed(slsDetectorDefs::ADC_PHASE,eAdcClkPhase->GetNumber());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void jctbPattern::setRunPhase() {
|
|
||||||
myDet->setSpeed(slsDetectorDefs::PHASE_SHIFT,eRunClkPhase->GetNumber());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,124 +0,0 @@
|
|||||||
#ifndef JCTBPATTERN_H
|
|
||||||
#define JCTBPATTERN_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define NLOOPS 3
|
|
||||||
#define NWAITS 3
|
|
||||||
#define NADCS 32
|
|
||||||
#define PATLEN 1024
|
|
||||||
|
|
||||||
class TRootEmbeddedCanvas;
|
|
||||||
class TGButtonGroup;
|
|
||||||
class TGVerticalFrame;
|
|
||||||
class TGHorizontalFrame;
|
|
||||||
class TGTextEntry;
|
|
||||||
class TGLabel;
|
|
||||||
class TGNumberEntry;
|
|
||||||
class TH2F;
|
|
||||||
class TGComboBox;
|
|
||||||
class TGCheckButton;
|
|
||||||
|
|
||||||
class THStack;
|
|
||||||
class TGraphErrors;
|
|
||||||
class energyCalibration;
|
|
||||||
class TGTextButton;
|
|
||||||
class TGTab;
|
|
||||||
|
|
||||||
class multiSlsDetector;
|
|
||||||
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class jctbLoop : public TGHorizontalFrame {
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
TGNumberEntry *eLoopStartAddr;
|
|
||||||
TGNumberEntry *eLoopStopAddr;
|
|
||||||
TGNumberEntry *eLoopNumber;
|
|
||||||
|
|
||||||
int id;
|
|
||||||
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
jctbLoop(TGGroupFrame *page, int i,multiSlsDetector *det);
|
|
||||||
|
|
||||||
void setNLoops();
|
|
||||||
void update();
|
|
||||||
|
|
||||||
ClassDef(jctbLoop,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
class jctbWait : public TGHorizontalFrame {
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
TGNumberEntry *eWaitAddr;
|
|
||||||
TGNumberEntry *eWaitTime;
|
|
||||||
|
|
||||||
int id;
|
|
||||||
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
jctbWait(TGGroupFrame *page, int i,multiSlsDetector *det);
|
|
||||||
|
|
||||||
void setWaitTime();
|
|
||||||
void update();
|
|
||||||
|
|
||||||
ClassDef(jctbWait,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class jctbPattern : public TGGroupFrame {
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
TGNumberEntry *eAdcClkFreq;
|
|
||||||
TGNumberEntry *eRunClkFreq;
|
|
||||||
TGNumberEntry *eAdcClkPhase;
|
|
||||||
TGNumberEntry *eRunClkPhase;
|
|
||||||
|
|
||||||
TGNumberEntry *eStartAddr;
|
|
||||||
TGNumberEntry *eStopAddr;
|
|
||||||
TGNumberEntry *eFrames;
|
|
||||||
TGNumberEntry *ePeriod;
|
|
||||||
|
|
||||||
jctbLoop *eLoop[NLOOPS];
|
|
||||||
jctbWait *eWait[NWAITS];
|
|
||||||
|
|
||||||
|
|
||||||
char pat[PATLEN*8];
|
|
||||||
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
jctbPattern(TGVerticalFrame *page, multiSlsDetector *det);
|
|
||||||
|
|
||||||
void update();
|
|
||||||
void setAdcFreq();
|
|
||||||
void setRunFreq();
|
|
||||||
void setAdcPhase();
|
|
||||||
void setRunPhase();
|
|
||||||
void setFrames();
|
|
||||||
void setPeriod();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ClassDef(jctbPattern,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,186 +0,0 @@
|
|||||||
#include <TGButton.h>
|
|
||||||
#include <TRootEmbeddedCanvas.h>
|
|
||||||
#include <TGButtonGroup.h>
|
|
||||||
#include <TGNumberEntry.h>
|
|
||||||
#include <TGLabel.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <TColor.h>
|
|
||||||
#include <TGColorSelect.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include "jctbSignal.h"
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jctbSignal::jctbSignal(TGFrame *page, int i, multiSlsDetector *det)
|
|
||||||
: TGHorizontalFrame(page, 800,50), myDet(det), id(i), hsig(NULL) {
|
|
||||||
|
|
||||||
|
|
||||||
TGHorizontalFrame *hframe=this;
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sprintf(tit, "BIT%d ",id);
|
|
||||||
|
|
||||||
sLabel= new TGLabel(hframe, tit);
|
|
||||||
hframe->AddFrame( sLabel,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
sLabel->MapWindow();
|
|
||||||
sLabel->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sOutput= new TGCheckButton(hframe, "Out");
|
|
||||||
hframe->AddFrame( sOutput,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
sOutput->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
sOutput->Connect("Toggled(Bool_t)","jctbSignal",this,"ToggledOutput(Bool_t)");
|
|
||||||
|
|
||||||
sClock= new TGCheckButton(hframe, "Clk");
|
|
||||||
hframe->AddFrame( sClock,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
sClock->MapWindow();
|
|
||||||
|
|
||||||
sClock->Connect("Toggled(Bool_t)","jctbSignal",this,"ToggledClock(Bool_t)");
|
|
||||||
|
|
||||||
|
|
||||||
sPlot= new TGCheckButton(hframe, "Plot");
|
|
||||||
hframe->AddFrame( sPlot,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
sPlot->MapWindow();
|
|
||||||
|
|
||||||
sPlot->Connect("Toggled(Bool_t)","jctbSignal",this,"ToggledPlot(Bool_t)");
|
|
||||||
|
|
||||||
fColorSel = new TGColorSelect(hframe, id+1, 0);
|
|
||||||
hframe->AddFrame(fColorSel, new TGLayoutHints(kLHintsTop |
|
|
||||||
kLHintsLeft, 2, 0, 2, 2));
|
|
||||||
|
|
||||||
|
|
||||||
fColorSel->SetColor(TColor::Number2Pixel(id+1));
|
|
||||||
|
|
||||||
|
|
||||||
ToggledOutput(kFALSE);
|
|
||||||
|
|
||||||
if (id==63) {
|
|
||||||
sOutput->SetOn(kTRUE);
|
|
||||||
sClock->SetOn(kFALSE);
|
|
||||||
sOutput->SetEnabled(kFALSE);
|
|
||||||
sClock->SetEnabled(kFALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
int jctbSignal::setSignalAlias(char *tit, int plot, int col) {
|
|
||||||
|
|
||||||
if (tit)
|
|
||||||
sLabel->SetText(tit);
|
|
||||||
|
|
||||||
if (plot>0) {
|
|
||||||
sPlot->SetOn(kTRUE,kTRUE);
|
|
||||||
} else if (plot==0)
|
|
||||||
sPlot->SetOn(kFALSE,kTRUE);
|
|
||||||
|
|
||||||
if (col>=0)
|
|
||||||
fColorSel->SetColor(col);//TColor::Number2Pixel(col+1));
|
|
||||||
|
|
||||||
fColorSel->SetEnabled(sPlot->IsOn());
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
string jctbSignal::getSignalAlias() {
|
|
||||||
|
|
||||||
|
|
||||||
ostringstream oss;
|
|
||||||
oss << "BIT" << dec << id << " " << sLabel->GetText()->Data() << " " << sPlot->IsOn() << hex << " " << fColorSel->GetColor() << endl;
|
|
||||||
return oss.str();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
int jctbSignal::setOutput(Long64_t r) {
|
|
||||||
|
|
||||||
|
|
||||||
// cout << hex << r << dec <<endl;
|
|
||||||
|
|
||||||
Long64_t mask=((Long64_t)1<<id);
|
|
||||||
|
|
||||||
if (r&mask)
|
|
||||||
sOutput->SetOn(kTRUE,kTRUE);
|
|
||||||
else
|
|
||||||
sOutput->SetOn(kFALSE,kTRUE);
|
|
||||||
|
|
||||||
return sOutput->IsOn();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int jctbSignal::setClock(Long64_t r) {
|
|
||||||
|
|
||||||
Long64_t mask=((Long64_t)1<<id);
|
|
||||||
|
|
||||||
// cout << hex << r << dec <<endl;
|
|
||||||
|
|
||||||
if (r&mask)
|
|
||||||
sClock->SetOn(kTRUE,kTRUE);
|
|
||||||
else
|
|
||||||
sClock->SetOn(kFALSE,kTRUE);
|
|
||||||
|
|
||||||
return sClock->IsOn();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int jctbSignal::isClock() { sClock->IsOn();}
|
|
||||||
int jctbSignal::isOutput() { sOutput->IsOn();}
|
|
||||||
int jctbSignal::isPlot() { sPlot->IsOn();}
|
|
||||||
|
|
||||||
|
|
||||||
void jctbSignal::ToggledOutput(Bool_t b) {
|
|
||||||
Long_t mask=b<<id;
|
|
||||||
ToggledSignalOutput(b<<id);
|
|
||||||
if (b) {
|
|
||||||
sClock->SetEnabled(kTRUE);
|
|
||||||
sPlot->SetEnabled(kTRUE);
|
|
||||||
if ( sPlot->IsOn())
|
|
||||||
fColorSel->SetEnabled(kTRUE);
|
|
||||||
else
|
|
||||||
fColorSel->SetEnabled(kFALSE);
|
|
||||||
} else {
|
|
||||||
sClock->SetEnabled(kFALSE);
|
|
||||||
sPlot->SetEnabled(kFALSE);
|
|
||||||
fColorSel->SetEnabled(kFALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
void jctbSignal::ToggledClock(Bool_t b){
|
|
||||||
Long_t mask=b<<id;
|
|
||||||
ToggledSignalClock(mask);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
void jctbSignal::ToggledPlot(Bool_t b){
|
|
||||||
Long_t mask=b<<id;
|
|
||||||
ToggledSignalPlot(mask);
|
|
||||||
fColorSel->SetEnabled(b);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void jctbSignal::ToggledSignalOutput(Int_t b) {
|
|
||||||
Emit("ToggledSignalOutput(Int_t)", id);
|
|
||||||
|
|
||||||
}
|
|
||||||
void jctbSignal::ToggledSignalClock(Int_t b){
|
|
||||||
Emit("ToggledSignalClock(Int_t)", id);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
void jctbSignal::ToggledSignalPlot(Int_t b){
|
|
||||||
Emit("ToggledSignalPlot(Int_t)", id);
|
|
||||||
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
#ifndef JCTBSIGNAL_H
|
|
||||||
#define JCTBSIGNAL_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TGTextEntry;
|
|
||||||
class TGLabel;
|
|
||||||
class TGNumberEntry;
|
|
||||||
class TGCheckButton;
|
|
||||||
class TH1I;
|
|
||||||
class TGTextButton;
|
|
||||||
class TGColorSelect;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class multiSlsDetector;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class jctbSignal : public TGHorizontalFrame {
|
|
||||||
|
|
||||||
// RQ_OBJECT("jctbSignal")
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
TGLabel *sLabel;
|
|
||||||
TGCheckButton *sOutput;
|
|
||||||
TGCheckButton *sClock;
|
|
||||||
TGCheckButton *sPlot;
|
|
||||||
TGLabel *sValue;
|
|
||||||
TGNumberEntry *sEntry;
|
|
||||||
TGColorSelect *fColorSel;
|
|
||||||
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
Int_t id;
|
|
||||||
|
|
||||||
TH1I *hsig;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
jctbSignal(TGFrame *page, int i, multiSlsDetector *det);
|
|
||||||
int setSignalAlias(char *tit, int plot, int col);
|
|
||||||
string getSignalAlias();
|
|
||||||
|
|
||||||
TH1I *getPlot() {return hsig;};
|
|
||||||
int setOutput(Long64_t);
|
|
||||||
int setClock(Long64_t);
|
|
||||||
|
|
||||||
void ToggledOutput(Bool_t);
|
|
||||||
void ToggledClock(Bool_t);
|
|
||||||
void ToggledPlot(Bool_t);
|
|
||||||
|
|
||||||
int isClock();
|
|
||||||
int isOutput();
|
|
||||||
int isPlot();
|
|
||||||
|
|
||||||
|
|
||||||
void ToggledSignalOutput(Int_t); //*SIGNAL*
|
|
||||||
void ToggledSignalClock(Int_t); //*SIGNAL*
|
|
||||||
void ToggledSignalPlot(Int_t); //*SIGNAL*
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ClassDef(jctbSignal,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,257 +0,0 @@
|
|||||||
#include <TApplication.h>
|
|
||||||
#include <TGClient.h>
|
|
||||||
#include <TCanvas.h>
|
|
||||||
#include <TF1.h>
|
|
||||||
#include <TRandom.h>
|
|
||||||
#include <TGButton.h>
|
|
||||||
#include <TRootEmbeddedCanvas.h>
|
|
||||||
#include <TGButtonGroup.h>
|
|
||||||
#include <TGNumberEntry.h>
|
|
||||||
#include <TGLabel.h>
|
|
||||||
#include <TList.h>
|
|
||||||
#include <TGFileDialog.h>
|
|
||||||
#include <TGComboBox.h>
|
|
||||||
#include <TH2F.h>
|
|
||||||
#include <TColor.h>
|
|
||||||
#include <TH1F.h>
|
|
||||||
#include <TGraphErrors.h>
|
|
||||||
#include <THStack.h>
|
|
||||||
#include <TGTab.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
|
|
||||||
#include "jctbSignals.h"
|
|
||||||
#include "jctbSignal.h"
|
|
||||||
#include "multiSlsDetector.h"
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULTFN "run_0.encal"
|
|
||||||
|
|
||||||
|
|
||||||
jctbSignals::jctbSignals(TGVerticalFrame *page, multiSlsDetector *det)
|
|
||||||
: TGGroupFrame(page,"IO Signals",kVerticalFrame), myDet(det) {
|
|
||||||
|
|
||||||
|
|
||||||
SetTitlePos(TGGroupFrame::kLeft);
|
|
||||||
page->AddFrame(this,new TGLayoutHints( kLHintsTop | kLHintsExpandX , 10,10,10,10));
|
|
||||||
MapWindow();
|
|
||||||
|
|
||||||
cout << "window mapped " << endl;
|
|
||||||
|
|
||||||
TGHorizontalFrame *hframe;
|
|
||||||
char tit[100];
|
|
||||||
|
|
||||||
TGHorizontalFrame* hhframe=new TGHorizontalFrame(this, 800,800);
|
|
||||||
AddFrame(hhframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hhframe->MapWindow();
|
|
||||||
|
|
||||||
TGVerticalFrame *vframe;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int idac=0;
|
|
||||||
for (idac=0; idac<NIOSIGNALS; idac++) {
|
|
||||||
if (idac%27==0) {
|
|
||||||
|
|
||||||
|
|
||||||
vframe=new TGVerticalFrame(hhframe, 400,800);
|
|
||||||
hhframe->AddFrame(vframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
vframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
signals[idac]=new jctbSignal(vframe,idac,myDet);
|
|
||||||
signals[idac]->Connect(" ToggledSignalOutput(Int_t)","jctbSignals",this,"ToggledOutReg(Int_t)");
|
|
||||||
signals[idac]->Connect(" ToggledSignalClock(Int_t)","jctbSignals",this,"ToggledClockReg(Int_t)");
|
|
||||||
signals[idac]->Connect(" ToggledSignalPlot(Int_t)","jctbSignals",this,"ToggledPlot(Int_t)");
|
|
||||||
|
|
||||||
vframe->AddFrame(signals[idac],new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
signals[idac]->MapWindow();
|
|
||||||
|
|
||||||
}
|
|
||||||
idac=63;
|
|
||||||
signals[idac]=new jctbSignal(vframe,idac,myDet);
|
|
||||||
vframe->AddFrame(signals[idac],new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
signals[idac]->MapWindow();
|
|
||||||
sprintf(tit,"ADC Latch");
|
|
||||||
|
|
||||||
signals[idac]->setSignalAlias(tit,-1,-1);
|
|
||||||
|
|
||||||
signals[idac]->Connect(" ToggledSignalOutput(Int_t)","jctbSignals",this,"ToggledOutReg(Int_t)");
|
|
||||||
signals[idac]->Connect(" ToggledSignalClock(Int_t)","jctbSignals",this,"ToggledClockReg(Int_t)");
|
|
||||||
signals[idac]->Connect(" ToggledSignalPlot(Int_t)","jctbSignals",this,"ToggledPlot(Int_t)");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hframe=new TGHorizontalFrame(vframe, 800,50);
|
|
||||||
vframe->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
TGLabel *label= new TGLabel(hframe, "IO Control Register");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
eIOCntrlRegister = new TGNumberEntry(hframe, 0, 16,999, TGNumberFormat::kNESHex,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELNoLimits);
|
|
||||||
|
|
||||||
hframe->AddFrame(eIOCntrlRegister,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eIOCntrlRegister->MapWindow();
|
|
||||||
eIOCntrlRegister->Resize(150,30);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hframe=new TGHorizontalFrame(vframe, 800,50);
|
|
||||||
vframe->AddFrame(hframe,new TGLayoutHints(kLHintsTop | kLHintsExpandX , 1,1,1,1));
|
|
||||||
hframe->MapWindow();
|
|
||||||
|
|
||||||
|
|
||||||
label= new TGLabel(hframe, "Clock Control Register");
|
|
||||||
hframe->AddFrame(label,new TGLayoutHints(kLHintsTop | kLHintsLeft| kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
label->MapWindow();
|
|
||||||
label->SetTextJustify(kTextLeft);
|
|
||||||
|
|
||||||
|
|
||||||
eClkCntrlRegister = new TGNumberEntry(hframe, 0, 16,999, TGNumberFormat::kNESHex,
|
|
||||||
TGNumberFormat::kNEANonNegative,
|
|
||||||
TGNumberFormat::kNELNoLimits);
|
|
||||||
|
|
||||||
hframe->AddFrame(eClkCntrlRegister,new TGLayoutHints(kLHintsTop | kLHintsExpandX, 1, 1, 1, 1));
|
|
||||||
eClkCntrlRegister->MapWindow();
|
|
||||||
eClkCntrlRegister->Resize(150,30);
|
|
||||||
|
|
||||||
eIOCntrlRegister->SetState(kFALSE);
|
|
||||||
eClkCntrlRegister->SetState(kFALSE);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int jctbSignals::setSignalAlias(string line) {
|
|
||||||
|
|
||||||
int is=-1, plot=0, col=-1;
|
|
||||||
char tit[100];
|
|
||||||
int narg=sscanf(line.c_str(),"BIT%d %s %d %d",&is,tit,&plot,&col);
|
|
||||||
if (narg<2)
|
|
||||||
return -1;
|
|
||||||
if (is>=0 && is<NIOSIGNALS) {
|
|
||||||
signals[is]->setSignalAlias(tit,plot,col);
|
|
||||||
}
|
|
||||||
return is;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
string jctbSignals::getSignalAlias() {
|
|
||||||
|
|
||||||
ostringstream oss;
|
|
||||||
for (int is=0; is<NIOSIGNALS; is++)
|
|
||||||
oss << signals[is]->getSignalAlias() << endl;
|
|
||||||
|
|
||||||
|
|
||||||
return oss.str();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void jctbSignals::update() {
|
|
||||||
Long64_t oreg=myDet->setCTBWord(-1,-1);
|
|
||||||
Long64_t creg=myDet->setCTBWord(-2,-1);
|
|
||||||
|
|
||||||
|
|
||||||
char val[1000];
|
|
||||||
cout << hex << oreg << dec << endl;
|
|
||||||
cout << hex << creg << dec << endl;
|
|
||||||
|
|
||||||
sprintf(val,"%llX",oreg);
|
|
||||||
// eIOCntrlRegister->SetHexNumber(oreg);
|
|
||||||
eIOCntrlRegister->SetText(val);
|
|
||||||
sprintf(val,"%llX",creg);
|
|
||||||
// eClkCntrlRegister->SetHexNumber(creg);
|
|
||||||
eClkCntrlRegister->SetText(val);
|
|
||||||
|
|
||||||
for (int idac=0; idac<NIOSIGNALS; idac++) {
|
|
||||||
signals[idac]->setOutput(oreg);
|
|
||||||
signals[idac]->setClock(creg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void jctbSignals::ToggledOutReg(Int_t mask) {
|
|
||||||
|
|
||||||
char val[1000];
|
|
||||||
Long64_t oreg=myDet->setCTBWord(-1,-1);
|
|
||||||
Long64_t m=((Long64_t)1)<<mask;
|
|
||||||
|
|
||||||
|
|
||||||
if (signals[mask]->isOutput())
|
|
||||||
oreg|=m;
|
|
||||||
else
|
|
||||||
oreg&=~m;
|
|
||||||
|
|
||||||
cout << dec << sizeof(Long64_t) << " " << mask << " " << hex << m << " ioreg " << oreg << endl;
|
|
||||||
|
|
||||||
myDet->setCTBWord(-1,oreg);
|
|
||||||
oreg=myDet->setCTBWord(-1,-1);
|
|
||||||
|
|
||||||
cout << dec << sizeof(Long64_t) << " " << mask << " " << hex << m << " ioreg " << oreg << endl;
|
|
||||||
|
|
||||||
sprintf(val,"%llX",oreg);
|
|
||||||
// eIOCntrlRegister->SetHexNumber(oreg);
|
|
||||||
eIOCntrlRegister->SetText(val);
|
|
||||||
// eIOCntrlRegister->SetNumber(oreg);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbSignals::ToggledClockReg(Int_t mask){
|
|
||||||
|
|
||||||
char val[1000];
|
|
||||||
Long64_t oreg=myDet->setCTBWord(-2,-1);
|
|
||||||
Long64_t m=((Long64_t)1)<<mask;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (signals[mask]->isClock())
|
|
||||||
oreg|=m;
|
|
||||||
else
|
|
||||||
oreg&=~m;
|
|
||||||
|
|
||||||
cout << hex << "clkreg " << oreg << endl;
|
|
||||||
|
|
||||||
myDet->setCTBWord(-2,oreg);
|
|
||||||
oreg=myDet->setCTBWord(-2,-1);
|
|
||||||
sprintf(val,"%llX",oreg);
|
|
||||||
// eIOCntrlRegister->SetHexNumber(oreg);
|
|
||||||
|
|
||||||
eClkCntrlRegister->SetText(val);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void jctbSignals::ToggledPlot(Int_t mask) {
|
|
||||||
|
|
||||||
if (signals[mask]->isPlot())
|
|
||||||
cout << "plot signal " << mask << endl;
|
|
||||||
else
|
|
||||||
cout << "unplot signal " << mask << endl;
|
|
||||||
|
|
||||||
}
|
|
@ -1,44 +0,0 @@
|
|||||||
#ifndef JCTBSIGNALS_H
|
|
||||||
#define JCTBSIGNALS_H
|
|
||||||
#include <TGFrame.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define NSIGNALS 64
|
|
||||||
#define NIOSIGNALS 52
|
|
||||||
#define ADCLATCH 63
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TGNumberEntry;
|
|
||||||
class multiSlsDetector;
|
|
||||||
class jctbSignal;
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class jctbSignals : public TGGroupFrame {
|
|
||||||
private:
|
|
||||||
|
|
||||||
jctbSignal *signals[NSIGNALS];
|
|
||||||
|
|
||||||
TGNumberEntry *eIOCntrlRegister;
|
|
||||||
TGNumberEntry *eClkCntrlRegister;
|
|
||||||
|
|
||||||
multiSlsDetector *myDet;
|
|
||||||
|
|
||||||
public:
|
|
||||||
jctbSignals(TGVerticalFrame *page, multiSlsDetector *det);
|
|
||||||
int setSignalAlias(string line);
|
|
||||||
string getSignalAlias();
|
|
||||||
|
|
||||||
void update();
|
|
||||||
|
|
||||||
|
|
||||||
void ToggledOutReg(Int_t);
|
|
||||||
void ToggledClockReg(Int_t);
|
|
||||||
void ToggledPlot(Int_t);
|
|
||||||
ClassDef(jctbSignals,0)
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
x
Reference in New Issue
Block a user