TH1D *combine(TH1D *pure, TH1D *injected) { TH1D *eff=new TH1D(*pure); eff->SetLineColor(2); eff->Add(injected); eff->Scale(0.5); for (Int_t i=1; i<16; i++) { Double_t c=pure->GetBinContent(i); Double_t e=pure->GetBinError(i); eff->SetBinContent(i,c); eff->SetBinError(i,e); } for (Int_t i=25; i<=eff->GetNbinsX(); i++) { Double_t c=injected->GetBinContent(i); Double_t e=injected->GetBinError(i); eff->SetBinContent(i,c); eff->SetBinError(i,e); } return eff; } void comb_eff(const Char_t *centr) { TFile *non=TFile::Open("SpectraV0CutVariations_nonInj.root"); TFile *all=TFile::Open("SpectraV0CutVariations_all.root"); TFile *file=TFile::Open("comb_eff.root","update"); TString name; TH1D *hnon, *hall, *comb, *r; TCanvas *c=new TCanvas(); c->Divide(3,2); non->cd(); name="eff_K0s_nonInj_"; name+=centr; hnon=(TH1D*)gDirectory->Get(name.Data()); all->cd(); name="eff_K0s_"; name+=centr; hall=(TH1D*)gDirectory->Get(name.Data()); comb=combine(hnon,hall); name="eff_K0s_comb_"; name+=centr; comb->SetName(name.Data()); c->cd(1); hall->Draw(); comb->Draw("same"); c->cd(4); gPad->SetGridx(); gPad->SetGridy(); r=new TH1D(*hall); r->Divide(comb); r->SetMinimum(0.8); r->SetMaximum(1.2); r->Draw(); file->cd(); comb->Write(); non->cd(); name="eff_Lambda_nonInj_"; name+=centr; hnon=(TH1D*)gDirectory->Get(name.Data()); all->cd(); name="eff_Lambda_"; name+=centr; hall=(TH1D*)gDirectory->Get(name.Data()); comb=combine(hnon,hall); name="eff_Lambda_comb_"; name+=centr; comb->SetName(name.Data()); c->cd(2); hall->Draw(); comb->Draw("same"); c->cd(5); gPad->SetGridx(); gPad->SetGridy(); r=new TH1D(*hall); r->Divide(comb); r->SetMinimum(0.8); r->SetMaximum(1.2); r->Draw(); file->cd(); comb->Write(); non->cd(); name="eff_LambdaBar_nonInj_"; name+=centr; hnon=(TH1D*)gDirectory->Get(name.Data()); all->cd(); name="eff_LambdaBar_"; name+=centr; hall=(TH1D*)gDirectory->Get(name.Data()); comb=combine(hnon,hall); name="eff_LambdaBar_comb_"; name+=centr; comb->SetName(name.Data()); c->cd(3); hall->Draw(); comb->Draw("same"); c->cd(6); gPad->SetGridx(); gPad->SetGridy(); r=new TH1D(*hall); r->Divide(comb); r->SetMinimum(0.8); r->SetMaximum(1.2); r->Draw(); file->cd(); comb->Write(); file->Close(); } void Loop() { const Char_t *cent[]={"0005","0010","1020","2040","4060","6080","8090"}; Int_t nCent=sizeof(cent)/sizeof(const Char_t *); for (Int_t i=0; i<nCent; i++) { cout<<cent[i]<<endl; comb_eff(cent[i]); } }