7 #ifndef TOMATO_TOMATOONEPIXEL_H 8 #define TOMATO_TOMATOONEPIXEL_H 11 #include "tomatolib_export.h" 14 template<
typename MeasureType>
15 std::map<std::string, MeasureType> calculateOnePixel(TomatoOptions<MeasureType> opts) {
18 Calculator<MeasureType> *calculator = FactoryOfCalculators<MeasureType>::newByFactory(&opts);
19 Model<MeasureType> *model = FactoryOfModels<MeasureType>::newByFactory(&opts);
20 Fitter<MeasureType> *fitter = FactoryOfFitters<MeasureType>::newByFactory(&opts);
21 SignCalculator<MeasureType> *signCalculator = FactoryOfSignCalculators<MeasureType>::newByFactory(&opts);
22 StartPointCalculator<MeasureType> *startPointCalculator = FactoryOfStartPointCalculators<MeasureType>::newByFactory(&opts);
24 if (opts.signal_magnitude.size() > 0) {
25 calculator->setNSamples((
int)opts.signal_magnitude.size());
26 calculator->setSigMag(&(opts.signal_magnitude)[0]);
28 throw std::runtime_error(
"\nNo magnitude signal, I cannot calculate anything");
31 if (opts.signal_phase.size() > 0) {
32 calculator->setSigMag(&(opts.signal_phase)[0]);
35 if (opts.noise.size() > 0) {
36 calculator->setNoise(&(opts.noise)[0]);
39 if (opts.inversion_times.size() > 0) {
40 calculator->setInvTimes(&(opts.inversion_times)[0]);
43 if (opts.echo_times.size() > 0) {
44 calculator->setEchoTimes(&(opts.echo_times)[0]);
48 calculator->setModel(model);
49 calculator->setFitter(fitter);
50 calculator->setSignCalculator(signCalculator);
51 calculator->setStartPointCalculator(startPointCalculator);
53 calculator->calculate();
55 std::map<std::string, MeasureType> results = calculator->getResults();
65 delete signCalculator;
66 delete startPointCalculator;
73 #endif //TOMATO_TOMATOONEPIXEL_H
Definition: OxCalculator.h:19