(ui->customPlot10->plotLayout()->elementAt(i))) ui->customPlot10->plotLayout()->removeAt(i);
+ }
+ ui->customPlot10->plotLayout()->simplify();
+
+ QCPLayoutGrid* subLayout = new QCPLayoutGrid;
+ ui->customPlot10->plotLayout()->addElement(1, 0, subLayout);
+ subLayout->setMargins(QMargins(53, 0, 16, 5));
+ QCPColorScale* colorScale = new QCPColorScale(ui->customPlot10);
+ subLayout->addElement(0, 0, colorScale);
+ colorScale->setType(QCPAxis::atBottom);
+
+ QColor lightBlue = QColor(215, 237, 255);
+ colorScale->axis()->setSubTickPen(QPen(lightBlue));
+ colorScale->axis()->setTickPen(QPen(lightBlue));
+ colorScale->axis()->setTickLabelColor(lightBlue);
+ colorScale->axis()->setLabelColor(lightBlue);
+
+ ui->customPlot10->clearPlottables();
+
+ float sliderDetectorValue = ui->horizontalSliderDetector->value();
+ float rangeValue = 2. + sliderDetectorValue / 200. * 500.; //in m
+
+ const int unitCells = 30;
+
+ if (ui->horizontalSliderDetector->value() <= 1)
+ {
+ QCPColorMap* colorMapDetector = new QCPColorMap(ui->customPlot10->xAxis, ui->customPlot10->yAxis);
+
+ colorMapDetector->data()->setSize(250, 250);
+ colorMapDetector->data()->setRange(QCPRange(-::squareDim * 0.5 * 0.001, ::squareDim * 0.5 * 0.001), QCPRange(-::squareDim * 0.5 * 0.001, ::squareDim * 0.5 * 0.001));
+
+ for (int x = 0; x < 500; x += 2)
+ {
+ for (int y = 0; y < 500; y += 2)
+ {
+ colorMapDetector->data()->setCell((int)x / 2, (int)y / 2, ::detectorOriginMap->GetBinContent(x, y) + ::detectorOriginMap->GetBinContent(x + 1, y) + ::detectorOriginMap->GetBinContent(x, y + 1) + ::detectorOriginMap->GetBinContent(x + 1, y + 1));
+ }
+ }
+
+ colorMapDetector->setDataRange(QCPRange(0, 2.2));
+ colorMapDetector->setGradient(QCPColorGradient::gpCold);
+
+ string detectorLabelMaxText = "-";
+ string detectorLabelText = "-";
+
+ ui->label_DetectorRangeMaximum->setText(QString::fromStdString(detectorLabelMaxText));
+ ui->label_DetectorRange->setText(QString::fromStdString(detectorLabelText));
+
+ colorScale->setDataRange(QCPRange(0, 2.2));
+ colorScale->setGradient(QCPColorGradient::gpCold);
+ }
+ else
+ {
+ QCPColorMap* colorMapDetectorRelativeSquare = new QCPColorMap(ui->customPlot10->xAxis, ui->customPlot10->yAxis);
+
+ colorMapDetectorRelativeSquare->data()->setSize(250, 250);
+ colorMapDetectorRelativeSquare->data()->setRange(QCPRange(-::squareDim * 0.5 * 0.001, ::squareDim * 0.5 * 0.001), QCPRange(-::squareDim * 0.5 * 0.001, ::squareDim * 0.5 * 0.001));
+
+ float allDetectorNeutrons = detectorOriginMap->GetEntries();
+ float detectororiginMapValue;
+ float detectororiginMapDrawValue, detectororiginMapDrawValueMax = 0;
+ bool mapValueFound = false;
+
+ float pixX, pixY, sumMatrixX, sumMatrixY, sumMatrixXp1, sumMatrixYp1;
+
+ TMatrixF sumMatrix(unitCells, unitCells);
+
+ for (int x = 0; x < 500; x += 1)
+ {
+ pixX = (-squareDim * 0.5 + squareDim * 0.002 * x - detPosX[0]) * 0.001; //relative to Det in m
+ for (int y = 0; y < 500; y += 1)
+ {
+ detectororiginMapValue = detectorOriginMap->GetBinContent(x, y);
+ if (detectororiginMapValue < 0.1) continue;
+
+ pixY = (-squareDim * 0.5 + squareDim * 0.002 * y - detPosY[0]) * 0.001;
+
+ for (int m = 0; m < unitCells; m += 1)
+ {
+ mapValueFound = false;
+ sumMatrixX = -rangeValue + 2. * rangeValue * m / (unitCells * 1.);
+ sumMatrixXp1 = sumMatrixX + 2. * rangeValue / (unitCells * 1.);
+ if ((pixX >= sumMatrixX) && (pixX < sumMatrixXp1))
+ {
+ for (int n = 0; n < unitCells; n += 1)
+ {
+ sumMatrixY = -rangeValue + 2. * rangeValue * n / (unitCells * 1.);
+ sumMatrixYp1 = sumMatrixY + 2. * rangeValue / (unitCells * 1.);
+ if ((pixY >= sumMatrixY) && (pixY < sumMatrixYp1))
+ {
+ sumMatrix(m, n) = sumMatrix(m, n) + detectororiginMapValue;
+ mapValueFound = true;
+ break;
+ }
+ }
+ }
+ if (mapValueFound) break;
+ }
+ }
+ }
+
+ for (int x = 0; x < 250; x += 1)
+ {
+ pixX = (-squareDim * 0.5 + squareDim * 0.004 * x - detPosX[0]) * 0.001; //relative to Det in m
+ for (int y = 0; y < 250; y += 1)
+ {
+ detectororiginMapDrawValue = 0;
+
+ pixY = (-squareDim * 0.5 + squareDim * 0.004 * y - detPosY[0]) * 0.001;
+
+ for (int m = 0; m < unitCells; m += 1)
+ {
+ mapValueFound = false;
+ sumMatrixX = -rangeValue + 2. * rangeValue * m / (unitCells * 1.);
+ sumMatrixXp1 = sumMatrixX + 2. * rangeValue / (unitCells * 1.);
+ if ((pixX >= sumMatrixX) && (pixX < sumMatrixXp1))
+ {
+ for (int n = 0; n < unitCells; n += 1)
+ {
+ sumMatrixY = -rangeValue + 2. * rangeValue * n / (unitCells * 1.);
+ sumMatrixYp1 = sumMatrixY + 2. * rangeValue / (unitCells * 1.);
+ if ((pixY >= sumMatrixY) && (pixY < sumMatrixYp1))
+ {
+ detectororiginMapDrawValue = sumMatrix(m, n);
+ if (detectororiginMapDrawValue > detectororiginMapDrawValueMax) detectororiginMapDrawValueMax = detectororiginMapDrawValue;
+ mapValueFound = true;
+ break;
+ }
+ }
+ }
+ if (mapValueFound) break;
+ }
+ colorMapDetectorRelativeSquare->data()->setCell((int)x, (int)y, detectororiginMapDrawValue / allDetectorNeutrons);
+ }
+ }
+
+ float detectorDataScaleRange = 1.05 * (0.01 + ui->horizontalSliderDetectorColor->value() / 100. * detectororiginMapDrawValueMax / allDetectorNeutrons);
+ colorMapDetectorRelativeSquare->setDataRange(QCPRange(0, detectorDataScaleRange));
+ colorMapDetectorRelativeSquare->setGradient(QCPColorGradient::gpJet);
+
+ int lltext1 = detectorDataScaleRange * 100;
+ int lltext2 = rangeValue;
+ string detectorLabelMaxText = castIntToString(lltext1) + " %";
+ string detectorLabelText = castIntToString(lltext2) + " m";
+
+ ui->label_DetectorRangeMaximum->setText(QString::fromStdString(detectorLabelMaxText));
+ ui->label_DetectorRange->setText(QString::fromStdString(detectorLabelText));
+
+ colorScale->setDataRange(QCPRange(0, 100 * detectorDataScaleRange));
+ colorScale->setGradient(QCPColorGradient::gpJet);
+ }
+
+ ui->customPlot10->rescaleAxes();
+ ui->customPlot10->update();
+ ui->customPlot10->replot();
+ }
+
+ ui->customPlot2->clearPlottables();
+
+ QCPColorMap* colorMap = new QCPColorMap(ui->customPlot2->xAxis, ui->customPlot2->yAxis);
+
+ if (plotTopViewLog) { colorMap->setDataScaleType(QCPAxis::stLogarithmic); }
+
+ colorMap->data()->setSize(250, 250);
+ colorMap->data()->setRange(QCPRange(-::squareDim * 0.5 * 0.001, ::squareDim * 0.5 * 0.001), QCPRange(-::squareDim * 0.5 * 0.001, ::squareDim * 0.5 * 0.001));
+
+ double allEntries = 0;
+ long allEntriesInt = 0;
+ double allEntriesMaximum = 0;
+ float actualEntry = 0;
+ float minZ = 0;
+
+ if (plotTopViewLog) minZ = 1;
+
+ if (ui->checkBoxGradient2->isChecked())
+ {
+ TH2F* densityMapCopy = new TH2F();
+ TH2F* densityMapRed = new TH2F();
+
+ if (showDensityMap) { densityMapRed = (TH2F*)densityMap->Clone(""); densityMapCopy = (TH2F*)densityMap->Clone(""); densityMapCopy->RebinX(2); densityMapCopy->RebinY(2); densityMapRed->RebinX(2); densityMapRed->RebinY(2); getGradientMatrixFromTH2(densityMapRed, densityMapCopy); }
+ if (showDensityMapIntermediate) { densityMapRed = (TH2F*)densityMapIntermediate->Clone(""); densityMapCopy = (TH2F*)densityMapIntermediate->Clone(""); densityMapCopy->RebinX(2); densityMapCopy->RebinY(2); densityMapRed->RebinX(2); densityMapRed->RebinY(2); getGradientMatrixFromTH2(densityMapRed, densityMapCopy); }
+ if (showDensityMapFast) { densityMapRed = (TH2F*)densityMapFast->Clone(""); densityMapCopy = (TH2F*)densityMapFast->Clone(""); densityMapCopy->RebinX(2); densityMapCopy->RebinY(2); densityMapRed->RebinX(2); densityMapRed->RebinY(2); getGradientMatrixFromTH2(densityMapRed, densityMapCopy); }
+ if (showDensityMapAlbedo) { densityMapRed = (TH2F*)densityMapAlbedo->Clone(""); densityMapCopy = (TH2F*)densityMapAlbedo->Clone(""); densityMapCopy->RebinX(2); densityMapCopy->RebinY(2); densityMapRed->RebinX(2); densityMapRed->RebinY(2); getGradientMatrixFromTH2(densityMapRed, densityMapCopy); }
+
+ for (int x = 0; x < 250; x += 1)
+ {
+ for (int y = 0; y < 250; y += 1)
+ {
+ actualEntry = densityMapCopy->GetBinContent(x, y);
+ colorMap->data()->setCell((int)x, (int)y, actualEntry);
+ allEntries += actualEntry;
+ if (actualEntry > allEntriesMaximum) allEntriesMaximum = actualEntry;
+ }
+ }
+
+ entryWeight = (allEntries * 1.) / 250. / 250. * 2.; maximumWeight = 2. * allEntriesMaximum;
+
+ delete densityMapCopy;
+ delete densityMapRed;
+ }
+ else
+ {
+ //#pragma omp parallel for
+ for (int x = 0; x < 500; x += 2)
+ {
+ for (int y = 0; y < 500; y += 2)
+ {
+ if (showDensityTrackMap) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityTrackMap->GetBinContent(x, y) + ::densityTrackMap->GetBinContent(x + 1, y) + ::densityTrackMap->GetBinContent(x, y + 1) + ::densityTrackMap->GetBinContent(x + 1, y + 1));
+ if (showDensityIntermediateTrackMap) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityIntermediateTrackMap->GetBinContent(x, y) + ::densityIntermediateTrackMap->GetBinContent(x + 1, y) + ::densityIntermediateTrackMap->GetBinContent(x, y + 1) + ::densityIntermediateTrackMap->GetBinContent(x + 1, y + 1));
+ if (showDensityFastTrackMap) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityFastTrackMap->GetBinContent(x, y) + ::densityFastTrackMap->GetBinContent(x + 1, y) + ::densityFastTrackMap->GetBinContent(x, y + 1) + ::densityFastTrackMap->GetBinContent(x + 1, y + 1));
+ if (showDensityAlbedoTrackMap) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityAlbedoTrackMap->GetBinContent(x, y) + ::densityAlbedoTrackMap->GetBinContent(x + 1, y) + ::densityAlbedoTrackMap->GetBinContent(x, y + 1) + ::densityAlbedoTrackMap->GetBinContent(x + 1, y + 1));
+
+ if (showDensityEnergyTrackMap) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityEnergyTrackMap->GetBinContent(x, y) + ::densityEnergyTrackMap->GetBinContent(x + 1, y) + ::densityEnergyTrackMap->GetBinContent(x, y + 1) + ::densityEnergyTrackMap->GetBinContent(x + 1, y + 1));
+
+ if (showDensityThermalTrackMap) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityThermalTrackMap->GetBinContent(x, y) + ::densityThermalTrackMap->GetBinContent(x + 1, y) + ::densityThermalTrackMap->GetBinContent(x, y + 1) + ::densityThermalTrackMap->GetBinContent(x + 1, y + 1));
+ if (showDensityMapThermal) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityMapThermal->GetBinContent(x, y) + ::densityMapThermal->GetBinContent(x + 1, y) + ::densityMapThermal->GetBinContent(x, y + 1) + ::densityMapThermal->GetBinContent(x + 1, y + 1));
+
+ if (showDensityMap) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityMap->GetBinContent(x, y) + ::densityMap->GetBinContent(x + 1, y) + ::densityMap->GetBinContent(x, y + 1) + ::densityMap->GetBinContent(x + 1, y + 1));
+ if (showDensityMapIntermediate) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityMapIntermediate->GetBinContent(x, y) + ::densityMapIntermediate->GetBinContent(x + 1, y) + ::densityMapIntermediate->GetBinContent(x, y + 1) + ::densityMapIntermediate->GetBinContent(x + 1, y + 1));
+ if (showDensityMapFast) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityMapFast->GetBinContent(x, y) + ::densityMapFast->GetBinContent(x + 1, y) + ::densityMapFast->GetBinContent(x, y + 1) + ::densityMapFast->GetBinContent(x + 1, y + 1));
+ if (showDensityMapAlbedo) colorMap->data()->setCell((int)x / 2, (int)y / 2, ::densityMapAlbedo->GetBinContent(x, y) + ::densityMapAlbedo->GetBinContent(x + 1, y) + ::densityMapAlbedo->GetBinContent(x, y + 1) + ::densityMapAlbedo->GetBinContent(x + 1, y + 1));
+
+ }
+ }
+
+ if (showDensityTrackMap) { entryWeight = (densityTrackMap->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityTrackMap->GetBinContent(densityTrackMap->GetMaximumBin()); }
+ if (showDensityIntermediateTrackMap) { entryWeight = (densityIntermediateTrackMap->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityIntermediateTrackMap->GetBinContent(densityIntermediateTrackMap->GetMaximumBin()); }
+ if (showDensityFastTrackMap) { entryWeight = (densityFastTrackMap->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityFastTrackMap->GetBinContent(densityFastTrackMap->GetMaximumBin()); }
+ if (showDensityAlbedoTrackMap) { entryWeight = (densityAlbedoTrackMap->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityAlbedoTrackMap->GetBinContent(densityAlbedoTrackMap->GetMaximumBin()); }
+
+ if (showDensityEnergyTrackMap) { entryWeight = (densityEnergyTrackMap->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityEnergyTrackMap->GetBinContent(densityEnergyTrackMap->GetMaximumBin()); }
+
+ if (showDensityThermalTrackMap) { entryWeight = (densityThermalTrackMap->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityThermalTrackMap->GetBinContent(densityThermalTrackMap->GetMaximumBin()); }
+ if (showDensityMapThermal) { entryWeight = (densityMapThermal->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityMapThermal->GetBinContent(densityMapThermal->GetMaximumBin()); }
+
+ if (showDensityMap) { entryWeight = (densityMap->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityMap->GetBinContent(densityMap->GetMaximumBin()); }
+ if (showDensityMapIntermediate) { entryWeight = (densityMapIntermediate->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityMapIntermediate->GetBinContent(densityMapIntermediate->GetMaximumBin()); }
+ if (showDensityMapFast) { entryWeight = (densityMapFast->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityMapFast->GetBinContent(densityMapFast->GetMaximumBin()); }
+ if (showDensityMapAlbedo) { entryWeight = (densityMapAlbedo->GetEntries()) / 250. / 250. * 4.; maximumWeight = 4. * densityMapAlbedo->GetBinContent(densityMapAlbedo->GetMaximumBin()); }
+
+ /*
+ allEntriesInt = 0;
+ for (int x=120; x<380; x+=1)
+ {
+ for (int y=120; y<380; y+=1)
+ {
+ allEntriesInt+= ::densityMapAlbedo->GetBinContent(x,y);
+ }
+ }
+ */
+ allEntriesInt = entryWeight * 250. * 250. * 4.;
+ //string numberofDetectorLayerNs = castLongToString(allEntriesInt);
+
+ totalRealTime = (allEntriesInt*1.)/neutronRealScalingFactor;
+ string numberofDetectorLayerNs;
+ if (totalRealTime < 1) numberofDetectorLayerNs = castDoubleToString(totalRealTime*1000.,6)+" ms";
+ else numberofDetectorLayerNs = castDoubleToString(totalRealTime,6)+" s";
+ ui->label_detectorLayerNs->setText(QString::fromStdString(numberofDetectorLayerNs));
+
+ allEntriesInt = densityMapHighEnergy->GetEntries();
+ if (useExtraCounter) ui->label_detectorLayerNs2->setText(QString::fromStdString((string)castLongToString(allEntriesInt)));
+ }
+
+ float colorscaleMax = (ui->horizontalSliderColor->value() * 1.) / 200. * maximumWeight;
+ if (colorscaleMax < 1) colorscaleMax = 1;
+
+ colorMap->setGradient(QCPColorGradient::gpJet);
+
+ if (ui->radioButton_NeutronNight->isChecked()) colorMap->setGradient(QCPColorGradient::gpNight);
+ if (ui->radioButton_NeutronCold->isChecked()) colorMap->setGradient(QCPColorGradient::gpCold);
+ if (ui->radioButton_NeutronPolar->isChecked()) colorMap->setGradient(QCPColorGradient::gpThermal);
+ if (ui->radioButton_NeutronHot->isChecked()) colorMap->setGradient(QCPColorGradient::gpHot);
+ if (ui->radioButton_NeutronThermal->isChecked()) colorMap->setGradient(QCPColorGradient::gpPolar);
+ if (ui->radioButton_NeutronGrayScale->isChecked()) colorMap->setGradient(QCPColorGradient::gpGrayscale);
+
+ if (!silderColorMoved)
+ {
+ if (entryWeight * 1.1 < 5) colorMap->setDataRange(QCPRange(minZ, 5));
+ else colorMap->setDataRange(QCPRange(minZ, entryWeight * 1.1));
+ }
+ else
+ {
+ if (ui->horizontalSliderColorZero->value() == 0) colorMap->setDataRange(QCPRange(minZ, colorscaleMax));
+ else colorMap->setDataRange(QCPRange((ui->horizontalSliderColorZero->value() * 1.) / 200. * colorscaleMax, colorscaleMax));
+ }
+
+ if (manualColorZero < minZ) manualColorZero = minZ;
+
+ if (ui->checkBoxManual->isChecked())
+ {
+ useManualColors = true;
+ colorMap->setDataRange(QCPRange(manualColorZero, manualColor));
+ }
+ else useManualColors = false;
+
+ int lowColorValue = (ui->horizontalSliderColorZero->value() * 1.) / 200. * colorscaleMax;
+ int highColorValue = colorscaleMax;
+
+ string colorLabelText = "["+(string)castIntToString(lowColorValue)+"-"+(string)castIntToString(highColorValue)+"]";
+ ui->label_ColorRange->setText(QString::fromStdString(colorLabelText));
+
+ ui->customPlot2->update();
+ ui->customPlot2->replot();
+
+ if (visualization != 0x0)
+ {
+ if (visualization->isVisible()) updateEnlargedView = true;
+ else updateEnlargedView = false;
+ }
+ if (updateEnlargedView)
+ {
+ redrawEnlargedView();
+ }
+
+ if (showDensityTrackMap) cutView = densityTrackMap->ProjectionX("proj", 240, 260);
+ if (showDensityIntermediateTrackMap)cutView = densityIntermediateTrackMap->ProjectionX("proj", 240, 260);
+ if (showDensityFastTrackMap) cutView = densityFastTrackMap->ProjectionX("proj", 240, 260);
+ if (showDensityAlbedoTrackMap) cutView = densityAlbedoTrackMap->ProjectionX("proj", 240, 260);
+
+ if (showDensityEnergyTrackMap) cutView = densityEnergyTrackMap->ProjectionX("proj", 240, 260);
+
+ if (showDensityThermalTrackMap) cutView = densityThermalTrackMap->ProjectionX("proj", 240, 260);
+ if (showDensityMapThermal) cutView = densityMapThermal->ProjectionX("proj", 240, 260);
+
+ if (showDensityMap) cutView = densityMap->ProjectionX("proj", 240, 260);
+ if (showDensityMapIntermediate) cutView = densityMapIntermediate->ProjectionX("proj", 240, 260);
+ if (showDensityMapFast) cutView = densityMapFast->ProjectionX("proj", 240, 260);
+ if (showDensityMapAlbedo) cutView = densityMapAlbedo->ProjectionX("proj", 240, 260);
+
+ for (int i = 0; (i < cutView->GetNbinsX()) && (i < 500); ++i)
+ {
+ ::plotGUIxBinsCutView[i] = cutView->GetBinCenter(i + 1);
+ ::plotGUIyBinsCutView[i] = cutView->GetBinContent(i + 1);
+ }
+
+ ui->customPlot3->graph(0)->setData(::plotGUIxBinsCutView, ::plotGUIyBinsCutView);
+ ui->customPlot3->update();
+ ui->customPlot3->rescaleAxes();
+ ui->customPlot3->replot();
+}
+
+/**
+ * Function to be called on click of radio Button for the
+ * 1 eV-1 keV option for Hit Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_map_clicked()
+{
+ if (!showDensityMap)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMapFast = false;
+ showDensityMapIntermediate = false;
+ showDensityMapAlbedo = false;
+ showDensityMap = true;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 1;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the
+ * 1 keV-0.5 MeV option for Hit Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapInter_clicked()
+{
+ if (!showDensityMapIntermediate)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMapFast = false;
+ showDensityMap = false;
+ showDensityMapAlbedo = false;
+ showDensityMapIntermediate = true;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 2;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the
+ * 0.5 MeV-10 MeV option for Hit Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapFast_clicked()
+{
+ if (!showDensityMapFast)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapAlbedo = false;
+ showDensityMapFast = true;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 3;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the
+ * Detector Selection option for Hit Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapAlbedo_clicked()
+{
+ if (!showDensityMapAlbedo)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = true;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 4;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the 1 eV-1 keV option
+ * for Track Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapTrack_clicked()
+{
+ if (!showDensityTrackMap)
+ {
+ showDensityTrackMap = true;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = false;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 11;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the 1 keV-0.5 MeV option
+ * for Track Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapTrackInter_clicked()
+{
+ if (!showDensityIntermediateTrackMap)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = true;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = false;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 12;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the 0.5 MeV-10 MeV option
+ * for Track Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapTrackFast_clicked()
+{
+ if (!showDensityFastTrackMap)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = true;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = false;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 13;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the Detector Selection option
+ * for Track Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapTrackAlbedo_clicked()
+{
+ if (!showDensityAlbedoTrackMap)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = true;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = false;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 14;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the Thermal option
+ * for Hit Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapThermal_clicked()
+{
+ if (!showDensityMapThermal)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = true;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = false;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 5;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the Thermal option
+ * for Track Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapTrackThermal_clicked()
+{
+ if (!showDensityThermalTrackMap)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = true;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = false;
+
+ showDensityEnergyTrackMap = false;
+
+ densityMapButtonID = 15;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on click of radio Button for the Energy Dependent option
+ * for Track Density in the Display energy window in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_mapTrackEnergy_clicked()
+{
+ if (!showDensityEnergyTrackMap)
+ {
+ showDensityTrackMap = false;
+ showDensityIntermediateTrackMap = false;
+ showDensityFastTrackMap = false;
+ showDensityAlbedoTrackMap = false;
+
+ showDensityThermalTrackMap = false;
+ showDensityMapThermal = false;
+
+ showDensityMap = false;
+ showDensityMapIntermediate = false;
+ showDensityMapFast = false;
+ showDensityMapAlbedo = false;
+
+ showDensityEnergyTrackMap = true;
+
+ densityMapButtonID = 10;
+ }
+
+ if (alreadyStarted) redrawTopView();
+}
+
+/**
+ * Function to be called on change the path of the
+ * Input Spectrum Calculation File textbox in the Folder tab.
+ *
+ */
+void MainWindow::on_lineEdit_InputSpectrumFolder_editingFinished()
+{
+ QString valueString = ui->lineEdit_InputSpectrumFolder->text();
+ string textHere = valueString.toStdString();
+
+ std::replace(textHere.begin(), textHere.end(), '\\', '/');
+ TString textHere2 = textHere;
+
+ TFile f_here(textHere2);
+
+ ui->lineEdit_InputSpectrumFolder->setPalette(*paletteB);
+
+ if (f_here.IsZombie())
+ {
+ ifstream f(textHere.c_str());
+
+ ui->lineEdit_InputSpectrumFolder->setPalette(*paletteB);
+
+ if (!(f.good()))
+ {
+ if ((textHere == "default") || (textHere == "") || (textHere == "N/A") || (textHere == "n/a"))
+ {
+ ui->lineEdit_InputSpectrumFolder->setPalette(*paletteGray);
+ inputSpectrumFile = "";
+ }
+ else
+ {
+ ui->lineEdit_InputSpectrumFolder->setPalette(*paletteR);
+ }
+ }
+ else
+ {
+ if (textHere.length() < 7) ui->lineEdit_InputSpectrumFolder->setPalette(*paletteR);
+ else
+ {
+ inputSpectrumFile = textHere;
+ ui->label_16->setText("Input Spectrum Calculation File (ASCII)");
+ }
+ }
+ }
+ else
+ {
+ inputSpectrumFile = textHere;
+ ui->label_16->setText("Input Spectrum Calculation File (ROOT)");
+ }
+
+
+}
+
+/**
+ * Function to be called on change the path of the
+ * Cross Section Folder (containing the ENDF databases)textbox in the Folder tab.
+ *
+ */
+void MainWindow::on_lineEdit_CrosssectionFolder_editingFinished()
+{
+ QString valueString = ui->lineEdit_CrosssectionFolder->text();
+ string textHere = valueString.toStdString();
+ std::replace(textHere.begin(), textHere.end(), '\\', '/');
+
+ ifstream input_streamCheck(textHere + "/absorbH1.txt", ios::in);
+
+ ui->lineEdit_CrosssectionFolder->setPalette(*paletteB);
+
+ if (input_streamCheck.fail()) ui->lineEdit_CrosssectionFolder->setPalette(*paletteR);
+ else
+ {
+ endfFolder = textHere;
+ }
+}
+
+/**
+ * Function to be called on change the path of the
+ * Output Folder textbox in the Folder tab.
+ *
+ */
+void MainWindow::on_lineEdit_OutputFolder_editingFinished()
+{
+ QString valueString = ui->lineEdit_OutputFolder->text();
+ string textHere = valueString.toStdString();
+ std::replace(textHere.begin(), textHere.end(), '\\', '/');
+
+ if (access(textHere.c_str(), 0) == 0)
+ {
+ ui->lineEdit_OutputFolder->setPalette(*paletteB);
+ outputFolder = textHere;
+ }
+ else
+ {
+ ui->lineEdit_OutputFolder->setPalette(*paletteR);
+ }
+}
+
+/**
+ * Function to be called on clicking the URANOS icon
+ * displays details about the application.
+ *
+ */
+void MainWindow::on_pushButton_about_clicked()
+{
+ QString messageString = " This is
";
+ messageString += "URANOS
";
+ messageString += "-
";
+ messageString += "The Ultra Rapid Neutron-Only Simulation
";
+ messageString += "For Environmental Research
";
+
+ messageString += "Physikalisches Institut, Heidelberg University, Germany
";
+ messageString += "UFZ — Helmholtz Centre for Environmental Research, Leipzig, Germany
";
+ messageString += "Developed by
";
+ messageString += "Markus Köhli (PI Heidelberg)
";
+ messageString += "koehli@physi.uni-heidelberg.de
";
+ messageString += "
";
+ messageString += "In Collaboration with
";
+ messageString += "Martin Schrön (UFZ Leipzig)
";
+ messageString += "martin.schroen@ufz.de
";
+ messageString += "
";
+ messageString += "This software is research in progress, any results should be treated with care, in case contact the author for support.
";
+ messageString += "If you use URANOS in a scientific publication, please mail a copy to the author.
";
+ messageString += "This will help to continue the support of URANOS in the future.
";
+ messageString += "
";
+ messageString += "For technical support or questions contact
";
+ messageString += "uranos@physi.uni-heidelberg.de
";
+ messageString += "Preliminary Citation: M. Köhli et al., WRR 51 (7), 2015, 5772-5790
";
+ messageString+= "v1.0α1(21.2.2022)
";
+ messageString+= "Based on QT 5.14.2 (MSVC 2017 32bit), ROOT 6.22.08 and QCustomPlot 2.1.0
";
+ messageString += "(see also attached information)
";
+
+ messageString += " All your neutrons
are belong to us!<\font>";
+
+ QMessageBox about_box(this);
+ about_box.setWindowTitle("About URANOS");
+ about_box.setTextInteractionFlags(Qt::TextSelectableByMouse);
+ about_box.setText(messageString);
+ about_box.setIconPixmap(QPixmap("about.png"));
+ about_box.setParent(this);
+
+ about_box.exec();
+}
+
+/**
+ * Function to be called on checking the transparent checkbox
+ * - the neutrons are removed upon detection when non-transparent.
+ *
+ */
+void MainWindow::on_checkBoxTransparent_clicked()
+{
+ if (ui->checkBoxTransparent->isChecked()) detectorAbsorbing = false;
+ else detectorAbsorbing = true;
+}
+
+/**
+ * Function to be called on checking the basic spectrum checkbox
+ * - check to use a mean basic spectrum.
+ *
+ */
+void MainWindow::on_checkBoxBasicSpectrum_clicked()
+{
+ if (useBasicSpectrum)
+ {
+ useBasicSpectrum = false;
+ ui->sliderRigidity->setEnabled(true);
+ int positionSlider = ui->sliderRigidity->value();
+ string text = castFloatToString((positionSlider * 1.) / 10., 4);
+ ui->labelrigidity->setText(QString::fromStdString(text));
+ }
+ else
+ {
+ useBasicSpectrum = true; ui->sliderRigidity->setEnabled(false); ui->labelrigidity->setText("-");
+ }
+}
+
+
+
+/**
+ * Function to activate sky evaporation.
+ *
+ */
+void MainWindow::activateSkyEvaporation()
+{
+ doSkyEvaporation = true;
+ ui->groupBox_Evaporation->setHidden(false);
+ ui->checkBoxThermal->setHidden(true);
+}
+
+/**
+ * Function to activate detector batch run.
+ *
+ */
+void MainWindow::activateDetectorBatchRun()
+{
+ doDetectorBatchRun = true;
+ ui->checkBoxThermal->setHidden(false);
+ ui->checkBoxFileOutputPDF_2->setChecked(true);
+}
+
+/**
+ * Function to activate batch run.
+ *
+ */
+void MainWindow::activateBatchRun()
+{
+ doBatchRun = true;
+ ui->checkBoxThermal->setHidden(false);
+ ui->checkBoxFileOutputPDF_2->setChecked(true);
+}
+
+/**
+ * Function to activate parameter batch run.
+ *@param - parMin
+ *@param - parMax
+ */
+void MainWindow::activateParameterBatchRun(int parMin, int parMax)
+{
+ doBatchRun2D = true;
+ ui->checkBoxThermal->setHidden(false);
+ ui->checkBoxFileOutputPDF_2->setChecked(true);
+
+ paramMin = parMin;
+ paramMax = parMax;
+}
+
+/**
+ * Function to activate thermal neutron transport.
+ *
+ */
+void MainWindow::activateThermal()
+{
+ noThermalRegime = false;
+ maxScatterings = 1500; // maximum number of scatterings of a neutron until killed
+
+ ui->checkBoxThermal->setHidden(false);
+ ui->checkBoxThermal->setChecked(true);
+
+ ui->radioButton_mapThermal->setHidden(false);
+ ui->radioButton_mapTrackThermal->setHidden(false);
+ ui->checkBoxThermalMap->setHidden(false);
+ ui->checkBoxThermalData->setHidden(false);
+}
+
+/**
+ * Function to disable the GUI and run in command line.
+ * @param - path to ConfigFile (uranos.cfg)
+ *
+ */
+void MainWindow::disabledGUIRun(string pathtoConfigFile)
+{
+ cout << "GUI disabled" << endl;
+
+ noGUIMode = true;
+ configFilePath = pathtoConfigFile;
+
+ if (pathtoConfigFile.length() > 1)
+ {
+ cout << "Using Config File " << pathtoConfigFile << endl;
+ importSettings();
+ //setupImport();
+ on_pushButton_LoadGeometry_clicked();
+ if (layerMapsImport)
+ {
+ useImage = false;
+ on_checkBox_useImage_clicked();
+ }
+ }
+ else on_pushButton_ReadGeometry_clicked();
+
+ setupGeometry();
+
+ cout << "Cosmic Neutron Spectrum Definition..." << endl;
+
+ if (!(loadParamData((string)endfFolder)))
+ {
+ cout << endl << "done" << endl;
+ cosmicNSimulator(this);
+ }
+ else
+ {
+ cout << endl << "failed" << endl;
+ }
+}
+
+/**
+ * Function to activate thermal sky evaporation.
+ *
+ */
+void MainWindow::activateThermalSkyEvaporation()
+{
+ noThermalRegime = false;
+ doSkyEvaporation = true;
+
+ maxScatterings = 1500; // maximum number of scatterings of a neutron until killed
+
+ ui->groupBox_Evaporation->setHidden(false);
+ ui->checkBoxThermal->setHidden(false);
+ ui->checkBoxThermal->setChecked(true);
+
+ ui->radioButton_mapThermal->setHidden(false);
+ ui->radioButton_mapTrackThermal->setHidden(false);
+ ui->checkBoxThermalMap->setHidden(false);
+ ui->checkBoxThermalData->setHidden(false);
+}
+
+/**
+ * Function to activate silent mode with no command line output.
+ *
+ */
+void MainWindow::beSilent()
+{
+ silentMode = true;
+}
+
+
+/**
+ * Function to be called on clicking add layer + button
+ * in layer control in the Parameters Tab.
+ *
+ */
+void MainWindow::on_pushButton_AddLayer_clicked()
+{
+ if (row > 0) model->insertRow(row, QModelIndex());
+ else model->insertRow(0, QModelIndex());
+
+ //setupGeometry();
+
+ ui->spinBox_StartingLayer->setMaximum(ui->spinBox_StartingLayer->maximum() + 1);
+ ui->spinBox_DetectorLayer->setMaximum(ui->spinBox_DetectorLayer->maximum() + 1);
+ ui->spinBox_GroundLayer->setMaximum(ui->spinBox_GroundLayer->maximum() + 1);
+}
+
+/**
+ * Function to be called on clicking remove layer - button
+ * in layer control in the Parameters Tab.
+ *
+ */
+void MainWindow::on_pushButton_RemoveLayer_clicked()
+{
+ if (row > 0) model->removeRow(row, QModelIndex());
+ else model->removeRow(0, QModelIndex());
+}
+
+/**
+ * Function to be called on clicking generate button
+ * in layer control in the Parameters Tab.
+ *
+ */
+void MainWindow::on_pushButton_ReadGeometry_clicked()
+{
+ setGeometry();
+
+ QStandardItem* item;
+
+ QSortFilterProxyModel* proxy1 = new QSortFilterProxyModel();
+ proxy1->setSourceModel(model);
+
+ int modelRows = model->rowCount();
+
+ for (int z = 0; z < modelRows - 1; z++)
+ {
+ model->removeRow(0, QModelIndex());
+ }
+
+ for (int i = 0; i < geometries.size() - 1; i++)
+ {
+ model->insertRow(0, QModelIndex());
+ }
+
+ for (int i = 0; i < geometries.size(); i++)
+ {
+
+ QString position = QString::number((geometries.at(i)[4]) / 1000.);
+ item = model->itemFromIndex(model->index(i, 0, QModelIndex())); item->setTextAlignment(Qt::AlignCenter);
+ item->setText(position);
+
+ QString height = QString::number((geometries.at(i)[5]) / 1000.);
+ item = model->itemFromIndex(model->index(i, 1, QModelIndex())); item->setTextAlignment(Qt::AlignCenter);
+ item->setText(height);
+
+ QString material = QString::number(geometries.at(i)[6]);
+ item = model->itemFromIndex(model->index(i, 2, QModelIndex())); item->setTextAlignment(Qt::AlignCenter);
+ item->setText(material);
+
+ }
+ modelRows = model->rowCount();
+
+ for (int k = geometries.size(); k < modelRows; k++)
+ {
+ model->removeRow(geometries.size(), QModelIndex());
+ }
+
+ ui->spinBox_StartingLayer->setValue(2);
+ ui->spinBox_DetectorLayer->setValue(4);
+ ui->spinBox_GroundLayer->setValue(6);
+}
+
+/**
+ * Function to be called on clicking save button in
+ * Layer Control in the Parameters tab.
+ *
+ */
+void MainWindow::on_pushButton_SaveGeometry_clicked()
+{
+ setupGeometry();
+
+ ofstream* stream_out;
+ stream_out = new ofstream(workFolder + "UranosGeometryConfig.dat", ofstream::out);
+
+ *stream_out << (startingLayer + 1) << endl;
+ *stream_out << (detectorLayer + 1) << endl;
+ *stream_out << (groundLayer + 1) << endl;
+
+ for (int i = 0; i < geometries.size(); i++)
+ {
+ *stream_out << castDoubleToString((geometries.at(i)[4]) / 1000.);
+ *stream_out << "\t" << (geometries.at(i)[5]) / 1000.;
+ *stream_out << "\t" << (geometries.at(i)[6]) << endl;
+ }
+
+ stream_out->close();
+}
+
+void MainWindow::on_spinBox_StartingLayer_valueChanged(const QString& arg1)
+{
+
+}
+
+/**
+ * Function to be called on changing the source layer in
+ * Layer Control in the Parameters tab.
+ * @param arg1
+ */
+void MainWindow::on_spinBox_StartingLayer_valueChanged(int arg1)
+{
+ setupGeometry();
+ ui->spinBox_StartingLayer->setMaximum(geometries.size());
+ startingLayer = arg1 - 1;
+}
+
+/**
+ * Function to be called on changing the Detector layer in
+ * Layer Control in the Parameters tab.
+ * @param arg1
+ */
+void MainWindow::on_spinBox_DetectorLayer_valueChanged(int arg1)
+{
+ setupGeometry();
+ ui->spinBox_DetectorLayer->setMaximum(geometries.size());
+ detectorLayer = arg1 - 1;
+ detectorHeight = geometries.at(detectorLayer)[4] + 0.5 * geometries.at(detectorLayer)[5];
+}
+
+/**
+ * Function to be called on changing the Ground layer in
+ * Layer Control in the Parameters tab.
+ * @param arg1
+ */
+void MainWindow::on_spinBox_GroundLayer_valueChanged(int arg1)
+{
+ setupGeometry();
+ ui->spinBox_GroundLayer->setMaximum(geometries.size());
+ groundLayer = arg1 - 1;
+}
+
+/**
+ * Function to be called on clicking Load button in
+ * Layer Control in the Parameters tab.
+ *
+ */
+void MainWindow::on_pushButton_LoadGeometry_clicked()
+{
+ QStandardItem* item;
+
+ TString line;
+ int linecounter = 0;
+
+ string geometryPath = (string)workFolder+"UranosGeometryConfig.dat";
+
+ ifstream input_stream(geometryPath, ios::in);
+
+ if (!access(geometryPath.c_str(), 0) == 0)
+ {
+ if (!silentMode)
+ {
+ //if (noGUIMode) cout<<"No Config File"<rowCount();
+
+ for (int z = 0; z < modelRows; z++)
+ {
+ model->removeRow(0, QModelIndex());
+ }
+
+ int a, b, c, i;
+ float posInput, heightInput, materialInput;
+
+ while (line.ReadLine(input_stream))
+ {
+ istrstream stream(line.Data());
+
+ if (linecounter == 0) stream >> a;
+ if (linecounter == 1) stream >> b;
+ if (linecounter == 2) stream >> c;
+
+ i = linecounter - 3;
+ if (linecounter > 2)
+ {
+ model->insertRow(i, QModelIndex());
+
+ stream >> posInput;
+ QString position = QString::number(posInput);
+ item = model->itemFromIndex(model->index(i, 0, QModelIndex())); item->setTextAlignment(Qt::AlignCenter);
+ item->setText(position);
+
+ stream >> heightInput;
+ QString height = QString::number(heightInput);
+ item = model->itemFromIndex(model->index(i, 1, QModelIndex())); item->setTextAlignment(Qt::AlignCenter);
+ item->setText(height);
+
+ stream >> materialInput;
+ QString material = QString::number(materialInput);
+ item = model->itemFromIndex(model->index(i, 2, QModelIndex())); item->setTextAlignment(Qt::AlignCenter);
+ item->setText(material);
+ }
+ linecounter++;
+ }
+
+ modelRows = model->rowCount();
+
+ for (int k = linecounter - 3; k < modelRows; k++)
+ {
+ model->removeRow(geometries.size(), QModelIndex());
+ }
+
+ setupGeometry();
+
+ ui->spinBox_StartingLayer->setMaximum(geometries.size());
+ ui->spinBox_DetectorLayer->setMaximum(geometries.size());
+ ui->spinBox_GroundLayer->setMaximum(geometries.size());
+
+ ui->spinBox_StartingLayer->setValue(a);
+ ui->spinBox_DetectorLayer->setValue(b);
+ ui->spinBox_GroundLayer->setValue(c);
+
+ startingLayer = a - 1;
+ detectorLayer = b - 1;
+ groundLayer = c - 1;
+}
+
+/**
+ * Function to be called on changing the
+ * Work Config Directory textbox in the Folders tab.
+ *
+ */
+void MainWindow::on_lineEdit_WorkFolder_editingFinished()
+{
+ QString valueString = ui->lineEdit_WorkFolder->text();
+ string textHere = valueString.toStdString();
+ std::replace(textHere.begin(), textHere.end(), '\\', '/');
+
+ if ((textHere == "default") || (textHere == ""))
+ {
+ ui->lineEdit_WorkFolder->setPalette(*paletteGray);
+ workFolder = "";
+ visualization->setWorkFolder(textHere);
+ }
+ else
+ {
+ if (access(textHere.c_str(), 0) == 0)
+ {
+ ui->lineEdit_WorkFolder->setPalette(*paletteB);
+ workFolder = textHere;
+ visualization->setWorkFolder(textHere);
+ }
+ else
+ {
+ ui->lineEdit_WorkFolder->setPalette(*paletteR);
+ }
+ }
+}
+
+/**
+ * Function to be called on clicking the
+ * material codes button in the parameters tab.
+ *
+ */
+void MainWindow::on_pushButton_6_clicked()
+{
+ QString messageString = "Available Materials like
7 = Salt Water
8 = Snow (0.03 g/cm3)
9 = Water
10 = Dry Air
11 = Air with Humidity
12 = Quarz
20 = Soil with Soil Moisture
21 = Plants
23 = Cat Litter
24 = Asphalt
25 = HDPE
26 = Aluminum
27 = Helium-3
28 = BF3
29 = Gd2O3
32 = Stainless Steel
See full list in the Manual or in the file MaterialCodes.txt";
+ QMessageBox::about(this, tr("Material List"), messageString);
+}
+
+/**
+ * Function to be called on clicking the
+ * radio button fission source.
+ *
+ */
+void MainWindow::on_radioButton_fission_clicked()
+{
+ doFusion = false;
+ doFission = true;
+ doAmBe = false;
+ doMonoEnergetic = false;
+ doThermalSource = false;
+ doNoSource = false;
+ doModeratedCf = false;
+}
+
+/**
+ * Function to be called on clicking the
+ * radio button thermal source.
+ *
+ */
+void MainWindow::on_radioButton_ThermalSource_clicked()
+{
+ doFusion = false;
+ doFission = false;
+ doAmBe = false;
+ doMonoEnergetic = false;
+ doThermalSource = true;
+ doNoSource = false;
+ doModeratedCf = false;
+}
+
+/**
+ * Function to be called on clicking the
+ * radio button monoenergetic source.
+ *
+ */
+void MainWindow::on_radioButton_MonoenergeticSource_clicked()
+{
+ doFusion = false;
+ doFission = false;
+ doAmBe = false;
+ doMonoEnergetic = true;
+ doThermalSource = false;
+ doNoSource = false;
+ doModeratedCf = false;
+}
+
+/**
+ * Function to be called on clicking the
+ * radio button fusion source.
+ *
+ */
+void MainWindow::on_radioButton_fusion_clicked()
+{
+ doFusion = true;
+ doFission = false;
+ doAmBe = false;
+ doMonoEnergetic = false;
+ doThermalSource = false;
+ doNoSource = false;
+ doModeratedCf = false;
+}
+
+/**
+ * Function to be called on clicking the
+ * radio button no source.
+ *
+ */
+void MainWindow::on_radioButton_NoSource_clicked()
+{
+ doFusion = false;
+ doFission = false;
+ doAmBe = false;
+ doMonoEnergetic = false;
+ doThermalSource = false;
+ doNoSource = true;
+ doModeratedCf = false;
+}
+
+/**
+ * Function to be called on clicking the
+ * radio button AmBe source.
+ *
+ */
+void MainWindow::on_radioButton_AmBe_clicked()
+{
+ doFusion = false;
+ doFission = false;
+ doAmBe = true;
+ doMonoEnergetic = false;
+ doThermalSource = false;
+ doNoSource = false;
+ doModeratedCf = false;
+}
+
+/**
+ * Function to be called on clicking the
+ * radio button Moderated Cf source.
+ *
+ */
+void MainWindow::on_radioButton_ModeratedCf_clicked()
+{
+ doFusion = false;
+ doFission = false;
+ doAmBe = false;
+ doMonoEnergetic = false;
+ doThermalSource = false;
+ doNoSource = false;
+ doModeratedCf = true;
+}
+
+
+/**
+ * Function to be called to recreate the input matrices.
+ *
+ */
+void recreateInputMatrices()
+{
+ inputPicVector.clear();
+
+ /*
+ inputMatrix1 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix1);
+ inputMatrix2 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix2);
+ inputMatrix3 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix3);
+ inputMatrix4 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix4);
+ inputMatrix5 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix5);
+ inputMatrix6 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix6);
+ inputMatrix7 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix7);
+ inputMatrix8 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix8);
+ inputMatrix9 = TMatrixF(inputMatrixPixels,inputMatrixPixels); inputPicVector.push_back(inputMatrix9);
+ inputMatrix10 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix10);
+ inputMatrix11 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix11);
+ inputMatrix12 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix12);
+ inputMatrix13 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix13);
+ inputMatrix14 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix14);
+ inputMatrix15 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix15);
+ inputMatrix16 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix16);
+ inputMatrix17 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix17);
+ inputMatrix18 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix18);
+ inputMatrix19 = TMatrixF(inputMatrixPixels,inputMatrixPixels);inputPicVector.push_back(inputMatrix19);
+*/
+}
+
+/**
+ * Function to be called to get vectors for new materials.
+ * @param fileString
+ */
+vector getMaterialVector(string fileString)
+{
+ vector newMaterial;
+ newMaterial.push_back(0);
+
+ TString line;
+ string temp;
+ float number;
+
+ ifstream input_stream(fileString, ios::in);
+ while (line.ReadLine(input_stream))
+ {
+ istrstream stream(line.Data());
+ stream >> temp;
+ stream >> number;
+
+ //number = atof(temp);
+ if ((number > 0) && (number < 100))
+ {
+ newMaterial.push_back(number);
+ }
+ else
+ {
+ newMaterial.push_back(0);
+ }
+ }
+ return newMaterial;
+}
+
+/**
+ * Function to be called to Check the input material definitions.
+ *
+ */
+void checkInputMaterialDefinitions()
+{
+ ifstream* stream_in;
+ bool foundData = false;
+
+ string inputMaterialFileName;
+ for (int i = 1; i < maxLayersAllowed; i++)
+ {
+ inputMaterialFileName = (string)workFolder+"Material"+(string)castIntToString(i)+".dat";
+ stream_in = new ifstream(inputMaterialFileName, ifstream::in);
+ if (stream_in->good())
+ {
+ inputMaterials[i - 1] = 1;
+ }
+ else inputMaterials[i - 1] = 0;
+ stream_in->close();
+ }
+
+ for (int i = 1; i < maxLayersAllowed; i++)
+ {
+ if (inputMaterials[i - 1] == 1)
+ {
+ materialVector.push_back(getMaterialVector(inputMaterialFileName));
+ materialVector.end()->at(0) = i;
+ }
+ }
+}
+
+/**
+ * Function to be called to check the files possibly containing input pics.
+ * inputpics: material definitions
+ * inputpics2: density definitions
+ * inputpics3: porosity definitions
+ *
+ */
+void MainWindow::checkInputPics()
+{
+ setStatus(1, ""); setStatus(2, "");
+ ifstream* stream_in;
+ bool foundData = false;
+ TString add = "";
+
+ for (int i = 0; i < maxLayersAllowed; i++) { inputPicSizes[i] = 0; }
+
+
+ for (int i = 1; i < maxLayersAllowed; i++)
+ {
+ stream_in = new ifstream((string)workFolder+castIntToString(i)+".dat",ifstream::in);
+ if (stream_in->good())
+ {
+ inputPics[i - 1] = 1; // this is an ASCII material definition map
+ }
+ else inputPics[i - 1] = 0; // no map
+ stream_in->close();
+
+ stream_in = new ifstream((string)workFolder+castIntToString(i)+"d.dat",ifstream::in);
+ if (stream_in->good())
+ {
+ inputPics2[i - 1] = 1; // this is an ASCII density definition map
+ }
+ else inputPics2[i - 1] = 0;
+ stream_in->close();
+
+ stream_in = new ifstream((string)workFolder+castIntToString(i)+"p.dat",ifstream::in);
+ if (stream_in->good())
+ {
+ inputPics3[i - 1] = 1; // this is an ASCII porosity definition map
+ }
+ else inputPics3[i - 1] = 0;
+ stream_in->close();
+
+ QImage matrixImageHere;
+
+ string imageStrHere = (string)workFolder+(string)castIntToString(i)+".png";
+
+ if (matrixImageHere.load(QString::fromStdString(imageStrHere)))
+ {
+ inputPics[i - 1] = 2; // this is a png material definition map
+ }
+
+ imageStrHere = (string)workFolder+(string)castIntToString(i)+"d.png";
+
+ if (matrixImageHere.load(QString::fromStdString(imageStrHere)))
+ {
+ inputPics2[i - 1] = 2; // this is a png density definition map
+ }
+
+ imageStrHere = (string)workFolder+(string)castIntToString(i)+"p.png";
+
+ if (matrixImageHere.load(QString::fromStdString(imageStrHere)))
+ {
+ inputPics3[i - 1] = 2; // this is a png porosity definition map
+ }
+ //delete matrixImageHere;
+ }
+ int temp;
+
+ TString line;
+ int lineC = 0;
+ QImage matrixImage;
+ string imageStr;
+ int matrixWidth;
+
+ for (int i = 0; i < maxLayersAllowed; i++)
+ {
+ if ((inputPics[i] == 0) && (inputPics2[i] == 0) && (inputPics3[i] == 0)) inputPicSizes[i] = 0;
+ else
+ {
+ temp = i + 1;
+
+ if (inputPics[i] == 1) add = "";
+ if (inputPics[i] == 2) add = "";
+
+ if (inputPics[i] == 1)
+ {
+ lineC = 0;
+ ifstream input_stream((string)workFolder+(string)castIntToString(temp)+add+".dat",ios::in);
+ while (line.ReadLine(input_stream))
+ {
+ istrstream stream(line.Data());
+ lineC++;
+ }
+ inputPicSizes[i] = lineC;
+ //break;
+ foundData = true;
+ }
+
+ if (inputPics[i] == 2)
+ {
+ imageStr = (string)workFolder+(string)castIntToString(temp)+add+".png";
+
+ if (matrixImage.load(QString::fromStdString(imageStr)))
+ {
+ matrixWidth = matrixImage.width();
+ inputPicSizes[i] = matrixWidth;
+ if (matrixImage.width() != matrixImage.height())
+ {
+ Int_t matrixWidthI = matrixWidth; Int_t matrixHeightI = matrixImage.height();
+ string imageErrorString = (string)castIntToString(matrixWidthI)+"px x "+(string)castIntToString(matrixHeightI)+"px";
+ setStatus(1, "Image Error: Asymmetry"); setStatus(2, imageErrorString);
+ }
+ else foundData = true;
+ }
+ }
+
+ if (inputPics2[i] == 1) add = "d";
+ if (inputPics2[i] == 2) add = "d";
+
+ if (inputPics2[i] == 1)
+ {
+ lineC = 0;
+ ifstream input_stream((string)workFolder+(string)castIntToString(temp)+add+".dat",ios::in);
+ while (line.ReadLine(input_stream))
+ {
+ istrstream stream(line.Data());
+ lineC++;
+ }
+
+ if (inputPicSizes[i] < 1) { inputPicSizes[i] = lineC; foundData = true; }
+ else if (inputPicSizes[i] != lineC)
+ {
+ setStatus(1, "Image Error: Incongruency"); setStatus(2, "Density and material map size");
+ foundData = false;
+ }
+ else foundData = true;
+ }
+
+ if (inputPics2[i] == 2)
+ {
+ imageStr = (string)workFolder+(string)castIntToString(temp)+add+".png";
+
+ if (matrixImage.load(QString::fromStdString(imageStr)))
+ {
+ matrixWidth = matrixImage.width();
+ if (matrixImage.width() != matrixImage.height())
+ {
+ Int_t matrixWidthI = matrixWidth; Int_t matrixHeightI = matrixImage.height();
+ string imageErrorString = (string)castIntToString(matrixWidthI)+"px x "+(string)castIntToString(matrixHeightI)+"px";
+ setStatus(1, "Image Error: Asymmetry"); setStatus(2, imageErrorString);
+ }
+ else
+ if (inputPicSizes[i] < 1) { inputPicSizes[i] = matrixWidth; foundData = true; }
+ else if (inputPicSizes[i] != matrixWidth)
+ {
+ setStatus(1, "Image Error: Incongruency"); setStatus(2, "Density and material map size");
+ foundData = false;
+ }
+ else foundData = true;
+ }
+ }
+
+ if (inputPics3[i] == 1) add = "p";
+ if (inputPics3[i] == 2) add = "p";
+
+ if (inputPics3[i] == 1)
+ {
+ lineC = 0;
+ ifstream input_stream((string)workFolder+(string)castIntToString(temp)+add+".dat",ios::in);
+ while (line.ReadLine(input_stream))
+ {
+ istrstream stream(line.Data());
+ lineC++;
+ }
+
+ if (inputPicSizes[i] < 1) { inputPicSizes[i] = lineC; foundData = true; }
+ else if (inputPicSizes[i] != lineC)
+ {
+ setStatus(1, "Image Error: Incongruency"); setStatus(2, "Porosity and material map size");
+ foundData = false;
+ }
+ else foundData = true;
+ }
+
+ if (inputPics3[i] == 2)
+ {
+ imageStr = (string)workFolder+(string)castIntToString(temp)+add+".png";
+
+ if (matrixImage.load(QString::fromStdString(imageStr)))
+ {
+ matrixWidth = matrixImage.width();
+ if (matrixImage.width() != matrixImage.height())
+ {
+ Int_t matrixWidthI = matrixWidth; Int_t matrixHeightI = matrixImage.height();
+ string imageErrorString = (string)castIntToString(matrixWidthI)+"px x "+(string)castIntToString(matrixHeightI)+"px";
+ setStatus(1, "Image Error: Asymmetry"); setStatus(2, imageErrorString);
+ }
+ else
+ if (inputPicSizes[i] < 1) { inputPicSizes[i] = matrixWidth; foundData = true; }
+ else if (inputPicSizes[i] != matrixWidth)
+ {
+ setStatus(1, "Image Error: Incongruency"); setStatus(2, "Porosity and material map size");
+ foundData = false;
+ }
+ else foundData = true;
+ }
+ }
+ }
+ }
+
+
+ string picLetter = "";
+ for (int z = 0; z < model->rowCount(); ++z)
+ {
+ QStandardItem* item = model->itemFromIndex(model->index(z, 3, QModelIndex()));
+ item->setTextAlignment(Qt::AlignCenter);
+ picLetter = "";
+
+ temp = z + 1;
+ if ((inputPics[z] == 0) && (inputPics2[z] == 0) && (inputPics3[z] == 0))
+ {
+ item->setText(QString::fromStdString((string)""));
+ }
+ else
+ {
+ if (inputPics[z] == 1)
+ {
+ picLetter += "m";
+ }
+ if (inputPics2[z] == 1)
+ {
+ picLetter += "d";
+ }
+ if (inputPics3[z] == 1)
+ {
+ picLetter += "p";
+ }
+ if (inputPics[z] == 2)
+ {
+ picLetter += "M";
+ }
+ if (inputPics2[z] == 2)
+ {
+ picLetter += "D";
+ }
+ if (inputPics3[z] == 2)
+ {
+ picLetter += "P";
+ }
+
+ item->setText(QString::fromStdString((string)castIntToString(temp) + picLetter + " [" + (string)castIntToString(inputPicSizes[z]) + "]"));
+ }
+ inputMatrixPixels = inputPicSizes[z]; //doesn't make so much sense
+ }
+
+ if (foundData)
+ {
+ haveDifferentSoilMoistures = true;
+
+ matrixStartX = squareDim / 1000. * (-0.5);
+ matrixStartY = squareDim / 1000. * (-0.5);
+ matrixMetricFactor = squareDim / 1000. / (inputMatrixPixels * 1.); //meter per pixel
+ }
+ else haveDifferentSoilMoistures = false;
+}
+
+/**
+ * Function to be called on clicking Use layer maps checkbox in the Parameters tab.
+ *
+ */
+void MainWindow::on_checkBox_useImage_clicked()
+{
+ if (useImage)
+ {
+ useImage = false;
+ haveDifferentSoilMoistures = false;
+ for (int z = 0; z < model->rowCount(); ++z)
+ {
+ QStandardItem* item = model->itemFromIndex(model->index(z, 3, QModelIndex()));
+ item->setText(QString::fromStdString((string)""));
+ }
+ }
+ else
+ {
+ useImage = true;
+ checkInputPics();
+ }
+}
+
+
+/**
+ * Function to be called on clicking view layer maps button in the Parameters tab.
+ *
+ */
+void MainWindow::on_pushButton_Show_clicked()
+{
+ if ((useImage) && (haveDifferentSoilMoistures))
+ {
+ DialogShowPic* dialogshowpic = new DialogShowPic(this);
+ dialogshowpic->show();
+ }
+}
+
+
+/**
+ * Function to be called on get the T matrix for the input pic definitions.
+ *
+ */
+TMatrixF MainWindow::getTMatrix(int i)
+{
+ TMatrixF dummyTMatrix(0, 0);
+
+ TString add = "";
+ if (inputPics2[i] == 1) add = "d";
+ if (inputPics2[i] == 2) add = "d";
+ if (inputPics3[i] == 1) add = "p";
+ if (inputPics3[i] == 2) add = "p";
+
+ int i2 = i + 1;
+ TString str = castIntToString(i2) + add;
+
+ if ((inputPics[i] == 1) || ((inputPics2[i] == 1)) || (inputPics3[i] == 1))
+ {
+ TMatrixF matr = readmatrix(workFolder, str, "dat", -1, inputPicSizes[i]);
+ turnInputMatrix(matr);
+ return matr;
+ }
+
+ if ((inputPics[i] == 2) || ((inputPics2[i] == 2)) || (inputPics3[i] == 2))
+ {
+ QRgb pixelValue;
+ string imageStr = (string)workFolder+(string)str+".png";
+ QImage matrixImage;
+ matrixImage.load(QString::fromStdString(imageStr));
+ int matrixWidth = matrixImage.width();
+ int matrixHeight = matrixImage.height();
+
+ TMatrixF matr(matrixWidth, matrixHeight);
+ for (int i = 0; i < matrixWidth; ++i)
+ {
+ for (int j = 0; j < matrixHeight; ++j)
+ {
+ pixelValue = matrixImage.pixel(i, matrixHeight - 1 - j);
+ matr(i, j) = qGray(pixelValue);
+ }
+ }
+ return matr;
+ }
+
+ return dummyTMatrix;
+}
+
+/**
+ * Function to be called on changing the upper bound slider in the Parameters tab.
+ *
+ */
+void MainWindow::on_horizontalSliderColor_sliderMoved(int position)
+{
+ if (alreadyStarted)
+ {
+ silderColorMoved = true;
+
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on changing the lower bound slider in the Parameters tab.
+ * @param position
+ */
+void MainWindow::on_horizontalSliderColorZero_sliderMoved(int position)
+{
+ if (alreadyStarted)
+ {
+ silderColorMoved = true;
+
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+
+/**
+ * Function to be called on clicking the radio button Dark Gray Scale
+ * for the Neutron Color Scheme in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_NeutronNight_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking the radio button Cold
+ * for the Neutron Color Scheme in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_NeutronCold_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking the radio button Polar
+ * for the Neutron Color Scheme in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_NeutronPolar_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking the radio button URANOS
+ * for the Neutron Color Scheme in the Display tab.
+ *
+ */
+void MainWindow::on_radioButton_NeutronRainbow_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on moving the slider for the footprint moisture.
+ * deprecated
+ *
+ */
+void MainWindow::on_horizontalSliderFPMoist_sliderMoved(int position)
+{
+ fpSoilMoist = (position * 1.) / 200.;
+ float fpSoilMoist2 = fpSoilMoist * 100.;
+ string text = castFloatToString(fpSoilMoist2, 4) + " %";
+ ui->labelFPMoist->setText(QString::fromStdString(text));
+
+ rangeIntegral = -1;
+
+ replotFootprint();
+}
+
+/**
+ * Function to be called on moving the slider for the footprint humidity.
+ * deprecated
+ *
+ */
+void MainWindow::on_horizontalSliderFPHum_sliderMoved(int position)
+{
+ fpHum = (position * 1.);
+ int fpHumInt = fpHum;
+ string text = castIntToString(fpHumInt) + " g/cm3";
+ ui->labelFPHum->setText(QString::fromStdString(text));
+
+ rangeIntegral = -1;
+
+ replotFootprint();
+}
+
+/**
+ * Function to be called on checking the checkbox for display the footprint function
+ * deprecated
+ *
+ */
+void MainWindow::on_checkBoxFPLog_clicked()
+{
+ if (activateFP) replotFootprint();
+}
+
+/**
+ * Function to be called on moving the slider for the footprint moisture.
+ * deprecated
+ *
+ */
+void MainWindow::on_horizontalSliderFPHum_2_sliderMoved(int position)
+{
+ if (!activateFP) return;
+
+ plotGUIxBinsFootprFuncLine[0] = 0;
+ plotGUIxBinsFootprFuncLine[1] = position;
+ plotGUIxBinsFootprFuncLine[2] = position + 1;
+ plotGUIxBinsFootprFuncLine[3] = position + 2;
+
+ integralSliderMoved = true;
+
+ string text = (string)castIntToString(position)+" m";
+ ui->label_FPIntegral->setText(QString::fromStdString(text));
+
+ replotFootprint();
+}
+
+void MainWindow::on_pushButton_ActivateFP_clicked()
+{
+ if (activateFP)
+ {
+ ui->pushButton_ActivateFP->setChecked(false); ui->pushButton_ActivateFP->setDown(false);
+ activateFP = false;
+ }
+ else
+ {
+ ui->pushButton_ActivateFP->setChecked(true); ui->pushButton_ActivateFP->setDown(true);
+ activateFP = true;
+ replotFootprint();
+ }
+}
+
+
+/**
+ * Function to be called on changing the value of Only Record in Material No
+ * textbox in the detector layer of detector tab.
+ *
+ */
+void MainWindow::on_lineEditScotoma_editingFinished()
+{
+ QString arg = ui->lineEditScotoma->text();
+ float angleString = arg.toFloat();
+ ui->lineEditScotoma->setPalette(*paletteB);
+ if ((angleString >= 0) && (angleString <= 360) && (angleString >= 0)) downwardScotomaAngle = (angleString / 2.) / 360. * 2. * TMath::Pi(); // (180-angleString/2.)/360.*2.*TMath::Pi();
+ else ui->lineEditScotoma->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on clicking the Gradient view
+ * checkbox in the displayed energy window of the display tab.
+ *
+ */
+void MainWindow::on_checkBoxGradient2_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking the check box
+ * Selected Energy Data in spatial distributions in the export tab.
+ *
+ */
+void MainWindow::on_checkBoxSelectedData_clicked()
+{
+ if (exportSelectedData) exportSelectedData = false;
+ else exportSelectedData = true;
+}
+
+/**
+ * Function to be called on clicking the check box
+ * Fast Neutron Data in spatial distributions in the export tab.
+ *
+ */
+void MainWindow::on_checkBoxFastData_clicked()
+{
+ if (exportFastData) exportFastData = false;
+ else exportFastData = true;
+}
+
+/**
+ * Function to be called on clicking the check box
+ * Intermediate Energy Data in spatial distributions in the export tab.
+ *
+ */
+void MainWindow::on_checkBoxIntermediateData_clicked()
+{
+ if (exportIntermediateData) exportIntermediateData = false;
+ else exportIntermediateData = true;
+}
+
+/**
+ * Function to be called on clicking the check box
+ * Epithermal Data in spatial distributions in the export tab.
+ *
+ */
+void MainWindow::on_checkBoxEpithermalData_clicked()
+{
+ if (exportEpithermalData) exportEpithermalData = false;
+ else exportEpithermalData = true;
+}
+
+
+/**
+ * Function to be called on clicking the check box
+ * Thermal Energy Data in spatial distributions in the export tab.
+ *
+ */
+void MainWindow::on_checkBoxThermalData_clicked()
+{
+ if (exportThermalData) exportThermalData = false;
+ else exportThermalData = true;
+}
+
+
+/**
+ * Function to be called on changing the slider Soil Porosity [Vol%]
+ * in the parameters tab.
+ * @param position
+ */
+void MainWindow::on_sliderSoilPorosity_sliderMoved(int position)
+{
+ soilSolidFracVar = 1 - (position * 1.) / 100.;
+
+ string text = castFloatToString((position * 1.), 4) + " %";
+ ui->labelSP->setText(QString::fromStdString(text));
+}
+
+
+/**
+ * Function to be called on clicking the Advanced Analysis Raw Output (ROOT)
+ * checkbox in General Options in the export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxFileOutputPDF_2_clicked(bool checked)
+{
+ if (!checked) uranosRootOutput = false;
+ else uranosRootOutput = true;
+}
+
+
+/**
+ * Function to be called on clicking the Create new folder for every export
+ * checkbox in General Options in the export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxCreateFolder_clicked(bool checked)
+{
+ if (!checked) createSeparateFolderEachExport = false;
+ else createSeparateFolderEachExport = true;
+}
+
+
+/**
+ * Function to be called on clicking the Create new folder for every export
+ * checkbox in General Options in the export tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEdit_xPos_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_xPos->setPalette(*paletteB);
+ if ((valueString > -10000) && (valueString < 10000) && (valueString < 10. * squareDim / 1000.)) xPosSource = valueString * 1000.;
+ else ui->lineEdit_xPos->setPalette(*paletteR);
+}
+
+void MainWindow::on_lineEdit_yPos_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_yPos->setPalette(*paletteB);
+ if ((valueString > -10000) && (valueString < 10000) && (valueString < 10. * squareDim / 1000.)) yPosSource = valueString * 1000.;
+ else ui->lineEdit_yPos->setPalette(*paletteR);
+}
+
+void MainWindow::on_lineEdit_zPos_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_zPos->setPalette(*paletteB);
+ if ((valueString > -10000) && (valueString < 10000) && (valueString < 10. * squareDim / 1000.)) zPosSource = valueString * 1000.;
+ else ui->lineEdit_zPos->setPalette(*paletteR);
+}
+
+void MainWindow::on_lineEdit_xSize_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_xSize->setPalette(*paletteB);
+ if ((valueString > -10000) && (valueString < 10000) && (valueString < 10. * squareDim / 1000.)) xSizeSource = valueString * 1000.;
+ else ui->lineEdit_xSize->setPalette(*paletteR);
+}
+
+void MainWindow::on_lineEdit_ySize_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_ySize->setPalette(*paletteB);
+ if ((valueString > -10000) && (valueString < 10000) && (valueString < 10. * squareDim / 1000.)) ySizeSource = valueString * 1000.;
+ else ui->lineEdit_ySize->setPalette(*paletteR);
+}
+
+void MainWindow::on_lineEdit_zPos_2_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_zPos_2->setPalette(*paletteB);
+ if ((valueString > -0.01) && (valueString < 1000)) radiusSource = valueString * 1000.;
+ else ui->lineEdit_zPos_2->setPalette(*paletteR);
+}
+
+void MainWindow::on_lineEdit_SourceEnergy_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_SourceEnergy->setPalette(*paletteB);
+ if ((valueString > 0) && (valueString < 100) && (true)) sourceEnergy = valueString;
+ else ui->lineEdit_SourceEnergy->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on clicking the activate thermal transport checkbox
+ * checkbox in the Computational parameters tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxThermal_toggled(bool checked)
+{
+ if (!checked) noThermalRegime = false;
+ else noThermalRegime = true;
+}
+
+/**
+ * Function to be called on changing the Lower bound
+ * textbox value in Neutron Color Scheme in Display tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEditManualColorZero_textChanged(const QString& arg1)
+{
+ int valueString = arg1.toInt();
+ ui->lineEditManualColorZero->setPalette(*paletteB);
+ if ((valueString > -1) && (valueString < 100000000)) manualColorZero = valueString;
+ else ui->lineEditManualColorZero->setPalette(*paletteR);
+
+ redrawTopView();
+}
+
+/**
+ * Function to be called on changing the Upper bound
+ * textbox value in Neutron Color Scheme in Display tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEditManualColor_textChanged(const QString& arg1)
+{
+ int valueString = arg1.toInt();
+ ui->lineEditManualColor->setPalette(*paletteB);
+ if ((valueString > -1) && (valueString < 100000000)) manualColor = valueString;
+ else ui->lineEditManualColor->setPalette(*paletteR);
+
+ redrawTopView();
+}
+
+/**
+ * Function to be called on clicking the No Track Recording checkbox in
+ * Disable Tracks and only count Layer hits in Computational Speed in the Display tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxNoTrack_toggled(bool checked)
+{
+ if (!checked) noTrackRecording = false;
+ else noTrackRecording = true;
+}
+
+/**
+ * Function to be called on clicking the check every checkbox in
+ * Special Purpose in Display tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxSaveEvery_toggled(bool checked)
+{
+ if (!checked) saveEveryXNeutrons = false;
+ else saveEveryXNeutrons = true;
+
+ saveEveryXNeutronsPower = ui->spinBoxSaveEvery->value();
+}
+
+/**
+ * Function to be called on changing the value of Only Record in Material No in
+ * Detector Layer in Detector tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEditScotoma_2_textChanged(const QString& arg1)
+{
+ int valueString = arg1.toInt();
+ ui->lineEditScotoma_2->setPalette(*paletteB);
+ if ((valueString > -1) && (valueString <= 256)) detectorSensitiveMaterial = valueString;
+ else ui->lineEditScotoma_2->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on changing the value of Only Record in Material No in
+ * Detector Layer in Detector tab.
+ *
+ */
+void MainWindow::on_checkBox_clicked()
+{
+ if (useDetectorSensitiveMaterial) useDetectorSensitiveMaterial = false;
+ else useDetectorSensitiveMaterial = true;
+}
+
+
+/**
+ * Function to be called on clicking Record Neutrons only once per Layer checkboxin
+ * Exclude Multiple Scatteringin Detector Layer in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_checkBox_NoMultipleScattering_toggled(bool checked)
+{
+ if (!checked) noMultipleScatteringRecording = false;
+ else noMultipleScatteringRecording = true;
+
+ noMultipleScatteringRecording = false;
+}
+
+
+/**
+ * Function to be called on clicking Manual checkbox
+ * in Neutron Color Scheme in Display tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxManual_toggled(bool checked)
+{
+ redrawTopView();
+ //redrawNeutronMap(0);
+}
+
+
+/**
+ * Function to be called on clicking Track all Layers checkbox
+ * in Detector Layer in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_checkBox_TrackAllLayers_toggled(bool checked)
+{
+ if (checked) trackAllLayers = true;
+ else trackAllLayers = false;
+}
+
+/**
+ * Function to be called on clicking Logarthmic checkbox
+ * in Neutron Color Scheme in Display tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxLogarithmic_toggled(bool checked)
+{
+ if (checked) { plotTopViewLog = true; visualization->setplotTopViewLog(true); }
+ else { plotTopViewLog = false; visualization->setplotTopViewLog(false); }
+
+ redrawTopView();
+}
+
+/**
+ * Function to be called on clicking Gray Scale radio button
+ * in Neutron Color Scheme in Display tab.
+ *
+ */
+void MainWindow::on_radioButton_NeutronGrayScale_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking Hot radio button
+ * in Neutron Color Scheme in Display tab.
+ *
+ */
+void MainWindow::on_radioButton_NeutronHot_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking Thermal radio button
+ * in Neutron Color Scheme in Display tab .
+ *
+ */
+void MainWindow::on_radioButton_NeutronThermal_clicked()
+{
+ if (alreadyStarted)
+ {
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking Vertical Cylinder radio button
+ * in Detector Type in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_radioButton_Cylinder_toggled(bool checked)
+{
+ if (checked)
+ {
+ useCylindricalDetector = true;
+ useSphericalDetector = false;
+ useySheetDetector = false;
+ usexSheetDetector = false;
+ ui->lineEditDetLength->setEnabled(false);
+ ui->lineEditDetRad->setEnabled(true);
+ }
+ else
+ {
+ //useSphericalDetector = true;
+ //useCylindricalDetector = false;
+ }
+}
+
+/**
+ * Function to be called on clicking Sphere radio button
+ * in Detector Type in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_radioButton_Sphere_toggled(bool checked)
+{
+ if (checked)
+ {
+ useCylindricalDetector = false;
+ useSphericalDetector = true;
+ useySheetDetector = false;
+ usexSheetDetector = false;
+ ui->lineEditDetLength->setEnabled(false);
+ ui->lineEditDetRad->setEnabled(true);
+ }
+ else
+ {
+ //useSphericalDetector = false;
+ //useCylindricalDetector = true;
+ }
+}
+
+/**
+ * Function to be called on clicking Energy Band Model radio button
+ * in Precision in Detector Layer in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_radioButton_detectorLayerEnergyBand_toggled(bool checked)
+{
+ if (checked)
+ {
+ useRealisticModelLayer = false;
+ }
+}
+
+/**
+ * Function to be called on clicking Physics Model radio button
+ * in Precision in Detector Layer in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_radioButton_detectorLayerRealistic_toggled(bool checked)
+{
+ if (checked)
+ {
+ useRealisticModelLayer = true;
+ }
+}
+
+/**
+ * Function to be called on clicking Energy Band Model radio button
+ * in Precision in Detector in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_radioButton_detectorEnergyBand_toggled(bool checked)
+{
+ if (checked)
+ {
+ useRealisticModelDetector = false;
+ }
+}
+
+/**
+ * Function to be called on clicking Physics Model radio button
+ * in Precision in Detector in Detector tab.
+ * @param checked
+ */
+void MainWindow::on_radioButton_detectorRealistic_toggled(bool checked)
+{
+ if (checked)
+ {
+ useRealisticModelDetector = true;
+ }
+}
+
+
+/**
+ * Function to be called on clicking Volume Source extended down to the ground radio button
+ * in source geometry in computational parameters tab.
+ * @param checked
+ */
+void MainWindow::on_checkBox_VolumeSource_toggled(bool checked)
+{
+ if (checked)
+ {
+ useVolumeSource = true;
+ }
+ else
+ {
+ useVolumeSource = false;
+ }
+}
+
+/**
+ * Function to be called on clicking Experimental High Energy Cascade Model check box
+ * in Computational Model in computational parameters tab.
+ * @param checked
+ */
+void MainWindow::on_checkBox_HEModel_toggled(bool checked)
+{
+ if (checked)
+ {
+ useHECascadeModel = true;
+ }
+ else
+ {
+ useHECascadeModel = false;
+ }
+}
+
+/**
+ * Function to be called on clicking Thermal Physics Extension Model check box
+ * in Computational Model in computational parameters tab.
+ * @param checked
+ */
+void MainWindow::on_checkBox_activateThermal_toggled(bool checked)
+{
+ if (checked)
+ {
+ noThermalRegime = false;
+ }
+ else
+ {
+ noThermalRegime = true;
+ }
+}
+
+/**
+ * Function to be called on changing Range of Interest slider
+ * in Detector Color Scheme in Display tab.
+ * @param position
+ */
+void MainWindow::on_horizontalSliderDetector_sliderMoved(int position)
+{
+ if (alreadyStarted)
+ {
+ silderDetectorMoved = true;
+
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on changing Maximum Scale slider
+ * in Detector Color Scheme in Display tab.
+ * @param position
+ */
+void MainWindow::on_horizontalSliderDetectorColor_sliderMoved(int position)
+{
+ if (alreadyStarted)
+ {
+ silderDetectorColorMoved = true;
+
+ scaleFactor = ui->horizontalSliderDetectorColor->value();
+
+ if (simulationRunning)
+ {
+ if (pausehere)redrawTopView();
+ }
+ else redrawTopView();
+ }
+}
+
+/**
+ * Function to be called on clicking the Enlarge button (+)
+ * in the Birds Eye view and Spectra tab.
+ *
+ */
+void MainWindow::on_pushButton_Enlarge_clicked()
+{
+ delete visualization;
+ visualization = new VisualizationEnlarge(this);
+ visualization->show();
+
+ updateEnlargedView = true;
+ if (alreadyStarted)
+ {
+ redrawEnlargedView();
+ }
+}
+
+/**
+ * Function to be called on changing Downward Accpetance Angle [0-360°]
+ * in the Field of View Limitation in Detector tab.
+ *
+ */
+void MainWindow::on_lineEditAntiScotoma_editingFinished()
+{
+ QString arg = ui->lineEditAntiScotoma->text();
+ float angleString = arg.toFloat();
+ ui->lineEditAntiScotoma->setPalette(*paletteB);
+ if ((angleString >= 0) && (angleString <= 360) && (angleString >= 0)) downwardAcceptanceAngle = (angleString / 2.) / 360. * 2. * TMath::Pi();
+ else ui->lineEditAntiScotoma->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on clicking Clear every checkbox
+ * in the Special Purpose in Display tab.
+ * @param - checked
+ */
+void MainWindow::on_checkBoxSaveEvery_2_clicked(bool checked)
+{
+ clearEveryXNeutrons = checked;
+}
+
+void MainWindow::on_lineEditClearEveryXNeutrons_editingFinished()
+{
+
+}
+
+/**
+ * Function to be called on changing Neutrons textbox
+ * in the Special Purpose in Display tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEditClearEveryXNeutrons_textChanged(const QString& arg1)
+{
+ int valueString = arg1.toInt();
+ ui->lineEditClearEveryXNeutrons->setPalette(*paletteB);
+ if ((valueString > -1) && (valueString < 2e8)) clearEveryXNeutronsNumber = valueString;
+ else ui->lineEditClearEveryXNeutrons->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on changing Auto Update textbox
+ * in the Computational Speed in Display tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEdit_AutoUpdate_textChanged(const QString& arg1)
+{
+ float numberString = arg1.toFloat();
+ ui->lineEdit_AutoUpdate->setPalette(*paletteB);
+ if ((numberString > 0) && (numberString <= 360)) refreshTime = numberString;
+ else ui->lineEdit_AutoUpdate->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on changing Auto Refresh Ratecheckbox
+ * in the Computational Speed in Display tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxAutoRefreshRate_toggled(bool checked)
+{
+ setAutoRefreshRate = checked;
+}
+
+/**
+ * Function to be called on toggling Auto Refresh checkbox
+ * in the Computational Speed in Display tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxClearEveryDisplayRefresh_toggled(bool checked)
+{
+ setAutoRefreshRateClearing = checked;
+}
+
+/**
+ * Function to be called on clicking Auto Refresh checkbox
+ * in the Computational Speed in Display tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxClearEveryDisplayRefresh_clicked(bool checked)
+{
+ //setAutoRefreshRateClearing = checked;
+}
+
+/**
+ * Function to be called on clicking Undefined Material Warnings
+ * checkbox in General Options in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxWarnMAterial_toggled(bool checked)
+{
+ warnUndefinedMaterial = checked;
+}
+
+/**
+ * Function to be called on clicking Track Data
+ * in Spatial Distributions in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxTrackingData_clicked(bool checked)
+{
+ exportTrackData = checked;
+}
+
+
+/**
+ * Function to be called on clicking High Res Track Data
+ * in Spatial Distributions in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxHighResTrackingData_clicked(bool checked)
+{
+ exportHighResTrackData = checked;
+}
+
+/**
+ * Function to be called on clicking Sheet along y-Axis radio button
+ * in Detector Type in Detector tab.
+ *
+ */
+void MainWindow::on_radioButton_ySheet_clicked()
+{
+ useCylindricalDetector = false;
+ useSphericalDetector = false;
+ useySheetDetector = true;
+ usexSheetDetector = false;
+ ui->lineEditDetLength->setEnabled(true);
+ ui->lineEditDetRad->setEnabled(false);
+}
+
+/**
+ * Function to be called on clicking Sheet along x-Axis radio button
+ * in Detector Type in Detector tab.
+ *
+ */
+void MainWindow::on_radioButton_xSheet_clicked()
+{
+ useCylindricalDetector = false;
+ useSphericalDetector = false;
+ useySheetDetector = false;
+ usexSheetDetector = true;
+ ui->lineEditDetLength->setEnabled(true);
+ ui->lineEditDetRad->setEnabled(false);
+}
+
+/**
+ * Function to be called on clicking Sheet Length [m] textbox
+ * in Detector in Detector tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEditDetLength_textChanged(const QString& arg1)
+{
+ float detLengthString = arg1.toFloat();
+ ui->lineEditDetLength->setPalette(*paletteB);
+ if ((detLengthString > -0.01) && (detLengthString < 1e4)) detLength = 1000. * detLengthString;
+ else ui->lineEditDetLength->setPalette(*paletteR);
+}
+
+void MainWindow::on_lineEdit_zSize_textChanged(const QString& arg1)
+{
+ float valueString = arg1.toFloat();
+ ui->lineEdit_zSize->setPalette(*paletteB);
+ if ((valueString > -10000) && (valueString < 10000) && (valueString < 10. * squareDim / 1000.)) zSizeSource = valueString * 1000.;
+ else ui->lineEdit_zSize->setPalette(*paletteR);
+}
+
+void MainWindow::on_radioButton_TopToBottom_toggled(bool checked)
+{
+ if (checked) sourceDirection = 1;
+}
+
+void MainWindow::on_radioButton_BottomToTop_toggled(bool checked)
+{
+ if (checked) sourceDirection = 2;
+}
+
+void MainWindow::on_radioButton_LeftToRight_toggled(bool checked)
+{
+ if (checked) sourceDirection = 3;
+}
+
+void MainWindow::on_radioButton_RightToLeft_toggled(bool checked)
+{
+ if (checked) sourceDirection = 4;
+}
+
+void MainWindow::on_radioButton_Omni_toggled(bool checked)
+{
+ if (checked) sourceDirection = 0;
+}
+
+void MainWindow::on_checkBox_DomainCutoff_toggled(bool checked)
+{
+ domainCutoff = checked;
+}
+
+
+/**
+ * Function to be called on changing x domain size textbox in
+ * Computaional Boundary Conditions in Computational parameters.
+ * @param arg1
+ */
+void MainWindow::on_lineEditDomainFactor_textChanged(const QString& arg1)
+{
+ //int squareDimSring = arg1.toInt();
+ double dimString = arg1.toDouble();
+ ui->lineEditDomainFactor->setPalette(*paletteB);
+ if ((dimString > 1) && (dimString < 1e9))
+ {
+ domainCutoffFactor = dimString;
+ }
+ else ui->lineEditDomainFactor->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on clicking Remove if textbox for x domain size in
+ * Computaional Boundary Conditions in Computational parameters.
+ * @param checked
+ */
+void MainWindow::on_checkBox_DomainCutoffMeters_toggled(bool checked)
+{
+ domainCutoff2 = checked;
+}
+
+/**
+ * Function to be called on changing m beyond domain textbox in
+ * Computaional Boundary Conditions in Computational parameters.
+ * @param arg1
+ */
+void MainWindow::on_lineEditDomainMeters_textChanged(const QString& arg1)
+{
+ int dimString = arg1.toInt();
+ ui->lineEditDomainMeters->setPalette(*paletteB);
+ if ((dimString > -1) && (dimString < 1e9))
+ {
+ domainCutoffMeters = dimString;
+ }
+ else ui->lineEditDomainMeters->setPalette(*paletteR);
+}
+
+/**
+ * Function to be called on clicking Write Detector Neutron Tracks to File checkbox in
+ * Individual Neutron Data in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxFileOutput2_toggled(bool checked)
+{
+ detTrackFileOutput = checked;
+ trackAllLayers = checked;
+ ui->checkBox_TrackAllLayers->setChecked(checked);
+}
+
+/**
+ * Function to be called on clicking Export all Tracks checkbox in
+ * Individual Neutron Data in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxExportAllTracks_toggled(bool checked)
+{
+ allTrackFileOutput = checked;
+ trackAllLayers = checked;
+ ui->checkBox_TrackAllLayers->setChecked(checked);
+}
+
+/**
+ * Function to be called on clicking Export all Tracks checkbox in
+ * Individual Neutron Data in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBox_ReflectiveBoundaries_toggled(bool checked)
+{
+ ui->checkBox_ReflectiveBoundaries->setChecked(checked);
+ reflectiveBoundaries = checked;
+}
+
+/**
+ * Function to be called on clicking Reflective Boundaries checkbox in
+ * Computational Boundary Conditions in Computational Parameter tab.
+ * @param checked
+ */
+void MainWindow::on_checkBox_PeriodicBoundaries_toggled(bool checked)
+{
+ ui->checkBox_PeriodicBoundaries->setChecked(checked);
+ periodicBoundaries = checked;
+}
+
+/**
+ * Function to be called on changing Detector Energy Calibration File textbox in
+ * Folders tab.
+ *
+ */
+void MainWindow::on_lineEdit_DetectorFile_editingFinished()
+{
+ QString valueString = ui->lineEdit_DetectorFile->text();
+ string textHere = valueString.toStdString();
+
+ std::replace(textHere.begin(), textHere.end(), '\\', '/');
+
+ ifstream f(textHere.c_str());
+
+ ui->lineEdit_DetectorFile->setPalette(*paletteB);
+
+ if (!(f.good()))
+ {
+ if ((textHere == "default") || (textHere == "") || (textHere == "N/A") || (textHere == "n/a"))
+ {
+ ui->lineEdit_DetectorFile->setPalette(*paletteGray);
+ detectorResponseFunctionFile = "";
+ }
+ else
+ {
+ ui->lineEdit_DetectorFile->setPalette(*paletteR);
+ }
+ }
+ else
+ {
+ if (textHere.length() < 7) ui->lineEdit_DetectorFile->setPalette(*paletteR);
+ else
+ {
+ detectorResponseFunctionFile = textHere;
+ }
+ }
+}
+
+/**
+ * Function to be called on changing Detector Energy Calibration File textbox in
+ * Folders tab.
+ * @param arg1
+ */
+void MainWindow::on_lineEdit_DetectorFile_textChanged(const QString& arg1)
+{
+ QString valueString = ui->lineEdit_DetectorFile->text();
+ string textHere = valueString.toStdString() + ".2";
+
+ std::replace(textHere.begin(), textHere.end(), '\\', '/');
+
+ ifstream f(textHere.c_str());
+
+ ui->lineEdit_DetectorFile->setPalette(*paletteB);
+
+ if (!(f.good()))
+ {
+ }
+ else
+ {
+ if (textHere.length() < 7) {}
+ else
+ {
+ ui->label_25->setText("Detector Energy Calibration File (+1)");
+ detectorResponseFunctionFile2 = textHere;
+ }
+ }
+}
+
+/**
+ * Function to be called on clicking Write Detector Neutron Hits to File checkbox in
+ * Individual Neutron Data in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxFileOutput_toggled(bool checked)
+{
+ detFileOutput = checked;
+}
+
+/**
+ * Function to be called on clicking Write Detector Layer Neutron Hits to File checkbox in
+ * Individual Neutron Data in Export tab.
+ * @param checked
+ */
+void MainWindow::on_checkBoxFileOutput3_toggled(bool checked)
+{
+ detLayerFileOutput = checked;
+}
+
+/**
+ * Exports the settings of the GUI to the cfg file
+ *
+ */
+void MainWindow::on_pushButton_SaveConfig_clicked()
+{
+ exportSettings("");
+ setStatus(1, "Uranos.cfg written");
+}
+
diff --git a/mainwindow.h b/mainwindow.h
new file mode 100644
index 0000000..72637ad
--- /dev/null
+++ b/mainwindow.h
@@ -0,0 +1,513 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+
+
+#include
+#include
+
+#include "qcustomplot.h"
+
+#include "Toolkit.h"
+
+#include "TRandom3.h"
+#include
+#include
+#include "time.h"
+#include "TLegend.h"
+
+#include "dialogshowpic.h"
+#include "visualizationenlarge.h"
+
+
+//extern QVector x(101), y(101);
+
+
+namespace Ui {
+class MainWindow;
+
+
+}
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+ QMessageBox* msgBox;
+public:
+
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+
+
+ void setupImport();
+ void setupGraph(int index);
+ void setupRunSpectraGraph(QCustomPlot *customPlot);
+ void setupRunBirdsEyeViewGraph(QCustomPlot *customPlot);
+ void setupRunHorizSliceXGraph(QCustomPlot *customPlot);
+ void setupRunNpassDetGraph(QCustomPlot *customPlot);
+ void setupRunDepOfIntGraph(QCustomPlot *customPlot);
+ void setupRunNpassDetLyrGraph(QCustomPlot *customPlot);
+ void setupRunRelIntVsEGraph(QCustomPlot *customPlot);
+ void setupRunOrginOfNGraph(QCustomPlot *customPlot);
+
+ void setupRangeFunction(QCustomPlot *customPlot);
+
+ void setupLiveTHs();
+
+ void setupTable(QTableView* table);
+
+ void redrawEnlargedView();
+
+ void redrawNeutronMap(double difftime);
+
+ void buttonClickFunction();
+
+ void activateThermal();
+
+ void disabledGUIRun(string pathtoConfigFile);
+
+ void activateSkyEvaporation();
+
+ void activateThermalSkyEvaporation();
+
+ void activateDetectorBatchRun();
+
+ void activateBatchRun();
+
+ void activateParameterBatchRun(int parMin, int parMax);
+
+ void beSilent();
+
+ void setGeometry();
+
+ void setStatus(int numberLabel, string msg);
+
+ void setupGeometry();
+
+ void exportToSave();
+
+ //static TMatrixF readMatrixPNG(TString folder, TString filename);
+
+ static TMatrixF getTMatrix(int i);
+
+ //bool cosmicNSimulator(MainWindow* uiM);
+
+ void redrawTopView();
+
+ void redrawSideView();
+
+ void formatPlotToColor(QCustomPlot *customPlot);
+
+ void replotFootprint();
+
+ void formatForVectorGraphics();
+
+ void checkInputPics();
+
+ TSpline3* getSplinedDetectorEnergyModelFromFile(TString dname);
+
+ bool loadParamData(string fileFolder);
+
+ bool isFinished() const { return isFinishedVar; }
+
+private slots:
+ void on_pushButton_clicked();
+
+ void on_pushButton_2_clicked();
+
+ void on_spinBox_2_valueChanged(int arg1);
+
+ void on_pushButton_Simulate_clicked();
+
+ void on_pushButton_stop_clicked();
+
+ void on_checkBoxR_stateChanged(int arg1);
+
+ void on_checkBoxD_stateChanged(int arg1);
+
+ void on_sliderSoilMoisture_sliderMoved(int position);
+
+ void on_sliderAirHum_sliderMoved(int position);
+
+ void on_lineEditNeutrinsTotal_textChanged(const QString &arg1);
+
+ void on_sliderAtm1_sliderMoved(int position);
+
+ void on_sliderRigidity_sliderMoved(int position);
+
+ void on_lineEditSquareDim_textChanged(const QString &arg1);
+
+ void on_lineEditRefresh_textChanged(const QString &arg1);
+
+ //void on_pushButtonClear_clicked();
+
+ void on_pushButton_Clear_clicked();
+
+ void on_pushButton_Pause_clicked();
+
+ void on_lineEditDetRad_textChanged(const QString &arg1);
+
+ void on_lineEditDetX_textChanged(const QString &arg1);
+
+ void on_lineEditDety_textChanged(const QString &arg1);
+
+ void on_beamRound_clicked();
+
+ void on_beamSquare_clicked();
+
+ void on_radioRiver_clicked();
+
+ void on_radioCoast_clicked();
+
+ void on_radioIsland_clicked();
+
+ void on_radioLake_clicked();
+
+ void on_lineEditBeamRad_textChanged(const QString &arg1);
+
+ void on_radioRiver_toggled(bool checked);
+
+ void on_radioButton_clicked();
+
+ void on_lineEditTHLhigh_textChanged(const QString &arg1);
+
+ void on_lineEditTHLlow_textChanged(const QString &arg1);
+
+ void on_checkBoxRS_clicked();
+
+ void on_lineEdit_River_textChanged(const QString &arg1);
+
+ void on_lineEdit_River_2_textChanged(const QString &arg1);
+
+ void on_lineEdit_Island_textChanged(const QString &arg1);
+
+ void on_lineEdit_Lake_selectionChanged();
+
+ void on_lineEdit_Lake_textChanged(const QString &arg1);
+
+ void on_checkBoxFileOutput_clicked();
+
+ //void on_radioButton_2_clicked();
+
+ void on_radioButton_map_clicked();
+
+ void on_radioButton_mapInter_clicked();
+
+ void on_radioButton_mapFast_clicked();
+
+ void on_radioButton_mapAlbedo_clicked();
+
+
+ void on_lineEdit_InputSpectrumFolder_editingFinished();
+
+ void on_lineEdit_CrosssectionFolder_editingFinished();
+
+ void on_lineEdit_OutputFolder_editingFinished();
+
+ void on_pushButton_about_clicked();
+
+ void on_checkBoxTransparent_clicked();
+
+ void on_checkBoxBasicSpectrum_clicked();
+
+ void on_pushButton_AddLayer_clicked();
+
+ void setIntType1();
+ void setIntType2();
+ void setIntType3();
+
+ bool eventFilter(QObject *target, QEvent *event);
+
+ void setFocus(const QModelIndex &idx);
+
+ QPushButton* typebutton(QModelIndex idx);
+
+ void on_pushButton_RemoveLayer_clicked();
+
+ void on_pushButton_ReadGeometry_clicked();
+
+ void on_pushButton_SaveGeometry_clicked();
+
+ void on_spinBox_StartingLayer_valueChanged(const QString &arg1);
+
+ void on_spinBox_StartingLayer_valueChanged(int arg1);
+
+ void on_spinBox_DetectorLayer_valueChanged(int arg1);
+
+ void on_spinBox_GroundLayer_valueChanged(int arg1);
+
+ void on_pushButton_LoadGeometry_clicked();
+
+ void on_lineEdit_WorkFolder_editingFinished();
+
+ void on_pushButton_6_clicked();
+
+ void on_radioButton_fission_clicked();
+
+ void on_radioButton_fusion_clicked();
+
+ void on_checkBox_useImage_clicked();
+
+ void on_pushButton_Show_clicked();
+
+ void on_horizontalSliderColor_sliderMoved(int position);
+
+ void on_horizontalSliderColorZero_sliderMoved(int position);
+
+ void on_radioButton_NeutronNight_clicked();
+
+ void on_radioButton_NeutronCold_clicked();
+
+ void on_radioButton_NeutronPolar_clicked();
+
+ void on_radioButton_NeutronRainbow_clicked();
+
+ void on_horizontalSliderFPMoist_sliderMoved(int position);
+
+ void on_horizontalSliderFPHum_sliderMoved(int position);
+
+ void on_checkBoxFPLog_clicked();
+
+ void on_horizontalSliderFPHum_2_sliderMoved(int position);
+
+ void on_pushButton_ActivateFP_clicked();
+
+ void on_lineEditScotoma_editingFinished();
+
+ void on_checkBoxGradient2_clicked();
+
+ void on_checkBoxSelectedData_clicked();
+
+ void on_checkBoxFastData_clicked();
+
+ void on_checkBoxIntermediateData_clicked();
+
+ void on_checkBoxEpithermalData_clicked();
+
+ //void on_lineEdit_Porosity_textChanged(const QString &arg1);
+
+ void on_sliderSoilPorosity_sliderMoved(int position);
+
+ void on_checkBoxFileOutputPDF_2_clicked(bool checked);
+
+ void on_checkBoxCreateFolder_clicked(bool checked);
+
+ void on_radioButton_AmBe_clicked();
+
+ void on_lineEdit_xPos_textChanged(const QString &arg1);
+
+ void on_lineEdit_yPos_textChanged(const QString &arg1);
+
+ void on_lineEdit_zPos_textChanged(const QString &arg1);
+
+ void on_lineEdit_zPos_2_textChanged(const QString &arg1);
+
+ void on_checkBoxThermal_toggled(bool checked);
+
+ void on_radioButton_mapTrack_clicked();
+
+ void on_lineEditManualColorZero_textChanged(const QString &arg1);
+
+ void on_lineEditManualColor_textChanged(const QString &arg1);
+
+ void on_radioButton_mapTrackInter_clicked();
+
+ void on_radioButton_mapTrackFast_clicked();
+
+ void on_radioButton_mapTrackAlbedo_clicked();
+
+ void on_checkBoxNoTrack_toggled(bool checked);
+
+ void on_radioButton_mapThermal_clicked();
+
+ void on_radioButton_mapTrackThermal_clicked();
+
+ void on_checkBoxThermalData_clicked();
+
+ void on_checkBoxSaveEvery_toggled(bool checked);
+
+ void on_radioButton_NoSource_clicked();
+
+ void on_lineEdit_xSize_textChanged(const QString &arg1);
+
+ void on_lineEdit_ySize_textChanged(const QString &arg1);
+
+ void on_radioButton_ThermalSource_clicked();
+
+ void on_radioButton_MonoenergeticSource_clicked();
+
+ void on_lineEdit_SourceEnergy_textChanged(const QString &arg1);
+
+ void on_lineEditScotoma_2_textChanged(const QString &arg1);
+
+ void on_checkBox_clicked();
+
+ void on_checkBox_NoMultipleScattering_toggled(bool checked);
+
+ void on_checkBoxManual_toggled(bool checked);
+
+ void on_checkBox_TrackAllLayers_toggled(bool checked);
+
+ void on_checkBoxLogarithmic_toggled(bool checked);
+
+ void on_radioButton_NeutronGrayScale_clicked();
+
+ void on_radioButton_NeutronHot_clicked();
+
+ void on_radioButton_NeutronThermal_clicked();
+
+ void on_radioButton_ModeratedCf_clicked();
+
+ void on_radioButton_Cylinder_toggled(bool checked);
+
+ void on_radioButton_Sphere_toggled(bool checked);
+
+ void on_radioButton_detectorLayerEnergyBand_toggled(bool checked);
+
+ void on_radioButton_detectorLayerRealistic_toggled(bool checked);
+
+ void on_radioButton_detectorEnergyBand_toggled(bool checked);
+
+ void on_radioButton_detectorRealistic_toggled(bool checked);
+
+ void on_checkBox_VolumeSource_toggled(bool checked);
+
+ void on_checkBox_HEModel_toggled(bool checked);
+
+ void on_checkBox_activateThermal_toggled(bool checked);
+
+ void on_horizontalSliderDetector_sliderMoved(int position);
+
+ void on_horizontalSliderDetectorColor_sliderMoved(int position);
+
+ void exportSettings(string str);
+
+ bool importSettings();
+
+ void on_pushButton_Enlarge_clicked();
+
+ void on_lineEditAntiScotoma_editingFinished();
+
+ void on_checkBoxSaveEvery_2_clicked(bool checked);
+
+ void on_lineEditClearEveryXNeutrons_editingFinished();
+
+ void on_lineEditClearEveryXNeutrons_textChanged(const QString &arg1);
+
+ void on_lineEdit_AutoUpdate_textChanged(const QString &arg1);
+
+ void on_checkBoxAutoRefreshRate_toggled(bool checked);
+
+ void on_checkBoxClearEveryDisplayRefresh_toggled(bool checked);
+
+ void on_checkBoxClearEveryDisplayRefresh_clicked(bool checked);
+
+ void on_checkBoxWarnMAterial_toggled(bool checked);
+
+ void on_radioButton_mapTrackEnergy_clicked();
+
+
+
+ void on_checkBoxTrackingData_clicked(bool checked);
+
+ void on_checkBoxHighResTrackingData_clicked(bool checked);
+
+ void on_radioButton_ySheet_clicked();
+
+ void on_radioButton_xSheet_clicked();
+
+ void on_lineEditDetLength_textChanged(const QString &arg1);
+
+ void on_lineEdit_zSize_textChanged(const QString &arg1);
+
+ void on_radioButton_TopToBottom_toggled(bool checked);
+
+ void on_radioButton_BottomToTop_toggled(bool checked);
+
+ void on_radioButton_LeftToRight_toggled(bool checked);
+
+ void on_radioButton_RightToLeft_toggled(bool checked);
+
+ void on_radioButton_Omni_toggled(bool checked);
+
+ void on_checkBox_DomainCutoff_toggled(bool checked);
+
+ void on_lineEditDomainFactor_textChanged(const QString &arg1);
+
+ void on_checkBox_DomainCutoffMeters_toggled(bool checked);
+
+ void on_lineEditDomainMeters_textChanged(const QString &arg1);
+
+ void on_checkBoxFileOutput2_toggled(bool checked);
+
+ void on_checkBoxExportAllTracks_toggled(bool checked);
+
+ void on_checkBox_ReflectiveBoundaries_toggled(bool checked);
+
+ void on_checkBox_PeriodicBoundaries_toggled(bool checked);
+
+ void on_lineEdit_DetectorFile_editingFinished();
+
+ void on_lineEdit_DetectorFile_textChanged(const QString &arg1);
+
+ void on_checkBoxFileOutput_toggled(bool checked);
+
+ void on_checkBoxFileOutput3_toggled(bool checked);
+
+ void on_pushButton_SaveConfig_clicked();
+
+private:
+ Ui::MainWindow *ui;
+ Ui::DialogShowPic *dialogshowpic;
+ bool isFinishedVar;
+ //Ui::VisualizationEnlarge *visualizationEnlarge;
+};
+
+
+
+
+bool cosmicNSimulator(MainWindow *ui);
+
+double rangeFunctionCombined(double* x, double *par);
+
+void delay( int millisecondsToWait );
+
+void deleteStatsTH(TH1 *allTHs);
+void logYaxis(TH2* h);
+void logXaxis(TH2* h);
+void logaxis(TH1* h);
+void rebinX(TH1* h) ;
+double getWWProb(double density, double atWeight, double cs, double lambda);
+double getLfromE(double energy);
+double getEfromL(double lambda);
+void printTF1(TF1* function, TString outputFolder, TString filename);
+bool checkDetectorHit(double x, double y, double z, double deltaZ, double phi, double theta);
+double getEvaporationEnergy(double theta, TRandom * r);
+double getFissionEnergy(TRandom * r);
+vector getThermalPDF(const double nEnergy, const float massElm, const float temperature, TRandom * r);
+double getThermalEnergy(TF1 *spectrumFunc, TRandom * r);
+double getDistanceToPoint(double stVx, double stVy, double stVz, double theta, double phi, double px, double py, double pz);
+Double_t legendrian(double* x, Double_t* par);
+Double_t legendrian10fold(double* x, Double_t* par);
+string legendrian10folded(Float_t* par);
+static int ArraySize(double array[]);
+//double legendrianNfold(double* x, Double_t* par);
+TMatrixF readSigmaEnergy(TString folder, TString filename);
+void modifyCSmatrix(TMatrixF* sigmaMatrix, float factorLowE, float factorHighE);
+float endfNumberConv(string str);
+vector readAngularTabulatedCoefficients(TString folder, TString filename, const int coefficients);
+TMatrixF readAngularCoefficients(TString folder, TString filename);
+float getIndexHorizontalPosition(const TMatrixF& matrix, int line, double value, bool doLogSearch);
+float getIndexPosition(const TMatrixF& matrix, double value, bool doLogSearch);
+double calcMeanCS(const TMatrixF& matrix, double energy);
+double getHighEnergyCosTheta(const TMatrixF& angleMatrix, const TMatrixF& cumulatedProbMatrix, double energy, double prob);
+double getAngleFromCumulativeFunction(const TF1* spectrumFunc, float min, float max, TRandom* r);
+TF1* calcMeanAngularDistribution(const TMatrixF& matrix, double energy);
+void turnInputMatrix(TMatrixF& inputMatrix);
+int changeInputMatrixValue(int value);
+void generateNormalizedSpectrum(TH1F* precalculatedSpectrum, int entries, TString file1);
+void dataDelete(QVector* vec);
+
+
+
+#endif // MAINWINDOW_H
diff --git a/mainwindow.ui b/mainwindow.ui
new file mode 100644
index 0000000..a260a11
--- /dev/null
+++ b/mainwindow.ui
@@ -0,0 +1,6005 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 1448
+ 906
+
+
+
+
+ 1111
+ 85
+
+
+
+
+ 1623
+ 920
+
+
+
+ URANOS - The Cosmic Neutron Soil Moisture Simulator
+
+
+ /***************** SIM FRAME*****************/
+#simframe { background-color: #00589C;
+ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; }
+#simframe QLabel { color: rgba(255,255,255,0.5) }
+#simframe QLineEdit {
+ /*background-color: rgba(255,255,255,0.5); border: 0;*/
+ background-color: transparent; border: 0; border-bottom: 2px solid rgba(255,255,255,0.5);
+ color: rgba(255,255,255,0.5) }
+
+#tabWidget_live QFrame QLabel,
+#tabWidget_live QFrame QRadioButton,
+#tabWidget_live QFrame QCheckBox,
+#tabWidget_live QFrame QGroupBox { color: rgba(255,255,255,0.5) }
+#tabWidget_live QFrame QGroupBox { border: 1px solid rgba(255,255,255,0.5); margin-top: 0.5em; }
+#tabWidget_live QFrame QGroupBox::title {
+ subcontrol-origin: margin;
+ subcontrol-position: top center; /* position at the top center */
+ padding: 0 5px;
+ }
+#tabWidget_live QFrame { background-color: #00589C; }
+
+/******************* TABS *******************/
+QTabWidget::pane { /* The tab widget frame */
+ border-top: 2px solid#00589C;
+}
+QTabWidget::tab-bar {
+ left: 5px; /* move to the right by 5px */
+}
+QTabBar::tab {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+ stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+ border-top-left-radius: 3px; border-top-right-radius: 3px;
+ color: #555555;
+ min-width: 18ex;
+ padding: 4px 8px;
+ margin-right: 3px
+}
+QTabBar::tab:selected, QTabBar::tab:hover {
+ /*background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #FFFFFF, stop: 0.7 #F8F8F8,
+ stop: 0.8 #EFEFEF, stop: 1.0 #D9D9D9);*/
+ background-color: #00589C;
+ color: white;
+ /*border: 2px solid #00589C;
+ color: #00589C; */
+}
+QTabBar::tab:!selected {
+ margin-top: 5px; /* make non-selected tabs look smaller */
+}
+
+QTabWidget#tabWidget_live::pane { /* The tab widget frame */
+ border: 2px solid #00589C;
+}
+QTabWidget#tabWidget_live {
+ background-color: green;
+}
+QTabWidget#tabWidget_live::tab-bar {
+ left: 45px; /* move to the right by 5px */
+}
+
+/*********** PROGRESS BAR *****************/
+QProgressBar {
+ text-align: center;
+ background-color: transparent; border: 0;
+ border-left: 1px solid rgba(255,255,255,0.5);
+ border-right: 1px solid rgba(255,255,255,0.5);
+
+}
+QProgressBar::chunk {
+ background-color: rgba(255,255,255,0.5); /*rgba(0,88,156,0.3);*/
+ width: 5px;
+ margin: 1px;
+}
+/**************** BUTTON *****************/
+QPushButton {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+ stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
+ border-radius: 2px;
+ max-height: 35px;
+ padding: 4px 5px;
+ border: 1px outset #D3D3D3
+}
+QPushButton:hover {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #F1F1F1, stop: 0.4 #EEEEEE,
+ stop: 0.5 #E8E8E8, stop: 1.0 #E3E3E3);
+ border: 1px outset #E3E3E3;
+}
+QPushButton:pressed {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #D1D1D1, stop: 0.4 #CCCCCC,
+ stop: 0.5 #C8C8C8, stop: 1.0 #C3C3C3);
+ border-style: inset; border: 1px inset #C3C3C3;
+}
+
+/**************** SLIDER *****************/
+
+
+QSlider::groove:horizontal {
+ border: 0;
+ height: 12px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
+ /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);*/
+}
+
+QSlider::groove:vertical {
+ border: 0;
+ width: 12px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
+ /*background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);*/
+}
+QSlider::handle:horizontal {
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #E4E4E4, stop:1 #BfBfBf);
+ border: 1px solid #9c9c9c;
+ width: 18px;
+ margin: -2px 0; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ border-radius: 3px;
+}
+QSlider::handle:vertical {
+ background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #E4E4E4, stop:1 #BfBfBf);
+ border: 1px solid #9c9c9c;
+ height: 18px;
+ margin: 0 -2px; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
+ border-radius: 3px;
+}
+
+QSlider::add-page { background: white; border: 1px solid #DDDDDD; }
+#tabWidget_live QFrame QSlider::add-page { border: 1px solid rgba(255,255,255,0.5); }
+
+QSlider::sub-page { background: #00589C; border: 1px solid #DDDDDD; }
+#tabWidget_live QFrame QSlider::sub-page { border: 1px solid rgba(255,255,255,0.5); }
+
+
+
+
+
+
+ 50
+ 90
+ 871
+ 801
+
+
+
+ false
+
+
+ QTabWidget::Rounded
+
+
+ 0
+
+
+ Qt::ElideNone
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+ false
+
+
+
+ Physical Parameters
+
+
+
+
+ 20
+ 48
+ 171
+ 22
+
+
+
+ 2
+
+
+ 100
+
+
+ 20
+
+
+ 20
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 20
+ 156
+ 171
+ 22
+
+
+
+ 1
+
+
+ 20
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 201
+ 50
+ 41
+ 16
+
+
+
+ 10 %
+
+
+
+
+
+ 201
+ 156
+ 51
+ 21
+
+
+
+ <html><head/><body><p>7 g/m<span style=" vertical-align:super;">3 </span></p></body></html>
+
+
+
+
+
+ 20
+ 28
+ 161
+ 16
+
+
+
+ Soil Water Content [Vol%]
+
+
+
+
+
+ 20
+ 136
+ 91
+ 16
+
+
+
+ Air Humidity
+
+
+
+
+
+ 270
+ 80
+ 571
+ 421
+
+
+
+ Layers
+
+
+
+
+ 20
+ 30
+ 381
+ 371
+
+
+
+
+ 5
+ 0
+
+
+
+
+ 5
+ 1
+
+
+
+
+
+
+ 420
+ 272
+ 131
+ 20
+
+
+
+ Use layer maps
+
+
+
+
+
+ 420
+ 303
+ 111
+ 28
+
+
+
+ View layer maps
+
+
+
+
+
+ 420
+ 230
+ 111
+ 28
+
+
+
+ Material Codes
+
+
+
+
+
+ 410
+ 341
+ 151
+ 61
+
+
+
+ Layer Configuration
+
+
+
+
+ 10
+ 20
+ 61
+ 28
+
+
+
+ Load
+
+
+
+
+
+ 80
+ 20
+ 61
+ 28
+
+
+
+ Save
+
+
+
+
+
+
+ 410
+ 20
+ 151
+ 201
+
+
+
+ Layer Control
+
+
+
+
+ 10
+ 30
+ 31
+ 28
+
+
+
+ -
+
+
+
+
+
+ 10
+ 63
+ 31
+ 28
+
+
+
+ +
+
+
+
+
+
+ 70
+ 63
+ 71
+ 31
+
+
+
+ Generate
+
+
+
+
+
+ 100
+ 170
+ 42
+ 22
+
+
+
+
+
+
+ 10
+ 110
+ 91
+ 20
+
+
+
+ Source Layer
+
+
+
+
+
+ 10
+ 170
+ 81
+ 20
+
+
+
+ Ground Layer
+
+
+
+
+
+ 100
+ 110
+ 42
+ 22
+
+
+
+
+
+
+ 10
+ 140
+ 91
+ 20
+
+
+
+ Detector Layer
+
+
+
+
+
+ 100
+ 140
+ 42
+ 22
+
+
+
+
+
+
+ 65
+ 30
+ 81
+ 31
+
+
+
+ <html><head/><body><p align="center">Minimum <br/>Configuration</p></body></html>
+
+
+
+
+
+
+ true
+
+
+
+ 0
+ 310
+ 261
+ 431
+
+
+
+ false
+
+
+ Load Equipment
+
+
+ false
+
+
+
+
+ 20
+ 27
+ 171
+ 20
+
+
+
+ Nuclear Fission Source
+
+
+ true
+
+
+
+
+
+ 19
+ 57
+ 171
+ 20
+
+
+
+ Nuclear Fusion Source
+
+
+
+
+
+ 19
+ 87
+ 171
+ 20
+
+
+
+ AmBe Laboratory Source
+
+
+
+
+
+ 18
+ 260
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 18
+ 240
+ 61
+ 16
+
+
+
+ x Position
+
+
+
+
+
+ 80
+ 240
+ 61
+ 16
+
+
+
+ y Position
+
+
+
+
+
+ 80
+ 260
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 140
+ 240
+ 61
+ 16
+
+
+
+ z Position
+
+
+
+
+
+ 140
+ 260
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+ true
+
+
+
+ 200
+ 307
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 100
+ 213
+ 181
+ 17
+
+
+
+ Thermonuclear Transport
+
+
+ true
+
+
+
+
+
+ 19
+ 210
+ 61
+ 20
+
+
+
+ None
+
+
+
+
+
+ 18
+ 307
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 80
+ 307
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 80
+ 287
+ 61
+ 16
+
+
+
+ y Size
+
+
+
+
+
+ 18
+ 287
+ 61
+ 16
+
+
+
+ x Size
+
+
+
+
+
+ 19
+ 149
+ 141
+ 20
+
+
+
+ Monoenergetic [MeV]
+
+
+
+
+
+ 170
+ 150
+ 51
+ 20
+
+
+
+ 0
+
+
+
+
+
+ 19
+ 180
+ 81
+ 20
+
+
+
+ Thermal
+
+
+
+
+
+ 202
+ 287
+ 61
+ 16
+
+
+
+ Radius
+
+
+
+
+
+ 19
+ 120
+ 201
+ 17
+
+
+
+ Moderated Californium Source
+
+
+
+
+
+ 140
+ 307
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 140
+ 287
+ 61
+ 16
+
+
+
+ z Size
+
+
+
+
+
+ 20
+ 340
+ 120
+ 81
+
+
+
+ Source Direction
+
+
+
+
+ 20
+ 40
+ 41
+ 17
+
+
+
+ ->
+
+
+
+
+
+ 70
+ 40
+ 41
+ 17
+
+
+
+ Qt::RightToLeft
+
+
+ <-
+
+
+
+
+
+ 59
+ 40
+ 41
+ 17
+
+
+
+
+
+
+
+
+
+ 59
+ 19
+ 41
+ 17
+
+
+
+
+
+
+
+
+
+ 59
+ 60
+ 41
+ 17
+
+
+
+
+
+
+
+
+
+
+
+ 270
+ 19
+ 581
+ 61
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Layers are arranged in the vertical direction, representing different materials or 2D gridded patterns<br/>Position z denotes the depth below surface (z=0) in [m] and refers to the upper edge of the layer<br/>Layers override topological presets</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 189
+ 171
+ 21
+
+
+
+ <html><head/><body><p>Atmospheric depth</p></body></html>
+
+
+
+
+
+ 197
+ 217
+ 81
+ 16
+
+
+
+ <html><head/><body><p>1020 g/cm<span style=" vertical-align:super;">2 </span></p></body></html>
+
+
+
+
+
+ 20
+ 214
+ 171
+ 22
+
+
+
+ 700
+
+
+ 1050
+
+
+ 10
+
+
+ 100
+
+
+ 1020
+
+
+ 1020
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 19
+ 82
+ 161
+ 16
+
+
+
+ Soil Porosity [Vol%]
+
+
+
+
+
+ 19
+ 102
+ 171
+ 22
+
+
+
+ 2
+
+
+ 90
+
+
+ 50
+
+
+ 50
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 200
+ 104
+ 41
+ 16
+
+
+
+ 50 %
+
+
+
+
+
+ 196
+ 276
+ 46
+ 13
+
+
+
+ 10
+
+
+
+
+
+ 20
+ 253
+ 161
+ 21
+
+
+
+ Cut-off rigidity [GV]
+
+
+
+
+ true
+
+
+
+ 20
+ 271
+ 171
+ 22
+
+
+
+ 10
+
+
+ 199
+
+
+ 1
+
+
+ 10
+
+
+ 100
+
+
+ 100
+
+
+ Qt::Horizontal
+
+
+
+
+
+ Computational Parameters
+
+
+
+
+ 250
+ 74
+ 571
+ 101
+
+
+
+ Source geometry
+
+
+
+
+ 135
+ 59
+ 81
+ 22
+
+
+
+ 50
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 135
+ 40
+ 81
+ 16
+
+
+
+ Radius
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 30
+ 95
+ 20
+
+
+
+ round
+
+
+ false
+
+
+
+
+
+ 20
+ 60
+ 95
+ 20
+
+
+
+ quadratic
+
+
+ true
+
+
+
+
+
+ 222
+ 62
+ 31
+ 16
+
+
+
+ m
+
+
+
+
+
+ 280
+ 31
+ 291
+ 17
+
+
+
+ Volume Source extended down to the ground
+
+
+ false
+
+
+
+
+
+
+ 30
+ 74
+ 211
+ 101
+
+
+
+ Domain
+
+
+
+
+ 20
+ 60
+ 121
+ 22
+
+
+
+ 100
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 20
+ 40
+ 101
+ 16
+
+
+
+ Dimension
+
+
+
+
+
+ 147
+ 63
+ 31
+ 16
+
+
+
+ m
+
+
+
+
+
+
+ 30
+ 32
+ 761
+ 41
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Define the spatial extension of the setup you are simulating. Please adjust the source geometry accordingly. </span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 30
+ 510
+ 271
+ 191
+
+
+
+ Topological presets (water, land)
+
+
+
+
+ 20
+ 60
+ 121
+ 20
+
+
+
+ River, width [m]
+
+
+
+
+
+ 20
+ 90
+ 111
+ 20
+
+
+
+ Coast at x [m]
+
+
+
+
+
+ 170
+ 60
+ 51
+ 22
+
+
+
+ 10
+
+
+
+
+
+ 170
+ 90
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 170
+ 119
+ 51
+ 22
+
+
+
+ 10
+
+
+
+
+
+ 20
+ 122
+ 141
+ 20
+
+
+
+ Island, diameter [m]
+
+
+
+
+
+ 170
+ 150
+ 51
+ 22
+
+
+
+ 10
+
+
+
+
+
+ 20
+ 152
+ 141
+ 20
+
+
+
+ Lake, diameter [m]
+
+
+
+
+
+ 20
+ 30
+ 71
+ 20
+
+
+
+ None
+
+
+ true
+
+
+
+
+
+
+ 30
+ 482
+ 481
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">These are some preset examples generating a geometry for the ground layer</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 30
+ 200
+ 521
+ 131
+
+
+
+ Computational Boundary Conditions
+
+
+
+
+ 20
+ 30
+ 181
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Open System</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 58
+ 91
+ 17
+
+
+
+ Remove if
+
+
+
+
+
+ 106
+ 55
+ 41
+ 22
+
+
+
+ 1.5
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 156
+ 58
+ 111
+ 16
+
+
+
+ x domain size
+
+
+
+
+
+ 104
+ 87
+ 41
+ 22
+
+
+
+ 500
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 155
+ 90
+ 121
+ 16
+
+
+
+ m beyond domain
+
+
+
+
+
+ 20
+ 90
+ 91
+ 17
+
+
+
+ Remove if
+
+
+
+
+
+ 320
+ 30
+ 181
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Closed System</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 320
+ 60
+ 171
+ 17
+
+
+
+ Reflective Boundaries
+
+
+
+
+
+ 320
+ 90
+ 171
+ 17
+
+
+
+ Periodic Boundaries
+
+
+
+
+
+
+ 30
+ 350
+ 281
+ 101
+
+
+
+ Computational Model
+
+
+
+
+ 10
+ 20
+ 261
+ 31
+
+
+
+ Experimental High Energy Cascade Model
+
+
+ true
+
+
+
+
+
+ 10
+ 60
+ 231
+ 17
+
+
+
+ Thermal Physics Extension Model
+
+
+ false
+
+
+
+
+
+
+ Detector
+
+
+
+
+ 90
+ 680
+ 201
+ 19
+
+
+
+ false
+
+
+ 4
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 90
+ 710
+ 201
+ 19
+
+
+
+ false
+
+
+ 1
+
+
+ 30
+
+
+ 1
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 300
+ 680
+ 71
+ 16
+
+
+
+ false
+
+
+ 0
+
+
+
+
+
+ 300
+ 710
+ 51
+ 16
+
+
+
+ false
+
+
+ 0
+
+
+
+
+
+ 440
+ 140
+ 401
+ 391
+
+
+
+ Detector
+
+
+
+
+ 20
+ 33
+ 381
+ 31
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Specify the lateral position and radius of the detector<br/></span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 180
+ 74
+ 51
+ 22
+
+
+
+ 9
+
+
+
+
+
+ 30
+ 74
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 90
+ 76
+ 21
+ 16
+
+
+
+ y
+
+
+
+
+
+ 180
+ 54
+ 71
+ 16
+
+
+
+ Radius [m]
+
+
+
+
+
+ 20
+ 76
+ 21
+ 16
+
+
+
+ x
+
+
+
+
+
+ 20
+ 54
+ 151
+ 16
+
+
+
+ Position of the center [m]
+
+
+
+
+
+ 100
+ 74
+ 51
+ 22
+
+
+
+ 0
+
+
+
+
+
+ 20
+ 290
+ 101
+ 20
+
+
+
+ Transparent
+
+
+ true
+
+
+
+
+
+ 20
+ 270
+ 371
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Neutrons are removed upon detection when non-transparent<br/></span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 112
+ 291
+ 141
+
+
+
+ Type
+
+
+
+
+ 20
+ 20
+ 111
+ 17
+
+
+
+ Sphere
+
+
+ true
+
+
+
+
+
+ 20
+ 50
+ 131
+ 17
+
+
+
+ Vertical Cylinder
+
+
+ false
+
+
+
+
+
+ 20
+ 80
+ 141
+ 17
+
+
+
+ Sheet along y-Axis
+
+
+ false
+
+
+
+
+
+ 161
+ 84
+ 141
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">(Full Layer Height)</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 110
+ 141
+ 17
+
+
+
+ Sheet along x-Axis
+
+
+ false
+
+
+
+
+
+ 150
+ 52
+ 4
+ 80
+
+
+
+
+
+
+
+
+
+
+ 10
+ 320
+ 381
+ 61
+
+
+
+ Precision
+
+
+
+
+ 20
+ 30
+ 141
+ 17
+
+
+
+ Energy Band Model
+
+
+ true
+
+
+
+
+
+ 210
+ 30
+ 141
+ 17
+
+
+
+ Physics Model
+
+
+
+
+
+ true
+
+
+
+ 250
+ 74
+ 51
+ 22
+
+
+
+ 9
+
+
+ true
+
+
+
+
+
+ 250
+ 54
+ 121
+ 16
+
+
+
+ Sheet Length [m]
+
+
+
+
+
+
+ 10
+ 140
+ 411
+ 391
+
+
+
+ Detector Layer
+
+
+
+
+ 20
+ 33
+ 211
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Record only for a specific Material</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 194
+ 50
+ 41
+ 20
+
+
+
+ 11
+
+
+
+
+
+ 20
+ 53
+ 191
+ 17
+
+
+
+ Only Record in Material No
+
+
+
+
+
+ 20
+ 133
+ 251
+ 17
+
+
+
+ Record Neutrons only once per Layer
+
+
+
+
+
+ 20
+ 113
+ 211
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Exclude Multiple Scattering</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 210
+ 251
+ 17
+
+
+
+ Track all Layers
+
+
+
+
+
+ 20
+ 176
+ 341
+ 31
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Enable Track Recording (but not Hits) for all Layers, not only the Detector Layer</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 10
+ 320
+ 391
+ 61
+
+
+
+ Precision
+
+
+
+
+ 20
+ 30
+ 141
+ 17
+
+
+
+ Energy Band Model
+
+
+ true
+
+
+
+
+
+ 210
+ 30
+ 141
+ 17
+
+
+
+ Physics Model
+
+
+
+
+
+
+
+ 10
+ 20
+ 831
+ 101
+
+
+
+ Detector and Detector Layer
+
+
+
+
+ 20
+ 60
+ 371
+ 31
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">(Default values according to Hydroinnova: 0.0001 - 0.01 MeV)</span></p></body></html>
+
+
+
+
+
+ 88
+ 46
+ 21
+ 16
+
+
+
+ to
+
+
+
+
+
+ 20
+ 24
+ 251
+ 16
+
+
+
+ <html><head/><body><p>Neutron-sensitive energy band limits<br/></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 170
+ 46
+ 41
+ 16
+
+
+
+ MeV
+
+
+
+
+
+ 110
+ 43
+ 51
+ 22
+
+
+
+ 0.01
+
+
+
+
+
+ 22
+ 43
+ 61
+ 22
+
+
+
+ 0.0001
+
+
+
+
+
+ 380
+ 60
+ 41
+ 20
+
+
+
+ 0
+
+
+
+
+
+ 380
+ 40
+ 231
+ 16
+
+
+
+ <html><head/><body><p>Downward Scotoma Angle [0-360°]<br/></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 380
+ 20
+ 181
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Blindness Region<br/></span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 603
+ 20
+ 181
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Field of View Limitation<br/></span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 603
+ 60
+ 41
+ 20
+
+
+
+ 360
+
+
+
+
+
+ 603
+ 40
+ 221
+ 16
+
+
+
+ <html><head/><body><p>Downward Accpetance Angle [0-360°]<br/></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+
+ 20
+ 550
+ 731
+ 51
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Energy Band Model: 100% detection efficiency in the selected energy band.</span></p><p><span style=" color:#5a5a5a;">Physics Model: energy and angular sensitivity according to a real detector.</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ Showcase
+
+
+
+
+ 510
+ 158
+ 41
+ 20
+
+
+
+ 10^
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 551
+ 158
+ 42
+ 22
+
+
+
+ 1
+
+
+ 8
+
+
+ 6
+
+
+
+
+
+ 520
+ 80
+ 111
+ 28
+
+
+
+ View spectrum
+
+
+
+
+
+ 30
+ 28
+ 541
+ 51
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Generated neutrons are sampled from an incoming spectrum. URANOS uses the incoming-only part of the analytical spectrum by Sato et al. (2006)</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 520
+ 248
+ 211
+ 20
+
+
+
+ use a Mean Basic Spectrum
+
+
+
+
+
+ 520
+ 135
+ 151
+ 20
+
+
+
+ Sampling magnitude:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+
+
+ 30
+ 80
+ 471
+ 271
+
+
+
+
+
+
+ 30
+ 410
+ 571
+ 271
+
+
+
+ Estimated Radial Neutron Distribution at Sea Level
+
+
+
+
+ 20
+ 20
+ 441
+ 241
+
+
+
+
+
+ 330
+ 10
+ 91
+ 23
+
+
+
+ Auto Refresh
+
+
+ false
+
+
+
+
+
+
+ 470
+ 98
+ 21
+ 141
+
+
+
+ 1
+
+
+ 600
+
+
+ 1
+
+
+ 1
+
+
+ Qt::Vertical
+
+
+
+
+
+ 500
+ 100
+ 61
+ 41
+
+
+
+ Integral Range:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 500
+ 133
+ 51
+ 21
+
+
+
+ 0
+
+
+
+
+
+ 500
+ 190
+ 51
+ 16
+
+
+
+
+ false
+
+
+
+ 0
+
+
+
+
+
+ 500
+ 170
+ 61
+ 16
+
+
+
+ Coverage:
+
+
+
+
+
+ 470
+ 33
+ 51
+ 17
+
+
+
+ Log
+
+
+
+
+
+
+ 30
+ 372
+ 571
+ 51
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Evaluate the domain extension by estimating the footprint size, use the sliders from the 'Physical Parameters' tab to change the environmental conditions.</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ Folders
+
+
+
+ true
+
+
+
+ 20
+ 220
+ 561
+ 22
+
+
+
+ false
+
+
+ N/A
+
+
+
+
+
+ 20
+ 80
+ 311
+ 16
+
+
+
+ Cross Section Folder (containing the ENDF databases)
+
+
+
+
+
+ 20
+ 280
+ 561
+ 22
+
+
+
+ default
+
+
+
+
+
+ 20
+ 340
+ 561
+ 22
+
+
+
+ G:/Analyse/Simulation/Cosmics/
+
+
+
+
+
+ 20
+ 200
+ 271
+ 16
+
+
+
+ Detector Energy Calibration File
+
+
+
+
+
+ 20
+ 320
+ 131
+ 16
+
+
+
+ Output Folder
+
+
+
+
+
+ 20
+ 100
+ 561
+ 22
+
+
+
+ G:/Analyse/Simulation/ENDF
+
+
+
+
+
+ 20
+ 140
+ 451
+ 16
+
+
+
+ Input Spectrum Calculation File
+
+
+
+
+
+ 20
+ 260
+ 151
+ 16
+
+
+
+ Work Config Directory
+
+
+
+
+
+ 20
+ 160
+ 561
+ 22
+
+
+
+ G:/Analyse/Simulation/Cosmics/results19/allHistos0.99_0.00.root
+
+
+
+
+
+ 20
+ 18
+ 511
+ 51
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Enter the paths to your folders</span></p><p><span style=" color:#5a5a5a;">End folder paths by a slash \</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ Export
+
+
+
+
+ 20
+ 500
+ 281
+ 181
+
+
+
+ Map Export drawing options
+
+
+
+
+ 20
+ 28
+ 82
+ 17
+
+
+
+ Heat Map
+
+
+ true
+
+
+
+
+
+ 170
+ 30
+ 101
+ 17
+
+
+
+ Gray Scale
+
+
+
+
+
+ 20
+ 58
+ 141
+ 17
+
+
+
+ Heat Map Inverted
+
+
+
+
+
+ 170
+ 90
+ 101
+ 17
+
+
+
+ Dark Corona
+
+
+
+
+
+ 20
+ 88
+ 82
+ 17
+
+
+
+ Rainbow
+
+
+
+
+
+ 170
+ 60
+ 82
+ 17
+
+
+
+ Deviation
+
+
+
+
+
+ 20
+ 140
+ 42
+ 22
+
+
+
+ 1
+
+
+ 10
+
+
+
+
+
+ 20
+ 122
+ 111
+ 16
+
+
+
+ Compress by Factor
+
+
+
+
+
+ 170
+ 130
+ 151
+ 20
+
+
+
+ PDF Output
+
+
+
+
+
+
+ 20
+ 20
+ 321
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Specify the data to be printed to the output folder</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 340
+ 50
+ 281
+ 131
+
+
+
+ Histograms
+
+
+
+
+ 20
+ 75
+ 241
+ 17
+
+
+
+ Detector Distance Data
+
+
+ false
+
+
+
+
+
+ 20
+ 95
+ 251
+ 17
+
+
+
+ Detector Layer Distance Data
+
+
+ false
+
+
+
+
+
+ 20
+ 25
+ 171
+ 17
+
+
+
+ Travel Distance Graphs
+
+
+ true
+
+
+
+
+
+ 50
+ 45
+ 101
+ 17
+
+
+
+ Log Y Axis
+
+
+
+
+
+
+ 340
+ 200
+ 281
+ 191
+
+
+
+ Individual Neutron Data
+
+
+
+
+ 20
+ 130
+ 241
+ 20
+
+
+
+ Export all Tracks
+
+
+
+
+
+ 20
+ 25
+ 251
+ 20
+
+
+
+ Write Detector Neutron Hits to File
+
+
+
+
+
+ 20
+ 50
+ 251
+ 20
+
+
+
+ Write Detector Neutron Tracks to File
+
+
+
+
+
+ 20
+ 160
+ 251
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Track exporting activates 'Track all Layers'</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 90
+ 251
+ 20
+
+
+
+ Write Detector Layer Neutron Hits to File
+
+
+
+
+
+
+ 340
+ 400
+ 281
+ 181
+
+
+
+ General Options
+
+
+
+
+ 20
+ 147
+ 221
+ 20
+
+
+
+ Undefined Material Warnings
+
+
+ false
+
+
+
+
+
+ 20
+ 26
+ 261
+ 20
+
+
+
+ Advanced Analysis Raw Output (ROOT)
+
+
+ true
+
+
+
+
+
+ 142
+ 105
+ 42
+ 22
+
+
+
+ 3
+
+
+ 8
+
+
+ 5
+
+
+
+
+
+ 120
+ 107
+ 31
+ 16
+
+
+
+ 10^
+
+
+
+
+
+ 197
+ 107
+ 91
+ 16
+
+
+
+ Neutrons
+
+
+
+
+
+ 20
+ 76
+ 261
+ 20
+
+
+
+ Create new folder for every export
+
+
+ false
+
+
+
+
+
+ 20
+ 105
+ 101
+ 20
+
+
+
+ Export every
+
+
+ false
+
+
+
+
+
+
+ 20
+ 50
+ 281
+ 431
+
+
+
+ Spatial Distributions
+
+
+
+
+ 20
+ 398
+ 221
+ 17
+
+
+
+ Detector Neutron Origins Data
+
+
+ false
+
+
+
+
+
+ 20
+ 328
+ 161
+ 17
+
+
+
+ High Res Track Data
+
+
+ false
+
+
+
+
+
+ 20
+ 378
+ 221
+ 17
+
+
+
+ Detector Neutron Origins Map
+
+
+ true
+
+
+
+
+
+ 20
+ 178
+ 161
+ 17
+
+
+
+ Selected Energy Map
+
+
+ true
+
+
+
+
+
+ 20
+ 198
+ 161
+ 17
+
+
+
+ Selected Energy Data
+
+
+ false
+
+
+
+
+
+ 20
+ 228
+ 161
+ 17
+
+
+
+ Thermal Energy Map
+
+
+ false
+
+
+
+
+
+ 20
+ 358
+ 171
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Detector data output</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 98
+ 181
+ 17
+
+
+
+ Intermediate Energy Data
+
+
+ false
+
+
+
+
+
+ 20
+ 288
+ 171
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Additional data output</span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 28
+ 141
+ 17
+
+
+
+ Epithermal Map
+
+
+ false
+
+
+
+
+
+ 20
+ 248
+ 161
+ 17
+
+
+
+ Thermal Energy Data
+
+
+ false
+
+
+
+
+
+ 20
+ 128
+ 141
+ 17
+
+
+
+ Fast Neutron Map
+
+
+ false
+
+
+
+
+
+ 20
+ 148
+ 141
+ 17
+
+
+
+ Fast Neutron Data
+
+
+ false
+
+
+
+
+
+ 20
+ 48
+ 141
+ 17
+
+
+
+ Epithermal Data
+
+
+ false
+
+
+
+
+
+ 20
+ 78
+ 171
+ 17
+
+
+
+ Intermediate Energy Map
+
+
+ false
+
+
+
+
+
+ 20
+ 308
+ 161
+ 17
+
+
+
+ Track Data
+
+
+ false
+
+
+
+
+
+
+ Display
+
+
+
+
+ 530
+ 20
+ 301
+ 241
+
+
+
+ Displayed energy window
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ false
+
+
+
+
+ 20
+ 50
+ 121
+ 20
+
+
+
+ 1 eV-1 keV
+
+
+
+
+
+ 20
+ 80
+ 131
+ 20
+
+
+
+ 1 keV-0.5 MeV
+
+
+
+
+
+ 20
+ 110
+ 131
+ 20
+
+
+
+ 0.5 MeV-10 MeV
+
+
+
+
+
+ 20
+ 140
+ 141
+ 20
+
+
+
+ Detector Selection
+
+
+ true
+
+
+ true
+
+
+
+
+
+ 20
+ 210
+ 151
+ 17
+
+
+
+ Gradient View
+
+
+
+
+
+ 160
+ 140
+ 141
+ 20
+
+
+
+ Detector Selection
+
+
+ true
+
+
+ false
+
+
+
+
+
+ 20
+ 24
+ 101
+ 16
+
+
+
+ Hit Density
+
+
+
+
+
+ 160
+ 26
+ 101
+ 16
+
+
+
+ Track Density
+
+
+
+
+
+ 160
+ 110
+ 131
+ 20
+
+
+
+ 0.5 MeV-10 MeV
+
+
+
+
+
+ 160
+ 80
+ 131
+ 20
+
+
+
+ 1 keV-0.5 MeV
+
+
+
+
+
+ 160
+ 50
+ 131
+ 20
+
+
+
+ 1 eV-1 keV
+
+
+
+
+
+ 20
+ 170
+ 111
+ 20
+
+
+
+ Thermal
+
+
+
+
+
+ 160
+ 170
+ 111
+ 20
+
+
+
+ Thermal
+
+
+
+
+
+ 160
+ 210
+ 131
+ 20
+
+
+
+ Energy Dependent
+
+
+
+
+
+
+ 530
+ 270
+ 301
+ 311
+
+
+
+ Neutron Color Scheme
+
+
+
+
+ 20
+ 30
+ 131
+ 17
+
+
+
+ Dark Gray Scale
+
+
+
+
+
+ 20
+ 60
+ 61
+ 17
+
+
+
+ Cold
+
+
+
+
+
+ 20
+ 90
+ 71
+ 17
+
+
+
+ Polar
+
+
+
+
+
+ 20
+ 120
+ 91
+ 17
+
+
+
+ URANOS
+
+
+ true
+
+
+
+
+
+ 20
+ 250
+ 171
+ 20
+
+
+
+ 199
+
+
+ 1
+
+
+ 50
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 20
+ 200
+ 131
+ 20
+
+
+
+ 199
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 19
+ 160
+ 161
+ 16
+
+
+
+ <html><head/><body><p>Color range:</p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 180
+ 101
+ 21
+
+
+
+ Lower bound:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 230
+ 101
+ 21
+
+
+
+ Upper bound:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 97
+ 158
+ 71
+ 16
+
+
+
+ [0-1]
+
+
+
+
+
+ 200
+ 160
+ 81
+ 17
+
+
+
+ Manual
+
+
+
+
+
+ 200
+ 200
+ 51
+ 20
+
+
+
+ 0
+
+
+
+
+
+ 200
+ 248
+ 51
+ 20
+
+
+
+ 0
+
+
+
+
+
+ 20
+ 280
+ 111
+ 17
+
+
+
+ Logarithmic
+
+
+
+
+
+ 160
+ 30
+ 111
+ 17
+
+
+
+ Gray Scale
+
+
+
+
+
+ 160
+ 60
+ 82
+ 17
+
+
+
+ Hot
+
+
+
+
+
+ 160
+ 90
+ 101
+ 17
+
+
+
+ Thermal
+
+
+
+
+
+
+ 530
+ 590
+ 301
+ 161
+
+
+
+ Detector Color Scheme
+
+
+
+
+ 20
+ 50
+ 201
+ 20
+
+
+
+ 200
+
+
+ 1
+
+
+ 0
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 20
+ 30
+ 141
+ 21
+
+
+
+ Range of Interest
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 230
+ 50
+ 51
+ 16
+
+
+
+ -
+
+
+
+
+
+ 20
+ 130
+ 131
+ 21
+
+
+
+ Maximum Color Value:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 140
+ 128
+ 51
+ 16
+
+
+
+ -
+
+
+
+
+
+ 20
+ 100
+ 141
+ 20
+
+
+
+ 1
+
+
+ 99
+
+
+ Qt::Horizontal
+
+
+
+
+
+ 20
+ 80
+ 141
+ 21
+
+
+
+ Maximum Scale
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+
+ 20
+ 50
+ 281
+ 121
+
+
+
+ Computational Speed
+
+
+
+
+ 20
+ 40
+ 151
+ 17
+
+
+
+ No Track Recording
+
+
+
+
+
+ 20
+ 20
+ 241
+ 21
+
+
+
+ <html><head/><body><p><span style=" color:#5a5a5a;">Disable Tracks and only count Layer hits </span></p></body></html>
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 20
+ 80
+ 111
+ 17
+
+
+
+ Auto Update
+
+
+ true
+
+
+
+
+
+ 130
+ 78
+ 51
+ 22
+
+
+
+ 1
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 190
+ 82
+ 31
+ 16
+
+
+
+ s
+
+
+
+
+
+
+ 20
+ 230
+ 281
+ 101
+
+
+
+ Special Purpose
+
+
+
+
+ 10
+ 60
+ 221
+ 20
+
+
+
+ Clear every display refresh
+
+
+ false
+
+
+
+
+
+ 184
+ 30
+ 91
+ 16
+
+
+
+ Neutrons
+
+
+
+
+
+ 122
+ 30
+ 51
+ 20
+
+
+
+ 100
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 10
+ 29
+ 101
+ 20
+
+
+
+ Clear every
+
+
+ false
+
+
+
+
+
+
+
+
+ 200
+ 0
+ 1231
+ 51
+
+
+
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+
+ 1165
+ 13
+ 51
+ 25
+
+
+
+
+
+
+ Export
+
+
+
+
+
+ 106
+ 13
+ 51
+ 25
+
+
+
+ Pause
+
+
+ true
+
+
+ false
+
+
+ false
+
+
+
+
+
+ 163
+ 13
+ 41
+ 25
+
+
+
+ Stop
+
+
+
+
+
+ 210
+ 13
+ 41
+ 25
+
+
+
+ Clear
+
+
+
+
+
+ 12
+ 10
+ 81
+ 30
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 45
+
+
+
+
+
+
+ Simulate
+
+
+ false
+
+
+
+
+
+ 740
+ 7
+ 91
+ 20
+
+
+
+ Qt::RightToLeft
+
+
+ neutrons/sec
+
+
+
+
+
+ 330
+ 7
+ 91
+ 20
+
+
+
+ Qt::RightToLeft
+
+
+ QFrame::Plain
+
+
+ # neutrons
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 440
+ 10
+ 291
+ 31
+
+
+
+ 1
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ false
+
+
+ false
+
+
+ QProgressBar::TopToBottom
+
+
+
+
+
+ 980
+ 15
+ 61
+ 20
+
+
+
+ neutrons
+
+
+
+
+
+ 850
+ 15
+ 81
+ 20
+
+
+
+ Refresh every
+
+
+
+
+
+ 934
+ 15
+ 41
+ 22
+
+
+
+ 100
+
+
+ Qt::AlignCenter
+
+
+
+
+
+ 335
+ 24
+ 91
+ 22
+
+
+
+ 500000
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ false
+
+
+ false
+
+
+
+
+
+ 270
+ 24
+ 71
+ 20
+
+
+
+ maximum:
+
+
+
+
+
+ 740
+ 24
+ 91
+ 20
+
+
+
+ Qt::RightToLeft
+
+
+ ()
+
+
+
+
+
+ 270
+ 7
+ 71
+ 20
+
+
+
+ #neutrons:
+
+
+
+
+
+ 530
+ 8
+ 191
+ 20
+
+
+
+
+ 7
+ false
+
+
+
+ Qt::LeftToRight
+
+
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 490
+ 27
+ 231
+ 20
+
+
+
+
+ 7
+ false
+
+
+
+ Qt::LeftToRight
+
+
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 1087
+ 14
+ 71
+ 24
+
+
+
+ Save CFG
+
+
+
+
+
+
+ 6
+ 11
+ 191
+ 31
+
+
+
+
+ 177
+ 0
+
+
+
+
+ 16777215
+ 43
+
+
+
+ false
+
+
+ border: 0; border-radius: 0;
+background-color: transparent;
+
+
+
+
+
+
+ uranos-logo-smallx2.pnguranos-logo-smallx2.png
+
+
+
+ 177
+ 51
+
+
+
+ false
+
+
+
+
+
+ 900
+ 60
+ 531
+ 801
+
+
+
+ false
+
+
+
+
+
+ 0
+
+
+
+ Birds-eye View && Spectra
+
+
+
+
+ 0
+ 0
+ 531
+ 771
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+
+ 10
+ 520
+ 511
+ 241
+
+
+
+
+
+
+ 12
+ 10
+ 511
+ 501
+
+
+
+
+
+
+ 506
+ 0
+ 20
+ 20
+
+
+
+ +
+
+
+
+
+
+ 30
+ 750
+ 61
+ 20
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+
+
+ 7
+
+
+
+ Qt::RightToLeft
+
+
+ -
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
+ Range View
+
+
+
+
+ 0
+ 0
+ 531
+ 771
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+
+ 10
+ 410
+ 501
+ 291
+
+
+
+
+
+
+ 10
+ 10
+ 381
+ 16
+
+
+
+ Range distribution of Neutrons passing the Detector Layer
+
+
+ false
+
+
+
+
+
+ 10
+ 30
+ 501
+ 291
+
+
+
+
+
+
+ 10
+ 390
+ 361
+ 16
+
+
+
+ Range distribution of Neutrons passing the Detector
+
+
+ false
+
+
+
+
+
+ 358
+ 348
+ 161
+ 20
+
+
+
+ Neutrons with Soil Contact
+
+
+ false
+
+
+
+
+
+ 50
+ 348
+ 301
+ 20
+
+
+
+
+ true
+ false
+ false
+
+
+
+ false
+
+
+ background-color: rgb(0, 88, 156);
+color: rgb(255, 255, 255);
+text-align: right;
+
+
+ 1
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+ false
+
+
+ %p%
+
+
+
+
+
+ 361
+ 727
+ 161
+ 20
+
+
+
+ Neutrons with Soil Contact
+
+
+ false
+
+
+
+
+
+ 50
+ 728
+ 301
+ 20
+
+
+
+
+ true
+
+
+
+ background-color: rgb(0, 88, 156);
+color: rgb(255, 255, 255);
+text-align: right;
+
+
+ 1
+
+
+ %p%
+
+
+
+
+
+ 460
+ 390
+ 51
+ 20
+
+
+
+ Log
+
+
+
+
+
+ 460
+ 10
+ 51
+ 20
+
+
+
+ Log
+
+
+
+
+
+ 170
+ 701
+ 61
+ 16
+
+
+
+ 0 m
+
+
+ false
+
+
+
+
+
+ 280
+ 701
+ 61
+ 16
+
+
+
+ 0 m
+
+
+ false
+
+
+
+
+
+ 280
+ 320
+ 61
+ 16
+
+
+
+ 0 m
+
+
+ false
+
+
+
+
+
+ 170
+ 320
+ 61
+ 16
+
+
+
+ 0 m
+
+
+ false
+
+
+
+
+
+ 50
+ 320
+ 71
+ 16
+
+
+
+ Footprint:
+
+
+ false
+
+
+
+
+
+ 120
+ 320
+ 41
+ 16
+
+
+
+ 63 %:
+
+
+ false
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 230
+ 320
+ 41
+ 16
+
+
+
+ 86 %:
+
+
+ false
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 350
+ 320
+ 111
+ 16
+
+
+
+ Near Field < 15 m:
+
+
+ false
+
+
+
+
+
+ 460
+ 319
+ 41
+ 20
+
+
+
+ 0 %
+
+
+ false
+
+
+
+
+
+ 462
+ 699
+ 41
+ 20
+
+
+
+ 0 %
+
+
+ false
+
+
+
+
+
+ 230
+ 700
+ 41
+ 16
+
+
+
+ 86 %:
+
+
+ false
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 350
+ 700
+ 111
+ 16
+
+
+
+ Near Field < 15 m:
+
+
+ false
+
+
+
+
+
+ 50
+ 700
+ 71
+ 16
+
+
+
+ Footprint:
+
+
+ false
+
+
+
+
+
+ 120
+ 700
+ 41
+ 16
+
+
+
+ 63 %:
+
+
+ false
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+
+ Spatial View
+
+
+
+
+ 0
+ 0
+ 531
+ 771
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+
+ 10
+ 30
+ 501
+ 311
+
+
+
+
+
+
+ 10
+ 10
+ 361
+ 16
+
+
+
+ Profile view: horizontal slice along the x-axis
+
+
+
+
+
+ 10
+ 390
+ 191
+ 16
+
+
+
+ Depth of Interactions
+
+
+
+
+
+ 460
+ 390
+ 51
+ 20
+
+
+
+ Log
+
+
+
+
+
+ 10
+ 410
+ 501
+ 311
+
+
+
+
+
+
+
+ Detector
+
+
+
+
+ 0
+ 0
+ 531
+ 771
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+
+ 10
+ 10
+ 511
+ 561
+
+
+
+
+
+
+ 100
+ 572
+ 361
+ 16
+
+
+
+ Origins of Neutrons measured by the Detector [%]
+
+
+ false
+
+
+ Qt::AlignCenter
+
+
+
+
+
+ 210
+ 597
+ 101
+ 20
+
+
+
+ Qt::RightToLeft
+
+
+ # Total Neutrons:
+
+
+
+
+
+ 310
+ 597
+ 91
+ 20
+
+
+
+ Qt::RightToLeft
+
+
+ ()
+
+
+
+
+
+
+
+
+ 898
+ 64
+ 59
+ 22
+
+
+
+ font-size: 20px; color:#00589C;
+
+
+ Live:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
+
+
+
+
+ true
+
+
+
+ 30
+ 3
+ 141
+ 41
+
+
+
+
+ Calibri
+ 23
+ true
+
+
+
+
+
+
+ <font color='#8b0000'>U<\font><font color='#00589C'>RANOS<\font>
+
+
+
+
+
+ 1362
+ 66
+ 61
+ 20
+
+
+
+
+
+
+
+
+ 127
+ 171
+ 205
+
+
+
+
+
+
+ 127
+ 171
+ 205
+
+
+
+
+
+
+ 127
+ 171
+ 205
+
+
+
+
+
+
+
+
+ 127
+ 171
+ 205
+
+
+
+
+
+
+ 127
+ 171
+ 205
+
+
+
+
+
+
+ 127
+ 171
+ 205
+
+
+
+
+
+
+
+
+ 120
+ 120
+ 120
+
+
+
+
+
+
+ 120
+ 120
+ 120
+
+
+
+
+
+
+ 127
+ 171
+ 205
+
+
+
+
+
+
+
+
+ 6
+
+
+
+ Qt::RightToLeft
+
+
+ -
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+
+
+ 1360
+ 65
+ 71
+ 21
+
+
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+ 0
+ 88
+ 156
+
+
+
+
+
+
+
+ background-color: rgb(0, 88, 156)
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+ label_42
+ tabWidget
+ simframe
+ pushButton_about
+ tabWidget_live
+ label_2
+ frame_4
+ label_detectorLayerNs
+
+
+
+
+
+
+
+ QCustomPlot
+ QWidget
+
+ 1
+
+
+
+
+