Esempio n. 1
0
 public void SimpleTest()
 {
     FCN f = (v)=>{
         double x = v[0];
         double y = v[1];
         double z = v[2];
         return (x-1)*(x-1) + (y-2)*(y-2) + (z-3)*(z-3);
     };
     String[] pname = {"x", "y", "z"};
     Minuit m = new Minuit(f, pname);
     m.migrad();
     Assert.AreEqual(1.0, m.GetValue(0), 1e-7);
     Assert.AreEqual(2.0, m.GetValue(1), 1e-7);
     Assert.AreEqual(3.0, m.GetValue(2), 1e-7);
 }
Esempio n. 2
0
            /// <summary>
            /// Construct PeakFitter from initialpeakguess, histogam edges+values, 
            /// </summary>
            /// <param name="guess">Initial peak guess.</param>
            /// <param name="edges">edges of the truncated histogram</param>
            /// <param name="y">histogram value</param>
            /// <param name="sigma">Uncertainty on Y</param>
            /// <returns>PeakFitter</returns>
            public static PeakFitter FromGuess(InitialPeakGuess guess, double[] edges, double[] y, double[] sigma = null)
            {
                PeakingPDF pdf = PeakingPDF.OfInitialPeakGuess(guess);
                BinChi2 x2 = new BinChi2(pdf.Compute, edges, y, sigma);
                string[] paramnames = pdf.ParamNames(); //full paramname with x
                string[] pname = new string[paramnames.Length - 1]; //Dock off x
                for (int i = 0; i < pname.Length; i++)
                {
                    pname[i] = paramnames[i + 1];
                }
                Minuit minuit = new Minuit((FCN)(x2.Compute), pname);
                minuit.SetInitialValue("mu", guess.mu);
                minuit.SetInitialValue("sigma", guess.sigma);
                minuit.SetInitialValue("nsig", guess.nsig);
                minuit.SetInitialValue("m", guess.m);
                minuit.SetInitialValue("c", guess.c);
                minuit.SetInitialValue("nbkg", guess.nbkg);

                PeakFitter ret = new PeakFitter() { pdf = pdf, minuit = minuit, edges=edges};
                return ret;
            }
Esempio n. 3
0
 public FitResult(Minuit m, int nbin=1)
 {
     mu = m.GetValue("mu");
     err_mu = m.GetError("mu");
     sigma = m.GetValue("sigma");
     err_sigma = m.GetError("sigma");
     nsig = m.GetValue("nsig");
     err_nsig = m.GetError("nsig");
     this.m = m.GetValue("m");
     err_m = m.GetError("m");
     this.c = m.GetValue("c");
     err_c = m.GetValue("c");
     this.nbkg = m.GetValue("nbkg");
     err_nbkg = m.GetValue("nbkg");
     fmin = m.GetFmin();
     this.nbin = nbin;
     Resolution = mu != 0 ? sigma / mu : 1;
     FitConverged = m.FitConverged();
 }