CorrelationProcess.hh 2.39 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 "SingleParamProcess.hh"
#include "ParamInfo.hh"

namespace AMDA {
    namespace Parameters {

        class CorrelationProcess : public SingleParamProcess_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:

            // void getSecondParamData();

            std::string _type;

            double _windowtime;

        private:
            /**
             * @brief list of param name intput
             * @detail this list must be ordered
             */
            ParameterSPtr _secondInputParam;

        };

        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 */