#ifndef SIGNALTYPE_HPP
#define SIGNALTYPE_HPP

#include "../GlobalFunctions.hh"

class SignalType{
protected:
    bool SingleGaussian;
    bool DoubleGaussian;
    bool DoubleCB;
    bool LeftCB;
    bool RightCB;
    bool OneCB;
    bool anyGaussain; //false => it's a CB
    bool FixParameters;
    bool ConstrParameters;

public:    
    bool NoSig;
    //Constrain PDFs
    RooArgSet * ConsParameter = new RooArgSet();
    RooArgList * ConsPDF = new RooArgList();
    bool AtLeastOneConstrainFound = false;    
    vector<RooRealVar*> SigRooVars = {};

    SignalType(){ //default constructor
        SingleGaussian = false;
        DoubleGaussian = false;
        DoubleCB = false;
        LeftCB = false;
        RightCB = false;
        OneCB = false;
        NoSig = false;
        anyGaussain = false;
        FixParameters = false;
        ConstrParameters = false;
    };
    void setSignalType(string sigType, bool FixParams, bool ConstrParams); //construct from a string
    vector<string> getSigListOfParams();
    double getEffSigmaFromResult();
    ~SignalType(){}; //default destructor
};

RooRealVar* getVarFromResult(RooFitResult *fitResult, string name);

#endif // SIGNALTYPE_HPP
