#include #include #include #include #include #include #include #include #include "TColor.h" #include "TStyle.h" #include #include #include #include #include #include #include "TPaletteAxis.h" #include #include #include #include #include "TMatrixD.h" #include "TMatrixDSym.h" #include "TFitter.h" #include "TVirtualFitter.h" #include "TRegexp.h" #include "TCanvas.h" #include "TMath.h" #include "TROOT.h" #include "TLegend.h" #include "Math/Minimizer.h" #include "TMinuit.h" using namespace std; Double_t Gaus2D(Double_t *x, Double_t *par) { if(par[2] > 0 && par[4] > 0) { double rx=0.; double ry=0.; double rz=0.; double den=0; rx=(x[0]-par[1])/par[2]; ry=(x[1]-par[3])/par[4]; rz=2.*par[5]*rx*ry; den= 1.-par[5]*par[5]; double fitval = par[0]/ (2 * TMath::Pi() * par[2] * par[4] * sqrt(den))*exp(-(rx*rx+ry*ry-rz)/(2.*den)); return fitval; } else return 0; } void fit(){ TFile *f_image = new TFile("results_from_9072_to_9078.root","read"); char histoname[256]; for(int j=2;j<3;j++) { TH2D *h_image = (TH2D*)f_image->Get("h_det5"); //sprintf(histoname,TString::Format("h_det%d",j)); //TH2D *h_image = (TH2D*)f_image->Get(histoname); //============================== FIT WITH A 2D GAUSSIAN ================= printf("\n"); printf("\n"); printf ("\033[34;01m Fitting h_det5\033[00m\n"); // printf ("\033[34;01m Fitting %s\033[00m\n", histoname); printf("\n"); printf("\n"); //g2D->Clear(); TF2 *g2D=new TF2("g2D",Gaus2D,h_image->GetMean(1)-2.,h_image->GetMean(1)+2.,h_image->GetMean(2)-2.,h_image->GetMean(2)+2.,6); g2D->SetParNames("Const","X_{0}","#sigma_{x}","Y_{0}","#sigma_{y}","#rho"); g2D->SetNpy(1000); g2D->SetParameters(300, 0, 0.8,0,0.8,0); for (int i=0;i<6;i++) cout << g2D->GetParameter(i)<< endl; h_image->Fit(g2D,"R0LL");//,"RLL0"); g2D->SetLineColor(2); delete h_image; g2D->Clear(); } f_image->Close(); }