Commit afa22fae5d532a6d2590e6fe710533caba97eacb

Authored by Hacene SI HADJ MOHAND
1 parent 50365881

presque

src/ExternLib/Maglib/AMDAPlugin.cc 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +/*
  2 + * To change this license header, choose License Headers in Project Properties.
  3 + * To change this template file, choose Tools | Templates
  4 + * and open the template in the editor.
  5 + */
  6 +#include "ServicesServer.hh"
  7 +#include "PluginManager.hh"
  8 +
  9 +#include "MLTProcess.hh"
  10 +
  11 +using namespace AMDA::Parameters;
  12 +
  13 +/**
  14 + Retrieve the Plugin version we're going to expect
  15 +*/
  16 +extern "C" const char* getPluginVersion()
  17 +{
  18 + return "(Version)";
  19 +}
  20 +
  21 +/**
  22 + Tells us to register our functionality to an engine kernel
  23 +*/
  24 +extern "C" void registerPlugin(AMDA::Plugins::PluginManager & pm)
  25 +{
  26 + ProcessFactory factMLTProcess = boost::factory<MLTProcess*>();
  27 + ServicesServer::getInstance()->addProcessFactory("maglib_mlt", factMLTProcess);
  28 + ServicesServer::getInstance()->linkProcessWithPlugin("maglib_mlt", pm.getCurrentPluginPath());
  29 +}
  30 +
