284,6 → 284,450 |
delete[] layoutdir; |
} |
|
// Function for saving all current measurement settings in a file and reopening them on next program open |
void TGAppMainFrame::SaveMeasSettings() |
{ |
char *cTemp; |
cTemp = new char[1024]; |
sprintf(cTemp, "%s/settings/measurement_settings.txt", rootdir); |
|
std::ofstream osettings; |
|
osettings.open(cTemp, std::ofstream::out); |
if(osettings.is_open()) |
{ |
osettings << "# Settings pane" << std::endl; |
for(int i = 0; i < 4; i++) |
osettings << (int)scansOn->widgetChBox[i]->IsDown() << std::endl; |
osettings << vHardlimit->widgetNE[0]->GetNumber() << std::endl; |
osettings << NCH->widgetNE[0]->GetNumber() << std::endl; |
osettings << posUnits->widgetCB->GetSelected() << std::endl; |
osettings << rotUnits->widgetCB->GetSelected() << std::endl; |
osettings << oscConnect->widgetTE->GetText() << std::endl; |
osettings << laserInfo->widgetTE->GetText() << std::endl; |
osettings << chtemp->widgetNE[0]->GetNumber() << std::endl; |
osettings << (int)liveDisp->widgetChBox[0]->IsDown() << std::endl; |
osettings << std::endl; |
|
osettings << "# Main measurement window" << std::endl; |
osettings << vOutCh->widgetCB->GetSelected() << std::endl; |
for(int i = 0; i < 2; i++) |
osettings << (int)vOutOpt->widgetChBox[i]->IsDown() << std::endl; |
osettings << vOutStart->widgetNE[0]->GetNumber() << std::endl; |
osettings << vOutStop->widgetNE[0]->GetNumber() << std::endl; |
osettings << vOutStep->widgetNE[0]->GetNumber() << std::endl; |
|
osettings << zPosMin->widgetNE[0]->GetNumber() << std::endl; |
osettings << zPosMax->widgetNE[0]->GetNumber() << std::endl; |
osettings << zPosStep->widgetNE[0]->GetNumber() << std::endl; |
osettings << xPosMin->widgetNE[0]->GetNumber() << std::endl; |
osettings << xPosMax->widgetNE[0]->GetNumber() << std::endl; |
osettings << xPosStep->widgetNE[0]->GetNumber() << std::endl; |
osettings << yPosMin->widgetNE[0]->GetNumber() << std::endl; |
osettings << yPosMax->widgetNE[0]->GetNumber() << std::endl; |
osettings << yPosStep->widgetNE[0]->GetNumber() << std::endl; |
|
osettings << rotPosMin->widgetNE[0]->GetNumber() << std::endl; |
osettings << rotPosMax->widgetNE[0]->GetNumber() << std::endl; |
osettings << rotPosStep->widgetNE[0]->GetNumber() << std::endl; |
|
osettings << evtNum->widgetNE[0]->GetNumber() << std::endl; |
osettings << fileName->widgetTE->GetText() << std::endl; |
|
printf("Saving measurement settings to file.\n"); |
} |
else |
printf("Error! Save file can not be opened.\n"); |
osettings.close(); |
} |
|
// Function for saving all current analysis settings in a file and reopening them on next program open |
void TGAppMainFrame::SaveAnalSettings() |
{ |
char *cTemp; |
cTemp = new char[1024]; |
sprintf(cTemp, "%s/settings/analysis_settings.txt", rootdir); |
|
std::ofstream osettings; |
|
osettings.open(cTemp, std::ofstream::out); |
if(osettings.is_open()) |
{ |
osettings << "# Analysis" << std::endl; |
// Integrate spectrum |
for(int i = 0; i < 3; i++) |
osettings << (int)intSpect->widgetChBox[i]->IsDown() << std::endl; |
for(int i = 0; i < 2; i++) |
osettings << resol2d->widgetNE[i]->GetNumber() << std::endl; |
|
// Relative PDE |
osettings << (int)relPde->widgetChBox[0]->IsDown() << std::endl; |
osettings << (int)midPeak->widgetChBox[0]->IsDown() << std::endl; |
osettings << zeroAngle->widgetNE[0]->GetNumber() << std::endl; |
|
// Breakdown voltage |
osettings << minPeak->widgetNE[0]->GetNumber() << std::endl; |
osettings << peakSepCalc->widgetNE[0]->GetNumber() << std::endl; |
|
// Surface scan |
for(int i = 0; i < 2; i++) |
osettings << (int)surfScanOpt->widgetChBox[i]->IsDown() << std::endl; |
for(int i = 0; i < 2; i++) |
osettings << resolSurf->widgetNE[i]->GetNumber() << std::endl; |
|
// Fitting |
osettings << fitSigma->widgetNE[0]->GetNumber() << std::endl; |
osettings << fitTresh->widgetNE[0]->GetNumber() << std::endl; |
osettings << fitInter->widgetNE[0]->GetNumber() << std::endl; |
osettings << adcOffset->widgetNE[0]->GetNumber() << std::endl; |
osettings << accError->widgetNE[0]->GetNumber() << std::endl; |
osettings << pedesLow->widgetNE[0]->GetNumber() << std::endl; |
for(int i = 0; i < 2; i++) |
osettings << (int)fitChecks->widgetChBox[i]->IsDown() << std::endl; |
osettings << std::endl; |
|
osettings << "# Histogram controls" << std::endl; |
for(int i = 0; i < 2; i++) |
osettings << adcRange->widgetNE[i]->GetNumber() << std::endl; |
for(int i = 0; i < 2; i++) |
osettings << tdcRange->widgetNE[i]->GetNumber() << std::endl; |
for(int i = 0; i < 2; i++) |
osettings << yRange->widgetNE[i]->GetNumber() << std::endl; |
osettings << selectCh->widgetNE[0]->GetNumber() << std::endl; |
for(int i = 0 ; i < 2; i++) |
osettings << (int)histOpt->widgetChBox[i]->IsDown() << std::endl; |
osettings << posUnitsPlot->widgetCB->GetSelected() << std::endl; |
|
printf("Saving analysis settings to file.\n"); |
} |
else |
printf("Error! Save file can not be opened.\n"); |
osettings.close(); |
} |
|
// Function for getting all measurement settings from a file |
void TGAppMainFrame::GetMeasSettings() |
{ |
char *cTemp, readTemp[1024]; |
cTemp = new char[1024]; |
sprintf(cTemp, "%s/settings/measurement_settings.txt", rootdir); |
|
int iTemp, k = 0; |
double dTemp; |
|
std::ifstream isettings; |
|
isettings.open(cTemp, std::ifstream::in); |
if(isettings.is_open()) |
{ |
printf("Opening measurement settings from file.\n"); |
|
while(1) |
{ |
if(isettings.peek() == '#') |
{ |
isettings.getline(readTemp, 1024, '\n'); |
if(DBGSIG > 1) printf("GetMeasSettings(): readTemp = %s\n", readTemp); |
} |
else if(isettings.peek() == '\n') |
isettings.ignore(1, '\n'); |
else |
{ |
if(k == 0) |
{ |
// Scan settings |
for(int i = 0; i < 4; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) scansOn->widgetChBox[i]->SetState(kButtonUp); |
else if(iTemp == 1) scansOn->widgetChBox[i]->SetState(kButtonDown); |
} |
// Hard voltage limit |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
vHardlimit->widgetNE[0]->SetNumber(dTemp); |
// Number of channels |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
NCH->widgetNE[0]->SetNumber(iTemp); |
// Position units |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
posUnits->widgetCB->Select(iTemp); |
// Rotation units |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
rotUnits->widgetCB->Select(iTemp); |
// Oscilloscope IP address |
isettings.getline(readTemp, 1024, '\n'); |
oscConnect->widgetTE->SetText(readTemp); |
// Laser info |
isettings.getline(readTemp, 1024, '\n'); |
laserInfo->widgetTE->SetText(readTemp); |
// Chamber temperature |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
chtemp->widgetNE[0]->SetNumber(dTemp); |
// Live display |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) liveDisp->widgetChBox[0]->SetState(kButtonUp); |
else if(iTemp == 1) liveDisp->widgetChBox[0]->SetState(kButtonDown); |
|
k++; |
} |
else if(k == 1) |
{ |
// Voltage supply channel |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
vOutCh->widgetCB->Select(iTemp); |
// Voltage supply options |
for(int i = 0; i < 2; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) vOutOpt->widgetChBox[i]->SetState(kButtonUp); |
else if(iTemp == 1) vOutOpt->widgetChBox[i]->SetState(kButtonDown); |
} |
// Voltage supply min, max and step |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
vOutStart->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
vOutStop->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
vOutStep->widgetNE[0]->SetNumber(dTemp); |
// Z axis scan min, max and step |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
zPosMin->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
zPosMax->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
zPosStep->widgetNE[0]->SetNumber(dTemp); |
// X axis scan min, max and step |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
xPosMin->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
xPosMax->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
xPosStep->widgetNE[0]->SetNumber(dTemp); |
// Y axis scan min, max and step |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
yPosMin->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
yPosMax->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
yPosStep->widgetNE[0]->SetNumber(dTemp); |
// Rotation min, max and step |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
rotPosMin->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
rotPosMax->widgetNE[0]->SetNumber(dTemp); |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
rotPosStep->widgetNE[0]->SetNumber(dTemp); |
// Number of events |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
evtNum->widgetNE[0]->SetNumber(iTemp); |
// Save filename |
isettings.getline(readTemp, 1024, '\n'); |
fileName->widgetTE->SetText(readTemp); |
|
k++; |
} |
else |
break; |
} |
} |
} |
else |
printf("Error! Measurement settings file can not be opened. Using defaults.\n"); |
} |
|
// Function for getting all analysis settings from a file |
void TGAppMainFrame::GetAnalSettings() |
{ |
char *cTemp, readTemp[1024]; |
cTemp = new char[1024]; |
sprintf(cTemp, "%s/settings/analysis_settings.txt", rootdir); |
|
int iTemp, k = 0; |
double dTemp; |
|
std::ifstream isettings; |
|
isettings.open(cTemp, std::ifstream::in); |
if(isettings.is_open()) |
{ |
printf("Opening analysis settings from file.\n"); |
|
while(1) |
{ |
if(isettings.peek() == '#') |
{ |
isettings.getline(readTemp, 1024, '\n'); |
if(DBGSIG > 1) printf("GetAnalSettings(): readTemp = %s\n", readTemp); |
} |
else if(isettings.peek() == '\n') |
isettings.ignore(1, '\n'); |
else |
{ |
if(k == 0) |
{ |
// Integrate spectrum options |
for(int i = 0; i < 3; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) intSpect->widgetChBox[i]->SetState(kButtonUp); |
else if(iTemp == 1) intSpect->widgetChBox[i]->SetState(kButtonDown); |
} |
// Integrate spectrum 2D resolution |
for(int i = 0; i < 2; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
resol2d->widgetNE[i]->SetNumber(iTemp); |
} |
// Relative PDE normalization |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) relPde->widgetChBox[0]->SetState(kButtonUp); |
else if(iTemp == 1) relPde->widgetChBox[0]->SetState(kButtonDown); |
// Relative PDE middle peak |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) midPeak->widgetChBox[0]->SetState(kButtonUp); |
else if(iTemp == 1) midPeak->widgetChBox[0]->SetState(kButtonDown); |
// Relative PDE zero angle setting |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
zeroAngle->widgetNE[0]->SetNumber(dTemp); |
// Breakdown voltage minimum number of detected peaks |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
minPeak->widgetNE[0]->SetNumber(iTemp); |
// Breakdown voltage separation calculation |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
peakSepCalc->widgetNE[0]->SetNumber(iTemp); |
// Surface scan options |
for(int i = 0; i < 2; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) surfScanOpt->widgetChBox[i]->SetState(kButtonUp); |
else if(iTemp == 1) surfScanOpt->widgetChBox[i]->SetState(kButtonDown); |
} |
// Surface scan 2D resolution |
for(int i = 0; i < 2; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
resolSurf->widgetNE[i]->SetNumber(iTemp); |
} |
// Fitting - sigma |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
fitSigma->widgetNE[0]->SetNumber(dTemp); |
// Fitting - S/N ratio |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
fitTresh->widgetNE[0]->SetNumber(dTemp); |
// Fitting - interpolation |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
fitInter->widgetNE[0]->SetNumber(iTemp); |
// Fitting - ADC offset |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
adcOffset->widgetNE[0]->SetNumber(dTemp); |
// Fitting - Acceptable error |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
accError->widgetNE[0]->SetNumber(dTemp); |
// Fitting - Pedestal lower limit |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
pedesLow->widgetNE[0]->SetNumber(dTemp); |
// Fitting - settings |
for(int i = 0; i < 2; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) fitChecks->widgetChBox[i]->SetState(kButtonUp); |
else if(iTemp == 1) fitChecks->widgetChBox[i]->SetState(kButtonDown); |
} |
|
k++; |
} |
else if(k == 1) |
{ |
// ADC range |
for(int i = 0; i < 2; i++) |
{ |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
adcRange->widgetNE[i]->SetNumber(dTemp); |
} |
// TDC range |
for(int i = 0; i < 2; i++) |
{ |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
tdcRange->widgetNE[i]->SetNumber(dTemp); |
} |
// Y axis range |
for(int i = 0; i < 2; i++) |
{ |
isettings >> dTemp; |
isettings.ignore(1, '\n'); |
yRange->widgetNE[i]->SetNumber(dTemp); |
} |
// Displayed channel |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
selectCh->widgetNE[0]->SetNumber(iTemp); |
// Display options |
for(int i = 0; i < 2; i++) |
{ |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
if(iTemp == 0) histOpt->widgetChBox[i]->SetState(kButtonUp); |
else if(iTemp == 1) histOpt->widgetChBox[i]->SetState(kButtonDown); |
} |
// Display position units |
isettings >> iTemp; |
isettings.ignore(1, '\n'); |
posUnitsPlot->widgetCB->Select(iTemp); |
|
k++; |
} |
else |
break; |
} |
} |
} |
else |
printf("Error! Measurement settings file can not be opened. Using defaults.\n"); |
} |
|
// Layout function for the main window (width and height) |
void layoutMainWindow(int *w, int *h) |
{ |