ProcessStatisticFunctions.hh 3.46 KB
/*
 * ProcessStatisticFunctions.hh
 *
 *  Created on: Jun 21, 2018
 *      Author: benjamin
 */

#ifndef PROCESSSTATISTICFUNCTIONS_HH_
#define PROCESSSTATISTICFUNCTIONS_HH_

#include "SingleParamProcess.hh"
#include "StatisticFunctionsCreator.hh"

namespace AMDA {
namespace Parameters {

/**
 * @class ProcessStatisticFunctions
 * @brief Process for some simple functions.
 */
class ProcessStatisticFunctions : public SingleParamProcess_CRTP<ProcessStatisticFunctions> {

public:
	/**
	 * @brief Constructor.
	 */
	ProcessStatisticFunctions(Parameter &parameter, StatisticFunctionsCreator::StatisticFunctionsType type);
	/**
	 * @brief Copy Constructor.
	 */
	ProcessStatisticFunctions(const ProcessStatisticFunctions& pProcess, Parameter &pParameter) ;
	/**
	 * @brief Destructor.
	 */
	virtual ~ProcessStatisticFunctions();

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

private:
	/**
	 * @brief Function type
	*/
	StatisticFunctionsCreator::StatisticFunctionsType _type;

	/**
	 * @bried Window time in secs.
	 */
	double _windowtime;
};


/**
 * @class ProcessMinFunc
 * @brief Process to compute min.
 */
class ProcessMinFunc : public ProcessStatisticFunctions {
public:
	/**
 	 * @brief Constructor.
 	 */
	ProcessMinFunc(Parameter &parameter);
};

/**
 * @class ProcessMinSmFunc
 * @brief Process to compute min_sm.
 */
class ProcessMinSmFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessMinSmFunc(Parameter &parameter);
};

/**
 * @class ProcessMaxFunc
 * @brief Process to compute max.
 */
class ProcessMaxFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessMaxFunc(Parameter &parameter);
};

/**
 * @class ProcessMaxSmFunc
 * @brief Process to compute max_sm.
 */
class ProcessMaxSmFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessMaxSmFunc(Parameter &parameter);
};

/**
 * @class ProcessVarFunc
 * @brief Process to compute var.
 */
class ProcessVarFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessVarFunc(Parameter &parameter);
};

/**
 * @class ProcessVarSmFunc
 * @brief Process to compute var_sm.
 */
class ProcessVarSmFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessVarSmFunc(Parameter &parameter);
};

/**
 * @class ProcessRmsFunc
 * @brief Process to compute rms.
 */
class ProcessRmsFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessRmsFunc(Parameter &parameter);
};

/**
 * @class ProcessRmsSmFunc
 * @brief Process to compute rms_sm.
 */
class ProcessRmsSmFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessRmsSmFunc(Parameter &parameter);
};

/**
 * @class ProcessSkewFunc
 * @brief Process to compute skew.
 */
class ProcessSkewFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessSkewFunc(Parameter &parameter);
};

/**
 * @class ProcessSkewSmFunc
 * @brief Process to compute skew_sm.
 */
class ProcessSkewSmFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
        ProcessSkewSmFunc(Parameter &parameter);
};

/**
 * @class ProcessMedianFunc
 * @brief Process to compute median.
 */
class ProcessMedianFunc : public ProcessStatisticFunctions {
public:
	/**
	 * @brief Constructor.
	 */
	ProcessMedianFunc(Parameter &parameter);
};

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