Skip to content

Commit 090750d

Browse files
authored
Merge pull request #204 from aglowacki/master
Bug fixes and clean up warnings
2 parents 9d58263 + 6344013 commit 090750d

20 files changed

+150
-1719
lines changed

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ IF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
142142
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} -D__APPLE__")
143143
ENDIF()
144144
# Enable C++11 mode on C++ / Clang
145-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z -D__Unix__ -fPIC -g")
145+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -D__Unix__ -fPIC -g")
146146
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__Unix__ -fPIC")
147147
IF(BUILD_FOR_PHI AND CMAKE_CXX_COMPILER_ID MATCHES "Intel" )
148148
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -xMIC-AVX512")
@@ -152,7 +152,7 @@ IF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU"
152152
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native")
153153
ENDIF()
154154
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra")
155-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Waddress -Warray-bounds=1 -Wbool-compare -Wbool-operation -Wc++11-compat -Wc++14-compat -Wcatch-value -Wchar-subscripts -Wcomment -Wenum-compare -Wformat -Winit-self -Wlogical-not-parentheses -Wmain -Wmaybe-uninitialized -Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation -Wmissing-attributes -Wmissing-braces -Wmultistatement-macros -Wnarrowing -Wnonnull -Wnonnull-compare -Wopenmp-simd -Wparentheses -Wreorder -Wrestrict -Wreturn-type -Wsequence-point -Wsign-compare -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtautological-compare -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wvolatile-register-var")
155+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Waddress -Warray-bounds=1 -Wbool-compare -Wbool-operation -Wc++17-compat -Wcatch-value -Wchar-subscripts -Wcomment -Wenum-compare -Wformat -Winit-self -Wlogical-not-parentheses -Wmain -Wmaybe-uninitialized -Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation -Wmissing-attributes -Wmissing-braces -Wmultistatement-macros -Wnarrowing -Wnonnull -Wnonnull-compare -Wopenmp-simd -Wparentheses -Wreorder -Wrestrict -Wreturn-type -Wsequence-point -Wsign-compare -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtautological-compare -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wvolatile-register-var")
156156
ELSEIF(MSVC)
157157
IF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
158158
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")

src/core/process_whole.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ POSSIBILITY OF SUCH DAMAGE.
4747

4848
#include "core/process_whole.h"
4949
#include <algorithm>
50+
#include <fitting/models/gaussian_model.h>
5051

5152
using namespace std::placeholders; //for _1, _2,
5253

@@ -396,12 +397,7 @@ void load_and_fit_quatification_datasets(data_struct::Analysis_Job<double>* anal
396397
}
397398
}
398399
fitting::routines::Matrix_Optimized_Fit_Routine<double>* f_routine = (fitting::routines::Matrix_Optimized_Fit_Routine<double>*)fit_routine;
399-
double energy_offset = fit_params.value(STR_ENERGY_OFFSET);
400-
double energy_slope = fit_params.value(STR_ENERGY_SLOPE);
401-
double energy_quad = fit_params.value(STR_ENERGY_QUADRATIC);
402-
403-
data_struct::ArrayTr<double> energy = data_struct::ArrayTr<double>::LinSpaced(energy_range.count(), energy_range.min, energy_range.max);
404-
data_struct::ArrayTr<double> ev = energy_offset + (energy * energy_slope) + (Eigen::pow(energy, (double)2.0) * energy_quad);
400+
const ArrayTr<double> ev = data_struct::generate_energy_array(energy_range, &fit_params);
405401
data_struct::ArrayTr<double> sub_spectra = quantification_standard->integrated_spectra.segment(energy_range.min, energy_range.count());
406402

407403
std::string full_path = analysis_job->output_dir + DIR_END_CHAR + "output" + DIR_END_CHAR + "calib_" + fit_routine->get_name() + "_" + standard_itr.standard_filename;

