Tomato
TomatoOnePixel.h
Go to the documentation of this file.
1 
7 #ifndef TOMATO_TOMATOONEPIXEL_H
8 #define TOMATO_TOMATOONEPIXEL_H
9 
10 #include "TomatoOptions.h"
11 #include "tomatolib_export.h"
12 
13 namespace Ox {
14  template<typename MeasureType>
15  std::map<std::string, MeasureType> calculateOnePixel(TomatoOptions<MeasureType> opts) {
16 
17  // alloc and init
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);
23 
24  if (opts.signal_magnitude.size() > 0) {
25  calculator->setNSamples((int)opts.signal_magnitude.size());
26  calculator->setSigMag(&(opts.signal_magnitude)[0]);
27  } else {
28  throw std::runtime_error("\nNo magnitude signal, I cannot calculate anything");
29  }
30 
31  if (opts.signal_phase.size() > 0) {
32  calculator->setSigMag(&(opts.signal_phase)[0]);
33  }
34 
35  if (opts.noise.size() > 0) {
36  calculator->setNoise(&(opts.noise)[0]);
37  }
38 
39  if (opts.inversion_times.size() > 0) {
40  calculator->setInvTimes(&(opts.inversion_times)[0]);
41  }
42 
43  if (opts.echo_times.size() > 0) {
44  calculator->setEchoTimes(&(opts.echo_times)[0]);
45  }
46 
47  // configure calculator
48  calculator->setModel(model);
49  calculator->setFitter(fitter);
50  calculator->setSignCalculator(signCalculator);
51  calculator->setStartPointCalculator(startPointCalculator);
52 
53  calculator->calculate();
54 
55  std::map<std::string, MeasureType> results = calculator->getResults();
56 
57 // std::cout << "Results: \n";
58 // for (typename std::map<std::string, MeasureType>::const_iterator it = results.begin(); it != results.end(); ++it) {
59 // std::cout << it->first << " " << it->second << "\n";
60 // }
61 // std::cout << std::endl;
62 
63  delete model;
64  delete fitter;
65  delete signCalculator;
66  delete startPointCalculator;
67  delete calculator;
68 
69  return results;
70  }
71 } // namespace Ox
72 
73 #endif //TOMATO_TOMATOONEPIXEL_H
Definition: OxCalculator.h:19