CorrelationProcess.hh 2.46 KB
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/* 
 * File:   CorrelationProcess.hh
 * Author: hacene
 *
 * Created on September 27, 2021, 10:02 AM
 */

#ifndef CORRELATIONPROCESS_HH
#define CORRELATIONPROCESS_HH

#include "MultiParamProcess.hh"
#include "ParamInfo.hh"

namespace AMDA {
    namespace Parameters {

        class CorrelationProcess : public MultiParamProcess_CRTP<CorrelationProcess> {
        public:
            CorrelationProcess(Parameter &parameter);
            CorrelationProcess(const CorrelationProcess& pProcess, Parameter &parameter);

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

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


        protected:
            /**
	         * @brief If the expression is not a Single parameter,
	         * it must ask the creation of a parameter responsible of the formula calculation.
	         */
	        void parse();

        
            std::string _type;

        private:
            double _windowtime;

            std::string _firstParamName;

	        std::string _secondParamName;

        };

        class CovarianceProcess : public CorrelationProcess {
        public:

            CovarianceProcess(Parameter& parameter);
            CovarianceProcess(const CorrelationProcess& pProcess, Parameter &parameter);
            virtual ~CovarianceProcess();

        };

        class PearsonProcess : public CorrelationProcess {
        public:

            PearsonProcess(Parameter& parameter);
            PearsonProcess(const CorrelationProcess& pProcess, Parameter &parameter);
            virtual ~PearsonProcess();

        };

        class SpearmanProcess : public CorrelationProcess {
        public:

            SpearmanProcess(Parameter& parameter);
            SpearmanProcess(const CorrelationProcess& pProcess, Parameter &parameter);
            virtual ~SpearmanProcess();

        };
        
               class KendallProcess : public CorrelationProcess {
        public:

            KendallProcess(Parameter& parameter);
            KendallProcess(const CorrelationProcess& pProcess, Parameter &parameter);
            virtual ~KendallProcess();

        };

    }
}
#endif /* CORRELATIONPROCESS_HH */