ROOT logo
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]);
  }
}
 comb_eff.C:1
 comb_eff.C:2
 comb_eff.C:3
 comb_eff.C:4
 comb_eff.C:5
 comb_eff.C:6
 comb_eff.C:7
 comb_eff.C:8
 comb_eff.C:9
 comb_eff.C:10
 comb_eff.C:11
 comb_eff.C:12
 comb_eff.C:13
 comb_eff.C:14
 comb_eff.C:15
 comb_eff.C:16
 comb_eff.C:17
 comb_eff.C:18
 comb_eff.C:19
 comb_eff.C:20
 comb_eff.C:21
 comb_eff.C:22
 comb_eff.C:23
 comb_eff.C:24
 comb_eff.C:25
 comb_eff.C:26
 comb_eff.C:27
 comb_eff.C:28
 comb_eff.C:29
 comb_eff.C:30
 comb_eff.C:31
 comb_eff.C:32
 comb_eff.C:33
 comb_eff.C:34
 comb_eff.C:35
 comb_eff.C:36
 comb_eff.C:37
 comb_eff.C:38
 comb_eff.C:39
 comb_eff.C:40
 comb_eff.C:41
 comb_eff.C:42
 comb_eff.C:43
 comb_eff.C:44
 comb_eff.C:45
 comb_eff.C:46
 comb_eff.C:47
 comb_eff.C:48
 comb_eff.C:49
 comb_eff.C:50
 comb_eff.C:51
 comb_eff.C:52
 comb_eff.C:53
 comb_eff.C:54
 comb_eff.C:55
 comb_eff.C:56
 comb_eff.C:57
 comb_eff.C:58
 comb_eff.C:59
 comb_eff.C:60
 comb_eff.C:61
 comb_eff.C:62
 comb_eff.C:63
 comb_eff.C:64
 comb_eff.C:65
 comb_eff.C:66
 comb_eff.C:67
 comb_eff.C:68
 comb_eff.C:69
 comb_eff.C:70
 comb_eff.C:71
 comb_eff.C:72
 comb_eff.C:73
 comb_eff.C:74
 comb_eff.C:75
 comb_eff.C:76
 comb_eff.C:77
 comb_eff.C:78
 comb_eff.C:79
 comb_eff.C:80
 comb_eff.C:81
 comb_eff.C:82
 comb_eff.C:83
 comb_eff.C:84
 comb_eff.C:85
 comb_eff.C:86
 comb_eff.C:87
 comb_eff.C:88
 comb_eff.C:89
 comb_eff.C:90
 comb_eff.C:91
 comb_eff.C:92
 comb_eff.C:93
 comb_eff.C:94