Here is the macro which produces distributions and I want to write them in root to further read by another root macro but I got a message “is not writable”
using namespace std;
TH1F * Subtract(TH1F *data, TH1F *diboson, TH1F *wjets, TH1F *zjets, TH1F *singleTop);
void makeTrigSF ()
{
vector<string> trigger_name;
vector<string> variables;
//vector<string> variable_xaxis;
variables.push_back("bjet1Pt");
trigger_name.push_back("bjets_gt_2_Mu");
trigger_name.push_back("1Mu_and_1Mu3Jet_bjets_gt_2");
// trigger_name.push_back("bjets_gt_2_Ele");
// trigger_name.push_back("1Ele_and_1Ele3Jet_bjets_gt_2");
vector<string> region;
region.push_back("SR");
region.push_back("mBBcr");
TH1F *subtracted[2];
TH1F *ttbar[2][2];
TH1F *data[2];
TH1F *wjets[2];
TH1F *diboson[2];
TH1F *zjets[2];
TH1F *singleTop[2];
TFile *file = new TFile("/storage/local/home/atlas/msohail/trigger_analysis/hist-tot_muon_31.root");
//TFile *file = new TFile("/storage/local/home/atlas/msohail/trigger_analysis/hist-tot_ele_31.root");
// TFile *file = new TFile("hist-tot_26.root");
gStyle->SetOptStat(kFALSE);
for(unsigned int k=0; k<variables.size(); k++) {
for(unsigned int i=0; i<trigger_name.size(); i++) {
for(unsigned int k_region=0; k_region<2; k_region++) {
//for(unsigned int j=0; j<variable_xaxis(); j++)
cout << "Wv221_SR_PREtrigger_"+trigger_name[i]+"_"+variables[k] << endl;
ttbar[k_region][i] = (TH1F *) file->Get(("ttbar_"+region[k_region]+"_PREtrigger_"+trigger_name[i]+"_"+variables[k]).c_str());
diboson[k_region] = (TH1F *) file->Get(("Dibosonsv221_"+region[k_region]+"_PREtrigger_"+trigger_name[i]+"_"+variables[k]).c_str());
wjets[k_region] = (TH1F *) file->Get(("Wv221_"+region[k_region]+"_PREtrigger_"+trigger_name[i]+"_"+variables[k]).c_str());
data[k_region] = (TH1F *) file->Get(("data_"+region[k_region]+"_PREtrigger_"+trigger_name[i]+"_"+variables[k]).c_str());
zjets[k_region] = (TH1F *) file->Get(("Zv221_"+region[k_region]+"_PREtrigger_"+trigger_name[i]+"_"+variables[k]).c_str());
singleTop[k_region] = (TH1F *) file->Get(("SingleTop_"+region[k_region]+"_PREtrigger_"+trigger_name[i]+"_"+variables[k]).c_str());
}
if(ttbar[0][i] && ttbar[1][i]) ttbar[0][i]->Add(ttbar[1][i]);
if(data[0] && data[1] && wjets[0] && wjets[1] && diboson[0] && diboson[1] && zjets[0] && zjets[1] && singleTop[0] && singleTop[1]) {
data[0]->Add(data[1]);
diboson[0]->Add(diboson[1]);
wjets[0]->Add(wjets[1]);
zjets[0]->Add(zjets[1]);
singleTop[0]->Add(singleTop[1]);
subtracted[i] = Subtract(data[0], diboson[0], wjets[0], zjets[0], singleTop[0]);
} else {
if(!data) cout << "data histogram not found" << endl;
if(!diboson) cout << "diboson histogram not found" << endl;
if(!wjets) cout << "wjets histogram not found" << endl;
if(!zjets) cout << "zjets histogram not found" << endl;
if(!singleTop) cout << "singleTop histogram not found" << endl;
}
}
TH1F *lep3jet_trig_eff = subtracted[1];
lep3jet_trig_eff->Divide(subtracted[0]);
TCanvas *canvas = new TCanvas();
lep3jet_trig_eff->Draw();
//lep3jet_trig_eff->SetTitle("");
lep3jet_trig_eff->SetLineColor(kRed);
lep3jet_trig_eff->SetLineWidth(5);
TLegend *mylegend1 = new TLegend(.7,.75,.89,.89);
//mylegend1->SetFillColor(kRed);
mylegend1->SetBorderSize(0);
mylegend1->SetTextSize(0.030);
mylegend1->AddEntry(lep3jet_trig_eff,"1Lep+3Jets_Trigger_Efficiency","l");
mylegend1->Draw("same");
//cout <<"the name of k varabile is " << variables.at(k)<<endl;
lep3jet_trig_eff->GetYaxis()->SetRangeUser(0.,1.2);
TString mystring = variables.at(k);
lep3jet_trig_eff->GetXaxis()->SetTitle(mystring);
//lep3jet_trig_eff->GetXaxis()->SetTitle("Lepton Pt");
lep3jet_trig_eff->GetYaxis()->SetTitle("Efficiency");
// doing MC
TH1F *lep3jet_MC_trig_eff = (TH1F *) ttbar[0][1]->Clone("MC_trig_eff");
lep3jet_MC_trig_eff->Divide(ttbar[0][0]);
lep3jet_MC_trig_eff->Draw("SAME");
lep3jet_MC_trig_eff->SetLineColor(kGreen);
lep3jet_MC_trig_eff->SetLineWidth(5);
TLegend *mylegend2 = new TLegend(.7,.75,.89,.89);
//mylegend2->SetFillColor(kGreen);
mylegend2->SetBorderSize(0);
mylegend2->SetTextSize(0.030);
mylegend2->AddEntry(lep3jet_MC_trig_eff,"MC_Trigger_Efficiency","l");
mylegend2->Draw("SAME");
TH1F *SF = (TH1F *) lep3jet_trig_eff->Clone("SF_trig");
SF->Divide(lep3jet_MC_trig_eff);
SF->Write();
SF->SetLineColor(kYellow);
SF->Draw("SAME");
SF->SetLineWidth(5);
TLegend *mylegend3 = new TLegend(.7,.75,.89,.89);
//mylegend3->SetFillColor(kBlue);
mylegend3->SetBorderSize(0);
mylegend3->SetTextSize(0.030);
mylegend3->AddEntry(SF,"Trigger_Scale_Factor","l");
mylegend3->Draw("SAME");
//TLatex *tex = new TLatex(1,1,"#splitline{#bf{#it{ATLAS}} Work In Progress}{#sqrt{s} = 13 TeV, 15.2 fb^{-1}}");
TLatex *tex = new TLatex(1,1,"#splitline{#bf{#it{Data}} }{#sqrt{s} = 13 TeV, 15.2 fb^{-1}}");
tex->SetTextFont(42);
tex->Draw();
canvas->Modified();
}
}
//lep3jet_trig_eff->SetTitle("")
//}
TH1F * Subtract(TH1F *data, TH1F *diboson, TH1F *wjets, TH1F *zjets, TH1F *singleTop) {
TH1F *subtracted = (TH1F *) data->Clone("data_subtracted");
subtracted->Add(diboson,-1.);
subtracted->Add(wjets,-1.);
subtracted->Add(zjets,-1);
subtracted->Add(singleTop,-1);
return subtracted;
}
ROOT Version: Not Provided
Platform: Not Provided
Compiler: Not Provided