Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:10:19

0001 // @(#)root/mathmore:$Id$
0002 // Author: L. Moneta 2009
0003 
0004 // Header file for class MinimizerVariable
0005 
0006 #ifndef ROOT_Math_MinimizerVariableTransformation
0007 #define ROOT_Math_MinimizerVariableTransformation
0008 
0009 namespace ROOT {
0010 
0011    namespace Math {
0012 
0013 /**
0014    Base class for MinimizerVariable transformations defining the functions to deal
0015    with bounded parameters
0016 
0017    @ingroup MultiMin
0018 */
0019 
0020 class MinimizerVariableTransformation {
0021 
0022 public:
0023 
0024    virtual ~MinimizerVariableTransformation() {}
0025 
0026    virtual double Int2ext(double value, double lower, double upper) const = 0;
0027    virtual double Ext2int(double value, double lower, double upper) const = 0;
0028    virtual double DInt2Ext(double value, double lower, double upper) const = 0;
0029 
0030 };
0031 
0032 
0033 /**
0034    Sin Transformation class for dealing with double bounded variables
0035 
0036    @ingroup MultiMin
0037 */
0038 class SinVariableTransformation : public MinimizerVariableTransformation {
0039 
0040 public:
0041 
0042    ~SinVariableTransformation() override {}
0043 
0044    double Int2ext(double value, double lower, double upper) const override;
0045    double Ext2int(double value, double lower, double upper) const override;
0046    double DInt2Ext(double value, double lower, double upper) const override;
0047 
0048 private:
0049 
0050 
0051 };
0052 
0053 /**
0054    Sqrt Transformation class for dealing with lower bounded variables
0055 
0056    @ingroup MultiMin
0057 */
0058 class SqrtLowVariableTransformation : public  MinimizerVariableTransformation {
0059 public:
0060 
0061    ~SqrtLowVariableTransformation() override {}
0062 
0063    double Int2ext(double value, double lower, double upper) const override;
0064    double Ext2int(double value, double lower, double upper) const override;
0065    double DInt2Ext(double value, double lower, double upper) const override;
0066 
0067 };
0068 
0069 /**
0070    Sqrt Transformation class for dealing with upper bounded variables
0071 
0072    @ingroup MultiMin
0073 */
0074 class SqrtUpVariableTransformation : public  MinimizerVariableTransformation {
0075 public:
0076 
0077    ~SqrtUpVariableTransformation() override {}
0078 
0079    double Int2ext(double value, double lower, double upper) const override;
0080    double Ext2int(double value, double lower, double upper) const override;
0081    double DInt2Ext(double value, double lower, double upper) const override;
0082 
0083 };
0084 
0085 
0086    } // end namespace Math
0087 
0088 } // end namespace ROOT
0089 
0090 
0091 #endif /* ROOT_Math_MinimizerVariableTransformation */
0092 
0093