void fit1() { TCanvas *c1; TFile fData("data.root"); //data TH1D* hist; fData.GetObject("h5",hist); hist->SetDirectory(0); hist->Draw("hist"); TFile f4He("4He.root"); // TH1D* hist4He; f4He.GetObject("h1",hist4He); hist4He->SetDirectory(0); // hist4He->Draw(); TFile f5He("5He.root"); // TH1D* hist5He; f5He.GetObject("h2",hist5He); hist5He->SetDirectory(0); // hist5He->Draw(); TFile f6He("6He.root"); // TH1D* hist6He; f6He.GetObject("h3",hist6He); hist6He->SetDirectory(0); // hist6He->Draw(); TFile f7He("7He.root"); // TH1D* hist7He; f7He.GetObject("h4",hist7He); hist7He->SetDirectory(0); // hist7He->Draw(); //TFile f8He("8He.root"); // //TH1D* hist8He; //f8He.GetObject("Argon",hist8He); //hist8He->SetDirectory(0); // hist8He->Draw(); TObjArray *mc = new TObjArray(4); mc->Add(hist4He); mc->Add(hist5He); mc->Add(hist6He); mc->Add(hist7He); // mc->Add(hist8He); TFractionFitter* fit = new TFractionFitter(hist,mc); fit->Constrain(0,0.0,1.0); fit->Constrain(1,0.0,1.0); fit->Constrain(2,0.0,1.0); fit->Constrain(3,0.0,1.0); // fit->Constrain(4,0.0,1.0); fit->SetRangeX(1,45); Int_t status = fit->Fit(); std::cout<<"fit status"<< status << std::endl; if (status == 0) { TH1F* result = (TH1F*) fit->GetPlot(); hist->Draw("PE"); result->SetDirectory(0); } }