#include "TFile.h" #include "TH1.h" #include "TGraph.h" #include "TF1.h" #include "TString.h" #include "TCanvas.h" #include "TPaveText.h" void fitting_justsubt(void) { TFile *f1=new TFile("just_subt.root","read"); TFile *fout=new TFile("fittingjust_subt.root","recreate"); enum{npt=9,ncent=5}; double pt[10] = {1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0,3.2}; double cent[6] = {0,20,40,60,80,101}; TH1D *f1_hSignalD_pp_MC_tof_MB[npt]; //tracks-trues TH1D *f1_subt_hSignalD_pp_MC_tof_MB[npt]; TGraph *linemass = new TGraph(2); linemass->SetPoint(0,1.232,-50000); linemass->SetPoint(1,1.232,1000000000000000); linemass->SetLineColor(kPink-1); linemass->SetLineWidth(2); double mean_PP_MB[npt]={}; double mean_error_PP_MB[npt]={}; double sigma_PP_MB[npt]={}; double sigma_error_PP_MB[npt]={}; TH1D *histo_mean_PP_MB; TH1D *histo_sigma_PP_MB; TCanvas *track_trues_together_canvas_MB_PP; f1->cd(); //MB for (int ipt=0; iptGet(Form("track_minus_trues_MC_pp_MB__pt_%d",ipt)); f1_hSignalD_pp_MC_tof_MB[ipt]->SetTitle(Form("%.1f < p_{T} < %.1f GeV/c",pt[ipt],pt[ipt+1])); f1_hSignalD_pp_MC_tof_MB[ipt]->SetMarkerSize(0.9); } fout->cd(); ///fitted part ofr MB track_trues_together_canvas_MB_PP=new TCanvas("track_trues_together_canvas_MB_PP","track_trues_together_canvas_MB_PP",1500,1900); track_trues_together_canvas_MB_PP->Divide(3,3,0.001,0.001); for (int ipt=0; iptcd(ipt+1); //fitting pp part f1_subt_hSignalD_pp_MC_tof_MB[ipt]= (TH1D*)f1_hSignalD_pp_MC_tof_MB[ipt]->Clone(); // fit function TF1 *f = new TF1(Form("template_function_PP_MB_pt_%02d", ipt), "gaus(0)+x*[3]+[4]", 1., 3.); // 1.059 1.90 is good f->SetLineColor(kRed); f->SetLineWidth(2); // “reasonable” initial values for ALL parameters are really important f->SetParameter(0, 3000.); f->SetParLimits(0, 10., 10000.); f->SetParameter(1, 1.4); f->SetParLimits(1, 1., 2.); f->SetParameter(2, 0.2); f->SetParLimits(2, 0.01, 1.); #if 0 /* 0 or 1 */ f->FixParameter(3, 0); #else /* 0 or 1 */ f->SetParameter(3, 0); // f->SetParLimits(3, -10000., 10000.); #endif /* 0 or 1 */ f->SetParameter(4, 0.); // f->SetParLimits(4, -10000., 10000.); f->SetParName(0,"Bg const"); f->SetParName(1,"Bg Mean"); f->SetParName(2,"Bg #sigma"); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Fit(f, "R"); TPaveText *text_MB_PP; text_MB_PP = new TPaveText(0.4158407,0.4545954,0.7159341,0.8634492,"brNDC"); text_MB_PP->SetTextSize(0.08); text_MB_PP->SetFillColor(kWhite); text_MB_PP->SetFillStyle(0); text_MB_PP->SetBorderSize(0); text_MB_PP->SetTextFont(42); text_MB_PP->SetTextAlign(12); Double_t ndf_PP=0; ndf_PP=f->GetNDF(); text_MB_PP->AddText(Form("#chi^{2}/NDF = %5.1f/%5.1f",f->GetChisquare(),ndf_PP)); text_MB_PP->AddText(Form("Mean = %5.3f#pm%5.3f",f->GetParameter(1),f->GetParError(1))); text_MB_PP->AddText(Form("#sigma = %5.3f#pm%5.3f",f->GetParameter(2),f->GetParError(2))); // f->Write(); // f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Write(); mean_PP_MB[ipt]=f->GetParameter(1); mean_error_PP_MB[ipt]=f->GetParError(1); sigma_PP_MB[ipt]=f->GetParameter(2); sigma_error_PP_MB[ipt]=f->GetParError(2); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Draw(); text_MB_PP->Draw("same"); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Write(); //setting parameters for mean sigma } track_trues_together_canvas_MB_PP->Write(); delete f1; // delete fout; }