#include "TGraphErrors.h" #include "TF1.h" #include "TCanvas.h" class MG: public TGraphErrors { public: MG(char*, char* = "%lg %lg"); MG(int, double*, double*, double* = 0, double* = 0); virtual ~MG(); MG* residuos(TF1*, bool = false); MG* curvaChi2(TF1*, int, float, float, bool = false); }; MG::MG(char* file, char* formato):TGraphErrors(file, formato) { SetMarkerStyle(20); SetLineColor(2); SetMarkerColor(2); } MG::MG(int n, double* x, double *y, double *ex, double *ey):TGraphErrors(n, x, y, ex, ey) { SetMarkerStyle(20); SetLineColor(2); SetMarkerColor(2); } MG::~MG() { } MG* MG::residuos(TF1* func, bool desenha) { double* x = GetX(); double* y = GetY(); double* ex = GetEX(); double* ey = GetEY(); int N = GetN(); double YM[1000],EY[1000]; for(int i = 0;iEval(x[i]); YM[i] = (y[i]-teoria)/ey[i]; EY[i] = 1; } MG* r = new MG(N,x,YM,ex,EY); if(desenha) { new TCanvas(); r->Draw("AP"); } return r; } MG* MG::curvaChi2(TF1* func, int par, float pmin, float pmax, bool desenha) { float dp = (pmax-pmin)/100.0; float NP = (float)GetN(); double x[100], y[100]; int i = 0; for(float p = pmin; p<=pmax; p+=dp) { func->SetParameter(par,p); float chisq = Chisquare(func)/(NP-1); x[i] = p; y[i] = chisq; i++; } MG *r = new MG(100,x,y,0,0); if(desenha) { new TCanvas(); r->Draw("AP"); } return r; }