#include constexpr Double_t Pi() { return 3.14159265358979323846; } Double_t fit_firstder_one(Double_t *x1_one, Double_t *par1_one) { Double_t arg1_one = 0; Double_t arg1_0_one = 0; if (par1_one[2] != 0) { arg1_one = (x1_one[0] - par1_one[1])/par1_one[2]; arg1_0_one = (x1_one[0] - par1_one[1])/(par1_one[2]*par1_one[2]); } Double_t fitval1_one= -par1_one[0]*TMath::Exp(-0.5*arg1_one*arg1_one)*arg1_0_one; return fitval1_one; } void check4() { gStyle->SetOptStat(2211); gStyle->SetOptFit(1111); // DEFINING CANVAS TCanvas *c1 = new TCanvas("c1","Without constraint",700,1000); c1->Divide(1,3); // set bin center // set bin content TH1D*h2 = new TH1D("h2","set bin content", 100,40,140); TH1D*h4 = new TH1D("h4","set bin content_WITH E1 : error", 100,40,140); // Mass Limits Double_t LowerLimit_Mass = 44; Double_t UpperLimit_Mass = 132; Int_t no_par = 3; Double_t LowerLimit_Mass_one = 44; Double_t UpperLimit_Mass_one = 132; Int_t no_par_one = 3; TFile *file1=new TFile("h1.root"); TH1D *h1 = (TH1D*)file1->Get("h1"); c1->cd(1); h1->Draw("HIST E1"); Double_t error_A; Double_t A = h1->IntegralAndError(1, h1->GetNbinsX(), error_A, ""); std::cout << "Int_A (excluding underflow and overflow bins) = " << A<< " +- " <IntegralAndError(0, (h1->GetNbinsX() + 1), error_A1, ""); // "" or "width" std::cout << "Int_A (including underflow and overflow bins) = " << A1<< " +- " <SetTextSize(0.04); pt_h1->SetFillColor(0); pt_h1->SetTextAlign(12); pt_h1->AddText(Form("Integral =""%f""+/-""%f", A , error_A)); pt_h1->Draw(); TF1 *f12_firstder_one_root = new TF1("fit_firstder_one_root",fit_firstder_one ,LowerLimit_Mass_one,UpperLimit_Mass_one,no_par_one); f12_firstder_one_root ->SetLineColor(2); f12_firstder_one_root ->SetParameter(0,1000); f12_firstder_one_root ->SetParLimits(0,1.5,1e8); f12_firstder_one_root->FixParameter(1, 88); /*f12_firstder_one_root ->SetParameter(1, 88); f12_firstder_one_root ->SetParLimits(1, 80,95);*/ f12_firstder_one_root ->SetParameter(2, 13); f12_firstder_one_root ->SetParLimits(2,1,30); Int_t nbins = h1->GetNbinsX(); for(Int_t i=0;iGetBinContent(i); double a_cent=h1->GetBinCenter(i); double a_err=h1->GetBinError(i); double h=h1->GetBinContent(i+6); double h_cent=h1->GetBinCenter(i+6); double h_err=h1->GetBinError(i+6); //7 gauss double d_7_gauss = (h-a)/(h_cent-a_cent); double d_mid_7_gauss = (h_cent+a_cent)/2; double d_mid_7_gauss_err = (1/(h_cent-a_cent))*TMath::Sqrt(pow(h_err,2)+pow(a_err,2)); h4->SetBinContent(i+3,d_7_gauss); h2->SetBinContent(i+3,d_7_gauss); } // Histogram plotted without errors c1->cd(2); h2->SetMarkerStyle(24); h2->SetMarkerColor(1); h2->SetLineColor(1); h2->SetMarkerSize(0.4); h2->Draw("HIST"); h2->Fit("fit_firstder_one_root","",""); f12_firstder_one_root->Draw("same"); TPaveText *pt_h16_2 = new TPaveText(0.4,0.6,0.7,0.75,"brNDC"); pt_h16_2->SetTextSize(0.04); pt_h16_2->SetFillColor(0); pt_h16_2->SetTextAlign(12); pt_h16_2->AddText(Form("Integral =""%i""+/-""%f",TMath::Nint(TMath :: Sqrt(2*Pi())*f12_firstder_one_root->GetParameter(0)*f12_firstder_one_root->GetParameter(2)), (TMath:: Sqrt(2*Pi()*(pow(f12_firstder_one_root->GetParameter(2),2)*pow(f12_firstder_one_root->GetParError(0),2) + pow(f12_firstder_one_root->GetParameter(0),2)*pow(f12_firstder_one_root->GetParError(2),2)) ) ))); pt_h16_2->AddText(Form("Area =""%f""+/-""%f", ((TMath :: Sqrt(2*Pi())*f12_firstder_one_root->GetParameter(0)*f12_firstder_one_root->GetParameter(2))/A)*100 , (TMath:: Sqrt(2*Pi()*(pow(f12_firstder_one_root->GetParameter(2),2)*pow(f12_firstder_one_root->GetParError(0),2) + pow(f12_firstder_one_root->GetParameter(0),2)*pow(f12_firstder_one_root->GetParError(2),2)) )/A)*100 )); pt_h16_2->Draw(); // Histogram with errors c1->cd(3); h4->SetMarkerStyle(24); h4->SetMarkerColor(1); h4->SetLineColor(1); h4->SetMarkerSize(0.4); h4->Draw("HIST E1"); h4->Fit("fit_firstder_one_root","",""); f12_firstder_one_root->Draw("same"); TPaveText *pt_h16_i = new TPaveText(0.4,0.6,0.7,0.75,"brNDC"); pt_h16_i->SetTextSize(0.04); pt_h16_i->SetFillColor(0); pt_h16_i->SetTextAlign(12); pt_h16_i->AddText(Form("Integral =""%i""+/-""%f",TMath::Nint(TMath :: Sqrt(2*Pi())*f12_firstder_one_root->GetParameter(0)*f12_firstder_one_root->GetParameter(2)), (TMath:: Sqrt(2*Pi()*(pow(f12_firstder_one_root->GetParameter(2),2)*pow(f12_firstder_one_root->GetParError(0),2) + pow(f12_firstder_one_root->GetParameter(0),2)*pow(f12_firstder_one_root->GetParError(2),2)) ) ))); pt_h16_i->AddText(Form("Area =""%f""+/-""%f", ((TMath :: Sqrt(2*Pi())*f12_firstder_one_root->GetParameter(0)*f12_firstder_one_root->GetParameter(2))/A)*100 , (TMath:: Sqrt(2*Pi()*(pow(f12_firstder_one_root->GetParameter(2),2)*pow(f12_firstder_one_root->GetParError(0),2) + pow(f12_firstder_one_root->GetParameter(0),2)*pow(f12_firstder_one_root->GetParError(2),2)) )/A)*100 )); pt_h16_i->Draw(); }