ProcessTsyganenko96.hh 1.83 KB
/*
 * ProcessTsyganenko96.hh
 *
 *  Created on: Nov 06, 2017
 *      Author: benjamin
 */

#ifndef PROCESSTSYGANENKO96_HH_
#define PROCESSTSYGANENKO96_HH_

#include "SingleParamProcess.hh"
#include "ParamInfo.hh"
#include "Tsyganenko96Creator.hh"

namespace AMDA {
namespace Parameters {

/**
 * @class ProcessTsyganenko96
 * @brief Process to compute Tsyganenko 96 model magnetic field.
 */
class ProcessTsyganenko96 : public SingleParamProcess_CRTP<ProcessTsyganenko96> {

public:
	/**
	 * @brief Constructor.
	 */
	ProcessTsyganenko96(Parameter &parameter, bool inGSE);
	/**
	 * @brief Copy Constructor.
	 */
	ProcessTsyganenko96(const ProcessTsyganenko96& pProcess, Parameter &pParameter) ;
	/**
	 * @brief Destructor.
	 */
	virtual ~ProcessTsyganenko96();

        /**
	 * @overload Process::establishConnection()
	 */
	virtual void establishConnection();

	/**
	 * @overload Process::init()
	 */
	virtual TimeStamp init();

	/**
	 *  Write data in dataParam.
	 */
        virtual unsigned int write();

protected:
	void getImfData();

	void getPswData();

	void getDstData();

	bool _inGSE;
private:
	/**
	 * @brief params intput
	*/
	ParameterSPtr _inputImfParam;

	ParameterSPtr _inputPswParam;

	ParameterSPtr _inputDstParam;
};


/**
 * @class ProcessTsyganenko96GSM
 * @brief Process to compute Tsyganenko 96 model magnetic field in GSM.
 */
class ProcessTsyganenko96GSM : public ProcessTsyganenko96 {
public:
	/**
 	 * @brief Constructor.
 	 */
	ProcessTsyganenko96GSM(Parameter &parameter);
};

/**
 * @class ProcessTsyganenko96
 * @brief Process to compute Tsyganenko 96 model magnetic field in GSE.
 */
class ProcessTsyganenko96GSE : public ProcessTsyganenko96 {
public:
	/**
         * @brief Constructor.
         */
	ProcessTsyganenko96GSE(Parameter &parameter);
};

} /* namespace Parameters */
} /* namespace AMDA */
#endif /* PROCESSMEXVEXELSDECODE_HH_ */