Hi, You many errors in your script. See a modified and working version below. Look at the lines // Rene Brun //----> start Double_t erf( Double_t *x, Double_t *par){ //<=========== return par[0]*TMath::Erf(x[0]); //<=========== } void eff() { //gROOT->Reset(); //<=============== c1 = new TCanvas("c1","title",200,10,700,500); c1->SetGrid(); const Int_t n = 10; const Int_t ntot = 500; Double_t x[n], ytemp[n], y[n], ex[n], ey[n]; //Double_t erf(Double_t *, Double_t ); //<=========== x[0] = 0.1; ytemp[0] = 9. ; x[1] = 0.2; ytemp[1] = 8. ; x[2] = 0.3; ytemp[2] = 150.; x[3] = 0.4; ytemp[3] = 317.; x[4] = 0.5; ytemp[4] = 350.; x[5] = 0.8; ytemp[5] = 349.; x[6] = 1.0; ytemp[6] = 350.; x[7] = 2.0; ytemp[7] = 325.; x[8] = 3.0; ytemp[8] = 310.; x[9] = 5.0; ytemp[9] = 261.; // y[0] =ytemp[0]/ntot ; ex[0] = 0.; ey[0] = sqrt(ytemp[0])/ntot; y[1] =ytemp[1]/ntot ; ex[1] = 0.; ey[1] = sqrt(ytemp[1])/ntot; y[2] =ytemp[2]/ntot; ex[2] = 0.; ey[2] = sqrt(ytemp[2])/ntot; y[3] =ytemp[3]/ntot; ex[3] = 0.; ey[3] = sqrt(ytemp[3])/ntot; y[4] =ytemp[4]/ntot; ex[4] = 0.; ey[4] = sqrt(ytemp[4])/ntot; y[5] =ytemp[5]/ntot; ex[5] = 0.; ey[5] = sqrt(ytemp[5])/ntot; y[6] =ytemp[6]/ntot; ex[6] = 0.; ey[6] = sqrt(ytemp[6])/ntot; y[7] =ytemp[7]/ntot; ex[7] = 0.; ey[7] = sqrt(ytemp[7])/ntot; y[8] =ytemp[8]/ntot; ex[8] = 0.; ey[8] = sqrt(ytemp[8])/ntot; y[9] =ytemp[9]/ntot; ex[9] = 0.; ey[9] = sqrt(ytemp[9])/ntot; // gr = new TGraphErrors(n,x,y,ex,ey); gr->SetFillColor(19); gr->SetLineColor(2); gr->SetLineWidth(1); gr->SetMarkerColor(4); gr->SetMarkerStyle(21); gr->SetTitle("Track eff."); gr->Draw("AL*"); // TF1 *fitfcn = new TF1("fitfcn",(void *)erf,0.0,5.0,1); //<============ fitfcn->SetParameter(0,1); //<============= gr->Fit("fitfcn"); c1->Update(); gr->GetHistogram()->SetXTitle("Pt (GeV)"); gr->GetHistogram()->SetYTitle("eff. (# of tracks over 500 pions)"); c1->Modified(); //<---- end } <====== Dongwook Jang wrote: > > Hello, > > I wanna fit a error function onto graph. When I run this macro, the error > message read "unknown erf" > Can anyone help me in solving this problem? Or please tell me what the > problem is in my file. > > Here is my macro file. > > //----> start > Double_t erf( Double_t *x, Double_t par){ > return par*TMath::Erf(x); > } > > void eff() > { > gROOT->Reset(); > c1 = new TCanvas("c1","title",200,10,700,500); > > c1->SetGrid(); > > const Int_t n = 10; > const Int_t ntot = 500; > Double_t x[n], ytemp[n], y[n], ex[n], ey[n]; > Double_t erf(Double_t *, Double_t ); > > x[0] = 0.1; ytemp[0] = 9. ; > x[1] = 0.2; ytemp[1] = 8. ; > x[2] = 0.3; ytemp[2] = 150.; > x[3] = 0.4; ytemp[3] = 317.; > x[4] = 0.5; ytemp[4] = 350.; > x[5] = 0.8; ytemp[5] = 349.; > x[6] = 1.0; ytemp[6] = 350.; > x[7] = 2.0; ytemp[7] = 325.; > x[8] = 3.0; ytemp[8] = 310.; > x[9] = 5.0; ytemp[9] = 261.; > // > y[0] =ytemp[0]/ntot ; ex[0] = 0.; ey[0] = sqrt(ytemp[0])/ntot; > y[1] =ytemp[1]/ntot ; ex[1] = 0.; ey[1] = sqrt(ytemp[1])/ntot; > y[2] =ytemp[2]/ntot; ex[2] = 0.; ey[2] = sqrt(ytemp[2])/ntot; > y[3] =ytemp[3]/ntot; ex[3] = 0.; ey[3] = sqrt(ytemp[3])/ntot; > y[4] =ytemp[4]/ntot; ex[4] = 0.; ey[4] = sqrt(ytemp[4])/ntot; > y[5] =ytemp[5]/ntot; ex[5] = 0.; ey[5] = sqrt(ytemp[5])/ntot; > y[6] =ytemp[6]/ntot; ex[6] = 0.; ey[6] = sqrt(ytemp[6])/ntot; > y[7] =ytemp[7]/ntot; ex[7] = 0.; ey[7] = sqrt(ytemp[7])/ntot; > y[8] =ytemp[8]/ntot; ex[8] = 0.; ey[8] = sqrt(ytemp[8])/ntot; > y[9] =ytemp[9]/ntot; ex[9] = 0.; ey[9] = sqrt(ytemp[9])/ntot; > // > gr = new TGraphErrors(n,x,y,ex,ey); > gr->SetFillColor(19); > gr->SetLineColor(2); > gr->SetLineWidth(1); > gr->SetMarkerColor(4); > gr->SetMarkerStyle(21); > gr->SetTitle("Track eff."); > gr->Draw("AL*"); > // > TF1 *fitfcn = new TF1("fitfcn",erf,0.0,5.0); > gr->Fit("fitfcn"); > > c1->Update(); > gr->GetHistogram()->SetXTitle("Pt (GeV)"); > gr->GetHistogram()->SetYTitle("eff. (# of tracks over 500 pions)"); > c1->Modified(); > > //<---- end > > Best regards, > Dongwook Jang. > @+------------------------------------------------------------ > | email : dwjang@fnal.gov > | dwjang@physics.rutgers.edu > | phone : 630-840-2118 (office) > | 630-406-1315 (Home) > | 630-840-6315 (FAX) > +------------------------------------------------------------- > I'm staying at the office 170-I, B0 Trailer at Fermilab. > > The mailing address is : > CDF/Rutgers MS 318 Fermilab P.O. 500 > Batavia, IL 60510-0500 > > My school is : > Department of Physics and Astronomy > Rutgers, the State University of New Jersey > 136 Frelinghuysen Road > Piscataway, NJ 08854-8019 > > -------------------------------------------------------------------------------- > > Name: eff.C > eff.C Type: Plain Text (TEXT/PLAIN) > Encoding: BASE64
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:47 MET