Skip to content

Commit 0a570d4

Browse files
committed
Merge branch 'master' into feature/llm
2 parents 3bedfbc + 565dc2e commit 0a570d4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+5234
-848
lines changed

.github/workflows/build_macos.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ concurrency: ci-macos-${{ github.ref }}
2424

2525
jobs:
2626
macos-build:
27-
runs-on: macos-14
27+
runs-on: macos-26
2828
permissions:
2929
contents: read
3030
defaults:

InterSpec/DetectorPeakResponse.h

Lines changed: 145 additions & 48 deletions
Large diffs are not rendered by default.

InterSpec/DrfSelect.h

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class DrfSelect : public Wt::WContainerWidget
248248
249249
ToDo: Currently reads in most of the information exported in the CSV from MakeDrf tool, but maybe not all.
250250
*/
251-
static std::shared_ptr<DetectorPeakResponse> parseRelEffCsvFile( const std::string filePath );
251+
static std::shared_ptr<DetectorPeakResponse> parseInterSpecRelEffCsvFile( const std::string filePath );
252252

253253
/** Searches for potential relative efficiency detector files in static and user data directories.
254254
Returns a vector of file paths to potential RelEff detector definition files.
@@ -276,22 +276,20 @@ class DrfSelect : public Wt::WContainerWidget
276276
void relEffDetectorSelectCallback();
277277

278278

279-
/** Reason #fileUpladedCallback is being called */
280-
enum class UploadCallbackReason
281-
{
282-
ImportTabChosen,
283-
DetectorDiameterChanged,
284-
EfficiencyCsvUploaded,
285-
DetectorDotDatUploaded,
286-
FixedGeometryChanged
287-
};//enum class UploadCallbackReason
279+
void handleUploadTabSelected();
280+
281+
void handleDetectorDiameterOrDistanceChanged();
282+
283+
void showWidgetsForCurrentEfficiencyType();
284+
void updateUserNameFromCurrentDetEff();
285+
286+
void handleEfficiencyCsvUpload();
287+
void handleGadrasDetectorDotDatUpload();
288+
void handleEfficiencyTypeChange();
289+
290+
/** Returns a detector from the currently selected upload - returns nullptr if not fully specified (e.g., no diameter, or wahtever)*/
291+
std::shared_ptr<DetectorPeakResponse> detectorFromEffUpload() const;
288292

289-
/** Function called when "Import" tab is chosen, detector diameter is changed,
290-
or if a Efficiency.csv, or Detector.dat file is uplaoded.
291-
@param context Has value 0
292-
*/
293-
void fileUploadedCallback( const UploadCallbackReason context );
294-
295293
//updates energy efficient chart
296294
void updateChart();
297295

@@ -369,7 +367,9 @@ class DrfSelect : public Wt::WContainerWidget
369367
Wt::WFileUpload *m_efficiencyCsvUpload;
370368
Wt::WContainerWidget *m_detectrDotDatDiv;
371369
Wt::WFileUpload *m_detectorDotDatUpload;
372-
Wt::WCheckBox *m_fixedGeometryCb;
370+
Wt::WComboBox *m_efficiencyType;
371+
Wt::WContainerWidget *m_detectorDistanceDiv;
372+
Wt::WLineEdit *m_detectorDistance;
373373

374374
Wt::WPushButton *m_acceptButton;
375375
Wt::WPushButton *m_cancelButton;

InterSpec_resources/DrfSelect.css

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
font-size: x-small;
44
}
55

6-
.DetectorLabel
6+
.DetUploadDiv .DetectorLabel
77
{
88
font-size: 12px;
99
font-style: italic;
@@ -69,6 +69,19 @@ table.FormulaDrfTbl label
6969
align-items: center;
7070
}
7171