src/core/process_whole.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ DLL_EXPORT void proc_spectra(data_struct::Spectra_Volume<T_real>* spectra_volume
302302
{
303303
dataset_fullpath.replace(sidx, 7, "output"); // 7 = sizeof("img.dat")
304304
std::string str_path = dataset_fullpath + "_" + fit_routine->get_name() + ".png";
305-
data_struct::ArrayTr<T_real> ev = data_struct::gen_energy_vector(matrix_fit->energy_range(), override_params->fit_params);
305+
data_struct::ArrayTr<T_real> ev = data_struct::generate_energy_array(matrix_fit->energy_range(), &(override_params->fit_params));
306306
Spectra<T_real> int_spec = spectra_volume->integrate();
307307
int_spec = int_spec.sub_spectra(matrix_fit->energy_range().min, matrix_fit->energy_range().count());
308308
#ifdef _BUILD_WITH_QT

src/data_struct/fit_parameters.h

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,6 @@ DLL_EXPORT Range get_energy_range(const T_real min_energy, const T_real max_ener
276276
{
277277

278278
struct Range energy_range;
279-
280-
//data_struct::ArrayTr<double> ev = energy_offset + (energy * energy_slope) + (Eigen::pow(energy, (double)2.0) * energy_quad);
281279
energy_range.min = static_cast<size_t>(round((min_energy - energy_offset) / energy_slope));
282280
energy_range.max = static_cast<size_t>(round((max_energy - energy_offset) / energy_slope));
283281
//if (xmax > used_chan - 1) or (xmax <= np.amin([xmin, used_chan / 20.])):
@@ -305,19 +303,59 @@ DLL_EXPORT Range get_energy_range(const size_t spectra_size, const Fit_Parameter
305303
params->value(STR_ENERGY_SLOPE));
306304
}
307305

308-
//-----------------------------------------------------------------------------
306+
// ----------------------------------------------------------------------------
309307

310308
template<typename T_real>
311-
DLL_EXPORT const ArrayTr<T_real> gen_energy_vector(const Range& energy_range, const Fit_Parameters<T_real>& params)
309+
ArrayTr<T_real> generate_energy_array(const Range energy_range, const T_real energy_offset, const T_real energy_slope, const T_real energy_quad)
312310
{
313-
const T_real energy_offset = params.value(STR_ENERGY_OFFSET);
314-
const T_real energy_slope = params.value(STR_ENERGY_SLOPE);
315-
const T_real energy_quad = params.value(STR_ENERGY_QUADRATIC);
316-
ArrayTr<T_real> energy = ArrayTr<T_real>::LinSpaced(energy_range.count(), energy_range.min, energy_range.max);
317-
ArrayTr<T_real> ev = energy_offset + (energy * energy_slope) + (Eigen::pow(energy, (T_real)2.0) * energy_quad);
311+
const ArrayTr<T_real>energy = ArrayTr<T_real>::LinSpaced(energy_range.count(), energy_range.min, energy_range.max);
312+
const ArrayTr<T_real>ev = energy_offset + (energy * energy_slope) + (Eigen::pow(energy, (T_real)2.0) * energy_quad);
318313
return ev;
319314
}
320315

316+
317+
// ----------------------------------------------------------------------------
318+
319+
template<typename T_real>
320+
ArrayTr<T_real> generate_energy_array(const Range energy_range, const Fit_Parameters<T_real> * const fit_params)
321+
{
322+
T_real energy_offset = 0.0;
323+
T_real energy_slope = 0.0;
324+
T_real energy_quad = 0.0;
325+
if(fit_params != nullptr)
326+
{
327+
if (fit_params->contains(STR_ENERGY_OFFSET))
328+
{
329+
energy_offset = fit_params->value(STR_ENERGY_OFFSET);
330+
}
331+
else
332+
{
333+
logW<< "Missing fit parameter "<<STR_ENERGY_OFFSET<<"\n";
334+
}
335+
if (fit_params->contains(STR_ENERGY_SLOPE))
336+
{
337+
energy_slope = fit_params->value(STR_ENERGY_SLOPE);
338+
}
339+
else
340+
{
341+
logW<< "Missing fit parameter "<<STR_ENERGY_SLOPE<<"\n";
342+
}
343+
if (fit_params->contains(STR_ENERGY_QUADRATIC))
344+
{
345+
energy_quad = fit_params->value(STR_ENERGY_QUADRATIC);
346+
}
347+
else
348+
{
349+
logW<< "Missing fit parameter "<<STR_ENERGY_QUADRATIC<<"\n";
350+
}
351+
}
352+
else
353+
{
354+
logW<< "fit parameters is "<<STR_ENERGY_QUADRATIC<<"\n";
355+
}
356+
return generate_energy_array(energy_range, energy_offset, energy_slope, energy_quad);
357+
}
358+
321359
//-----------------------------------------------------------------------------
322360

323361
} //namespace data_struct

0 commit comments

Comments
 (0)