OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
RadialPeak.h
Go to the documentation of this file.
1#ifndef __RADIALPEAK_H__
2#define __RADIALPEAK_H__
3
4#include <string>
5#include <tuple>
6#include <variant>
7
8#include "Util/Types.h"
9#include "Util/PeakReader.h"
11
16struct RadialPeak {
17
18 static const std::string name;
19
21 : argument_types("peak_filename", 0)
22 {}
23
25 if (args.size() != 2) {
26 throw OptPilotException("RadialPeak::operator()",
27 "radialPeak expects 2 arguments, " + std::to_string(args.size()) + " given");
28 }
29
30 peak_filename_ = std::get<std::string>(args[0]);
31 turn_number_ = static_cast<int>(std::get<double>(args[1]));
32
33 bool is_valid = true;
34 double sim_radius = 0.0;
35
36 try {
37 PeakReader sim_peaks(peak_filename_);
38 sim_peaks.parseFile();
39 sim_peaks.getPeak(turn_number_, sim_radius);
40 } catch (const OptPilotException& e) {
41 std::cerr << "RadialPeak exception: " << e.what() << std::endl;
42 is_valid = false;
43 }
44
45 return std::make_tuple(sim_radius, is_valid);
46 }
47
48private:
49
50 std::string peak_filename_;
52
53 // define a mapping to arguments in argument vector
54 std::tuple<std::string, int> argument_types;
55};
56
57#endif
std::tuple< double, bool > Result_t
Definition Expression.h:65
std::vector< argument_t > arguments_t
Definition function.hpp:14
std::string peak_filename_
Definition RadialPeak.h:50
Expressions::Result_t operator()(client::function::arguments_t args)
Definition RadialPeak.h:24
static const std::string name
Definition RadialPeak.h:18
std::tuple< std::string, int > argument_types
Definition RadialPeak.h:54
int turn_number_
Definition RadialPeak.h:51
void parseFile()
void getPeak(int nPeak, double &radius)