... ...
src/ExternLib/Maglib/CMakeLists.txt
... ... @@ -29,6 +29,7 @@ ADD_LIBRARY( maglib SHARED ${source_files} )
29 29 target_link_libraries(
30 30 maglib
31 31 ${LOG4CXX_LIBRARIES}
  32 + $(MAGLIBLIBRARIES)
32 33 Parameters
33 34 InternLib
34 35 TimeTableCatalog
... ...
src/ExternLib/Maglib/MLTProcess.cc 0 → 100644
... ... @@ -0,0 +1,56 @@
  1 +/*
  2 + * To change this license header, choose License Headers in Project Properties.
  3 + * To change this template file, choose Tools | Templates
  4 + * and open the template in the editor.
  5 + */
  6 +
  7 +/*
  8 + * File: MLTProcess.cc
  9 + * Author: hacene
  10 + *
  11 + * Created on July 23, 2020, 4:14 PM
  12 + */
  13 +#include <stdlib.h>
  14 +#include <string>
  15 +
  16 +#include "Operation.hh"
  17 +#include "ParameterManager.hh"
  18 +#include "ParameterCreatorFromExpression.hh"
  19 +#include "MLTProcess.hh"
  20 +#include "MaglibCreator.hh"
  21 +
  22 +namespace AMDA {
  23 + namespace Parameters {
  24 +
  25 + MLTProcess::MLTProcess(Parameter& parameter) : SingleParamProcess_CRTP(parameter) {
  26 + }
  27 +
  28 + MLTProcess::MLTProcess(const MLTProcess& pProcess, Parameter &parameter) : SingleParamProcess_CRTP(pProcess, parameter) {
  29 + }
  30 +
  31 + TimeStamp MLTProcess::init() {
  32 +
  33 + TimeStamp timeStamp = _parameterInput->init(this, _timeIntervalList);
  34 + Parameter::InfoList lInfoList = _parameterInput->getInfoList();
  35 + _parameter.getInfoList().insert(lInfoList.begin(), lInfoList.end());
  36 + _paramInput = _parameterInput->getParamData(this).get();
  37 +
  38 + std::string isatex_str = "0";
  39 + std::string magout_str = "2";
  40 +
  41 + if (_attributList.size() == 2) {
  42 + isatex_str = _attributList[0];
  43 + magout_str = _attributList[1];
  44 + }
  45 + MaglibCreator lCreator(*this, *_paramInput, "mlt", isatex_str, isatex_str);
  46 + _operation = lCreator.getOperation();
  47 + _paramData = ParamDataSPtr(_operation->getParamOutput());
  48 + _paramData->setMinSampling(_paramInput->getMinSampling());
  49 + return timeStamp;
  50 + }
  51 +
  52 + MLTProcess::~MLTProcess() {
  53 + }
  54 +
  55 + }
  56 +}
0 57 \ No newline at end of file
... ...
src/ExternLib/Maglib/MLTProcess.hh 0 → 100644
... ... @@ -0,0 +1,38 @@
  1 +/*
  2 + * To change this license header, choose License Headers in Project Properties.
  3 + * To change this template file, choose Tools | Templates
  4 + * and open the template in the editor.
  5 + */
  6 +
  7 +/*
  8 + * File: MLTProcess.hh
  9 + * Author: hacene
  10 + *
  11 + * Created on July 23, 2020, 4:14 PM
  12 + */
  13 +
  14 +#ifndef MLTPROCESS_HH
  15 +#define MLTPROCESS_HH
  16 +
  17 +#include "SingleParamProcess.hh"
  18 +
  19 +namespace AMDA {
  20 + namespace Parameters {
  21 +
  22 + class MLTProcess : public AMDA::Parameters::SingleParamProcess_CRTP<MLTProcess> {
  23 + public:
  24 + MLTProcess(Parameter &parameter);
  25 + MLTProcess(const MLTProcess& pProcess, Parameter& pParameter);
  26 + virtual ~MLTProcess();
  27 +
  28 + /**
  29 + * @overload DataWriter::init()
  30 + */
  31 + TimeStamp init();
  32 +
  33 + };
  34 +
  35 + }
  36 +}
  37 +#endif /* MLTPROCESS_HH */
  38 +
... ...
src/ExternLib/Maglib/MaglibCreator.hh
... ... @@ -14,6 +14,189 @@
14 14 #ifndef MAGLIBCREATOR_HH
15 15 #define MAGLIBCREATOR_HH
16 16  
  17 +#include "ParamData.hh"
  18 +#include "VisitorOfParamData.hh"
  19 +#include "Posmag.hh"
  20 +
  21 +namespace AMDA {
  22 +namespace Parameters {
  23 +
  24 + class MaglibCreator : public VisitorOfParamData {
  25 + public:
  26 +
  27 + MaglibCreator(Process& pProcess, ParamData& paramInput, std::string output, std::string isatex, std::string magout) :
  28 + _process(pProcess), _paramData(paramInput), _operation(NULL), _output(output) {
  29 + _paramData.accept(*this);
  30 +
  31 + if (std::stoi(isatex) == 0 || std::stoi(isatex) == 1) {
  32 + _isatex = std::stoi(isatex);
  33 + } else {
  34 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg(" Not handled in the Mablib"));
  35 + }
  36 + if (std::stoi(magout) >= 0 && std::stoi(magout) <= 3) {
  37 + _magout = std::stoi(magout);
  38 + } else {
  39 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg(" Not handled in the Mablib"));
  40 + }
  41 + }
  42 +
  43 + /**
  44 + * @overload VisitorOfParamData::visit(ParamDataScalaireShort *)
  45 + */
  46 + void visit(ParamDataScalaireShort *) {
  47 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireShort data not supported"));
  48 + }
  49 +
  50 + /**
  51 + * @overload VisitorOfParamData::visit(ParamDataScalaireFloat *)
  52 + */
  53 + void visit(ParamDataScalaireFloat *) {
  54 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireFloat data not supported"));
  55 + }
  56 +
  57 + /**
  58 + * @overload VisitorOfParamData::visit(ParamDataScalaireDouble *)
  59 + */
  60 + void visit(ParamDataScalaireDouble *) {
  61 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireDouble data not supported"));
  62 + }
  63 +
  64 + /**
  65 + * @overload VisitorOfParamData::visit(ParamDataScalaireLongDouble *)
  66 + */
  67 + void visit(ParamDataScalaireLongDouble *) {
  68 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireLongDouble data not supported"));
  69 + }
  70 +
  71 + /**
  72 + * @overload VisitorOfParamData::visit(ParamDataScalaireInt *)
  73 + */
  74 + void visit(ParamDataScalaireInt *) {
  75 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataScalaireInt data not supported"));
  76 + }
  77 +
  78 + /**
  79 + * @overload VisitorOfParamData::visit(ParamDataLogicalData *)
  80 + */
  81 + void visit(ParamDataLogicalData *) {
  82 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataLogicalData data not supported"));
  83 + }
  84 +
  85 + /**
  86 + * @overload VisitorOfParamData::visit(ParamDataTab1DShort *)
  87 + */
  88 + void visit(ParamDataTab1DShort *) {
  89 + create<short>();
  90 + }
  91 +
  92 + /**
  93 + * @overload VisitorOfParamData::visit(ParamDataTab1DFloat *)
  94 + */
  95 + void visit(ParamDataTab1DFloat *) {
  96 + create<float>();
  97 + }
  98 +
  99 + /**
  100 + * @overload VisitorOfParamData::visit(ParamDataTab1DDouble *)
  101 + */
  102 + void visit(ParamDataTab1DDouble *) {
  103 + create<double>();
  104 + }
  105 +
  106 + /**
  107 + * @overload VisitorOfParamData::visit(ParamDataTab1DLongDouble *)
  108 + */
  109 + void visit(ParamDataTab1DLongDouble *) {
  110 + create<long double>();
  111 + }
  112 +
  113 + /**
  114 + * @overload VisitorOfParamData::visit(ParamDataTab1DInt *)
  115 + */
  116 + void visit(ParamDataTab1DInt *) {
  117 + create<int>();
  118 + }
  119 +
  120 + /**
  121 + * @overload VisitorOfParamData::visit(ParamDataTab1DLogicalData *)
  122 + */
  123 + void visit(ParamDataTab1DLogicalData *) {
  124 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab1DLogicalData data not supported"));
  125 + }
  126 +
  127 + /**
  128 + * @overload VisitorOfParamData::visit(ParamDataTab2DShort *)
  129 + */
  130 + void visit(ParamDataTab2DShort *) {
  131 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DShort data not supported"));
  132 + }
  133 +
  134 + /**
  135 + * @overload VisitorOfParamData::visit(ParamDataTab2DFloat *)
  136 + */
  137 + void visit(ParamDataTab2DFloat *) {
  138 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DFloat data not supported"));
  139 + }
  140 +
  141 + /**
  142 + * @overload VisitorOfParamData::visit(ParamDataTab2DDouble *)
  143 + */
  144 + void visit(ParamDataTab2DDouble *) {
  145 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DDouble data not supported"));
  146 + }
  147 +
  148 + /**
  149 + * @overload VisitorOfParamData::visit(ParamDataTab2DLongDouble *)
  150 + */
  151 + void visit(ParamDataTab2DLongDouble *) {
  152 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DLongDouble data not supported"));
  153 + }
  154 +
  155 + /**
  156 + * @overload VisitorOfParamData::visit(ParamDataTab2DInt *)
  157 + */
  158 + void visit(ParamDataTab2DInt *) {
  159 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DInt data not supported"));
  160 + }
  161 +
  162 + /**
  163 + * @overload VisitorOfParamData::visit(ParamDataTab2DLogicalData *)
  164 + */
  165 + void visit(ParamDataTab2DLogicalData *) {
  166 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg("ParamDataTab2DLogicalData data not supported"));
  167 + }
  168 +
  169 + /**
  170 + * @brief get the TimeShifted parameterized operation.
  171 + */
  172 + Operation * getOperation() const {
  173 + return _operation;
  174 + }
  175 +
  176 + template <typename DataType>
  177 + void create() {
  178 +
  179 + if (_output == "mlt")
  180 + _operation = new MLT<DataType>(_process, dynamic_cast<ParamDataSpec<std::vector<DataType> >&> (_paramData), _isatex, _magout);
  181 + else if (_output == "invlat")
  182 + _operation = new InvLat<DataType>(_process, dynamic_cast<ParamDataSpec<std::vector<DataType> >&> (_paramData), _isatex, _magout);
  183 + else if (_output == "lparam")
  184 + _operation = new Lparam<DataType>(_process, dynamic_cast<ParamDataSpec<std::vector<DataType> >&> (_paramData), _isatex, _magout);
  185 + else
  186 + BOOST_THROW_EXCEPTION(AMDA::AMDA_exception() << AMDA::errno_code(AMDA_ERROR_UNKNOWN) << AMDA::ex_msg(" output type not supported"));
  187 +
  188 + }
  189 +
  190 + private:
  191 + Process &_process;
  192 + ParamData &_paramData;
  193 + Operation *_operation;
  194 + std::string _output;
  195 + int _isatex;
  196 + int _magout;
  197 + };
  198 + }
  199 +}
