27 Material const *extrapolationMaterial,
double extrapolationMaxX) {
28 std::filesystem::path suppliedFileName(inputFileName);
29 std::filesystem::path inputFilePath;
30 std::string fileExt = suppliedFileName.extension().string();
32 if (!fileExt.empty() && fileExt[0] ==
'.') {
33 fileExt = fileExt.substr(1);
35 std::transform(fileExt.begin(), fileExt.end(), fileExt.begin(), toupper);
37 if (fileExt ==
"DAT") {
38 if (suppliedFileName.is_relative()) {
39 bool useSearchDirectories =
true;
41 if (!searchPath.empty()) {
42 inputFilePath = std::filesystem::path(searchPath).parent_path() / inputFileName;
43 if (std::filesystem::exists(inputFilePath)) {
44 useSearchDirectories =
false;
47 if (useSearchDirectories) {
49 std::string foundFile = Mantid::Kernel::ConfigService::Instance().getFullPath(inputFileName,
false, 0);
50 if (!foundFile.empty()) {
51 inputFilePath = std::filesystem::path(foundFile);
53 inputFilePath = std::move(suppliedFileName);
57 inputFilePath = suppliedFileName;
59 std::ifstream input(inputFilePath, std::ios_base::in);
62 double minX = std::numeric_limits<double>::max();
63 double maxX = std::numeric_limits<double>::lowest();
64 while (std::getline(input, line)) {
66 if (std::stringstream(line) >>
x >> alpha >>
error) {
67 minX = std::min(
x, minX);
68 maxX = std::max(
x, maxX);
77 if ((minX > 0) && (minX < std::numeric_limits<double>::max())) {
80 if ((maxX < extrapolationMaxX) && (maxX > std::numeric_limits<double>::lowest())) {