{ TFile *f1=new TFile("input.root","read"); TFile *fout=new TFile("problematic_fit_example_11_20_2017.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}; //for MB TCanvas *track_trues_together_canvas_MB_PP; TCanvas *tracks_subt_trues_canvas_MB_PP; TCanvas *track_trues_together_canvas_MB_MM; TCanvas *tracks_subt_trues_canvas_MB_MM; //tracks TH1D *f1_hSignalD_pp_MC_tof_MB[npt]; TH1D *f1_hSignalD_mm_MC_tof_MB[npt]; //trues TH1D *f1_hSignalD_pp_MC_trues_tof_MB[npt]; TH1D *f1_hSignalD_mm_MC_trues_tof_MB[npt]; //gen TH1D *f1_hSignalD_pp_MC_Gen_tof_MB[npt]; TH1D *f1_hSignalD_mm_MC_Gen_tof_MB[npt]; //tracks-trues TH1D *f1_subt_hSignalD_pp_MC_tof_MB[npt]; TH1D *f1_subt_hSignalD_mm_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); //fit function TF1 *fit_rest_PP_MB[npt]; TF1 *fit_template_PP_MB[npt]; TF1 *fit_rest_MM_MB[npt]; TF1 *fit_template_MM_MB[npt]; double mean_PP_MB[npt]={}; double mean_error_PP_MB[npt]={}; double sigma_PP_MB[npt]={}; double sigma_error_PP_MB[npt]={}; double mean_MM_MB[npt]={}; double mean_error_MM_MB[npt]={}; double sigma_MM_MB[npt]={}; double sigma_error_MM_MB[npt]={}; TH1D *histo_mean_PP_MB; TH1D *histo_sigma_PP_MB; TH1D *histo_mean_MM_MB; TH1D *histo_sigma_MM_MB; //to fill these histograms setting parameters: double mean_PP[npt]={}; double mean_PP_error[npt]={}; double sigma_PP[npt]={}; double sigma_PP_error[npt]={}; double mean_MM[npt]={}; double mean_MM_error[npt]={}; double sigma_MM[npt]={}; double sigma_MM_error[npt]={}; f1->cd(); //MB for (int ipt=0; iptGet(Form("data_PPTOFMC_ptbin_%02d_mult_all",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); //mm f1_hSignalD_mm_MC_tof_MB[ipt] = (TH1D*)f1->Get(Form("data_MMTOFMC_ptbin_%02d_mult_all",ipt)); f1_hSignalD_mm_MC_tof_MB[ipt]->SetTitle(Form("%.1f < p_{T} < %.1f GeV/c",pt[ipt],pt[ipt+1])); f1_hSignalD_mm_MC_tof_MB[ipt]->SetMarkerSize(0.9); //trues //pp f1_hSignalD_pp_MC_trues_tof_MB[ipt] = (TH1D*)f1->Get(Form("MC_PPTOFTrues_bc_ptbin_%02d_mult_all",ipt)); f1_hSignalD_pp_MC_trues_tof_MB[ipt]->SetTitle(Form("%.1f < p_{T} < %.1f GeV/c",pt[ipt],pt[ipt+1])); f1_hSignalD_pp_MC_trues_tof_MB[ipt]->SetMarkerSize(0.9); //mm f1_hSignalD_mm_MC_trues_tof_MB[ipt] = (TH1D*)f1->Get(Form("MC_MMTOFTrues_bc_ptbin_%02d_mult_all",ipt)); f1_hSignalD_mm_MC_trues_tof_MB[ipt]->SetTitle(Form("%.1f < p_{T} < %.1f GeV/c",pt[ipt],pt[ipt+1])); f1_hSignalD_mm_MC_trues_tof_MB[ipt]->SetMarkerSize(0.9); //gen //pp f1_hSignalD_pp_MC_Gen_tof_MB[ipt] = (TH1D*)f1->Get(Form("MC_PPGen_bc_ptbin_%02d_mult_all",ipt)); f1_hSignalD_pp_MC_Gen_tof_MB[ipt]->SetTitle(Form("%.1f < p_{T} < %.1f GeV/c",pt[ipt],pt[ipt+1])); f1_hSignalD_pp_MC_Gen_tof_MB[ipt]->SetMarkerSize(0.9); //mm f1_hSignalD_mm_MC_Gen_tof_MB[ipt] = (TH1D*)f1->Get(Form("MC_MMGen_bc_ptbin_%02d_mult_all",ipt)); f1_hSignalD_mm_MC_Gen_tof_MB[ipt]->SetTitle(Form("%.1f < p_{T} < %.1f GeV/c",pt[ipt],pt[ipt+1])); f1_hSignalD_mm_MC_Gen_tof_MB[ipt]->SetMarkerSize(0.9); } fout->cd(); //MBpart 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); //mm track_trues_together_canvas_MB_MM=new TCanvas("track_trues_together_canvas_MB_MM","track_trues_together_canvas_MB_MM",1500,1900); track_trues_together_canvas_MB_MM->Divide(3,3,0.001,0.001); //subt ones //pp tracks_subt_trues_canvas_MB_PP=new TCanvas("track_subt_trues_canvas_MB_PP","track_subt_trues_canvas_MB_PP",1500,1900); tracks_subt_trues_canvas_MB_PP->Divide(3,3,0.001,0.001); //mm tracks_subt_trues_canvas_MB_MM=new TCanvas("track_subt_trues_canvas_MB_MM","track_subt_trues_canvas_MB_MM",1500,1900); tracks_subt_trues_canvas_MB_MM->Divide(3,3,0.001,0.001); for (int ipt=0; iptcd(ipt+1); f1_hSignalD_pp_MC_tof_MB[ipt]->SetStats(0); f1_hSignalD_pp_MC_tof_MB[ipt]->Draw(); f1_hSignalD_pp_MC_trues_tof_MB[ipt]->Draw("same"); linemass->Draw("lsame"); } track_trues_together_canvas_MB_PP->Write(); ///fitted part ofr MB for (int ipt=0; iptcd(ipt+1); f1_hSignalD_pp_MC_tof_MB[ipt]->SetStats(0); f1_hSignalD_pp_MC_tof_MB[ipt]->Draw(); f1_hSignalD_pp_MC_trues_tof_MB[ipt]->Draw("same"); linemass->Draw("lsame"); //fitting pp part f1_subt_hSignalD_pp_MC_tof_MB[ipt]= (TH1D*)f1_hSignalD_pp_MC_tof_MB[ipt]->Clone(Form("track_minus_trues_MC_pp_MB__pt_%d",ipt)); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Sumw2(); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Add(f1_hSignalD_pp_MC_trues_tof_MB[ipt],-1); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->SetStats(0); fit_template_PP_MB[ipt] = new TF1("template_function_MB_PP","gaus(0)+x*[3]+[4]",1.05,1.9);//1.059 1.90 is good fit_template_PP_MB[ipt]->SetParameter(0,5880.405); fit_template_PP_MB[ipt]->SetParLimits(0,0,10000000); fit_template_PP_MB[ipt]->SetParameter(1,1.291424); fit_template_PP_MB[ipt]->SetParLimits(1,0,10.0); fit_template_PP_MB[ipt]->SetParameter(2,0.1108336); fit_template_PP_MB[ipt]->SetParLimits(2,0,1.502835); fit_template_PP_MB[ipt]->SetParameter(3,521.7006); fit_template_PP_MB[ipt]->SetParLimits(3,0,100000); fit_template_PP_MB[ipt]->SetParName(0,"Bg const"); fit_template_PP_MB[ipt]->SetParName(1,"Bg Mean"); fit_template_PP_MB[ipt]->SetParName(2,"Bg #sigma"); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Fit(fit_template_PP_MB[ipt],"R"); fit_rest_PP_MB[ipt]= f1_subt_hSignalD_pp_MC_tof_MB[ipt]->GetFunction("template_function_MB_PP"); fit_rest_PP_MB[ipt]->SetLineColor(kRed); fit_rest_PP_MB[ipt]->SetLineWidth(2); 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=fit_rest_PP_MB[ipt]->GetNDF(); text_MB_PP->AddText(Form("#chi^{2}/NDF = %5.1f/%5.1f",fit_rest_PP_MB[ipt]->GetChisquare(),ndf_PP)); text_MB_PP->AddText(Form("Mean = %5.3f#pm%5.3f",fit_rest_PP_MB[ipt]->GetParameter(1),fit_rest_PP_MB[ipt]->GetParError(1))); text_MB_PP->AddText(Form("#sigma = %5.3f#pm%5.3f",fit_rest_PP_MB[ipt]->GetParameter(2),fit_rest_PP_MB[ipt]->GetParError(2))); fit_rest_PP_MB[ipt]->SetName(Form("template_function_PP_MB_pt_%02d",ipt)); fit_rest_PP_MB[ipt]->Write(); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Write(); mean_PP_MB[ipt]=fit_rest_PP_MB[ipt]->GetParameter(1); mean_error_PP_MB[ipt]=fit_rest_PP_MB[ipt]->GetParError(1); sigma_PP_MB[ipt]=fit_rest_PP_MB[ipt]->GetParameter(2); sigma_error_PP_MB[ipt]=fit_rest_PP_MB[ipt]->GetParError(2); tracks_subt_trues_canvas_MB_PP->cd(ipt+1); f1_subt_hSignalD_pp_MC_tof_MB[ipt]->Draw(); text_MB_PP->Draw("same"); //setting parameters for mean sigma mean_PP[ipt]=fit_rest_PP_MB[ipt]->GetParameter(1); mean_PP_error[ipt]=fit_rest_PP_MB[ipt]->GetParError(1); sigma_PP[ipt]=fit_rest_PP_MB[ipt]->GetParameter(2); sigma_PP_error[ipt]=fit_rest_PP_MB[ipt]->GetParError(2); } tracks_subt_trues_canvas_MB_PP->Write(); //defining histograms TH1D *histo_mean_PP_MB =new TH1D("histo_mean_PP_MB","histo_mean_PP_MB;p_{T}(GeV/c);Mean(GeV/c^{2})",npt,pt); TH1D *histo_sigma_PP_MB =new TH1D("histo_sigma_PP_MB","histo_sigma_PP_MB;p_{T}(GeV/c);Sigma(GeV/c^{2})",npt,pt); TH1D *histo_mean_MM_MB =new TH1D("histo_mean_MM_MB","histo_mean_MM_MB;p_{T}(GeV/c);Mean(GeV/c^{2})",npt,pt); TH1D *histo_sigma_MM_MB =new TH1D("histo_sigma_MM_MB","histo_sigma_MM_MB;p_{T}(GeV/c);Sigma(GeV/c^{2})",npt,pt); for (int ipt=0; iptSetBinContent(ipt+1,mean_PP[ipt]); histo_mean_PP_MB->SetBinError(ipt+1,mean_PP_error[ipt]); histo_sigma_PP_MB->SetBinContent(ipt+1,sigma_PP[ipt]); histo_sigma_PP_MB->SetBinError(ipt+1,sigma_PP_error[ipt]); histo_mean_MM_MB->SetBinContent(ipt+1,mean_MM[ipt]); histo_mean_MM_MB->SetBinError(ipt+1,mean_MM_error[ipt]); histo_sigma_MM_MB->SetBinContent(ipt+1,sigma_MM[ipt]); histo_sigma_MM_MB->SetBinError(ipt+1,sigma_MM_error[ipt]); } ////////// histo_mean_PP_MB->Write(); histo_sigma_PP_MB->Write(); }