00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "Minuit2/SqrtLowParameterTransformation.h"
00016 #include "Minuit2/MnMachinePrecision.h"
00017
00018 namespace ROOT {
00019
00020 namespace Minuit2 {
00021
00022
00023
00024 double SqrtLowParameterTransformation::Int2ext(double value, double lower) const {
00025
00026 double val = lower - 1. + sqrt( value*value + 1.);
00027 return val;
00028 }
00029
00030
00031 double SqrtLowParameterTransformation::Ext2int(double value, double lower, const MnMachinePrecision& ) const {
00032
00033 double yy = value - lower + 1.;
00034 double yy2 = yy*yy;
00035 if (yy2 < 1. )
00036 return 0;
00037 else
00038 return sqrt( yy2 -1);
00039 }
00040
00041
00042 double SqrtLowParameterTransformation::DInt2Ext(double value, double) const {
00043
00044 double val = value/( sqrt( value*value + 1.) );
00045 return val;
00046 }
00047
00048 }
00049
00050 }