From: Harufumi Tsuchiya <harufumi@icrr.u-tokyo.ac.jp> Subject: I can not fit 2d histo with 2d gaus funtion. Date: Thu, 14 Mar 2002 18:07:29 +0900 (JST) In my previous mail, I said I could not fit the data with 2d-gaus function. But, I added h2->SetBinError(binx, biny, zerr); after h2->SetBinContent(binx, biny, z);. and I succeeded in fitting. The result of fit is good. Thank you. Harufumi Tsuchiya. > Dear ROOTers, > > I am using ROOT v3.03/02 on IRIX 6.4 with gcc 2.95.2. > > Now, I am trying to fit 2 dimentional data points(x, y) with > 2d gaus function. > My set of data is following (bottom this mail). > data consist of x, y, z and zerr. > > I found fit2.C in root/tutorials directory and > modified it to my application like below. > > Using my macro "Test2D.C", I could draw the picture using TH2F with > "surf2" option. But, I could not fit the data using TF2 "f2", which > is 2-dimentional gaus function. I only got result of nan for all parameters. > Maybe, my procedure is someting wrong. > So, please tell me the correct way. > > And, finally, I would like to fit the data points with errors, > which indicate zerr in my macro. In this case, Can I fit the data using > 2d gaus fucnction ? > > > > ------------------ Test2D.C ----------------------------- > #include "TF2.h" > #include "TH2.h" > Double_t g2(Double_t *x, Double_t *par) { > Double_t r1 = Double_t((x[0]-par[1])/par[2]); > Double_t r2 = Double_t((x[1]-par[3])/par[4]); > return par[0]*TMath::Exp(-0.5*(r1*r1+r2*r2)); > } > Double_t fun2(Double_t *x, Double_t *par) { > Double_t *p1 = &par[0]; > Double_t result = g2(x,p1); > return result; > } > > void Test2D(char *file) { > gStyle->SetPalette(1, 0); > const Int_t npar = 5; > Double_t f2params[npar] = {-500, 0, 0.2, 0, 0.2}; > TF2 *f2 = new TF2("f2", fun2, -1.75, 1.75, -1.75, 1.75, npar); > f2->SetParameters(f2params); > > ifstream data(file); > > TH2F *h2 = new TH2F("h2", "Test", 8, -1.75, 1.75, 8, -1.75, 1.75); > Float_t x, y, z, zerr, xadd, yadd; > xadd = yadd = 1.75; > Int_t binx, biny; > while ( !data.eof() ) { > if ( data.eof() ) break; > data >> x >> y >> z >> zerr; > binx = 1 + Int_t((x + xadd)*2); biny = 1 + Int_t((y + yadd)*2); > h2->SetBinContent(binx, biny, z); > // h2->Fill(x, y, z) > } > TCanvas *c1 = new TCanvas("c1", "", 10, 100, 500, 500); > h2->Draw("surf2 z"); > // h2->Fit("f2"); > } > > > ----------------- data ---------------- > x y z zerr > --------------------------------------- > -1.750000 -1.750000 -177.364 88.4113 > -1.750000 -1.250000 23.8819 89.5173 > -1.750000 -0.750000 -169.408 90.4699 > -1.750000 -0.250000 14.1323 91.6545 > -1.750000 0.250000 -28.0623 92.2061 > -1.750000 0.750000 2.88085 93.4896 > -1.750000 1.250000 -108.494 94.5778 > -1.750000 1.750000 27.6635 95.6723 > -1.250000 -1.750000 -21.3866 88.2509 > -1.250000 -1.250000 -57.2445 89.6165 > -1.250000 -0.750000 -97.7985 90.5366 > -1.250000 -0.250000 -147.786 91.3785 > -1.250000 0.250000 -169.611 92.645 > -1.250000 0.750000 -278.408 93.9902 > -1.250000 1.250000 -210.075 94.6681 > -1.250000 1.750000 75.6192 95.6346 > -0.750000 -1.750000 -13.6447 88.403 > -0.750000 -1.250000 -11.9387 89.2608 > -0.750000 -0.750000 -196.141 90.4865 > -0.750000 -0.250000 -343.435 91.0842 > -0.750000 0.250000 -236.105 92.3592 > -0.750000 0.750000 -191.582 93.7229 > -0.750000 1.250000 -52.6134 94.4583 > -0.750000 1.750000 90.6348 95.313 > -0.250000 -1.750000 -207.86 88.7357 > -0.250000 -1.250000 -118.233 89.4734 > -0.250000 -0.750000 -332.12 90.7167 > -0.250000 -0.250000 -669.193 91.4756 > -0.250000 0.250000 -512.535 92.4841 > -0.250000 0.750000 -385.905 93.391 > -0.250000 1.250000 10.6888 94.5607 > -0.250000 1.750000 18.3322 95.4434 > 0.250000 -1.750000 -101.211 88.3915 > 0.250000 -1.250000 -153.832 89.1503 > 0.250000 -0.750000 -225.612 90.2201 > 0.250000 -0.250000 -355.538 91.4372 > 0.250000 0.250000 -359.276 92.605 > 0.250000 0.750000 -101.366 93.36 > 0.250000 1.250000 -86.0116 94.7367 > 0.250000 1.750000 -126.872 95.6148 > 0.750000 -1.750000 18.9985 88.4382 > 0.750000 -1.250000 -2.56898 89.532 > 0.750000 -0.750000 -89.8189 90.4403 > 0.750000 -0.250000 -195.499 91.6973 > 0.750000 0.250000 -60.4349 92.6743 > 0.750000 0.750000 -24.0375 93.5119 > 0.750000 1.250000 -118.055 94.4758 > 0.750000 1.750000 -88.8576 95.5508 > 1.250000 -1.750000 -100.037 88.2104 > 1.250000 -1.250000 -79.9338 89.6215 > 1.250000 -0.750000 -10.1272 90.2623 > 1.250000 -0.250000 -165.224 91.7862 > 1.250000 0.250000 61.9772 92.4866 > 1.250000 0.750000 -60.333 93.8211 > 1.250000 1.250000 -128.538 94.4395 > 1.250000 1.750000 -264.961 95.4229 > 1.750000 -1.750000 -34.8958 88.5176 > 1.750000 -1.250000 2.97855 89.6195 > 1.750000 -0.750000 19.1471 90.4522 > 1.750000 -0.250000 -45.2502 91.5662 > 1.750000 0.250000 35.7344 92.6695 > 1.750000 0.750000 38.8704 93.5341 > 1.750000 1.250000 192.175 94.2912 > 1.750000 1.750000 82.0293 95.3584
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:45 MET