17 200  
18 201  
19 202 #endif /* MAGLIBCREATOR_HH */
... ...
src/ExternLib/Maglib/MaglibWarpper.hh
... ... @@ -23,10 +23,9 @@ namespace AMDA {
23 23 class maglibWarpper {
24 24 public:
25 25  
26   - static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec, float* rrmag, float* thetr, float* phir,
27   - int* isatex, int* magout, float* xgsm, float* ygsm, float* zgsm, float* xgse, float* ygse, float* zgse, float* tgl,
28   - float* flg, float* xlambr, float* tglc, float* hsl, float* clatgmr, float* clongmr, float * iposmg[15], int* ifai)
29   - {
  26 + static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec, float& rrmag, float& thetr, float& phir,
  27 + int& isatex, int& magout, float& xgsm, float& ygsm, float& zgsm, float& xgse, float& ygse, float& zgse, float& tgl,
  28 + float& flg, float& xlambr, float& tglc, float& hsl, float& clatgmr, float& clongmr, std::vector<int>& iposmg, int& ifai) {
30 29 /**
31 30 *
32 31 * @param iyear enre 2000 et 2015
... ... @@ -44,17 +43,21 @@ i * isatex : 1 = satellite excentrique (apogee &gt;
44 43 // declaration
45 44  
46 45 int ifail;
  46 + int iposmg_o [15];
47 47  
48 48 float rig[3][3], rgi[3][3], rgsm[3][3], rsmg[3][3], rggsm[3][3], rgsmg[3][3], rgse[3][3], rseg[3][3];
49 49 float rgdip[3][3], rdipg[3][3], rigsm[3][3], rgsmi[3][3];
50 50 float alfag, alfas, deltas, tilt, tetdip, phidip, year;
51   -
  51 +
52 52 valfix_(ifail);
53 53 inigeom_(iyear, imonth, iday, ihour, imin, isec, year, alfag, tetdip, phidip, alfas, deltas, rig, rgi, rgdip, rdipg, rgsm,
54 54 rsmg, tilt, rggsm, rgsmg, rgse, rseg, rigsm, rgsmi, ifail);
55 55  
56 56 posmag_(magout, isatex, year, rrmag, thetr, phir, alfag, alfas, deltas, tilt, rgsm, rggsm, rgsmg, rgdip, rgse, tetdip,
57   - phidip, xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl, flg, xlambr, tglc, hsl, clatgmr, clongmr, iposmg, ifail);
  57 + phidip, xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl, flg, xlambr, tglc, hsl, clatgmr, clongmr, iposmg_o, ifail);
  58 +
  59 + for (int i = 0; i < iposmg_o.size(); i++)
  60 + iposmg[i] = iposmg_o[i];
58 61  
59 62 }
60 63 };
... ...
src/ExternLib/Maglib/Posmag.hh
... ... @@ -19,12 +19,13 @@
19 19 #include "ParamData.hh"
20 20 #include "DataTypeMath.hh"
21 21 #include "Operation.hh"
22   -#include "SpiceKernelMgr.hh"
23 22 #include <vector>
24 23  
25 24 namespace AMDA {
26 25 namespace Parameters {
27 26  
  27 + using namespace std;
  28 +
28 29 template<typename DataType, class TOutputParamData>
29 30 class Posmag : public Operation {
30 31 public:
... ... @@ -68,7 +69,7 @@ namespace AMDA {
68 69  
69 70 vector<DataType> in = _paramInput.getDataList()[_index];
70 71 double crtTime = _paramInput.getTime(_index);
71   - ime_t timestamp = crtTime;
  72 + time_t timestamp = crtTime;
72 73 struct tm *tmp;
73 74 tmp = gmtime(&timestamp);
74 75 float i_rrmag = in[0];
... ... @@ -101,25 +102,32 @@ namespace AMDA {
101 102 */
102 103  
103 104 float xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl,
104   - flg, xlambr, tglc, hsl, fclatgmr, clongmr,
105   - tgl, flg, xlambr, tglc, hsl, clatgmr, clongmr, xlamb, clatgm, clongm;
  105 + flg, xlamb, tglc, hsl, clatgmr, clongmr;
  106 +
106 107 int ifail;
107   - int iposmg[15];
  108 + std::vector<int> iposmg;
  109 + iposmg.resize(15);
108 110  
109 111 /**
110   - static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec, float* rrmag, float* thetr, float* phir,
111   - int* isatex, int* magout, float* xgsm, float* ygsm, float* zgsm, float* xgse, float* ygse, float* zgse, float* tgl,
112   - float* flg, float* xlambr, float* tglc, float* hsl, float* clatgmr, float* clongmr, float * iposmg[15], int* ifai)
  112 + static void getPosmag(int iyear, int imonth, int iday, int ihour, int imin, int isec,
  113 + * float* rrmag, float* thetr, float* phir,
  114 + int* isatex, int* magout, float*
  115 + * xgsm, float* ygsm, float* zgsm,
  116 + * float* xgse, float* ygse, float* zgse,
  117 + * float* tgl, float* flg, float* xlambr, float* tglc, float* hsl, float* clatgmr, float* clongmr, float * iposmg[15], int* ifai)
113 118 */
114 119  
115   - maglib::maglibWarpper::getPosmag(1900 + tmp->tm_year, 1 + tmp->tm_yday, tmp->tm_hour,
116   - tmp->tm_min, tmp->tm_sec, i_rrmag, i_thetr, i_phir, _isatex, _magout, xgsm, ygsm, zgsm, xgse, ygse, zgse, tgl,
117   - flg, xlambr, tglc, hsl, fclatgmr, clongmr, iposmg, ifail);
118   -
  120 + maglib::maglibWarpper::getPosmag(1900 + tmp->tm_year, 1 + tmp->tm_mon, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec,
  121 + i_rrmag, i_thetr, i_phir,
  122 + _isatex, _magout,
  123 + xgsm, ygsm, zgsm,
  124 + xgse, ygse, zgse,
  125 + tgl, flg, xlamb, tglc, hsl, clatgmr, clongmr, iposmg, ifail);
  126 +
119 127 DataType tgl_res = (DataType) tgl;
120 128 DataType xlamb_res = (DataType) xlamb;
121 129 DataType flg_res = (DataType) flg;
122   - _paramOutput->pushTime(crtTime);
  130 + _paramOutput->pushTime(crtTime);
123 131 pushData(tgl_res, xlamb_res, flg_res);
124 132 }
125 133  
... ... @@ -128,63 +136,66 @@ namespace AMDA {
128 136 virtual void pushData(DataType tgl, DataType xlamb, DataType flg) = 0;
129 137  
130 138 protected:
  139 + ParamDataSpec<std::vector<DataType> >& _paramInput;
  140 + ParamDataSpec<DataType>* _paramOutput;
131 141 int _isatex;
132 142 int _magout;
133   - private:
134   - ParamDataSpec<std::vector<DataType> >& _paramInput;
135   - ParamDataSpec<DataType>* _paramOutput;
  143 +
136 144 };
137   -
  145 +
138 146 /**
139 147 * Ecriture de temps geomagnetique local du satellite (heure fractionnée)
140 148 */
141 149 template<typename DataType>
142   - class MLT : public Posmag<DataType, ParamDataSpec < DataType > >{
143   -
144   - MLT(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout):
145   - Posmag<DataType, ParamDataSpec < DataType > > :: Posmag(pProcess, paramInput, isatex, magout){
146   - }
147   -
148   - void pushData(DataType tgl, DataType /*xlamb*/, DataType /*flg*/){
149   -
150   - Posmag<DataType, ParamDataSpec < DataType > > :: _paramDataOutput.getDataList().push_back(tgl);
151   - }
  150 + class MLT : public Posmag<DataType, ParamDataSpec < DataType > > {
  151 + public:
  152 +
  153 + MLT(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout) :
  154 + Posmag<DataType, ParamDataSpec < DataType > > ::Posmag(pProcess, paramInput, isatex, magout) {
  155 + }
  156 +
  157 + void pushData(DataType tgl, DataType /*xlamb*/, DataType /*flg*/) {
  158 +
  159 + Posmag<DataType, ParamDataSpec < DataType > > ::_paramOutput->getDataList().push_back(tgl);
  160 + }
152 161 };
153   -
154   - /**
  162 +
  163 + /**
155 164 * Ecriture de invariant latitude
156 165 */
157 166 template<typename DataType>
158   - class InvLat : public Posmag<DataType, ParamDataSpec < DataType > >{
159   -
160   - InvLat(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout):
161   - Posmag<DataType, ParamDataSpec < DataType > > :: Posmag(pProcess, paramInput, isatex, magout){
162   - }
163   -
164   - void pushData(DataType /*tgl*/, DataType xlamb, DataType /*flg*/){
165   -
166   - Posmag<DataType, ParamDataSpec < DataType > > :: _paramDataOutput.getDataList().push_back(xlamb);
167   - }
  167 + class InvLat : public Posmag<DataType, ParamDataSpec < DataType > > {
  168 + public:
  169 +
  170 + InvLat(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout) :
  171 + Posmag<DataType, ParamDataSpec < DataType > > ::Posmag(pProcess, paramInput, isatex, magout) {
  172 + }
  173 +
  174 + void pushData(DataType /*tgl*/, DataType xlamb, DataType /*flg*/) {
  175 +
  176 + Posmag<DataType, ParamDataSpec < DataType > > ::_paramOutput->getDataList().push_back(xlamb);
  177 + }
168 178 };
169   -
170   - /**
  179 +
  180 + /**
171 181 * Ecriture du parametre L
172 182 */
173 183 template<typename DataType>
174   - class Lparam : public Posmag<DataType, ParamDataSpec < DataType > >{
175   -
176   - Lparam(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout):
177   - Posmag<DataType, ParamDataSpec < DataType > > :: Posmag(pProcess, paramInput, isatex, magout){
178   - }
179   -
180   - void pushData(DataType /*tgl*/, DataType /*xlamb*/, DataType flg){
181   -
182   - Posmag<DataType, ParamDataSpec < DataType > > :: _paramDataOutput.getDataList().push_back(flg);
183   - }
  184 + class Lparam : public Posmag<DataType, ParamDataSpec < DataType > > {
  185 + public:
  186 +
  187 + Lparam(Process& pProcess, ParamDataSpec<vector<DataType> >& paramInput, int isatex, int magout) :
  188 + Posmag<DataType, ParamDataSpec < DataType > > ::Posmag(pProcess, paramInput, isatex, magout) {
  189 + }
  190 +
  191 + void pushData(DataType /*tgl*/, DataType /*xlamb*/, DataType flg) {
  192 +
  193 + Posmag<DataType, ParamDataSpec < DataType > > ::_paramOutput->getDataList().push_back(flg);
  194 + }
184 195 };
185   -
  196 +
186 197 }
187   -
  198 +
188 199 }
189 200  
190 201  
... ...