--- /dev/null
+
+#Control Tools
+
+##cooling
+Monitoring and display of Huber cooling system + web interface
+
+
+##keysight_agilent_81150A
+Generate binary waveform files for arbitrary waveform generator
+
+
+##opus20
+Temperature and Humidity logging device
+
+
+##peltier_controller
+Control system for AVR based Peltier cooling
+
+
+##powersupplies
+Talking to those who have the power
+
+###hameg
+basic control for Hameg power supplies
+
+###powerswitch
+control for power switch boards (see trb.gsi.de) (from daqtools repo)
+
+###tdklambda
+basic control of a TDK Lambda supply (from daqtools repo)
+
+###web_rs232
+web interface to USB/serial power supplies, PSP-405, HMP-4040 and others
+
+
+##presenter
+Showing slides in a browser, remotely or on Raspi+Projector
+
+
+##pressure
+Monitoring and display of pressure sensor data + web interface
+
+
+##sensors
+PT100 read-out via USB + web interface
+
+
+##vxi
+Generic interface for all devices speaking the vxi protocol over ethernet (from daqtools repo)
+
+
+
+##scopes
+###yokogawa
+Scripts for basic access to Yokogawa Oscilloscope
+
+###RhodeSchwarz
+####root
+Root script for analysis of binary waveform files from scope
+####gnuplot
+Simple gnuplot example to read csv waveform files
+
+##root
+###gnuplot
+Plot examples for csv files exported from root
\ No newline at end of file
--- /dev/null
+0.0009049774,-0.0018535277
+0.0696832579,-0.0058136417
+0.0909502262,-0.0447812971
+0.1018099548,-0.1392659628
+0.1122171946,-0.2689341378
+0.121719457,-0.4152656276
+0.1307692308,-0.5745584046
+0.1425339367,-0.7023797553
+0.1538461538,-0.7135327635
+0.165158371,-0.6376487347
+0.1746606335,-0.5191654098
+0.1864253394,-0.3303200938
+0.2013574661,-0.1451902128
+0.9936651584,0
--- /dev/null
+../../../daqtools/tools/powersupply_hameg.pl
\ No newline at end of file
--- /dev/null
+../../../daqtools/tools/pwrswitch.pl
\ No newline at end of file
--- /dev/null
+../../../daqtools/tools/powersupply_tdklambda.pl
\ No newline at end of file
--- /dev/null
+../../../daqtools/web/htdocs/tools/pwr/
\ No newline at end of file
--- /dev/null
+set style line 11 lc rgb '#404040' lt 1
+set border 3 back ls 11
+set tics nomirror
+set datafile separator " "
+set style line 12 lc rgb '#404040' lt 0 lw 2
+set grid back ls 12
+# set style fill transparent solid 0.5 noborder
+
+# set key $keypos
+# set key off
+# set size $size
+# set size 1,0.7
+
+# set terminal png
+# set output "test.png"
+ set terminal postscript enhanced color solid size 10,6
+ set output "|ps2pdf - test.pdf"
+set tics font ", 15"
+# set title "$plotTitle"
+# set xlabel "$xLabel"
+# set ylabel "$yLabel"
+
+binwidth=3
+bin(x,width)=width*floor(x/width)
+
+# set multiplot layout 2,1
+set style textbox opaque noborder
+
+set xtics 0,100,1200
+set ytics 0,20,100
+
+set xrange [0:1200]
+set yrange [0:100]
+set style fill solid 0.5 noborder
+
+set object 1 rect from screen 0.77,0.92 to screen 0.935,0.65 fs solid 1 fc rgb 0xffffff
+
+set label 101 "Time [ps]" at screen 0.87,-0.02 font ",15"
+set label 102 "Entries [10^3]" at screen 0.07,0.995 font ",15"
+set label 103 "Input Amplitude" at screen 0.78,0.89 font ",15" boxed
+
+set label 20 '12 ps_{rms}' at screen 0.13,0.9 font ",20" tc rgb "#c96215" boxed
+set label 10 '13 ps_{rms}' at screen 0.24,0.78 font ",20" tc rgb "#860047" boxed
+set label 5 '18 ps_{rms}' at screen 0.36,0.60 font ",20" tc rgb "#b3062c" boxed
+set label 3 '28 ps_{rms}' at screen 0.50,0.43 font ",20" tc rgb "#e3ba0f" boxed
+set label 2 '34 ps_{rms}' at screen 0.66,0.33 font ",20" tc rgb "#737c45" boxed
+set label 1 '61 ps_{rms}' at screen 0.85,0.25 font ",20" tc rgb "#00618f" boxed
+
+set key at screen 0.92,0.85
+
+
+plot \
+"dirich/TDC_1207_Ch4_RisingRef_2_4_20mV_12psRMS.hdat" using (bin($1*1000+1220,binwidth)):($4/1.22/1000) title "20 mV" smooth freq w histeps lw 4 lc rgb "#c96215",\
+"dirich/TDC_1207_Ch4_RisingRef_2_4_10mV.hdat" using (bin($1*1000+1410,binwidth)):($4/1.2/1000) title "10 mV" smooth freq w histeps lw 4 lc rgb "#860047",\
+"dirich/TDC_1207_Ch4_RisingRef_2_4_5mV_18psRMS.hdat" using (bin($1*1000+1620,binwidth)):($4/1.5/1000) title "5 mV" smooth freq w histeps lw 4 lc rgb "#b3062c",\
+"dirich/TDC_1207_Ch4_RisingRef_2_4_3mV_28psRMS.hdat" using (bin($1*1000+1820,binwidth)):($4*1.7/1000) title "3 mV" smooth freq w histeps lw 4 lc rgb "#e3ba0f",\
+"dirich/TDC_1207_Ch4_RisingRef_2_4_2mV_34psRMS.hdat" using (bin($1*1000+2070,binwidth)):($4*1.5/1000) title "2 mV" smooth freq w histeps lw 4 lc rgb "#737c45",\
+"dirich/TDC_1207_Ch4_RisingRef_2_4_1mV_61psRMS.hdat" using (bin($1*1000+2420,binwidth)):($4*1.7/1000) title "1 mV" smooth freq w histeps lw 4 lc rgb "#00618f",\
+
--- /dev/null
+set style line 1 lc rgb '#8b1a0e' pt 1 ps 1 lt 1 lw 2 # --- red
+set style line 2 lc rgb '#5e9c36' pt 6 ps 1 lt 1 lw 2 # --- green
+
+set style line 11 lc rgb '#404040' lt 1
+set border 3 back ls 11
+set tics nomirror
+set datafile separator " "
+set style line 12 lc rgb '#404040' lt 0 lw 2
+set grid back ls 12
+# set style fill transparent solid 0.5 noborder
+
+# set key $keypos
+set key off
+# set size $size
+# set size 1,0.7
+
+# set terminal png
+# set output "test.png"
+ set terminal postscript enhanced color solid size 10,6
+ set output "|ps2pdf - totplot.pdf"
+set tics font ", 15"
+# set title "ToT difference between two channels"
+# set xlabel "$xLabel"
+# set ylabel "$yLabel"
+
+binwidth=1
+bin(x,width)=x #width*floor(x/width)
+
+# set multiplot layout 2,1
+set style textbox opaque noborder
+
+# set xtics 0,100,1200
+# set ytics 0,20,100
+
+set xrange [101:280]
+# set yrange [0:100]
+set style fill solid 0.5 noborder
+
+
+set label 101 "Time [ps]" at screen 0.87,-0.02 font ",15"
+set label 102 "Entries [10^3]" at screen 0.07,0.995 font ",15"
+
+# set key at screen 0.92,0.85
+
+
+# set lmargin 0.12
+
+plot \
+"dirich/TDC_1207_Ch2_Tot_17.5psRMS.hdat" using (bin($1*1000-20000,binwidth)):($4/1000) title "20 mV" smooth freq w histeps lw 4 lc rgb "#c96215",\
+
+
--- /dev/null
+set style line 1 lc rgb '#8b1a0e' pt 1 ps 1 lt 1 lw 2 # --- red
+set style line 2 lc rgb '#5e9c36' pt 6 ps 1 lt 1 lw 2 # --- green
+
+set style line 11 lc rgb '#404040' lt 1
+set border 3 back ls 11
+set tics nomirror
+set datafile separator ";"
+set style line 12 lc rgb '#404040' lt 0 lw 1
+set grid back ls 12
+# set style fill transparent solid 0.5 noborder
+
+# set key $keypos
+set key off
+# set size $size
+set size 1,1
+
+# set terminal png
+# set output "test.png"
+ set terminal postscript enhanced color solid
+ set output "|ps2pdf - test.pdf"
+set tics font ", 18"
+# set title "$plotTitle"
+# set xlabel "$xLabel"
+# set ylabel "$yLabel"
+
+
+set multiplot layout 2,1
+set xrange [0.01:40]
+
+set label 101 "Time [ns]" at screen 0.87,-0.02 font ",18"
+set label 102 "Voltage [mV]" at screen -0.03,1.02 font ",18"
+#set xtics
+
+set lmargin 0.12
+plot \
+"ch1_combined_5mVip.Wfm.csv" using ($0/100):($2*1000) title "Input x20" w l lw 2 lc rgb "#888888",\
+"ch1_combined_50mVip.Wfm.csv" using ($0/100-0.7):($2*1000/4) w l lw 5 lc rgb "#c96215"
+#"ch1_combined_50mVip.Wfm.csv" using ($0/100-0.7):($2*1000/4) w lp ps 0.5 pt 7 lc rgb "#c96215"
+set lmargin 0.13
+set yrange [980:1350]
+plot \
+"ch1_combined_5mVip.Wfm.csv" using ($0/100):($1*1000) title "Output" w l lw 2 lc rgb "#888888",\
+"ch1_combined_50mVip.Wfm.csv" using ($0/100-0.7):((($1-1.09)/2.7+1.09)*1000) w l lw 5 lc rgb "#a5ab52"
+#"ch1_combined_50mVip.Wfm.csv" using ($0/100-0.7):((($1-1.09)/2.7+1.09)*1000) w lp ps 0.5 pt 7 lc rgb "#a5ab52"
+# "$inputFile" using 1:4:5 title "min/max" w filledcu lc rgb "light-grey",\
--- /dev/null
+#include <stdio.h>
+#include <stdint.h>
+#include "TXMLEngine.h"
+#include "TH2.h"
+#include "TString.h"
+#include "TGraph.h"
+
+class RSParameter_t
+// Class to read and hold the data from the .bin Parameter file
+{
+public:
+ // Class Variables for storage of XML Parameters with same name
+ TString fFirmwareVersion;
+ Int_t fRecordLength;
+ Int_t fHWRecordLength;
+ Int_t fSignalRecordLength; // Recordlength in file w/o additional fill-bytes
+ Int_t fSignalHardwareRecordLength; // physical Record Length in file, incl. fill bytes
+ Int_t fLeadingSettlingSamples; // Nr of additional fill bytes before each record
+ Int_t fInterleavedTraceCount; // Nr of y-points / channel / trace
+ Int_t fSignalFormat; // 1 in ADCraw mode (byte), 4 in standard mode (float)
+ Bool_t fMultiChannelExport;
+ Int_t fNrChannels; // Nr of exported channels
+ Bool_t fChannelsActive[4]; // 0 / 1 if channel is exported or not
+ Double_t fTimeScale; // Time per division
+ Int_t fHorizontalDivisionCount;
+ Double_t fResolution; // Time between two samples
+ Double_t fXStart; // Start time,
+ Double_t fXStop; // Stop time
+ Int_t fNofQuantisationLevels; // Nr of digitization levels, for raw-mode decoding
+ Double_t fVerticalScale[4]; // Volts/fivision for each channel
+ Double_t fVerticalOffset[4]; // Offset [Volt] for each channel
+ Double_t fVerticalPosition[4]; // Vertical Position / shift
+ Int_t fVerticalDivisionCount; // Nr of vertical divisions
+ Double_t fBaseYStart[4]; // low amplitude limit for each channel
+ Double_t fBaseYStop[4]; // high amplitude limit for each channel
+
+
+ // Member functions
+ RSParameter_t();
+ virtual ~RSParameter_t();
+ Int_t ReadParameterFile(TString filename); // Read in .bin XML-Parameter-file
+ void Print();
+};
+
+
+
+class RSDatafile_t
+// Class to read the .Wfm.bin Data file, using Parameters from the Prameter Class.
+{
+public:
+ TString fFilename;
+ TString fFilenameWfm;
+ TString fFilenamePar;
+
+ RSParameter_t* fParameters;
+
+ union {
+ int8_t* bbyte;
+ float* bfloat;
+ } fAcqBuffer; // Buffer for single multi-channel acquisition
+ // float-data in calibrated mode, byte-data in RAW mode
+
+
+ Int_t fBufferSize; // Buffersize in byte
+ Int_t fBufferOffset; // Nr of leading bytes / floats in buffer not used for trace
+
+ FILE* fWfmFile;
+ Int_t fFileSize; // Datafile size in bytes
+ Int_t fFileOffset; // Additional 8 bytes at beginning of each data file
+ Int_t fFileOverhead;
+ Int_t fNrAcquisitions; // Nr of individual Acquisitions stored in the file
+
+ TH2F* fFrameHisto[4];// For easy drawing of traces in correct borders
+ TGraph* fTrace[4]; // Storage for individual signal traces (max 4 channels)
+
+
+ // Member functions
+ RSDatafile_t();
+ virtual ~RSDatafile_t();
+ Int_t OpenFileSet(TString filename); // Open Fileset (.bin + .Wfm.bin), read Parameters
+ Int_t ReadAcquisition(Int_t index=-1); // Get a specific acquisition from file. index=-1: get next acq
+ TH2F* GetFrame(Int_t traceindex); // Get a empty Histogram frame for easy drawing
+};
+
+
+
+
+
+// Code section for Class RDarafile:t
+//---------------------------------------------------------------------
+
+RSDatafile_t::RSDatafile_t()
+{
+ fFilename="";
+ fFilenameWfm="";
+ fFilenamePar="";
+ fParameters=0;
+
+ fFileOffset=8; // offset [bytes] at beginning of file
+ fFileOverhead=8; // Total overhead [bytes] in file
+ for (Int_t i=0; i<4; i++) {
+ fTrace[i]=0;
+ fFrameHisto[i]=0;
+ }
+}
+
+RSDatafile_t::~RSDatafile_t()
+{
+ if (fParameters)
+ delete fParameters;
+ if (fAcqBuffer.bbyte)
+ delete[] fAcqBuffer.bbyte;
+
+ for (Int_t i=0; i<4; i++) {
+ if (fTrace[i]) delete fTrace[i];
+ if (fFrameHisto[i]) delete fFrameHisto[i];
+ }
+}
+
+
+Int_t RSDatafile_t::OpenFileSet(TString filename)
+{
+ filename.ReplaceAll(".bin",""); filename.ReplaceAll(".Wfm","");
+ fFilename=filename;
+ fFilenameWfm=filename+".Wfm.bin";
+ fFilenamePar=filename+".bin";
+
+ fParameters=new RSParameter_t();
+ fParameters->ReadParameterFile(fFilenamePar);
+ fParameters->Print();
+
+ fBufferSize=fParameters->fSignalHardwareRecordLength * fParameters->fNrChannels *
+ fParameters->fInterleavedTraceCount * fParameters->fSignalFormat;
+ fBufferOffset=fParameters->fLeadingSettlingSamples * fParameters->fNrChannels *
+ fParameters->fInterleavedTraceCount * fParameters->fSignalFormat;
+ fAcqBuffer.bbyte=new int8_t[fBufferSize];
+
+ if(!(fWfmFile=fopen(fFilenameWfm,"rb"))) {
+ printf("File %s does not exist !\n",fFilenameWfm.Data());
+ return -1;
+ }
+
+ fseek(fWfmFile,0,SEEK_END);
+ fFileSize=ftell(fWfmFile);
+ fseek(fWfmFile,fFileOffset,SEEK_SET); //skip first n bytes of file#
+
+ fNrAcquisitions=(fFileSize-fFileOverhead)/fBufferSize;
+
+ // Book TGraphs
+ for (Int_t i=0; i<4; i++) {
+ fTrace[i]=new TGraph(fParameters->fSignalRecordLength);
+ }
+
+ printf("File %s opened: \n",fFilenameWfm.Data());
+ printf("FFileSize: %i bytes \n",fFileSize);
+ printf("Buffer size: %i \n",fBufferSize);
+ printf("Nr of Acquisitions: %i \n",fNrAcquisitions);
+ printf("Buffer offset: %i \n",fBufferOffset);
+ return 0;
+}
+
+
+Int_t RSDatafile_t::ReadAcquisition(Int_t index)
+{
+ if (index!=-1) {
+ Int_t bytepos=index*fBufferSize+fFileOffset;
+ fseek(fWfmFile,bytepos,SEEK_SET);
+ }
+ if (feof(fWfmFile)) {
+ printf("Event out of reach !\n");
+ return -1;
+ }
+
+ // Read Acquisition buffer, including all overhead bytes
+ // -> file position shifts exactly to next event
+ Int_t bytesread=fread(fAcqBuffer.bbyte,1,fBufferSize, fWfmFile);
+ if (bytesread != fBufferSize) {
+ printf("Event not correctly read in \n");
+ return -2;
+ }
+
+ // Reset Graphs
+ for (Int_t ch=0; ch<4; ch++)
+ fTrace[ch]->Set(0);
+
+ // Decode acqusition buffer into TGraphs:
+ for (Int_t i=0; i < fParameters->fSignalRecordLength; i++) {
+ Double_t x=fParameters->fXStart+ fParameters->fResolution *i;
+ Double_t y;
+
+ Int_t actchannel=0;
+ for (Int_t ch=0; ch<4; ch++) {
+ y=0;
+ if (fParameters->fChannelsActive[ch]) {
+ Int_t index=i* (fParameters->fInterleavedTraceCount* fParameters->fNrChannels)+
+ (actchannel*fParameters->fInterleavedTraceCount); // index without fBufferOffse !
+
+ if (fParameters->fSignalFormat==4) {
+ // get calibrated data from scope
+ y=fAcqBuffer.bfloat[fBufferOffset/4+index];
+ } else {
+ // rawmode : 1 byte per sample
+ y=fAcqBuffer.bbyte[fBufferOffset+index];
+ Double_t convfactor=
+ fParameters->fVerticalScale[ch]* fParameters->fVerticalDivisionCount / fParameters->fNofQuantisationLevels;
+ y=y *convfactor +fParameters->fVerticalOffset[ch];
+ y=y- fParameters->fVerticalPosition[ch]*fParameters->fVerticalScale[ch]; // Probably a bug in the firmware!
+ }
+ actchannel++;
+ }
+ fTrace[ch]->SetPoint(i,x,y);
+ }
+ }
+ return 0;
+}
+
+
+TH2F* RSDatafile_t::GetFrame(Int_t traceindex)
+{
+ if (!fParameters->fChannelsActive[traceindex])
+ return 0;
+
+ if (!fFrameHisto[traceindex]) {
+ fFrameHisto[traceindex] =
+ new TH2F(Form("channel%i",traceindex),Form("channel%i",traceindex),
+ 2, fParameters->fXStart, fParameters->fXStop,
+ 2, fParameters->fBaseYStart[traceindex], fParameters->fBaseYStop[traceindex]);
+ fFrameHisto[traceindex]->GetXaxis()->SetTitle("Time (ns)");
+ fFrameHisto[traceindex]->GetYaxis()->SetTitle("Amplitude (V)");
+ }
+ return fFrameHisto[traceindex];
+}
+
+
+
+
+
+// Code section for Class RSParameter_t
+//---------------------------------------------------------------------
+
+RSParameter_t::~RSParameter_t()
+{
+}
+
+
+RSParameter_t::RSParameter_t()
+{
+}
+
+
+Int_t RSParameter_t::ReadParameterFile(TString filename)
+{
+ TXMLEngine* xml = new TXMLEngine;
+ XMLDocPointer_t xmldoc = xml->ParseFile(filename);
+ if (xmldoc==0) {
+ printf("File %s not found !!!\n",filename.Data());
+ delete xml;
+ return -1;
+ }
+
+ XMLNodePointer_t mainnode=xml->DocGetRootElement(xmldoc);
+ XMLNodePointer_t child = xml->GetChild(xml->GetChild(mainnode));
+
+ //loop over all XML entries
+ while (child) {
+ const char* name=xml->GetAttr(child,"Name");
+ // General Parameters
+ if (!strcmp(name,"FirmwareVersion"))
+ fFirmwareVersion=xml->GetAttr(child,"Value");
+ // Record Length, fill-bytes, format
+ if (!strcmp(name,"RecordLength"))
+ fRecordLength=xml->GetIntAttr(child,"Value");
+ if (!strcmp(name,"HWRecordLength"))
+ fHWRecordLength=xml->GetIntAttr(child, "Value");
+ if (!strcmp(name,"SignalRecordLength"))
+ fSignalRecordLength=xml->GetIntAttr(child,"Value");
+ if (!strcmp(name,"SignalHardwareRecordLength"))
+ fSignalHardwareRecordLength=xml->GetIntAttr(child,"Value");
+ if (!strcmp(name,"LeadingSettlingSamples"))
+ fLeadingSettlingSamples=xml->GetIntAttr(child,"Value");
+ if (!strcmp(name,"InterleavedTraceCount"))
+ fInterleavedTraceCount=xml->GetIntAttr(child,"Value");
+ if (!strcmp(name,"SignalFormat")) {
+ fSignalFormat=1;
+ if (!strcmp(xml->GetAttr(child,"Value"),"eRS_SIGNAL_FORMAT_FLOAT"))
+ fSignalFormat=4;
+ }
+ // Horizontal Parameters
+ if (!strcmp(name,"TimeScale"))
+ fTimeScale=atof(xml->GetAttr(child,"Value"));
+ if (!strcmp(name,"HorizontalDivisionCount"))
+ fHorizontalDivisionCount=xml->GetIntAttr(child,"Value");
+ if (!strcmp(name,"Resolution"))
+ fResolution=atof(xml->GetAttr(child,"Value"));
+ if (!strcmp(name,"XStart"))
+ fXStart=atof(xml->GetAttr(child,"Value"));
+ if (!strcmp(name,"XStop"))
+ fXStop=atof(xml->GetAttr(child,"Value"));
+
+ // Vertical Parameters (single channel)
+ if (!strcmp(name,"VerticalScale"))
+ fVerticalScale[0]=atof(xml->GetAttr(child,"Value"));
+ if (!strcmp(name,"VerticalOffset"))
+ fVerticalOffset[0]=atof(xml->GetAttr(child,"Value"));
+ if (!strcmp(name,"VerticalPosition"))
+ fVerticalPosition[0]=atof(xml->GetAttr(child,"Value"));
+ if (!strcmp(name,"VerticalDivisionCount"))
+ fVerticalDivisionCount=xml->GetIntAttr(child,"Value");
+ if (!strcmp(name,"NofQuantisationLevels"))
+ fNofQuantisationLevels=xml->GetIntAttr(child,"Value");
+
+ if (!strcmp(name,"BaseYStart"))
+ fBaseYStart[0]=atof(xml->GetAttr(child,"Value"));
+ if (!strcmp(name,"BaseYStop"))
+ fBaseYStop[0]=atof(xml->GetAttr(child,"Value"));
+ // Check for multiple Channels
+ if (!strcmp(name,"MultiChannelExport")) {
+ if (!strcmp(xml->GetAttr(child,"Value"),"eRS_ONOFF_ON")) {
+ fMultiChannelExport=kTRUE;
+ }
+ else {
+ fMultiChannelExport=kFALSE;
+ fNrChannels=1;
+ fChannelsActive[0]=kTRUE;
+ for (Int_t i=1;i<4;i++) {
+ fChannelsActive[i]=kFALSE;
+ fVerticalScale[i]=-1;
+ fVerticalOffset[i]=0;
+ fVerticalPosition[i]=0;
+ fBaseYStart[i]=-1;
+ fBaseYStop[i]=-1;
+ }
+ }
+ }
+ // Vertical Scale (multiple channels)
+ if (fMultiChannelExport && (!strcmp(name,"MultiChannelVerticalScale"))) {
+ for (Int_t i=0; i<4; i++)
+ fVerticalScale[i]=atof(xml->GetAttr(child,Form("I_%i",i)));
+ }
+ if (fMultiChannelExport && (!strcmp(name,"MultiChannelVerticalOffset"))) {
+ for (Int_t i=0; i<4; i++)
+ fVerticalOffset[i]=atof(xml->GetAttr(child,Form("I_%i",i)));
+ }
+ if (fMultiChannelExport && (!strcmp(name,"MultiChannelVerticalPosition"))) {
+ for (Int_t i=0; i<4; i++)
+ fVerticalPosition[i]=atof(xml->GetAttr(child,Form("I_%i",i)));
+ }
+ if (fMultiChannelExport && (!strcmp(name,"MultiChannelBaseYStart"))) {
+ for (Int_t i=0; i<4; i++)
+ fBaseYStart[i]=atof(xml->GetAttr(child,Form("I_%i",i)));
+ }
+ if (fMultiChannelExport && (!strcmp(name,"MultiChannelBaseYStop"))) {
+ for (Int_t i=0; i<4; i++)
+ fBaseYStop[i]=atof(xml->GetAttr(child,Form("I_%i",i)));
+ }
+ // Active Channels (multiple channels)
+ if (fMultiChannelExport && (!strcmp(name,"MultiChannelExportState"))) {
+ fNrChannels=0;
+ for (Int_t i=0; i<4; i++) {
+ if (!strcmp(xml->GetAttr(child,Form("I_%i",i)),"eRS_ONOFF_ON")) {
+ fNrChannels++;
+ fChannelsActive[i]=kTRUE;
+ }
+ else {
+ fChannelsActive[i]=kFALSE;
+ fVerticalScale[i]=-1;
+ fVerticalOffset[i]=0;
+ fBaseYStart[i]=-1;
+ fBaseYStop[i]=-1;
+ }
+ }
+ }
+
+
+
+ child = xml->GetNext(child);
+ }
+
+ xml->FreeDoc(xmldoc);
+ delete xml;
+ return 0;
+}
+
+
+void RSParameter_t::Print()
+{
+ printf("Parameters read in:\n");
+ printf("Rohde&Schwarz Parameter File: Firmware %s:\n",fFirmwareVersion.Data());
+
+ printf("RecordLength: %i \n",fRecordLength);
+ printf("HWRecordLength: %i \n",fHWRecordLength);
+ printf("SignalRecordLength: %i \n",fSignalRecordLength);
+ printf("SignalHardwareRecordLength: %i \n",fSignalHardwareRecordLength);
+ printf("LeadingSettlingSamples: %i \n",fLeadingSettlingSamples);
+ printf("InterleavedFTraceCount %i \n",fInterleavedTraceCount);
+ printf("SignalFormat %i \n",fSignalFormat);
+ printf("MultiChannelExport %i \n",fMultiChannelExport);
+ printf("NrChannels %i \n",fNrChannels);
+ printf("ChannelsActive %i%i%i%i \n",fChannelsActive[0],fChannelsActive[1],fChannelsActive[2],fChannelsActive[3]);
+ printf("TimeScale %e \n",fTimeScale);
+ printf("HorizontalDivisionCount %i \n",fHorizontalDivisionCount);
+ printf("Resolution %e \n",fResolution);
+ printf("XStart / fXStop %.2e / %.2e \n",fXStart,fXStop);
+
+ printf("NofQuantisationLevels %i \n",fNofQuantisationLevels);
+ printf("Vertical Scale %.2e %.2e %.2e %.2e \n",fVerticalScale[0],fVerticalScale[1],fVerticalScale[2],fVerticalScale[3]);
+ printf("Vertical Offset [V] %.3e %.3e %.3e %.3e \n",fVerticalOffset[0],fVerticalOffset[1],fVerticalOffset[2],fVerticalOffset[3]);
+ printf("Vertical Position [div] %.3e %.3e %.3e %.3e \n",fVerticalPosition[0],fVerticalPosition[1],fVerticalPosition[2],fVerticalPosition[3]);
+ printf("VerticalDivisionCount %i \n",fVerticalDivisionCount);
+ printf("BaseYStart %.2e %.2e %.2e %.2e \n",fBaseYStart[0],fBaseYStart[1],fBaseYStart[2],fBaseYStart[3]);
+ printf("BaseYStop %.2e %.2e %.2e %.2e \n",fBaseYStop[0],fBaseYStop[1],fBaseYStop[2],fBaseYStop[3]);
+}
+
--- /dev/null
+#include "TMath.h"
+#include "TLine.h"
+
+
+class TraceAnalysis_t
+{
+public:
+ // Additional Options
+ Int_t fSetRisingFalling; //1: rising edge, 2: falling edge
+ Bool_t fSetAutoBaseline; //1: Get Baseline as Median from 10% sample
+ Double_t fSetDeadtime; //100ps deadtime before next trigger crossing
+ Double_t fWindowLow;
+ Double_t fWindowHigh;
+
+ // Calculated Trace Parameters
+ Double_t fBaseline;
+ Double_t fLeadingEdgeTime;
+ Double_t fTrailingEdgeTime;
+ Double_t fPulseWidth;
+ Double_t fPulseMaximum;
+ Double_t fPulseMinimum;
+ Double_t fPulseAmplitudePeakPeak;
+ Double_t fPulseArea;
+ Double_t fNetPulseMaximum;
+ Double_t fNetPulseMinimum;
+ Double_t fNetPulseArea;
+ Double_t fNetPosPulseArea;
+ Double_t fNetNegPulseArea;
+ Double_t fAbsThreshold;
+
+ TraceAnalysis_t();
+ virtual ~TraceAnalysis_t();
+ void Print();
+ void Draw();
+ Int_t AnalyzeTrace(TGraph* trace, Double_t AbsThreshold, Double_t RelThreshold=0);
+};
+
+TraceAnalysis_t::TraceAnalysis_t()
+{
+ fWindowLow=0.;
+ fWindowHigh=0.;
+ fSetRisingFalling=1;
+ fSetAutoBaseline=0.;
+ fSetDeadtime=1e-10;
+ fBaseline=0;
+ fLeadingEdgeTime=1e19;
+ fTrailingEdgeTime=-1e19;
+ fPulseWidth=0.;
+ fPulseMaximum=-1e19;
+ fPulseMinimum=1e19;
+ fPulseAmplitudePeakPeak=0.;
+ fPulseArea=0.;
+ fNetPulseMaximum=-1e19;
+ fNetPulseMinimum=1e19;
+ fNetPulseArea=0.;
+ fNetPosPulseArea=0.;
+ fNetNegPulseArea=0.;
+
+}
+
+TraceAnalysis_t::~TraceAnalysis_t()
+{
+}
+
+void TraceAnalysis_t::Print()
+{
+ printf("Results of Trace Analysis\n");
+ printf("Parameters: \n");
+ printf("Trigger Window %.3e - %.3e \n",fWindowLow,fWindowHigh);
+ printf("Rising / Falling Edge: %i \n",fSetRisingFalling);
+ printf("Auto fBaseline determination: %i \n",fSetAutoBaseline);
+ printf("Minimum Deadtime betw triggers %.2e \n",fSetDeadtime);
+ printf("Absolute Threshold %.2f \n",fAbsThreshold);
+ printf("Results:\n");
+ printf("fBaseline: %.2f \n",fBaseline);
+ printf("Leading/Trailing EdgeTime %.2e / %.2e \n",fLeadingEdgeTime,fTrailingEdgeTime);
+ printf("Pulse Width %.3e \n",fPulseWidth);
+ printf("Pulse Maximum / Minimum %.2e / %.2e \n",fPulseMaximum, fPulseMinimum);
+ printf("Net Pulse Maximum / Minimum %.2e / %.2e \n",fNetPulseMaximum, fNetPulseMinimum);
+ printf("Pulse Peak-to-Peak Ampltitude %.2e \n",fPulseAmplitudePeakPeak);
+ printf("Pulse Area / Net Area %.2e / %.2e \n",fPulseArea, fNetPulseArea);
+ printf("Pos/Neg Net Pulse Area %.2e / %.2e \n",fNetPosPulseArea,fNetNegPulseArea);
+ printf("\n");
+}
+
+void TraceAnalysis_t::Draw()
+{
+ Double_t xmin=gPad->GetUxmin();
+ Double_t xmax=gPad->GetUxmax();
+ Double_t ymin=gPad->GetUymin();
+ Double_t ymax=gPad->GetUymax();
+
+ // TriggerGate
+ TLine line;
+ line.SetLineColor(kBlack);
+ line.SetLineWidth(3);
+ if (fWindowLow!=fWindowHigh) {
+ line.DrawLine(fWindowLow,ymin,fWindowLow,ymax);
+ line.DrawLine(fWindowHigh,ymin,fWindowHigh,ymax);
+ }
+
+ // baseline
+ line.SetLineColor(kBlue);
+ line.SetLineWidth(3);
+ line.DrawLine(xmin,fBaseline,xmax,fBaseline);
+
+ // Trigger Points
+ line.SetLineColor(kRed);
+ line.SetLineWidth(1);
+ line.DrawLine(fLeadingEdgeTime,ymin,fLeadingEdgeTime,ymax);
+ line.DrawLine(fTrailingEdgeTime,ymin,fTrailingEdgeTime,ymax);
+
+ // Pulse Maximum / Minimum
+ line.SetLineColor(kBlue);
+ line.SetLineWidth(1);
+ line.DrawLine(xmin,fPulseMaximum,xmax,fPulseMaximum);
+ line.DrawLine(xmin,fPulseMinimum,xmax,fPulseMinimum);
+
+ // Abs / Rel Threshold
+ line.SetLineColor(kRed);
+ line.SetLineWidth(1);
+ line.SetLineStyle(kDashed);
+ line.DrawLine(xmin,fAbsThreshold+fBaseline,xmax,fAbsThreshold+fBaseline);
+}
+
+Int_t TraceAnalysis_t::AnalyzeTrace(TGraph* trace, Double_t AbsThreshold, Double_t RelThreshold)
+{
+ if (!trace)
+ return -1;
+ Int_t NrPoints=trace->GetN();
+ Int_t lowbin=0;
+ Int_t highbin=NrPoints-1;
+
+ // Calculate sample nrs corresponding to given window range
+ Bool_t WindowOnly= (fWindowLow!=fWindowHigh);
+ Double_t xfirst,yfirst,xlast,ylast;
+ trace->GetPoint(0,xfirst,yfirst);
+ trace->GetPoint(NrPoints-1,xlast,ylast);
+ Double_t resolutionx=(xlast-xfirst)/(NrPoints-1);
+ if (WindowOnly) {
+ lowbin=(fWindowLow-xfirst)/resolutionx;
+ highbin=(fWindowHigh-xfirst)/resolutionx;
+ }
+
+ // Calculate baseline as Median from first 10% of sample
+ if (fSetAutoBaseline)
+ fBaseline=TMath::Median(NrPoints/10,trace->GetY());
+
+ fPulseMaximum=TMath::MaxElement(highbin-lowbin+1,&(trace->GetY()[lowbin]));
+ fPulseMinimum=TMath::MinElement(highbin-lowbin+1,&(trace->GetY()[lowbin]));
+ fPulseAmplitudePeakPeak=fPulseMaximum-fPulseMinimum;
+ fNetPulseMaximum=fPulseMaximum-fBaseline;
+ fNetPulseMinimum=fPulseMinimum-fBaseline;
+
+ // Adjust AbsThreshold if rel threshold is given
+ if (RelThreshold>0) AbsThreshold=TMath::Max(AbsThreshold,RelThreshold*fNetPulseMaximum);
+ if (RelThreshold<0) AbsThreshold=TMath::Min(-AbsThreshold,-1*RelThreshold*fNetPulseMinimum);
+ fAbsThreshold=AbsThreshold;
+
+ fPulseArea=0.;
+ fNetPulseArea=0.;
+ fNetPosPulseArea=0.;
+ fNetNegPulseArea=0.;
+ fLeadingEdgeTime=1e19;
+ fTrailingEdgeTime=1e19;
+
+ Double_t x,y;
+ Bool_t Triggered=kFALSE;
+ Bool_t Done=kFALSE; // Trigger only on first pulse
+
+ Double_t lastchange=-1e19;
+ for (Int_t ibin=lowbin; ibin<highbin; ibin++) {
+ trace->GetPoint(ibin,x,y);
+ // Get Leading and Trailing Edge Time
+ if ( ((x-lastchange) > fSetDeadtime) && !Done) { //Hysteresis, 1. pulse only
+ // For rising edge triggering (positive signals)
+ if (fSetRisingFalling==1) {
+ if (!Triggered && (y-fBaseline)>AbsThreshold) {
+ fLeadingEdgeTime=x;
+ Triggered=kTRUE;
+ lastchange=x;
+ }
+ if (Triggered && (y-fBaseline)<AbsThreshold) {
+ fTrailingEdgeTime=x;
+ Triggered=kFALSE;
+ lastchange=x;
+ Done=kTRUE;
+ }
+ }
+ // For falling edge triggering (negative signals)
+ if (fSetRisingFalling==2) {
+ if (!Triggered && (y-fBaseline)<AbsThreshold) {
+ fLeadingEdgeTime=x;
+ Triggered=kTRUE;
+ lastchange=x;
+ }
+ if (Triggered && (y-fBaseline)>AbsThreshold) {
+ fTrailingEdgeTime=x;
+ Triggered=kFALSE;
+ lastchange=x;
+ Done=kTRUE;
+ }
+ }
+ }
+ // Calculate Pulse Area w/wo baseline
+ fPulseArea+=fabs(y*resolutionx);
+ fNetPulseArea+=fabs((y-fBaseline)*resolutionx);
+ if ((y-fBaseline)>0) fNetPosPulseArea+=(y-fBaseline)*resolutionx;
+ if ((y-fBaseline)<0) fNetNegPulseArea+=-1.*(y-fBaseline)*resolutionx;
+ }
+ // fPulseWidth as Difference between first and second trigger crossing
+ fPulseWidth=fTrailingEdgeTime-fLeadingEdgeTime;
+ if (!Done) { // No clean pulse with leading & trailing edge detected. S
+ fPulseArea=1e19; // Skip pulse area, amplitude
+ fNetPulseArea=1e19;
+ fNetPosPulseArea=1e19; fNetNegPulseArea=1e19;
+ fPulseMaximum=1e19; fPulseMinimum=1e19;
+ fNetPulseMaximum=1e19; fNetPulseMinimum=1e19;
+
+ }
+
+ return 0;
+}
+
+
+
--- /dev/null
+#include "TCanvas.h"
+#include "TH2.h"
+
+// Class RSreader contains code for reading any specific acquisition
+// of scope data out of the .bin file. Data are exported as TGraph.
+// Class TraceAnalysis is doing basic measurements on traces, using
+// the TGraph as input.
+#include "RSreader.C"
+#include "TraceAnalysis.C"
+
+TH1F* hLeadingEdgeTiming;
+TH1F* hPositiveAmplitude;
+TH1F* hPulseWidth;
+TH1F* hNetPosPulseArea;
+TH1F* hNetNegPulseArea;
+TH1F* hNetPulseArea;
+TH2F* hAmplitudevsArea;
+TH2F* hAreavsWidth;
+TH2F* hAreavsWidth2;
+
+void BookHistograms()
+{
+ hLeadingEdgeTiming=new TH1F("LeadingEdgeTiming","LeadingEdgeTiming",200,5e-9,20.e-9);
+ hPositiveAmplitude=new TH1F("PositiveAmplitude","PositiveAmplitue",100,0.,0.8);
+ hPulseWidth=new TH1F("PulseWidth","PulseWidth",100,0.,10e-9);
+ hNetPosPulseArea=new TH1F("NetPosPulseArea","NetPosPulseArea",100,0.,5e-9);
+ hNetNegPulseArea=new TH1F("NetNegPulseArea","NetNegPulseArea",100,0.,5e-9);
+ hNetPulseArea=new TH1F("NetPulseArea","NetPulseArea",100,0.,5e-9);
+
+ hAmplitudevsArea=new TH2F("AmplitudevsArea","AmplitudevsArea",50,0.,0.5,50,0.,5e-9);
+ hAreavsWidth=new TH2F("AreavsWidth","AreavsWidth",50,0.,3.5e-9,50,0.,10e-9);
+ hAreavsWidth2=new TH2F("AreavsWidth2","AreavsWidth2",50,0.,3.5e-9,50,0.,10e-9);
+}
+
+
+void analyze(TString filename)
+{
+ BookHistograms();
+
+ TCanvas* cc=new TCanvas("cc","cc",1000,1000);
+ RSDatafile_t* RSData=new RSDatafile_t();
+ RSData->OpenFileSet(filename);
+
+ // Setting up two instances of TraceAnalysis: One for the
+ // Trigger Channel on scope ch1, one for the actual signal (ch3)
+ // fSetAutoBaseline=kTRUE: Derive baseline as median of first 10% of sample
+ // Useful for Signal channel, due to 1.1V offset.
+ // fSetDeadTime: Minimum time diff betw. leading and trailing edge
+ // to suppress triggering on noise.
+ TraceAnalysis_t* TraceAnalysisTrigger=new TraceAnalysis_t();
+ TraceAnalysisTrigger->fSetAutoBaseline=kFALSE;
+ TraceAnalysisTrigger->fSetRisingFalling=1;
+ TraceAnalysisTrigger->fSetDeadtime=0.5e-9;
+
+ TraceAnalysis_t* TraceAnalysisSignal=new TraceAnalysis_t();
+ TraceAnalysisSignal->fSetAutoBaseline=kTRUE;
+ TraceAnalysisSignal->fSetRisingFalling=1;
+ TraceAnalysisSignal->fSetDeadtime=0.5e-9;
+
+
+ for (Int_t i=0; i<RSData->fNrAcquisitions; i++) {
+ // ReadAcquisition() reads always the next acquisition in the file.
+ // By giving a parameter, one could also read any specific acq in file.
+ Int_t result=RSData->ReadAcquisition();
+
+ // Use absolute threshold 2.0V on ch1, 0.08V (above baseline) on ch3
+ // A third parameter could define a rel threshold relative to max/min
+ // (after baseline subtraction). rel overrides abs threshold
+ TraceAnalysisTrigger->AnalyzeTrace(RSData->fTrace[0],2.0);
+ TraceAnalysisSignal->AnalyzeTrace(RSData->fTrace[2],0.08);
+
+ // Fill Histograms
+ hLeadingEdgeTiming->Fill(TraceAnalysisSignal->fLeadingEdgeTime - TraceAnalysisTrigger->fLeadingEdgeTime);
+ hPositiveAmplitude->Fill(TraceAnalysisSignal->fNetPulseMaximum);
+ hPulseWidth->Fill(TraceAnalysisSignal->fPulseWidth);
+ hNetPosPulseArea->Fill(TraceAnalysisSignal->fNetPosPulseArea);
+ hNetNegPulseArea->Fill(TraceAnalysisSignal->fNetNegPulseArea);
+ hNetPulseArea->Fill(TraceAnalysisSignal->fNetPulseArea);
+ hAmplitudevsArea->Fill(TraceAnalysisSignal->fNetPulseMaximum,TraceAnalysisSignal->fNetPulseArea);
+ hAreavsWidth->Fill(TraceAnalysisSignal->fNetPosPulseArea,TraceAnalysisSignal->fPulseWidth);
+ if (TraceAnalysisSignal->fPulseWidth >2e-9)
+ hAreavsWidth2->Fill(TraceAnalysisSignal->fNetPosPulseArea,TraceAnalysisSignal->fPulseWidth);
+
+ // Draw every 500th acquisition
+ if ((i+1)%50==0) {
+ cc->Clear();
+ cc->Divide(3,3);
+ cc->cd(1);
+ // GetFrame provides empty histogram with all axis properly set
+ RSData->GetFrame(0)->Draw();
+ cc->Update();
+ RSData->fTrace[0]->Draw("same");
+ TraceAnalysisTrigger->Draw();
+ TraceAnalysisTrigger->Print();
+
+ cc->cd(2);
+ RSData->GetFrame(2)->Draw();
+ cc->Update();
+ RSData->fTrace[2]->Draw("same");
+ TraceAnalysisSignal->Draw();
+ TraceAnalysisSignal->Print();
+
+ cc->cd(3);
+ hLeadingEdgeTiming->Draw();
+
+ cc->cd(4);
+ hPulseWidth->Draw();
+ cc->cd(5);
+ hPositiveAmplitude->Draw();
+ cc->cd(6);
+ hNetPosPulseArea->Draw();
+
+
+ cc->cd(7);
+ hAmplitudevsArea->Draw("box");
+ cc->cd(8);
+ hAreavsWidth->Draw("box");
+ cc->cd(9);
+ hAreavsWidth2->Draw("box");
+
+ cc->Update();
+ }
+ }
+}
+
--- /dev/null
+<?xml version="1.0" standalone="no"?>\r\r
+<Database FWVersion="" SaveItemType="Data">\r\r
+ <Group Avail="0" Name="ReferenceCurveAttributes" NofSubGroups="0" NofProperties="71">\r\r
+ <Prop Avail="0" ValueKey="" Name="SourceType" Version="2" Value="eRS_SIGNAL_SOURCE_TYPE_SOURCE" UserValue="eRS_SIGNAL_SOURCE_TYPE_NONE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="Resolution" Value="5e-011" UserValue="0" Step="1e-011" Default="0" Min="0" Max="1e+026" StepDefault="1e-011" StepFactor="10" Resolution="0" UnitId="59" UnitName="s" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="RecordLength" Value="1000" UserValue="1000" Step="1" Default="1000" Min="0" Max="4294967295" StepDefault="1" StepFactor="10" Resolution="1" UnitId="97" UnitName="Sa" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="HWRecordLength" Value="1000" UserValue="1000" Step="1" Default="1000" Min="0" Max="4294967295" StepDefault="1" StepFactor="10" Resolution="1" UnitId="97" UnitName="Sa" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="TriggerOffset" Value="0" UserValue="0" Step="5e-011" Default="0" Min="-500" Max="500" StepDefault="5e-011" StepFactor="100" Resolution="5e-011" UnitId="59" UnitName="s" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="RescaleCenterTime" Value="0" UserValue="0" Step="0.01" Default="0" Min="-500" Max="500" StepDefault="0.01" StepFactor="10" Resolution="1e-012" UnitId="59" UnitName="s" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="DecimationMode" Version="2" Value="eRS_DECIMATION_MODE_SAMPLE" UserValue="eRS_DECIMATION_MODE_SAMPLE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="TraceArithmetics" Version="2" Value="eRS_TRACE_ARITHMETICS_SINGLE" UserValue="eRS_TRACE_ARITHMETICS_SINGLE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="TraceType" Version="2" Value="eRS_TRACE_TYPE_NORMAL" UserValue="eRS_TRACE_TYPE_NORMAL"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="BaseUnit" Version="2" Value="eRS_UNIT_NONE" UserValue="eRS_UNIT_NONE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="BaseUnitRelative" Version="2" Value="eRS_ONOFF_OFF" UserValue="eRS_ONOFF_OFF"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="Impedance" Value="50" UserValue="0" Step="1" Default="0" Min="0" Max="1000000000" StepDefault="1" StepFactor="10" Resolution="0.01" UnitId="57" UnitName="Ω" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="XStart" Value="-2.5e-008" UserValue="0" Step="1e-010" Default="0" Min="-1e+026" Max="1e+026" StepDefault="1e-010" StepFactor="10" Resolution="0" UnitId="59" UnitName="s" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="XStop" Value="2.5e-008" UserValue="0" Step="1e-010" Default="0" Min="-1e+026" Max="1e+026" StepDefault="1e-010" StepFactor="10" Resolution="0" UnitId="59" UnitName="s" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="SignalRecordLength" Value="1000" UserValue="1000" Step="1" Default="1000" Min="0" Max="4294967295" StepDefault="1" StepFactor="10" Resolution="1" UnitId="97" UnitName="Sa" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="HardwareXStart" Value="-2.5e-008" UserValue="0" Step="1e-010" Default="0" Min="-1e+026" Max="1e+026" StepDefault="1e-010" StepFactor="10" Resolution="0" UnitId="59" UnitName="s" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="HardwareXStop" Value="2.5e-008" UserValue="0" Step="1e-010" Default="0" Min="-1e+026" Max="1e+026" StepDefault="1e-010" StepFactor="10" Resolution="0" UnitId="59" UnitName="s" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="SignalHardwareRecordLength" Value="1000" UserValue="1000" Step="1" Default="1000" Min="0" Max="4294967295" StepDefault="1" StepFactor="10" Resolution="1" UnitId="97" UnitName="Sa" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="AdjustedResolutionBW" Value="0" UserValue="1" Step="0.1" Default="1" Min="0" Max="1e+026" StepDefault="0.1" StepFactor="10" Resolution="0" UnitId="65" UnitName="Hz" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="NoiseBandwidth" Value="0" UserValue="1" Step="0.1" Default="1" Min="0" Max="1e+026" StepDefault="0.1" StepFactor="10" Resolution="0" UnitId="65" UnitName="Hz" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="InterleavedTraceCount" Value="1" UserValue="1" Step="1" Default="1" Min="0" Max="4" StepDefault="1" StepFactor="10" Resolution="1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ValueType" Version="2" Value="eRS_SIGNAL_VALUE_TYPE_COMPLETELY_FINITE_DEFINED" UserValue="eRS_SIGNAL_VALUE_TYPE_COMPLETELY_FINITE_DEFINED"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="NofQuantisationLevels" Value="253" UserValue="1" Step="0.1" Default="1" Min="0" Max="1e+026" StepDefault="0.1" StepFactor="10" Resolution="0" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="DecimationFactor" Value="1" UserValue="1" Step="0.1" Default="1" Min="0" Max="1e+026" StepDefault="0.1" StepFactor="10" Resolution="0" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="TOADone" Version="2" Value="eRS_ONOFF_OFF" UserValue="eRS_ONOFF_ON"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ISO_TRG" Value="140" UserValue="0" Step="1" Default="0" Min="0" Max="512" StepDefault="1" StepFactor="10" Resolution="1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="SC_POST" Value="501289363203160" UserValue="0" Step="1" Default="0" Min="0" Max="18446744073709551615" StepDefault="1" StepFactor="10" Resolution="1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="SC_TRG" Value="501289363200087" UserValue="0" Step="1" Default="0" Min="0" Max="18446744073709551615" StepDefault="1" StepFactor="10" Resolution="1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="SignalResolution" Value="5e-011" UserValue="1" Step="0.1" Default="1" Min="0" Max="1e+026" StepDefault="0.1" StepFactor="10" Resolution="0" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="LeadingSettlingSamples" Value="0" UserValue="1000" Step="1" Default="1000" Min="0" Max="4294967295" StepDefault="1" StepFactor="10" Resolution="1" UnitId="97" UnitName="Sa" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="TimeScale" Value="5e-009" UserValue="0.05" Step="1e-012" Default="0.05" Min="2.5e-011" Max="50" StepDefault="1e-012" StepFactor="10" Resolution="1e-012" UnitId="91" UnitName="s/div" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ReferencePoint" Value="50" UserValue="50" Step="10" Default="50" Min="-1e+026" Max="1e+026" StepDefault="10" StepFactor="10" Resolution="1e-008" UnitId="50" UnitName="%" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="RescaleCenterPoint" Value="50" UserValue="50" Step="10" Default="50" Min="-1e+026" Max="1e+026" StepDefault="10" StepFactor="10" Resolution="1e-008" UnitId="50" UnitName="%" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="VerticalPosition" Value="0" UserValue="0" Step="0.1" Default="0" Min="-1e+026" Max="1e+026" StepDefault="0.1" StepFactor="10" Resolution="0" UnitId="95" UnitName="div" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="VerticalScale" Value="0.75" UserValue="0" Step="1e-006" Default="0" Min="0" Max="1e+026" StepDefault="1e-006" StepFactor="10" Resolution="0.0001" UnitId="28" UnitName="V/div" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="VerticalOffset" Value="2.5" UserValue="2.5" Step="0.0225225225225225" Default="0" Min="-1e+026" Max="1e+026" StepDefault="0.0225225225225225" StepFactor="33.3" Resolution="1e-005" UnitId="28" UnitName="V" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="BaseYStart" Value="-1.25" UserValue="0" Step="1e-005" Default="0" Min="-1e+026" Max="1e+026" StepDefault="1e-005" StepFactor="10" Resolution="0" UnitId="28" UnitName="V" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="BaseYStop" Value="6.25" UserValue="0" Step="1e-005" Default="0" Min="-1e+026" Max="1e+026" StepDefault="1e-005" StepFactor="10" Resolution="0" UnitId="28" UnitName="V" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ViewUnit" Version="2" Value="eRS_UNIT_NONE" UserValue="eRS_UNIT_NONE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ViewUnitRelative" Version="2" Value="eRS_ONOFF_OFF" UserValue="eRS_ONOFF_OFF"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ViewReferenceLevel" Value="0" UserValue="0" Step="0.1" Default="0" Min="-1e+026" Max="1e+026" StepDefault="0.1" StepFactor="10" Resolution="0.1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="UseInterSampleTriggerOffset" Version="2" Value="eRS_USE_INTERSAMPLE_OFFSET_AUTO" UserValue="eRS_USE_INTERSAMPLE_OFFSET_AUTO"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="Source" Version="2" Value="eRS_SIGNAL_SOURCE_CH1_TR1" UserValue="eRS_SIGNAL_SOURCE_NONE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="NumericFormat" Version="2" Value="eRS_NUMERIC_FORMAT_DECIMAL" UserValue="eRS_NUMERIC_FORMAT_DECIMAL"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="EnhancementMode" Version="2" Value="eRS_ENHANCEMENT_MODE_REALTIME" UserValue="eRS_ENHANCEMENT_MODE_REALTIME"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="InterpolationMode" Version="2" Value="eRS_INTERPOLATION_MODE_LINEAR" UserValue="eRS_INTERPOLATION_MODE_LINEAR"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="CenterFreq" Value="0" UserValue="500" Step="1" Default="500" Min="0" Max="2000000000" StepDefault="1" StepFactor="10" Resolution="1e-005" UnitId="65" UnitName="Hz" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="FreqSpan" Value="1000" UserValue="1000" Step="100" Default="1000" Min="100" Max="2000000000" StepDefault="100" StepFactor="10" Resolution="1" UnitId="65" UnitName="Hz" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ResolutionBW" Value="1" UserValue="1" Step="0.1" Default="1" Min="1" Max="20000000" StepDefault="0.1" StepFactor="10" Resolution="0.01" UnitId="65" UnitName="Hz" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="FrequencyStart" Value="0" UserValue="0" Step="1e-011" Default="0" Min="0" Max="1e+026" StepDefault="1e-011" StepFactor="10" Resolution="0" UnitId="65" UnitName="Hz" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="FrequencyStop" Value="0" UserValue="0" Step="1e-011" Default="0" Min="0" Max="1e+026" StepDefault="1e-011" StepFactor="10" Resolution="0" UnitId="65" UnitName="Hz" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="WindowType" Version="2" Value="eRS_MATH_SPECTRAL_WINDOW_TYPE_RECTANGULAR" UserValue="eRS_MATH_SPECTRAL_WINDOW_TYPE_GAUSSIAN"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="GateRBWCoupling" Version="2" Value="eRS_MATH_SPECTRAL_GATE_RBW_COUPLING_KEEP_GATE" UserValue="eRS_MATH_SPECTRAL_GATE_RBW_COUPLING_KEEP_GATE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="HorizontalDivisionCount" Value="10" UserValue="10" Step="2" Default="10" Min="1" Max="20" StepDefault="2" StepFactor="10" Resolution="1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="VerticalDivisionCount" Value="10" UserValue="10" Step="2" Default="10" Min="1" Max="20" StepDefault="2" StepFactor="10" Resolution="1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelExport" Version="2" Value="eRS_ONOFF_ON" UserValue="eRS_ONOFF_OFF"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelVerticalOffset" Step="1e-005" Default="0" Min="-1e+026" Max="1e+026" StepDefault="1e-005" StepFactor="10" Resolution="0" UnitId="28" UnitName="V" UnitPowerProduct="" BitGroupSize="0" Format="0" Size="4" I_0="2.5" I_1="0" I_2="1.3" I_3="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelVerticalPosition" Step="1e-006" Default="0" Min="0" Max="1e+026" StepDefault="1e-006" StepFactor="10" Resolution="0" UnitId="95" UnitName="div" UnitPowerProduct="" BitGroupSize="0" Format="0" Size="4" I_0="0" I_1="0" I_2="0" I_3="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelVerticalScale" Step="1e-006" Default="0" Min="0" Max="1e+026" StepDefault="1e-006" StepFactor="10" Resolution="0" UnitId="28" UnitName="V" UnitPowerProduct="" BitGroupSize="0" Format="0" Size="4" I_0="0.75" I_1="0" I_2="0.1" I_3="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelBaseYStart" Step="1e-006" Default="0" Min="0" Max="1e+026" StepDefault="1e-006" StepFactor="10" Resolution="0" UnitId="28" UnitName="V" UnitPowerProduct="" BitGroupSize="0" Format="0" Size="4" I_0="-1.25" I_1="0" I_2="0.8" I_3="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelBaseYStop" Step="1e-006" Default="0" Min="0" Max="1e+026" StepDefault="1e-006" StepFactor="10" Resolution="0" UnitId="28" UnitName="V" UnitPowerProduct="" BitGroupSize="0" Format="0" Size="4" I_0="6.25" I_1="0" I_2="1.8" I_3="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelExportState" Version="2" Size="4" I_0="eRS_ONOFF_ON" I_1="eRS_ONOFF_OFF" I_2="eRS_ONOFF_ON" I_3="eRS_ONOFF_OFF"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="MultiChannelViewUnit" Version="2" Size="4" I_0="eRS_UNIT_NONE" I_1="eRS_UNIT_NONE" I_2="eRS_UNIT_NONE" I_3="eRS_UNIT_NONE"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="FirmwareVersion" Value="3.30.1.1"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="SignalFormat" Version="2" Value="eRS_SIGNAL_FORMAT_INT8BIT" UserValue="eRS_SIGNAL_FORMAT_FLOAT"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="Origin" Version="2" Value="eRS_EXPORT_ORIGIN_WFM_EXPORT" UserValue="eRS_EXPORT_ORIGIN_WFM_EXPORT"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="ByteOrder" Version="2" Value="eRS_BYTE_ORDER_LSB_FIRST" UserValue="eRS_BYTE_ORDER_LSB_FIRST"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="NumberOfWaveforms" Value="1" UserValue="1" Step="1" Default="1" Min="1" Max="10000000" StepDefault="1" StepFactor="10" Resolution="1" UnitId="79" UnitName="" UnitPowerProduct="" BitGroupSize="0" Format="0"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="TimestampState" Version="2" Value="eRS_ONOFF_OFF" UserValue="eRS_ONOFF_OFF"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="Timestamp" Value="10:25 40,351.976.164 s"/>\r\r
+ <Prop Avail="0" ValueKey="" Name="XAxisMode" Version="2" Value="eRS_LINLOG_LINEAR" UserValue="eRS_LINLOG_LINEAR"/>\r\r
+ </Group>\r\r
+ <PreviewImage ImageData="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"/>\r\r
+</Database>
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+
+yoko_addr="192.168.10.40"
+
+timestamp=$(date '+%Y-%m-%d_%H:%M:%S')
+
+yoko_dir="ftp://$yoko_addr/HD/"
+
+#curl $yoko_dir 2>/dev/null | perl -p -e 's/\S*\s*\S*\s*\S*\s*//;'
+
+for i in $(curl $yoko_dir 2>/dev/null | perl -p -e 's/\S*\s*\S*\s*\S*\s*//;')
+do
+if [ -e $i ]; then
+echo "$i: file exists"
+else
+echo "downloading $i"
+wget $yoko_dir$i
+fi
+done
+
--- /dev/null
+#!/bin/bash
+
+yoko_addr="192.168.10.40"
+
+
+yoko_dir="ftp://$yoko_addr/HD/"
+
+#curl $yoko_dir 2>/dev/null | perl -p -e 's/\S*\s*\S*\s*\S*\s*//;'
+
+
+i=$(curl $yoko_dir 2>/dev/null | perl -p -e 's/\S*\s*\S*\s*\S*\s*//;'| tail -n 1)
+outfn=$i
+if [ $1 ]; then
+outfn=$1
+fi
+if [ -e $outfn ]; then
+echo "$outfn: file exists"
+else
+echo "downloading $i"
+wget $yoko_dir$i -O $outfn
+fi
--- /dev/null
+#!/bin/bash
+
+yoko_addr="192.168.10.40"
+
+timestamp=$(date '+%Y-%m-%d_%H:%M:%S')
+outputfn="./yoko_screen_$timestamp.png"
+if [ $1 ]; then
+outputfn=$1
+fi
+
+wget ${yoko_addr}/webmonimagefull.png --ignore-length -O $outputfn
--- /dev/null
+#!/bin/bash
+yoko_addr="192.168.10.40"
+curl $yoko_addr/start.cmd >/dev/null 2>&1
--- /dev/null
+#!/bin/bash
+yoko_addr="192.168.10.40"
+curl $yoko_addr/stop.cmd >/dev/null 2>&1
--- /dev/null
+../../daqtools/web/htdocs/tools/vxi
\ No newline at end of file