72+
.DetUploadDiv
73+
{
74+
display: flex;
75+
flex-direction: column;
76+
align-items: flex-start;
77+
gap: 10px;
78+
}
79+
80+
.DetUploadDiv .EfficiencyType
81+
{
82+
83+
}
84+
7285
.DetectorDiamDiv
7386
{
7487

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<messages>
3+
<!-- dlt- is short for DetectionLimitTool
4+
-->
5+
<message id="dlt-window-title">Detection Confidence Tool</message>
6+
7+
<!-- MdaPeakRow strings -->
8+
<message id="dlt-use-for-multi-peak">Use for multi-peak</message>
9+
<message id="dlt-roi-lower-label">ROI Lower:</message>
10+
<message id="dlt-roi-upper-label">ROI Upper:</message>
11+
<message id="dlt-continuum-label">Continuum</message>
12+
<message id="dlt-cont-norm-label">Cont. Norm</message>
13+
<message id="dlt-cont-norm-floating">Floating</message>
14+
<message id="dlt-cont-norm-fixed-edges">Fixed at edges</message>
15+
<message id="dlt-cont-norm-fixed-full-roi">Fixed full ROI</message>
16+
<message id="dlt-cont-norm-tt">
17+
How the continuum normalization should be determined:
18+
<ul><li><b>Floating</b>: The polynomial continuum is fit for, at each given activity -
19+
the activity affects the continuum.</li>
20+
<li><b>Fixed at edges</b>: The channels on either side of the ROI are used to determine a
21+
linear continuum that is fixed, and not affected by the nuclides activity.</li>
22+
<li><b>Fixed full ROI</b>: The continuum is fit using the entire energy range of the ROI,
23+
assuming a Gaussian amplitude of zero; later, the Gaussian component of the peak will
24+
sit on top of this fixed continuum.<br/>
25+
This is effectively asserting that you know there is no signal peak present in the data.
26+
The continuum will not be affected by the nuclide activity value, and the Gaussian
27+
component of the peak will sit on top of this fixed continuum when evaluating the
28+
&chi;<sup>2</sup>.</li>
29+
</ul>
30+
</message>
31+
<message id="dlt-single-peak-currie-limit">Single peak Currie Limit</message>
32+
<message id="dlt-num-side-channels-label">Num Side Channels</message>
33+
<message id="dlt-further-details-link">further details...</message>
34+
<message id="dlt-err-computing-info">Error computing {1}, {2} keV Info</message>
35+
<message id="dlt-err-computing-currie-info">Error computing Currie limit information: {1}</message>
36+
37+
<!-- MdaPeakRow setSimplePoisonTxt strings -->
38+
<message id="dlt-nominal">Nominal:</message>
39+
<message id="dlt-range">Range:</message>
40+
<message id="dlt-detected-activity-tt">Detected activity, using just this Region Of Interests,
41+
and the observed excess of counts, as well as the
42+
statistical confidence interval.</message>
43+
<message id="dlt-limit-lt-zero">Limit: &lt; 0{1}</message>
44+
<message id="dlt-sig-fewer-counts">(sig. fewer counts in ROI than predicted)</message>
45+
<message id="dlt-fewer-counts-tt">Significantly fewer counts were observed in the
46+
Region Of Interest, than predicted by the neighboring channels.</message>
47+
<message id="dlt-upper-limit">Upper Limit:</message>
48+
<message id="dlt-critical-limit">Critical Limit:</message>
49+
<message id="dlt-limit-tt">The upper limit is the maximum activity present, for the given CL,
50+
given the observed number of counts in the ROI.
51+
The critical limit is the activity where the signal would reliably be detected.
52+
Both numbers calculated using the Currie method.</message>
53+
<message id="dlt-large-deficit">Large deficit of counts in ROI</message>
54+
55+
<!-- DetectionLimitTool main class strings -->
56+
<message id="dlt-nuclide-label">Nuclide:&nbsp;&nbsp;</message>
57+
<message id="dlt-age-label">Age:</message>
58+
<message id="dlt-tt-age-edit">
59+
<div>The age of the nuclide.</div>
60+
<br />
61+
<div>The age controls the amount of progeny in-growth; the activities of the parent
62+
(i.e., entered) nuclide are always reported for at the time of measurement.
63+
</div>
64+
</message>
65+
<message id="dlt-distance-label">Distance:</message>
66+
<message id="dlt-activity-label">Activity:</message>
67+
<message id="dlt-attenuate-for-air">Attenuate for air</message>
68+
<message id="dlt-shield-empty-text">shielding material</message>
69+
<message id="dlt-activity-limit">Activity Limit</message>
70+
<message id="dlt-distance-limit">Distance Limit</message>
71+
<message id="dlt-peaks-disp-act-label">Peaks disp. act.:</message>
72+
<message id="dlt-peaks-disp-dist-label">Peaks disp. dist.:</message>
73+
<message id="dlt-conf-level-label">Confidence Level:</message>
74+
<message id="dlt-conf-95">95%</message>
75+
<message id="dlt-conf-99">99%</message>
76+
<message id="dlt-conf-1sigma">1σ (68.2%)</message>
77+
<message id="dlt-conf-2sigma">2σ (95.4%)</message>
78+
<message id="dlt-conf-3sigma">3σ (99.7%)</message>
79+
<message id="dlt-conf-4sigma">4σ</message>
80+
<message id="dlt-conf-5sigma">5σ</message>
81+
<message id="dlt-gamma-lines-to-use">Gamma lines to use</message>
82+
<message id="dlt-min-rel-intensity-label">Min relative intensity:</message>
83+
<message id="dlt-fit-fwhm-btn">Fit FWHM...</message>
84+
<message id="dlt-log">Log</message>
85+
<message id="dlt-lin">Lin</message>
86+
<message id="dlt-below-lc">(below L<sub>c</sub>)</message>
87+
<message id="dlt-lt-zero-counts">&lt; 0 counts</message>
88+
<message id="dlt-lt-zero-activity">&lt; {1}</message>
89+
90+
<!-- Error messages -->
91+
<message id="dlt-err-no-data">No Data Loaded</message>
92+
<message id="dlt-err-no-drf">No DRF Loaded</message>
93+
<message id="dlt-err-no-fwhm">DRF does not have FWHM info - please fit for FWHM, or change DRF.</message>
94+
<message id="dlt-err-no-nuclide">No valid nuclide</message>
95+
<message id="dlt-err-activity-invalid">Activity not valid</message>
96+
<message id="dlt-err-distance-invalid">Distance not valid</message>
97+
<message id="dlt-err-min-rel-intensity">Min relative intensity to show is invalid.</message>
98+
<message id="dlt-err-shielding">Error Calculating effects of shielding</message>
99+
<message id="dlt-err-gamma-yields">Error gamma yields - all intensities are zero.</message>
100+
<message id="dlt-err-no-peaks-selected">No peaks are selected</message>
101+
<message id="dlt-err-calculating-chi2">Error calculating Chi2: {1}</message>
102+
<message id="dlt-err-calculating-limit">Error calculating limit: {1}</message>
103+
104+
<!-- createCurrieRoiMoreInfoWindow strings -->
105+
<message id="dlt-observed-activity">Observed activity</message>
106+
<message id="dlt-observed-counts">Observed counts</message>
107+
<message id="dlt-activity-range">Activity range</message>
108+
<message id="dlt-counts-range">Counts range</message>
109+
<message id="dlt-activity-le-zero">Activity &le; 0 {1}</message>
110+
<message id="dlt-counts-le-zero">Counts &le; 0</message>
111+
<message id="dlt-activity-upper-bound">Activity upper bound</message>
112+
<message id="dlt-counts-upper-bound">Counts upper bound</message>
113+
<message id="dlt-distance-not-supported">Distance not supported for additional info yet</message>
114+
<message id="dlt-lower-region-channels">Lower region channels</message>
115+
<message id="dlt-lower-region-counts">Lower region counts</message>
116+
<message id="dlt-upper-region-channels">Upper region channels</message>
117+
<message id="dlt-upper-region-counts">Upper region counts</message>
118+
<message id="dlt-using-roi-as-background">Using ROI area as background estimate</message>
119+
<message id="dlt-roi-area-channels">ROI area channels</message>
120+
<message id="dlt-peak-area-channels">Peak area channels</message>
121+
<message id="dlt-roi-region-counts">ROI region counts</message>
122+
<message id="dlt-peak-region-counts">Peak region counts</message>
123+
<message id="dlt-roi-region-null-est">ROI region null est.</message>
124+
<message id="dlt-peak-region-null-est">Peak region null est.</message>
125+
<message id="dlt-peak-critical-limit">Peak critical limit <span style="font-size: smaller;">(L<sub>c</sub>)</span></message>
126+
<message id="dlt-peak-detection-limit">Peak detection limit <span style="font-size: smaller;">(L<sub>d</sub>)</span></message>
127+
<message id="dlt-detector-intrinsic-eff">Detector Intrinsic Eff.</message>
128+
<message id="dlt-solid-angle-fraction">Solid angle fraction</message>
129+
<message id="dlt-shielding-transmission">Shielding transmission</message>
130+
<message id="dlt-air-transmission">Air transmission</message>
131+
<message id="dlt-nuclide-branching-ratio">Nuclide branching ratio</message>
132+
133+
<!-- Tooltip strings for createCurrieRoiMoreInfoWindow -->
134+
<message id="dlt-tt-greater-than-lc">Greater than the "critical level", L<sub>c</sub>,
135+
counts were observed in the peak region.</message>
136+
<message id="dlt-tt-activity-range">The signal activity range estimate, to the {1} confidence level.</message>
137+
<message id="dlt-tt-counts-range">The signal counts range estimate, to the {1} confidence level.</message>
138+
<message id="dlt-tt-fewer-than-predicted">Significantly fewer counts in peak region were observed,
139+
than predicted by the neighboring regions.</message>
140+
<message id="dlt-tt-upper-bound">The upper limit on how much activity could be present, to the
141+
{1} confidence level.</message>
142+
<message id="dlt-tt-lower-region-channels">The region above the peak in energy, that is being used
143+
to estimate the expected continuum counts in the peak region;
144+
corresponds to {1} to {2} keV</message>
145+
<message id="dlt-tt-lower-region-counts">The number of counts observed in the region below the peak region,
146+
that is being used to estimate expected peak-region expected counts</message>
147+
<message id="dlt-tt-upper-region-channels">The region above the peak in energy, that is being used
148+
to estimate the expected continuum counts in the peak region;
149+
corresponds to {1} to {2} keV</message>
150+
<message id="dlt-tt-upper-region-counts">The number of counts observed in the region above the peak region,
151+
that is being used to estimate expected peak-region expected counts</message>
152+
<message id="dlt-tt-peak-area-channels">The region the peak is being assumed to be within;
153+
corresponds to {1} to {2} keV</message>
154+
<message id="dlt-tt-peak-region-counts">The observed number of counts in the peak region</message>
155+
<message id="dlt-tt-peak-region-null-est">An estimate of the expected number of counts, in the peak region, if it
156+
is assumed that no signal is present.</message>
157+
<message id="dlt-tt-critical-limit">Corresponds to Currie&apos;s &quot;critical level&quot;, L<sub>c</sub>,
158+
that is the net signal level (instrument response) above which an
159+
observed signal may be reliably recognized as &quot;detected&quot;.</message>
160+
<message id="dlt-tt-detection-limit">Corresponds to Currie&apos;s &quot;detection limit&quot;, L<sub>d</sub>,
161+
that is the &quot;true&quot; net signal level which may be, <i>a priori</i>.
162+
expected to lead to detection.</message>
163+
<message id="dlt-tt-detector-intrinsic-eff">The efficiency for a gamma hitting the detector face,
164+
to be detected in the full-energy peak.</message>
165+
<message id="dlt-tt-solid-angle-fraction">The fraction of the solid angle, the detector face takes up, at the specified distance.</message>
166+
<message id="dlt-tt-shielding-transmission">The fraction of gammas, at this energy, that will make it through the shielding without interacting.</message>
167+
<message id="dlt-tt-air-transmission">The fraction of gammas, at this energy, that will make it through the air (assuming sea level) without interacting.</message>
168+
<message id="dlt-tt-branching-ratio">The number of gamma rays emitted at this energy, from the radioactive
169+
source before any shielding, but accounting for nuclide age,
170+
per decay of the parent nuclide.</message>
171+
<message id="dlt-tt-below-lc-counts">The observed signal counts is less than the &quot;critical level&quot;, L<sub>c</sub>,
172+
so a detection can not be declared, but this is the excess over expected counts.</message>
173+
<message id="dlt-tt-below-lc-activity">The observed signal activity is less than the &quot;critical level&quot;, L<sub>c</sub>,
174+
so a detection can not be declared, but this is the excess over expected counts.</message>
175+
176+
<!-- Chart strings -->
177+
<message id="dlt-chart-x-axis-distance">Distance ({1})</message>
178+
<message id="dlt-chart-x-axis-activity">Activity ({1})</message>
179+
<message id="dlt-chart-title-estimated-activity">Estimated activity of {1}.</message>
180+
<message id="dlt-chart-title-excess-counts">Excess counts of {1}.</message>
181+
<message id="dlt-chart-title-activity-lt-zero">Activity &lt; 0 {1}</message>
182+
<message id="dlt-chart-title-data-peak">Data + peak for {1}</message>
183+
<message id="dlt-chart-title-peak-upper-bound">Peak for upper bound of {1} @{2} CL</message>
184+
<message id="dlt-currie-info-dialog-title">{1}{2} keV Info</message>
185+
186+
<!-- Additional error/status messages -->
187+
<message id="dlt-no-foreground-file">No Foreground File</message>
188+
<message id="dlt-no-foreground-spectrum">No foreground spectrum</message>
189+
<message id="dlt-no-drf-loaded">No DRF loaded</message>
190+
<message id="dlt-drf-not-valid">DRF not valid or doesnt have FWHM info.</message>
191+
<message id="dlt-err-max-distance-too-large">Maximum distance to large (&gt;100km)</message>
192+
<message id="dlt-err-upper-limit-negative">Upper limit of counts is less than zero, but counts observed is greater than L_d.</message>
193+
<message id="dlt-err-activity-zero-negative">Activity cant be zero or negative</message>
194+
<message id="dlt-err-distance-zero-negative">Distance cant be zero or negative</message>
195+
</messages>

0 commit comments

Comments
 (0)