|
|
#include "../GlobalFunctions.hh"
//////////////////////////////////////////////////////////////////////
/// PiZeroResolution()
/// #Check pi0 resolution with/without using DTF
///
/// AngularEff() #todo
/// # Check angular efficiency based on K* pT cut
///
using namespace std; string figureFormat = "eps";
std::array<string, 5> ParticlesPiZero {"B", //"muplus",
//"muminus",
"Kstar", "pi0", "gamma1", "gamma2" }; std::array<string, 3> ParticlesKShort {"B", //"muplus",
//"muminus",
"Kstar", "Kshort" }; std::array<string, 3> Variables{ "M", "PT", "ETA" }; std::array<string,5> ExtraVariables{ "ThetaK", "ThetaL", "Phi", "PVZ", "OpenAngle", }; std::array<string, 2> DTFoptions{//"DTF_PDG",
//"PDG",
"DTF", "" };
string particleLatex(string particle){ //one doesn't have to think much when making labels and titles
if (particle == "B") return ("B^{+}"); if (particle == "B+") return ("B^{+}"); if (particle == "Bplus") return ("B^{+}"); if (particle == "B_plus") return ("B^{+}"); if (particle == "Kstar") return ("K^{*+}"); if (particle == "K_star") return ("K^{*+}"); if (particle == "Kplus") return ("K^{+}"); if (particle == "K+") return ("K^{+}"); if (particle == "K_plus") return ("K^{+}"); if (particle == "Kshort") return ("K_{s}"); if (particle == "K_short") return ("K_{s}"); if (particle == "piplus") return ("#pi^{+}"); if (particle == "pi_plus") return ("#pi^{+}"); if (particle == "pizero") return ("#pi^{0}"); if (particle == "pi_zero") return ("#pi^{0}"); if (particle == "pi0") return ("#pi^{0}"); if (particle == "mu") return ("#mu"); if (particle == "mu_plus") return ("#mu^{+}"); if (particle == "muplus") return ("#mu^{+}"); if (particle == "mu_minus") return ("#mu^{-}"); if (particle == "muminus") return ("#mu^{-}"); if (particle == "gamma") return ("#gamma"); if (particle == "gamma") return ("#gamma"); if (particle=="ThetaK") return ("#theta_{K}"); //just easier to put it here
if (particle=="ThetaL") return ("#theta_{L}");//just easier to put it here
if (particle=="Phi") return ("#Phi");//just easier to put it here
cout << "Particle "<< particle <<" not in the list!" << endl; return ""; } string variableLatex(string var){ if (var=="PT") return ("p_{T}"); if (var=="PX") return ("p_{X}"); if (var=="PY") return ("p_{Y}"); if (var=="PZ") return ("p_{Z}"); if (var=="ETA") return ("#eta"); if (var=="M") return ("m"); if (var=="PVZ") return ("PVZ [mm]"); if (var=="KstPt") return ("K* p_{T} [MeV]"); if (var=="ThetaK") return ("#theta_{K}"); if (var=="ThetaL") return ("#theta_{L}"); if (var=="Phi") return ("#Phi"); if (var=="OpenAngle") return ("Open angle (#gamma#gamma angle)"); cout << "Variable "<< var <<" is not in the list!" << endl; return ""; } string optionLatex(string opt){ if (opt=="DTF_PDG") return ("#splitline{info from DTF}{with masses fixed to PDG}"); if (opt=="DTF") return ("info from DTF"); if (opt=="TRUE") return ("TRUE info"); if (opt=="PDG") return ("#splitline{info from TupleTool}{with masses fixed to PDG}"); if (opt=="") return ("info from TupleTool"); if (opt=="PULL") return ("pull (TupleTool)"); if (opt=="PULL_DTF") return ("pull (DTF)"); if (opt=="RES_SYS") return ("Systematics #pm resolution (TupleTool)"); if (opt=="RES_SYS_DTF") return ("Systematics #pm resolution (DTF)"); if (opt=="RES") return ("Resolution (TupleTool)"); if (opt=="RES_DTF") return ("Resolution (DTF)"); if (opt=="SYS") return ("Systematics (TupleTool)"); if (opt=="SYS_DTF") return ("Systematics (DTF)"); cout << "Option " << opt << " not in the list!" << endl; return ""; } string histName(string particle, string var, string opt){ return (variableLatex(var)+"("+ particleLatex(particle)+ "):" + optionLatex(opt)); }
void init_1D(TH1 *&hist, string particle, string var, string opt, string opt_plot, string YaxisTitle, int bins, double low_edge, double up_edge){
string tmpName = variableLatex(var) + "{"+ particleLatex(particle) +"}" + (opt_plot == "" ? "" : ": " + opt_plot); string tmpTitle = "h_" + particle + "_" + var +"_" + opt; hist = new TH1D(tmpTitle.c_str(), histName(particle, var, opt).c_str(), bins, low_edge, up_edge); hist->GetXaxis()->SetTitle(tmpName.c_str()); hist->GetYaxis()->SetTitle(YaxisTitle.c_str()); return; } void init_1D(TH1 *&hist, string particle, string var, string opt, string opt_plot, string YaxisTitle, int bins, const double *array){
string tmpName = variableLatex(var) + "{"+ particleLatex(particle) +"}" + (opt_plot == "" ? "" : ": " + opt_plot); string tmpTitle = "h_" + particle + "_" + var + "_" +opt; hist = new TH1D(tmpTitle.c_str(), histName(particle, var, opt).c_str(),bins, array); hist->GetXaxis()->SetTitle(tmpName.c_str()); hist->GetYaxis()->SetTitle(YaxisTitle.c_str()); return; }
void init_2D(TH2 *&hist, string particle, string varX, string varY, string opt, string YaxisTitle, string ZaxisTitle, int bins, double low_edge, double up_edge){
string tmpXName = variableLatex(varX) + "{"+ particleLatex(particle) +"}"; string tmpTitle = "h2_" + particle + "_" + varX +"_" + varY + "_" + opt; hist = new TH2D(tmpTitle.c_str(), histName(particle, varX, opt).c_str(),bins, low_edge, up_edge, bins, low_edge, up_edge); hist->GetXaxis()->SetTitle(tmpXName.c_str()); YaxisTitle = YaxisTitle + variableLatex(varY) + "{"+ particleLatex(particle) +"}"; hist->GetYaxis()->SetTitle(YaxisTitle.c_str()); hist->GetZaxis()->SetTitle(ZaxisTitle.c_str()); return; } void init_2D(TH2 *&hist, string particle, string varX, string varY, string opt, string YaxisTitle, string ZaxisTitle, int Xbins, double Xlow_edge, double Xup_edge, int Ybins, double Ylow_edge, double Yup_edge){
string tmpName = variableLatex(varX) + "{"+ particleLatex(particle) +"}"; string tmpTitle = "h2_" + particle + "_" + varX + "_" + varY + "_" + opt; hist = new TH2D(tmpTitle.c_str(), histName(particle, varX, opt).c_str(),Xbins, Xlow_edge, Xup_edge, Ybins, Ylow_edge, Yup_edge); hist->GetXaxis()->SetTitle(tmpName.c_str()); YaxisTitle = YaxisTitle + variableLatex(varY) + "{"+ particleLatex(particle) +"}"; hist->GetYaxis()->SetTitle(YaxisTitle.c_str()); hist->GetZaxis()->SetTitle(ZaxisTitle.c_str()); return; } void init_2D(TH2 *&hist, string particle, string varX, string varY, string opt, string YaxisTitle, string ZaxisTitle, int bins, const double *array){
string tmpName = variableLatex(varX) + "{"+ particleLatex(particle) +"}"; string tmpTitle = "h2_" + particle + "_" + varX + "_" +varY + "_" + opt; hist = new TH2D(tmpTitle.c_str(), histName(particle, varX, opt).c_str(),bins, array, bins, array); hist->GetXaxis()->SetTitle(tmpName.c_str()); YaxisTitle = YaxisTitle + variableLatex(varY) + "{"+ particleLatex(particle) +"}"; hist->GetYaxis()->SetTitle(YaxisTitle.c_str()); hist->GetZaxis()->SetTitle(ZaxisTitle.c_str()); return; } void init_2D(TH2 *&hist, string particle, string varX, string varY, string opt, string YaxisTitle, string ZaxisTitle, int Xbins, double *Xarray, int Ybins, double *Yarray){
string tmpName = variableLatex(varX) + "{"+ particleLatex(particle) +"}"; string tmpTitle = "h2_" + particle + "_" + varX+ "_" +varY + "_" + opt; hist = new TH2D(tmpTitle.c_str(), histName(particle, varX, opt).c_str(),Xbins, Xarray, Ybins, Yarray); hist->GetXaxis()->SetTitle(tmpName.c_str()); YaxisTitle = YaxisTitle + variableLatex(varY) + "{"+ particleLatex(particle) +"}"; hist->GetYaxis()->SetTitle(YaxisTitle.c_str()); hist->GetZaxis()->SetTitle(ZaxisTitle.c_str()); return; }
void designCanvas(TCanvas* canvas){
canvas->SetRightMargin(0.04); canvas->SetTopMargin(0.08); canvas->SetLeftMargin(0.14); canvas->SetBottomMargin(0.12); }
void designCanvas2D(TCanvas* canvas){ canvas->SetRightMargin(0.2); canvas->SetTopMargin(0.08); canvas->SetLeftMargin(0.12); canvas->SetBottomMargin(0.1); } void designPlots(TH1D *hist, int color){ hist->SetLineWidth(2); hist->SetLineColor(color); hist->GetYaxis()->SetTitleOffset(1.7); hist->GetXaxis()->SetTitleOffset(1.0); hist->SetTitle(""); }
void designLegend(TLegend *leg, string legTitle, TH1D *hist, string opt){ leg->SetTextSize(0.03); leg->SetHeader(legTitle.c_str()); leg->AddEntry(hist,optionLatex(opt).c_str(),"l"); }
string output_path(string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false){ if(Kst2Kpluspi0Resolved){ if(!MC){ return Form("%s/resolution/data/%s%s/",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str()); } else{ if(ReferenceChannel){ return Form("%s/resolution/MC/RefKplusPi0/%s%s/",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str()); } else if(PHSP){ return Form("%s/resolution/PHSP/KplusPi0/%s%s/",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str()); } else{ return Form("%s/resolution/MC/KplusPi0/%s%s/",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str()); } } } }
void design_pull(TH1 *pull, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ string selection = preselected? "Preselected" : "Stripped"; string name = output_path(year, magnet, MC, ReferenceChannel, PHSP) + pull->GetName() + "_" + selection;
TCanvas *canvas = new TCanvas(Form("c_%s",pull->GetName()), "", 10,10,600,600); designCanvas(canvas); canvas->cd(); //add two 3-sigma lines:
TLine * lzero = new TLine(pull->GetXaxis()->GetXmin(), 0.,pull->GetXaxis()->GetXmin(), 0.); lzero->SetLineStyle(5); lzero->SetLineWidth(gStyle->GetLineWidth());
pull->GetYaxis()->SetRangeUser(-1,1); pull->GetYaxis()->SetTitleOffset(1.4); pull->GetXaxis()->SetTitleOffset(1.6); pull->SetMarkerSize(1); pull->SetMarkerStyle(47); pull->SetMarkerColor(kCyan+2); pull->Draw("P"); lzero->Draw("SAME"); canvas->SaveAs((name+ (truthMatched ? "_TM" : "")+".eps").c_str(),"eps"); canvas->Clear(); delete canvas;
} void design_fit(TH1 *hist, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ string selection = preselected? "Preselected" : "Stripped"; string name = output_path(year, magnet, MC, ReferenceChannel, PHSP) + hist->GetName() + "_" + selection; TCanvas *canvas = new TCanvas(Form("c_%s",hist->GetName()), "", 10,10,600,600); designCanvas(canvas); canvas->cd(); if (name.find("Theta") != string::npos) { hist->GetYaxis()->SetRangeUser(-0.25,0.25); hist->GetYaxis()->SetTitleOffset(1.6); } else if (name.find("Phi") != string::npos) { hist->GetYaxis()->SetTitleOffset(1.6); hist->GetYaxis()->SetRangeUser(-0.25,0.25); } else{ hist->GetYaxis()->SetTitleOffset(1.6); hist->GetYaxis()->SetRangeUser(-0.25,0.25); } hist->GetXaxis()->SetTitleOffset(1.4); hist->SetMarkerSize(1); hist->SetMarkerStyle(47); hist->SetMarkerColor(kCyan+2); hist->Draw("PE"); canvas->SaveAs((name+ (truthMatched ? "_TM" : "")+".eps").c_str(),"eps"); canvas->Clear(); delete canvas; } void design_resolution(TH1 *res, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ string name = res->GetName();
TCanvas *canvas = new TCanvas(Form("c_%s",res->GetName()), "", 10,10,600,600); designCanvas(canvas); canvas->cd(); if (name.find("Theta") != string::npos) { res->GetYaxis()->SetTitleOffset(1.6); res->GetYaxis()->SetRangeUser(0.0,0.05); } else if (name.find("Kplus") != string::npos) { res->GetYaxis()->SetTitleOffset(1.6); res->GetYaxis()->SetRangeUser(0.0,0.3); } else if (name.find("Phi") != string::npos) { res->GetYaxis()->SetTitleOffset(1.6); res->GetYaxis()->SetRangeUser(0.0,0.05); } else{ res->GetYaxis()->SetTitleOffset(1.6); res->GetYaxis()->SetRangeUser(0.0,0.05); } res->GetXaxis()->SetTitleOffset(1.4); res->SetMarkerSize(1); res->SetMarkerStyle(47); res->SetMarkerColor(kCyan+2); res->Draw("PE"); name = output_path(year, magnet, MC, ReferenceChannel, PHSP) + name + (preselected ? "_Preselected" : "_Stripped"); canvas->SaveAs((name+ (truthMatched ? "_TM" : "")+".eps").c_str(),"eps"); canvas->Clear(); delete canvas; } void design_systematics(TH1 *sys, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ string selection = preselected? "Preselected" : "Stripped"; string name = output_path(year, magnet, MC, ReferenceChannel, PHSP) + sys->GetName() + "_" + selection; TCanvas *canvas = new TCanvas(Form("c_%s",sys->GetName()), "", 10,10,600,600); designCanvas(canvas); canvas->cd(); if (name.find("Theta") != string::npos) { sys->GetYaxis()->SetRangeUser(-0.05,0.05); sys->GetYaxis()->SetTitleOffset(1.6); } else if (name.find("Phi") != string::npos) { sys->GetYaxis()->SetTitleOffset(1.6); sys->GetYaxis()->SetRangeUser(-0.05,0.05); } else{ sys->GetYaxis()->SetTitleOffset(1.6); sys->GetYaxis()->SetRangeUser(-0.05,0.05); } sys->GetXaxis()->SetTitleOffset(1.4); sys->SetMarkerSize(1); sys->SetMarkerStyle(47); sys->SetMarkerColor(kCyan+2); sys->Draw("PE"); canvas->SaveAs((name+ (truthMatched ? "_TM" : "")+".eps").c_str(),"eps"); canvas->Clear(); delete canvas; } void design_comparison(TH1 *rec, TH1 *trueMC, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ string selection = preselected? "Preselected" : "Stripped"; string name = output_path(year, magnet, MC, ReferenceChannel, PHSP) + rec->GetName() + "_" + selection; TCanvas *canvas = new TCanvas(Form("c_%s",rec->GetName()), "", 10,10,600,600); designCanvas(canvas); canvas->cd(); //rec->GetYaxis()->SetRangeUser(-0.25,0.25);
rec->GetYaxis()->SetTitleOffset(1.3); rec->GetXaxis()->SetTitleOffset(1.4); rec->SetLineColor(1); rec->SetLineWidth(3); //MC->GetYaxis()->SetRangeUser(-0.25,0.25);
trueMC->GetYaxis()->SetTitleOffset(1.3); trueMC->GetXaxis()->SetTitleOffset(1.4); trueMC->SetLineColor(2); trueMC->SetLineWidth(3);
trueMC->Draw(""); rec->Draw("SAME");
canvas->SaveAs((name + "_comparison" + (truthMatched ? "_TM" : "")+".eps").c_str(),"eps"); canvas->Clear(); delete canvas; } void design_corr(TH2 *corr, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ string selection = preselected? "Preselected" : "Stripped"; string name = output_path(year, magnet, MC, ReferenceChannel, PHSP) + corr->GetName() + "_" + selection; TCanvas *canvas = new TCanvas(Form("c_%s",corr->GetName()), "", 10,10,700,600); designCanvas2D(canvas); canvas->cd(); corr->GetYaxis()->SetTitleOffset(1.5); corr->GetXaxis()->SetTitleOffset(1.0); corr->GetZaxis()->SetTitleOffset(1.25); corr->Draw("COLZ"); canvas->SaveAs((name+ (truthMatched ? "_TM" : "")+".eps").c_str(),"eps"); canvas->Clear(); delete canvas;
} void design_diff(TH2 *diff, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ string selection = preselected? "Preselected" : "Stripped"; string name = output_path(year, magnet, MC, ReferenceChannel, PHSP) + diff->GetName() + "_" + selection; TCanvas *canvas = new TCanvas(Form("c_%s",diff->GetName()), "", 10,10,700,600); designCanvas2D(canvas); canvas->cd(); if (name.find("Theta") != string::npos) { diff->GetYaxis()->SetRangeUser(-0.5,0.5); } if (name.find("Phi") != string::npos) { diff->GetYaxis()->SetRangeUser(-0.5,0.5); } diff->GetYaxis()->SetTitleOffset(1.5); diff->GetXaxis()->SetTitleOffset(1.0); diff->GetZaxis()->SetTitleOffset(1.25); diff->Draw("COLZ"); canvas->SaveAs((name+ (truthMatched ? "_TM" : "")+".eps").c_str(),"eps"); canvas->Clear(); delete canvas;
}
int ResPresel(std::string year = "2011", std::string magnet = "down", bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool preselected = true, bool truthMatched = true) { //no point in keepeng the MC option, but it doesn't hurt neither
MC = true; TFile* output = 0; TChain *tree; if (!(MC || ReferenceChannel || PHSP)) truthMatched = false; if (!preselected){ //Kst2Kpluspi0Resolved case
if(Kst2Kpluspi0Resolved){ if(!MC){ tree=new TChain("b2KstKpi0mumuResolvedTuple/DecayTree"); if(smallSample) tree->Add(Form("%s/data/%s%s/*B2Kstmumu*13.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else{ tree->Add(Form("%s/data/%s%s/*.root",path_to_data.c_str(),year.c_str(),magnet.c_str())); std::cout << "Adding " << Form("%s/data/%s%s/*B2Kstmumu*.root",path_to_data.c_str(),year.c_str(),magnet.c_str()) << endl; } } else{ tree=new TChain("b2KstKpi0mumuResolvedTuple/DecayTree"); if(ReferenceChannel){ if(smallSample) tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/*B2KstJpsi*1.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/*B2KstJpsi*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } else if(PHSP){ if(smallSample) tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/*B2Kstmumu*1.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/*B2Kstmumu*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } else{ if(smallSample) tree->Add(Form("%s/data/MC/KplusPi0/%s%s/*B2Kstmumu*1.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/MC/KplusPi0/%s%s/*B2Kstmumu*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } } }
//Kst2Kpluspi0Merged case
if(Kst2Kpluspi0Merged){ tree=new TChain("b2KstKpi0mumuMergedTuple/DecayTree"); if(!MC){ if(smallSample) tree->Add(Form("%s/data/%s%s/*B2Kstmumu*13.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/%s%s/*B2Kstmumu*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } else{ if(smallSample) tree->Add(Form("%s/data/MC/KplusPi0/%s%s/*B2Kstmumu*1.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/MC/KplusPi0/%s%s/*B2Kstmumu*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } }
//Kst2Kspiplus case
if(Kst2Kspiplus){ if(!MC){ tree=new TChain("b2KstKs0pimumu_Tuple/DecayTree"); if(smallSample) tree->Add(Form("%s/data/%s%s/*B2Kstmumu*23.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/%s%s/*B2Kstmumu*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } else{ tree=new TChain("b2KstKs0pimumu_Tuple/DecayTree"); if(ReferenceChannel){ if(smallSample) tree->Add(Form("%s/data/MC/RefKshortPiplus/%s%s/*B2KstJpsi*13.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/MC/RefKshortPiplus/%s%s/*B2KstJpsi*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } else if(PHSP){ if(smallSample) tree->Add(Form("%s/data/PHSP/KshortPiplus/%s%s/*B2Kstmumu*1.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/PHSP/KshortPiplus/%s%s/*B2Kstmumu*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } else{ if(smallSample) tree->Add(Form("%s/data/MC/KshortPiplus/%s%s/*B2Kstmumu*1.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); else tree->Add(Form("%s/data/MC/KshortPiplus/%s%s/*B2Kstmumu*.root",path_to_data.c_str(), year.c_str(),magnet.c_str())); } } }
} else{ //preselected
string name = (truthMatched ? "DecayTreeTruthMatched" : "DecayTree"); tree=new TChain(name.c_str()); // Kst2Kpluspi0Resolved case
if(Kst2Kpluspi0Resolved){ if(!MC){ tree->Add(Form("%s/data/%s%s/%s%s_pi0Resolved.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); cout << Form("%s/data/%s%s/%s%s_pi0Resolved.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str()) << endl; } else{ if(ReferenceChannel){ tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Resolved.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else if(PHSP){ tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Resolved.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else{ tree->Add(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Resolved.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } } } // Kst2Kpluspi0Merged case
if(Kst2Kpluspi0Merged){ if(!MC){ tree->Add(Form("%s/data/%s%s/%s%s_pi0Merged.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else{ if(ReferenceChannel){ tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Merged.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else if(PHSP){ tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Merged.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else{ tree->Add(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Mergedroot",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } } } // Kst2Kspiplus case
if(Kst2Kspiplus){ if(!MC){ tree->Add(Form("%s/data/%s%s/%s%s_piplus.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else{ if(ReferenceChannel){ tree->Add(Form("%s/data/MC/RefKshortPiplus/%s%s/%s%s_piplus.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else if(PHSP){ tree->Add(Form("%s/data/PHSP/KshortPiplus/%s%s/%s%s_piplus.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } else{ tree->Add(Form("%s/data/MC/KshortPiplus/%s%s/%s%s_piplus.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str())); } } } }
int N = tree->GetEntries();
if(N == 0){ std::cout << "[ERROR]\t\tNo events found!" << std::endl; return 0; }
/////////////////////
// Detector values //
/////////////////////
TLorentzVector LorVec_B_plus; TLorentzVector LorVec_K_star_plus; TLorentzVector LorVec_K_plus; TLorentzVector LorVec_pi_zero_merged; TLorentzVector LorVec_pi_zero_resolved; TLorentzVector LorVec_K_short; TLorentzVector LorVec_pi_plus; TLorentzVector LorVec_KS_pi_plus; TLorentzVector LorVec_KS_pi_minus; TLorentzVector LorVec_mu_minus; TLorentzVector LorVec_mu_plus; TLorentzVector LorVec_gamma1; TLorentzVector LorVec_gamma2; TLorentzVector LorVec_DiGamma;
//potentially misIDed particles:
TLorentzVector LorVec_pi_plus_MisIDed; TLorentzVector LorVec_mu_plus_MisIDed; TLorentzVector LorVec_B_plus_From_DoubleMisIDed; TLorentzVector LorVec_Jpsi_From_DoubleMisIDed; TLorentzVector LorVec_K_star_plus_From_DoubleMisIDed;
//recombined particles:
TLorentzVector LorVec_DiMuon; TLorentzVector LorVec_KaonPion; TLorentzVector LorVec_ReconB; TLorentzVector LorVec_ReconBPiZero; TLorentzVector LorVec_KshortMuMu; TLorentzVector LorVec_KplusMuMu;
//Other variables:
Double_t OpenAngle;
/////////////////////
// DTF values //
/////////////////////
TLorentzVector LorVec_DTF_B_plus; TLorentzVector LorVec_DTF_K_star_plus; TLorentzVector LorVec_DTF_K_plus; TLorentzVector LorVec_DTF_pi_zero_merged; TLorentzVector LorVec_DTF_pi_zero_resolved; TLorentzVector LorVec_DTF_K_short; TLorentzVector LorVec_DTF_pi_plus; TLorentzVector LorVec_DTF_KS_pi_plus; TLorentzVector LorVec_DTF_KS_pi_minus; TLorentzVector LorVec_DTF_mu_minus; TLorentzVector LorVec_DTF_mu_plus; TLorentzVector LorVec_DTF_gamma1; TLorentzVector LorVec_DTF_gamma2; TLorentzVector LorVec_DTF_DiGamma;
//potentially misIDed particles:
TLorentzVector LorVec_DTF_pi_plus_MisIDed; TLorentzVector LorVec_DTF_mu_plus_MisIDed; TLorentzVector LorVec_DTF_B_plus_From_DoubleMisIDed; TLorentzVector LorVec_DTF_Jpsi_From_DoubleMisIDed; TLorentzVector LorVec_DTF_K_star_plus_From_DoubleMisIDed;
//recombined particles:
TLorentzVector LorVec_DTF_DiMuon; TLorentzVector LorVec_DTF_KaonPion; TLorentzVector LorVec_DTF_ReconB; TLorentzVector LorVec_DTF_ReconBPiZero; TLorentzVector LorVec_DTF_KshortMuMu; TLorentzVector LorVec_DTF_KplusMuMu;
//Other variables:
Double_t OpenAngle_DTF;
/////////////////////
// TRUE values //
/////////////////////
TLorentzVector LorVec_TRUE_B_plus; TLorentzVector LorVec_TRUE_K_star_plus; TLorentzVector LorVec_TRUE_K_plus; TLorentzVector LorVec_TRUE_pi_zero_merged; TLorentzVector LorVec_TRUE_pi_zero_resolved; TLorentzVector LorVec_TRUE_K_short; TLorentzVector LorVec_TRUE_pi_plus; TLorentzVector LorVec_TRUE_KS_pi_plus; TLorentzVector LorVec_TRUE_KS_pi_minus; TLorentzVector LorVec_TRUE_mu_minus; TLorentzVector LorVec_TRUE_mu_plus; TLorentzVector LorVec_TRUE_gamma1; TLorentzVector LorVec_TRUE_gamma2; TLorentzVector LorVec_TRUE_DiGamma;
//potentially misIDed particles:
TLorentzVector LorVec_TRUE_pi_plus_MisIDed; TLorentzVector LorVec_TRUE_mu_plus_MisIDed; TLorentzVector LorVec_TRUE_B_plus_From_DoubleMisIDed; TLorentzVector LorVec_TRUE_Jpsi_From_DoubleMisIDed; TLorentzVector LorVec_TRUE_K_star_plus_From_DoubleMisIDed;
//recombined particles:
TLorentzVector LorVec_TRUE_DiMuon; TLorentzVector LorVec_TRUE_KaonPion;
//Other variables:
Double_t OpenAngle_TRUE;
/////////////////////
// Branches //
/////////////////////
///B+
Double_t B_plus_PX = 0.; Double_t B_plus_PY = 0.; Double_t B_plus_PZ = 0.; Double_t B_plus_PT = 0.; Double_t B_plus_PE = 0.; Double_t B_plus_ETA = 0.; Double_t B_plus_PHI = 0.;
Double_t B_plus_TRUE_PX = 0.; Double_t B_plus_TRUE_PY = 0.; Double_t B_plus_TRUE_PZ = 0.; Double_t B_plus_TRUE_PT = 0.; Double_t B_plus_TRUE_PE = 0.; Double_t B_plus_TRUE_ETA = 0.; Double_t B_plus_TRUE_PHI = 0.;
Double_t B_plus_PX_DTF = 0.; Double_t B_plus_PY_DTF = 0.; Double_t B_plus_PZ_DTF = 0.; Double_t B_plus_PT_DTF = 0.; Double_t B_plus_PE_DTF = 0.; Double_t B_plus_ETA_DTF = 0.; Double_t B_plus_PHI_DTF = 0.;
///K*+
Double_t K_star_plus_PX = 0.; Double_t K_star_plus_PY = 0.; Double_t K_star_plus_PZ = 0.; Double_t K_star_plus_PT = 0.; Double_t K_star_plus_PE = 0.; Double_t K_star_plus_ETA = 0.; Double_t K_star_plus_PHI = 0.;
Double_t K_star_plus_TRUE_PX = 0.; Double_t K_star_plus_TRUE_PY = 0.; Double_t K_star_plus_TRUE_PZ = 0.; Double_t K_star_plus_TRUE_PT = 0.; Double_t K_star_plus_TRUE_PE = 0.; Double_t K_star_plus_TRUE_ETA = 0.; Double_t K_star_plus_TRUE_PHI = 0.;
Double_t K_star_plus_PX_DTF = 0.; Double_t K_star_plus_PY_DTF = 0.; Double_t K_star_plus_PZ_DTF = 0.; Double_t K_star_plus_PT_DTF = 0.; Double_t K_star_plus_PE_DTF = 0.; Double_t K_star_plus_ETA_DTF = 0.; Double_t K_star_plus_PHI_DTF = 0.;
///K+
Double_t K_plus_PX = 0.; Double_t K_plus_PY = 0.; Double_t K_plus_PZ = 0.; Double_t K_plus_PT = 0.; Double_t K_plus_PE = 0.; Double_t K_plus_ETA = 0.; Double_t K_plus_PHI = 0.;
Double_t K_plus_TRUE_PX = 0.; Double_t K_plus_TRUE_PY = 0.; Double_t K_plus_TRUE_PZ = 0.; Double_t K_plus_TRUE_PT = 0.; Double_t K_plus_TRUE_PE = 0.; Double_t K_plus_TRUE_ETA = 0.; Double_t K_plus_TRUE_PHI = 0.;
Double_t K_plus_PX_DTF = 0.; Double_t K_plus_PY_DTF = 0.; Double_t K_plus_PZ_DTF = 0.; Double_t K_plus_PE_DTF = 0.; Double_t K_plus_PT_DTF = 0.; Double_t K_plus_ETA_DTF = 0.; Double_t K_plus_PHI_DTF = 0.;
Float_t f_K_plus_PX_DTF[100]; Float_t f_K_plus_PY_DTF[100]; Float_t f_K_plus_PZ_DTF[100]; Float_t f_K_plus_PE_DTF[100];
///pi0 (merged)
Double_t pi_zero_merged_PX = 0.; Double_t pi_zero_merged_PY = 0.; Double_t pi_zero_merged_PZ = 0.; Double_t pi_zero_merged_PT = 0.; Double_t pi_zero_merged_PE = 0.; Double_t pi_zero_merged_ETA = 0.; Double_t pi_zero_merged_PHI = 0.;
Double_t pi_zero_merged_TRUE_PX = 0.; Double_t pi_zero_merged_TRUE_PY = 0.; Double_t pi_zero_merged_TRUE_PZ = 0.; Double_t pi_zero_merged_TRUE_PT = 0.; Double_t pi_zero_merged_TRUE_PE = 0.; Double_t pi_zero_merged_TRUE_ETA = 0.; Double_t pi_zero_merged_TRUE_PHI = 0.;
Double_t pi_zero_merged_PX_DTF = 0.; Double_t pi_zero_merged_PY_DTF = 0.; Double_t pi_zero_merged_PZ_DTF = 0.; Double_t pi_zero_merged_PT_DTF = 0.; Double_t pi_zero_merged_PE_DTF = 0.; Double_t pi_zero_merged_ETA_DTF = 0.; Double_t pi_zero_merged_PHI_DTF = 0.;
///pi0 (resolved)
Double_t pi_zero_resolved_PX = 0.; Double_t pi_zero_resolved_PY = 0.; Double_t pi_zero_resolved_PZ = 0.; Double_t pi_zero_resolved_PT = 0.; Double_t pi_zero_resolved_PE = 0.; Double_t pi_zero_resolved_ETA = 0.; Double_t pi_zero_resolved_PHI = 0.;
Double_t pi_zero_resolved_TRUE_PX = 0.; Double_t pi_zero_resolved_TRUE_PY = 0.; Double_t pi_zero_resolved_TRUE_PZ = 0.; Double_t pi_zero_resolved_TRUE_PT = 0.; Double_t pi_zero_resolved_TRUE_PE = 0.; Double_t pi_zero_resolved_TRUE_ETA = 0.; Double_t pi_zero_resolved_TRUE_PHI = 0.;
Double_t pi_zero_resolved_PX_DTF = 0.; Double_t pi_zero_resolved_PY_DTF = 0.; Double_t pi_zero_resolved_PZ_DTF = 0.; Double_t pi_zero_resolved_PT_DTF = 0.; Double_t pi_zero_resolved_PE_DTF = 0.; Double_t pi_zero_resolved_ETA_DTF = 0.; Double_t pi_zero_resolved_PHI_DTF = 0.;
///Kshort
Double_t K_short_PX = 0.; Double_t K_short_PY = 0.; Double_t K_short_PZ = 0.; Double_t K_short_PT = 0.; Double_t K_short_PE = 0.; Double_t K_short_ETA = 0.; Double_t K_short_PHI = 0.;
Double_t K_short_TRUE_PX = 0.; Double_t K_short_TRUE_PY = 0.; Double_t K_short_TRUE_PZ = 0.; Double_t K_short_TRUE_PT = 0.; Double_t K_short_TRUE_PE = 0.; Double_t K_short_TRUE_ETA = 0.; Double_t K_short_TRUE_PHI = 0.;
Double_t K_short_PX_DTF = 0.; Double_t K_short_PY_DTF = 0.; Double_t K_short_PZ_DTF = 0.; Double_t K_short_PT_DTF = 0.; Double_t K_short_PE_DTF = 0.; Double_t K_short_ETA_DTF = 0.; Double_t K_short_PHI_DTF = 0.;
Float_t f_K_short_M_DTF[100]; Double_t K_short_M_DTF = 0.;
///pi+ (KS)
Double_t Ks_pi_plus_PX = 0.; Double_t Ks_pi_plus_PY = 0.; Double_t Ks_pi_plus_PZ = 0.; Double_t Ks_pi_plus_PT = 0.; Double_t Ks_pi_plus_PE = 0.; Double_t Ks_pi_plus_ETA = 0.; Double_t Ks_pi_plus_PHI = 0.;
Double_t Ks_pi_plus_TRUE_PX = 0.; Double_t Ks_pi_plus_TRUE_PY = 0.; Double_t Ks_pi_plus_TRUE_PZ = 0.; Double_t Ks_pi_plus_TRUE_PT = 0.; Double_t Ks_pi_plus_TRUE_PE = 0.; Double_t Ks_pi_plus_TRUE_ETA = 0.; Double_t Ks_pi_plus_TRUE_PHI = 0.;
Float_t f_Ks_pi_plus_PX_DTF[100]; Float_t f_Ks_pi_plus_PY_DTF[100]; Float_t f_Ks_pi_plus_PZ_DTF[100]; Float_t f_Ks_pi_plus_PT_DTF[100]; Float_t f_Ks_pi_plus_PE_DTF[100]; Float_t f_Ks_pi_plus_ID_DTF[100];
Double_t Ks_pi_plus_PX_DTF = 0.; Double_t Ks_pi_plus_PY_DTF = 0.; Double_t Ks_pi_plus_PZ_DTF = 0.; Double_t Ks_pi_plus_PT_DTF = 0.; Double_t Ks_pi_plus_PE_DTF = 0.; Double_t Ks_pi_plus_ETA_DTF = 0.; Double_t Ks_pi_plus_PHI_DTF = 0.;
///pi- (KS)
Double_t Ks_pi_minus_PX = 0.; Double_t Ks_pi_minus_PY = 0.; Double_t Ks_pi_minus_PZ = 0.; Double_t Ks_pi_minus_PT = 0.; Double_t Ks_pi_minus_PE = 0.; Double_t Ks_pi_minus_ETA = 0.; Double_t Ks_pi_minus_PHI = 0.;
Double_t Ks_pi_minus_TRUE_PX = 0.; Double_t Ks_pi_minus_TRUE_PY = 0.; Double_t Ks_pi_minus_TRUE_PZ = 0.; Double_t Ks_pi_minus_TRUE_PT = 0.; Double_t Ks_pi_minus_TRUE_PE = 0.; Double_t Ks_pi_minus_TRUE_ETA = 0.; Double_t Ks_pi_minus_TRUE_PHI = 0.;
Float_t f_Ks_pi_minus_PX_DTF[100]; Float_t f_Ks_pi_minus_PY_DTF[100]; Float_t f_Ks_pi_minus_PZ_DTF[100]; Float_t f_Ks_pi_minus_PT_DTF[100]; Float_t f_Ks_pi_minus_PE_DTF[100]; Float_t f_Ks_pi_minus_ID_DTF[100];
Double_t Ks_pi_minus_PX_DTF = 0.; Double_t Ks_pi_minus_PY_DTF = 0.; Double_t Ks_pi_minus_PZ_DTF = 0.; Double_t Ks_pi_minus_PT_DTF = 0.; Double_t Ks_pi_minus_PE_DTF = 0.; Double_t Ks_pi_minus_ETA_DTF = 0.; Double_t Ks_pi_minus_PHI_DTF = 0.;
///pi+
Double_t pi_plus_PX = 0.; Double_t pi_plus_PY = 0.; Double_t pi_plus_PZ = 0.; Double_t pi_plus_PT = 0.; Double_t pi_plus_PE = 0.; Double_t pi_plus_ETA = 0.; Double_t pi_plus_PHI = 0.;
Double_t pi_plus_TRUE_PX = 0.; Double_t pi_plus_TRUE_PY = 0.; Double_t pi_plus_TRUE_PZ = 0.; Double_t pi_plus_TRUE_PT = 0.; Double_t pi_plus_TRUE_PE = 0.; Double_t pi_plus_TRUE_ETA = 0.; Double_t pi_plus_TRUE_PHI = 0.;
Float_t f_pi_plus_PX_DTF[100]; Float_t f_pi_plus_PY_DTF[100]; Float_t f_pi_plus_PZ_DTF[100]; Float_t f_pi_plus_PE_DTF[100]; Float_t f_pi_plus_PT_DTF[100]; Float_t f_pi_plus_ID_DTF[100];
Double_t pi_plus_PX_DTF = 0.; Double_t pi_plus_PY_DTF = 0.; Double_t pi_plus_PZ_DTF = 0.; Double_t pi_plus_PT_DTF = 0.; Double_t pi_plus_PE_DTF = 0.; Double_t pi_plus_ETA_DTF = 0.; Double_t pi_plus_PHI_DTF = 0.;
///mu+
Double_t mu_minus_PX = 0.; Double_t mu_minus_PY = 0.; Double_t mu_minus_PZ = 0.; Double_t mu_minus_PT = 0.; Double_t mu_minus_PE = 0.; Double_t mu_minus_ETA = 0.; Double_t mu_minus_PHI = 0.;
Double_t mu_minus_TRUE_PX = 0.; Double_t mu_minus_TRUE_PY = 0.; Double_t mu_minus_TRUE_PZ = 0.; Double_t mu_minus_TRUE_PT = 0.; Double_t mu_minus_TRUE_PE = 0.; Double_t mu_minus_TRUE_ETA = 0.; Double_t mu_minus_TRUE_PHI = 0.;
Double_t mu_minus_PX_DTF = 0.; Double_t mu_minus_PY_DTF = 0.; Double_t mu_minus_PZ_DTF = 0.; Double_t mu_minus_PT_DTF = 0.; Double_t mu_minus_PE_DTF = 0.; Double_t mu_minus_ETA_DTF = 0.; Double_t mu_minus_PHI_DTF = 0.;
Float_t f_mu_minus_PX_DTF[100]; Float_t f_mu_minus_PY_DTF[100]; Float_t f_mu_minus_PZ_DTF[100]; Float_t f_mu_minus_PT_DTF[100]; Float_t f_mu_minus_PE_DTF[100];
///mu+
Double_t mu_plus_PX = 0.; Double_t mu_plus_PY = 0.; Double_t mu_plus_PZ = 0.; Double_t mu_plus_PT = 0.; Double_t mu_plus_PE = 0.; Double_t mu_plus_ETA = 0.; Double_t mu_plus_PHI = 0.;
Double_t mu_plus_TRUE_PX = 0.; Double_t mu_plus_TRUE_PY = 0.; Double_t mu_plus_TRUE_PZ = 0.; Double_t mu_plus_TRUE_PT = 0.; Double_t mu_plus_TRUE_PE = 0.; Double_t mu_plus_TRUE_ETA = 0.; Double_t mu_plus_TRUE_PHI = 0.;
Double_t mu_plus_PX_DTF = 0.; Double_t mu_plus_PY_DTF = 0.; Double_t mu_plus_PZ_DTF = 0.; Double_t mu_plus_PT_DTF = 0.; Double_t mu_plus_PE_DTF = 0.; Double_t mu_plus_ETA_DTF = 0.; Double_t mu_plus_PHI_DTF = 0.;
Float_t f_mu_plus_PX_DTF[100]; Float_t f_mu_plus_PY_DTF[100]; Float_t f_mu_plus_PZ_DTF[100]; Float_t f_mu_plus_PE_DTF[100];
///gamma1
Double_t gamma1_PX = 0.; Double_t gamma1_PY = 0.; Double_t gamma1_PZ = 0.; Double_t gamma1_PT = 0.; Double_t gamma1_PE = 0.; Double_t gamma1_ETA = 0.; Double_t gamma1_PHI = 0.;
Double_t gamma1_TRUE_PX = 0.; Double_t gamma1_TRUE_PY = 0.; Double_t gamma1_TRUE_PZ = 0.; Double_t gamma1_TRUE_PT = 0.; Double_t gamma1_TRUE_PE = 0.; Double_t gamma1_TRUE_ETA = 0.; Double_t gamma1_TRUE_PHI = 0.;
Double_t gamma1_PX_DTF = 0.; Double_t gamma1_PY_DTF = 0.; Double_t gamma1_PZ_DTF = 0.; Double_t gamma1_PT_DTF = 0.; Double_t gamma1_PE_DTF = 0.; Double_t gamma1_ETA_DTF = 0.; Double_t gamma1_PHI_DTF = 0.;
Float_t f_gamma1_PX_DTF[100]; Float_t f_gamma1_PY_DTF[100]; Float_t f_gamma1_PZ_DTF[100]; Float_t f_gamma1_PE_DTF[100];
///gamma2
Double_t gamma2_PX = 0.; Double_t gamma2_PY = 0.; Double_t gamma2_PZ = 0.; Double_t gamma2_PT = 0.; Double_t gamma2_PE = 0.; Double_t gamma2_ETA = 0.; Double_t gamma2_PHI = 0.;
Double_t gamma2_PX_DTF = 0.; Double_t gamma2_PY_DTF = 0.; Double_t gamma2_PZ_DTF = 0.; Double_t gamma2_PT_DTF = 0.; Double_t gamma2_PE_DTF = 0.; Double_t gamma2_ETA_DTF = 0.; Double_t gamma2_PHI_DTF = 0.;
Double_t gamma2_TRUE_PX = 0.; Double_t gamma2_TRUE_PY = 0.; Double_t gamma2_TRUE_PZ = 0.; Double_t gamma2_TRUE_PT = 0.; Double_t gamma2_TRUE_PE = 0.; Double_t gamma2_TRUE_ETA = 0.; Double_t gamma2_TRUE_PHI = 0.;
Float_t f_gamma2_PX_DTF[100]; Float_t f_gamma2_PY_DTF[100]; Float_t f_gamma2_PZ_DTF[100]; Float_t f_gamma2_PE_DTF[100];
//angles
Double_t B_plus_ThetaL = 0.; Double_t B_plus_ThetaK = 0.; Double_t B_plus_Phi = 0.;
Double_t B_plus_ThetaL_DTF = 0.; Double_t B_plus_ThetaK_DTF = 0.; Double_t B_plus_Phi_DTF = 0.;
Double_t B_plus_TRUE_ThetaL = 0.; Double_t B_plus_TRUE_ThetaK = 0.; Double_t B_plus_TRUE_Phi = 0.;
Double_t open_angle = 0.; Double_t open_angle_DTF = 0.; Double_t TRUE_open_angle = 0.;
//global variables
Double_t B_plus_ENDVERTEX_Z = 0.; Double_t B_plus_ENDVERTEX_ZERR = 0.; Double_t B_plus_OWNPV_Z = 0.; Double_t B_plus_OWNPV_ZERR = 0.; Double_t B_plus_TRUEORIGINVERTEX_Z = 0.; Double_t B_plus_TRUEENDVERTEX_Z = 0.; Double_t B_plus_TOPPV_Z = 0.;//TODO: what is this?
Float_t f_B_plus_DTF_PV_Z[100]; Double_t B_plus_DTF_PV_Z = 0.;
Double_t K_star_plus_ENDVERTEX_Z = 0.; Double_t K_star_plus_ENDVERTEX_ZERR = 0.; Double_t K_star_plus_OWNPV_Z = 0.; Double_t K_star_plus_OWNPV_ZERR = 0.; Double_t K_star_plus_TRUEORIGINVERTEX_Z = 0.; Double_t K_star_plus_TRUEENDVERTEX_Z = 0.;
Double_t K_plus_OWNPV_Z = 0.; Double_t K_plus_OWNPV_ZERR = 0.; Double_t K_plus_TRUEORIGINVERTEX_Z = 0.; Double_t K_plus_TRUEENDVERTEX_Z = 0.;
Double_t pi_zero_resolved_TRUEORIGINVERTEX_Z = 0.; Double_t pi_zero_resolved_TRUEENDVERTEX_Z = 0.;
Double_t gamma1_TRUEORIGINVERTEX_Z = 0.; Double_t gamma1_TRUEENDVERTEX_Z = 0.;
Double_t gamma2_TRUEORIGINVERTEX_Z = 0.; Double_t gamma2_TRUEENDVERTEX_Z = 0.;
Double_t mu_plus_OWNPV_Z = 0.; Double_t mu_plus_OWNPV_ZERR = 0.; Double_t mu_plus_TRUEORIGINVERTEX_Z = 0.; Double_t mu_plus_TRUEENDVERTEX_Z = 0.;
Double_t mu_minus_OWNPV_Z = 0.; Double_t mu_minus_OWNPV_ZERR = 0.; Double_t mu_minus_TRUEORIGINVERTEX_Z = 0.; Double_t mu_minus_TRUEENDVERTEX_Z = 0.;
tree->SetBranchStatus("*",0); tree->SetBranchStatus( "*P", 1 ); tree->SetBranchStatus( "*PX", 1 ); tree->SetBranchStatus( "*PY", 1); tree->SetBranchStatus( "*PZ", 1); tree->SetBranchStatus( "*PE", 1); tree->SetBranchStatus( "*PT", 1 ); tree->SetBranchStatus( "*TRUEP*", 1 ); tree->SetBranchStatus( "*ETA*", 1 ); tree->SetBranchStatus( "*PHI", 1 );
tree->SetBranchStatus( "*Phi",1 ); tree->SetBranchStatus( "*ThetaL",1 ); tree->SetBranchStatus( "*ThetaK",1 );
tree->SetBranchStatus("*ENDVERTEX_Z*",1); tree->SetBranchStatus("*OWNPV_Z*",1); tree->SetBranchStatus("*TRUEORIGINVERTEX_Z*",1); tree->SetBranchStatus("*TRUEENDVERTEX_Z*",1);
//particle masses and momenta
tree -> SetBranchAddress( "B_plus_PX" , &B_plus_PX ); tree -> SetBranchAddress( "B_plus_PY" , &B_plus_PY ); tree -> SetBranchAddress( "B_plus_PZ" , &B_plus_PZ ); tree -> SetBranchAddress( "B_plus_PT" , &B_plus_PT ); tree -> SetBranchAddress( "B_plus_PE" , &B_plus_PE ); tree -> SetBranchAddress( "B_plus_ETA" , &B_plus_ETA ); if (!preselected) tree -> SetBranchAddress( "B_plus_PHI" , &B_plus_PHI );
tree -> SetBranchAddress( "B_plus_TRUEP_X" , &B_plus_TRUE_PX ); tree -> SetBranchAddress( "B_plus_TRUEP_Y" , &B_plus_TRUE_PY ); tree -> SetBranchAddress( "B_plus_TRUEP_Z" , &B_plus_TRUE_PZ ); tree -> SetBranchAddress( "B_plus_TRUEP_E" , &B_plus_TRUE_PE ); tree -> SetBranchAddress( "B_plus_TRUEPT" , &B_plus_TRUE_PT );
tree -> SetBranchAddress( "K_star_plus_PX" , &K_star_plus_PX ); tree -> SetBranchAddress( "K_star_plus_PY" , &K_star_plus_PY ); tree -> SetBranchAddress( "K_star_plus_PZ" , &K_star_plus_PZ ); tree -> SetBranchAddress( "K_star_plus_PE" , &K_star_plus_PE ); tree -> SetBranchAddress( "K_star_plus_PT" , &K_star_plus_PT );
tree -> SetBranchAddress( "K_star_plus_TRUEP_X" , &K_star_plus_TRUE_PX ); tree -> SetBranchAddress( "K_star_plus_TRUEP_Y" , &K_star_plus_TRUE_PY ); tree -> SetBranchAddress( "K_star_plus_TRUEP_Z" , &K_star_plus_TRUE_PZ ); tree -> SetBranchAddress( "K_star_plus_TRUEP_E" , &K_star_plus_TRUE_PE ); tree -> SetBranchAddress( "K_star_plus_TRUEPT" , &K_star_plus_TRUE_PT );
if(Kst2Kpluspi0Merged){ //TODO: in case one really wants to do that, add DTF info
tree -> SetBranchAddress( "pi_zero_merged_PX" , &pi_zero_merged_PX ); tree -> SetBranchAddress( "pi_zero_merged_PY" , &pi_zero_merged_PY ); tree -> SetBranchAddress( "pi_zero_merged_PZ" , &pi_zero_merged_PZ ); tree -> SetBranchAddress( "pi_zero_merged_PE" , &pi_zero_merged_PE ); tree -> SetBranchAddress( "pi_zero_merged_PT" , &pi_zero_merged_PT ); tree -> SetBranchAddress( "pi_zero_merged_ETA" , &pi_zero_merged_ETA ); tree -> SetBranchAddress( "pi_zero_merged_PHI" , &pi_zero_merged_PHI );
tree -> SetBranchAddress( "pi_zero_merged_TRUEP_X" , &pi_zero_merged_TRUE_PX ); tree -> SetBranchAddress( "pi_zero_merged_TRUEP_Y" , &pi_zero_merged_TRUE_PY ); tree -> SetBranchAddress( "pi_zero_merged_TRUEP_Z" , &pi_zero_merged_TRUE_PZ ); tree -> SetBranchAddress( "pi_zero_merged_TRUEP_E" , &pi_zero_merged_TRUE_PE ); tree -> SetBranchAddress( "pi_zero_merged_TRUEPT" , &pi_zero_merged_TRUE_PT );
tree -> SetBranchAddress( "pi_zero_merged_PX_DTF" , &pi_zero_merged_PX_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PY_DTF" , &pi_zero_merged_PY_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PZ_DTF" , &pi_zero_merged_PZ_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PE_DTF" , &pi_zero_merged_PE_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PT_DTF" , &pi_zero_merged_PT_DTF ); tree -> SetBranchAddress( "pi_zero_merged_ETA_DTF" , &pi_zero_merged_ETA_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PHI_DTF" , &pi_zero_merged_PHI_DTF ); }
if(Kst2Kpluspi0Resolved){ tree -> SetBranchAddress( "pi_zero_resolved_PX" , &pi_zero_resolved_PX ); tree -> SetBranchAddress( "pi_zero_resolved_PY" , &pi_zero_resolved_PY ); tree -> SetBranchAddress( "pi_zero_resolved_PZ" , &pi_zero_resolved_PZ ); tree -> SetBranchAddress( "pi_zero_resolved_PT" , &pi_zero_resolved_PT ); tree -> SetBranchAddress( "pi_zero_resolved_PE" , &pi_zero_resolved_PE ); tree -> SetBranchAddress( "pi_zero_resolved_ETA" , &pi_zero_resolved_ETA ); if (!preselected) tree -> SetBranchAddress( "pi_zero_resolved_PHI" , &pi_zero_resolved_PHI );
tree -> SetBranchAddress( "pi_zero_resolved_TRUEP_X" , &pi_zero_resolved_TRUE_PX ); tree -> SetBranchAddress( "pi_zero_resolved_TRUEP_Y" , &pi_zero_resolved_TRUE_PY ); tree -> SetBranchAddress( "pi_zero_resolved_TRUEP_Z" , &pi_zero_resolved_TRUE_PZ ); tree -> SetBranchAddress( "pi_zero_resolved_TRUEP_E" , &pi_zero_resolved_TRUE_PE ); tree -> SetBranchAddress( "pi_zero_resolved_TRUEPT" , &pi_zero_resolved_TRUE_PT );
tree -> SetBranchAddress( "gamma1_PX" , &gamma1_PX ); tree -> SetBranchAddress( "gamma1_PY" , &gamma1_PY ); tree -> SetBranchAddress( "gamma1_PZ" , &gamma1_PZ ); tree -> SetBranchAddress( "gamma1_PE" , &gamma1_PE ); tree -> SetBranchAddress( "gamma1_PT" , &gamma1_PT );
tree -> SetBranchAddress( "gamma1_TRUEP_X" , &gamma1_TRUE_PX ); tree -> SetBranchAddress( "gamma1_TRUEP_Y" , &gamma1_TRUE_PY ); tree -> SetBranchAddress( "gamma1_TRUEP_Z" , &gamma1_TRUE_PZ ); tree -> SetBranchAddress( "gamma1_TRUEP_E" , &gamma1_TRUE_PE ); tree -> SetBranchAddress( "gamma1_TRUEPT" , &gamma1_TRUE_PT );
tree -> SetBranchAddress( "gamma2_PX" , &gamma2_PX ); tree -> SetBranchAddress( "gamma2_PY" , &gamma2_PY ); tree -> SetBranchAddress( "gamma2_PZ" , &gamma2_PZ ); tree -> SetBranchAddress( "gamma2_PE" , &gamma2_PE ); tree -> SetBranchAddress( "gamma2_PT" , &gamma2_PT );
tree -> SetBranchAddress( "gamma2_TRUEP_X" , &gamma2_TRUE_PX ); tree -> SetBranchAddress( "gamma2_TRUEP_Y" , &gamma2_TRUE_PY ); tree -> SetBranchAddress( "gamma2_TRUEP_Z" , &gamma2_TRUE_PZ ); tree -> SetBranchAddress( "gamma2_TRUEP_E" , &gamma2_TRUE_PE ); tree -> SetBranchAddress( "gamma2_TRUEPT" , &gamma2_TRUE_PT );
tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_0_PX" , &f_gamma1_PX_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_0_PY" , &f_gamma1_PY_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_0_PZ" , &f_gamma1_PZ_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_0_PE" , &f_gamma1_PE_DTF );
tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_PX" , &f_gamma2_PX_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_PY" , &f_gamma2_PY_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_PZ" , &f_gamma2_PZ_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_pi0_gamma_PE" , &f_gamma2_PE_DTF ); }
if(Kst2Kpluspi0Merged || Kst2Kpluspi0Resolved){ tree -> SetBranchAddress( "K_plus_PX" , &K_plus_PX ); tree -> SetBranchAddress( "K_plus_PY" , &K_plus_PY ); tree -> SetBranchAddress( "K_plus_PZ" , &K_plus_PZ ); tree -> SetBranchAddress( "K_plus_PE" , &K_plus_PE ); tree -> SetBranchAddress( "K_plus_PT" , &K_plus_PT ); tree -> SetBranchAddress( "K_plus_ETA" , &K_plus_ETA );
tree -> SetBranchAddress( "K_plus_TRUEP_X" , &K_plus_TRUE_PX ); tree -> SetBranchAddress( "K_plus_TRUEP_Y" , &K_plus_TRUE_PY ); tree -> SetBranchAddress( "K_plus_TRUEP_Z" , &K_plus_TRUE_PZ ); tree -> SetBranchAddress( "K_plus_TRUEP_E" , &K_plus_TRUE_PE ); tree -> SetBranchAddress( "K_plus_TRUEPT" , &K_plus_TRUE_PT );
tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_Kplus_PX" , &f_K_plus_PX_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_Kplus_PY" , &f_K_plus_PY_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_Kplus_PZ" , &f_K_plus_PZ_DTF ); tree -> SetBranchAddress( "B_plus_DTF_Kst_892_plus_Kplus_PE" , &f_K_plus_PE_DTF ); if (!preselected) tree -> SetBranchAddress( "K_plus_PHI" , &K_plus_PHI );
}
tree -> SetBranchAddress( "mu_minus_PX" , &mu_minus_PX ); tree -> SetBranchAddress( "mu_minus_PY" , &mu_minus_PY ); tree -> SetBranchAddress( "mu_minus_PZ" , &mu_minus_PZ ); tree -> SetBranchAddress( "mu_minus_PE" , &mu_minus_PE ); tree -> SetBranchAddress( "mu_minus_PT" , &mu_minus_PT );
tree -> SetBranchAddress( "mu_minus_TRUEP_X" , &mu_minus_TRUE_PX ); tree -> SetBranchAddress( "mu_minus_TRUEP_Y" , &mu_minus_TRUE_PY ); tree -> SetBranchAddress( "mu_minus_TRUEP_Z" , &mu_minus_TRUE_PZ ); tree -> SetBranchAddress( "mu_minus_TRUEP_E" , &mu_minus_TRUE_PE ); tree -> SetBranchAddress( "mu_minus_TRUEPT" , &mu_minus_TRUE_PT );
tree -> SetBranchAddress( "mu_plus_PX" , &mu_plus_PX ); tree -> SetBranchAddress( "mu_plus_PY" , &mu_plus_PY ); tree -> SetBranchAddress( "mu_plus_PZ" , &mu_plus_PZ ); tree -> SetBranchAddress( "mu_plus_PE" , &mu_plus_PE ); tree -> SetBranchAddress( "mu_plus_PT" , &mu_plus_PT );
tree -> SetBranchAddress( "mu_plus_TRUEP_X" , &mu_plus_TRUE_PX ); tree -> SetBranchAddress( "mu_plus_TRUEP_Y" , &mu_plus_TRUE_PY ); tree -> SetBranchAddress( "mu_plus_TRUEP_Z" , &mu_plus_TRUE_PZ ); tree -> SetBranchAddress( "mu_plus_TRUEP_E" , &mu_plus_TRUE_PE ); tree -> SetBranchAddress( "mu_plus_TRUEPT" , &mu_plus_TRUE_PT );
tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_0_PX" , &f_mu_minus_PX_DTF ); tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_0_PY" , &f_mu_minus_PY_DTF ); tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_0_PZ" , &f_mu_minus_PZ_DTF ); tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_0_PE" , &f_mu_minus_PE_DTF );
tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_PX" , &f_mu_plus_PX_DTF ); tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_PY" , &f_mu_plus_PY_DTF ); tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_PZ" , &f_mu_plus_PZ_DTF ); tree -> SetBranchAddress( "B_plus_DTF_J_psi_1S_muminus_PE" , &f_mu_plus_PE_DTF );
/* TODO
tree -> SetBranchAddress( "B_plus_ThetaL_DTF" , &B_plus_ThetaL_DTF); tree -> SetBranchAddress( "B_plus_ThetaK_DTF" , &B_plus_ThetaK_DTF); tree -> SetBranchAddress( "B_plus_Phi_DTF" , &B_plus_Phi_DTF ); */ tree -> SetBranchAddress( "B_plus_ThetaL" , &B_plus_ThetaL); tree -> SetBranchAddress( "B_plus_ThetaK" , &B_plus_ThetaK); tree -> SetBranchAddress( "B_plus_Phi" , &B_plus_Phi );
tree -> SetBranchAddress( "B_plus_TRUEThetaL" , &B_plus_TRUE_ThetaL); tree -> SetBranchAddress( "B_plus_TRUEThetaK" , &B_plus_TRUE_ThetaK); tree -> SetBranchAddress( "B_plus_TRUEPhi" , &B_plus_TRUE_Phi );
//global variables
tree -> SetBranchAddress( "B_plus_ENDVERTEX_Z", &B_plus_ENDVERTEX_Z); tree -> SetBranchAddress( "B_plus_ENDVERTEX_ZERR", &B_plus_ENDVERTEX_ZERR); tree -> SetBranchAddress( "B_plus_OWNPV_Z", &B_plus_OWNPV_Z); tree -> SetBranchAddress( "B_plus_OWNPV_ZERR", &B_plus_OWNPV_ZERR); tree -> SetBranchAddress( "B_plus_TRUEORIGINVERTEX_Z", &B_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "B_plus_TRUEENDVERTEX_Z", &B_plus_TRUEENDVERTEX_Z); tree -> SetBranchAddress( "B_plus_DTF_PV_Z", &f_B_plus_DTF_PV_Z); tree -> SetBranchAddress( "B_plus_TOPPV_Z", &B_plus_TOPPV_Z);//TODO: what is this?
tree -> SetBranchAddress( "K_star_plus_ENDVERTEX_Z", &K_star_plus_ENDVERTEX_Z); tree -> SetBranchAddress( "K_star_plus_ENDVERTEX_ZERR", &K_star_plus_ENDVERTEX_ZERR); tree -> SetBranchAddress( "K_star_plus_OWNPV_Z", &K_star_plus_OWNPV_Z); tree -> SetBranchAddress( "K_star_plus_OWNPV_ZERR", &K_star_plus_OWNPV_ZERR); tree -> SetBranchAddress( "K_star_plus_TRUEORIGINVERTEX_Z", &K_star_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "K_star_plus_TRUEENDVERTEX_Z", &K_star_plus_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "K_plus_OWNPV_Z", &K_plus_OWNPV_Z); tree -> SetBranchAddress( "K_plus_OWNPV_ZERR", &K_plus_OWNPV_ZERR); tree -> SetBranchAddress( "K_plus_TRUEORIGINVERTEX_Z", &K_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "K_plus_TRUEENDVERTEX_Z", &K_plus_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "pi_zero_resolved_TRUEORIGINVERTEX_Z", &pi_zero_resolved_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "pi_zero_resolved_TRUEENDVERTEX_Z", &pi_zero_resolved_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "gamma1_TRUEORIGINVERTEX_Z", &gamma1_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "gamma1_TRUEENDVERTEX_Z", &gamma1_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "gamma2_TRUEORIGINVERTEX_Z", &gamma2_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "gamma2_TRUEENDVERTEX_Z", &gamma2_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "mu_plus_OWNPV_Z", &mu_plus_OWNPV_Z); tree -> SetBranchAddress( "mu_plus_OWNPV_ZERR", &mu_plus_OWNPV_ZERR); tree -> SetBranchAddress( "mu_plus_TRUEORIGINVERTEX_Z", &mu_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "mu_plus_TRUEENDVERTEX_Z", &mu_plus_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "mu_minus_OWNPV_Z", &mu_minus_OWNPV_Z); tree -> SetBranchAddress( "mu_minus_OWNPV_ZERR", &mu_minus_OWNPV_ZERR); tree -> SetBranchAddress( "mu_minus_TRUEORIGINVERTEX_Z", &mu_minus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "mu_minus_TRUEENDVERTEX_Z", &mu_minus_TRUEENDVERTEX_Z);
// Create outputfile
// Kst2Kpluspi0Resolved case
string newName = ""; preselected ? newName = "_resolution_preselected" : newName ="_resolution"; if (truthMatched) newName = newName + "_TM";
if(Kst2Kpluspi0Resolved){ if(!MC){ output = new TFile(Form("%s/data/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ if(ReferenceChannel){ output = new TFile(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else if(PHSP){ output = new TFile(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ output = new TFile(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } } } // Kst2Kpluspi0Merged case
if(Kst2Kpluspi0Merged){ if(!MC){ output = new TFile(Form("%s/data/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ if(ReferenceChannel){ output = new TFile(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else if(PHSP){ output = new TFile(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ output = new TFile(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } } } // Kst2Kspiplus case
if(Kst2Kspiplus){ if(!MC){ output = new TFile(Form("%s/data/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ if(ReferenceChannel){ output = new TFile(Form("%s/data/MC/RefKshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else if(PHSP){ output = new TFile(Form("%s/data/PHSP/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ output = new TFile(Form("%s/data/MC/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } } }
//Initialize new tree
output->cd(); TTree * resolution_tree = tree->CloneTree(0);
/////////////////////////////
// Initialize branches //
/////////////////////////////
// Rename true branches
// Initialize DTF branches
//-----------------------------------------------------------------------------------
if (preselected) resolution_tree -> Branch( "B_plus_PHI" , &B_plus_PHI, "B_plus_PHI/D");
resolution_tree -> Branch( "B_plus_TRUE_PX" , &B_plus_TRUE_PX, "B_plus_TRUE_PX/D"); resolution_tree -> Branch( "B_plus_TRUE_PY" , &B_plus_TRUE_PY, "B_plus_TRUE_PY/D"); resolution_tree -> Branch( "B_plus_TRUE_PZ" , &B_plus_TRUE_PZ, "B_plus_TRUE_PZ/D"); resolution_tree -> Branch( "B_plus_TRUE_PE" , &B_plus_TRUE_PE, "B_plus_TRUE_PE/D"); resolution_tree -> Branch( "B_plus_TRUE_PT" , &B_plus_TRUE_PT, "B_plus_TRUE_PT/D"); resolution_tree -> Branch( "B_plus_TRUE_ETA" , &B_plus_TRUE_ETA, "B_plus_TRUE_ETA/D"); resolution_tree -> Branch( "B_plus_TRUE_PHI" , &B_plus_TRUE_PHI, "B_plus_TRUE_PHI/D");
resolution_tree -> Branch( "B_plus_PX_DTF" , &B_plus_PX_DTF, "B_plus_PX_DTF/D"); resolution_tree -> Branch( "B_plus_PY_DTF" , &B_plus_PY_DTF, "B_plus_PY_DTF/D"); resolution_tree -> Branch( "B_plus_PZ_DTF" , &B_plus_PZ_DTF, "B_plus_PZ_DTF/D"); resolution_tree -> Branch( "B_plus_PT_DTF" , &B_plus_PT_DTF, "B_plus_PT_DTF/D"); resolution_tree -> Branch( "B_plus_PE_DTF" , &B_plus_PE_DTF, "B_plus_PE_DTF/D"); resolution_tree -> Branch( "B_plus_ETA_DTF", &B_plus_ETA_DTF, "B_plus_ETA_DTF/D"); resolution_tree -> Branch( "B_plus_PHI_DTF", &B_plus_PHI_DTF, "B_plus_PHI_DTF/D"); //-----------------------------------------------------------------------------------
resolution_tree -> Branch( "K_star_plus_TRUE_PX" , &K_star_plus_TRUE_PX, "K_star_plus_TRUE_PX/D"); resolution_tree -> Branch( "K_star_plus_TRUE_PY" , &K_star_plus_TRUE_PY, "K_star_plus_TRUE_PY/D"); resolution_tree -> Branch( "K_star_plus_TRUE_PZ" , &K_star_plus_TRUE_PZ, "K_star_plus_TRUE_PZ/D"); resolution_tree -> Branch( "K_star_plus_TRUE_PE" , &K_star_plus_TRUE_PE, "K_star_plus_TRUE_PE/D"); resolution_tree -> Branch( "K_star_plus_TRUE_PT" , &K_star_plus_TRUE_PT, "K_star_plus_TRUE_PT/D"); resolution_tree -> Branch( "K_star_plus_TRUE_ETA" , &K_star_plus_TRUE_ETA, "K_star_plus_TRUE_ETA/D"); resolution_tree -> Branch( "K_star_plus_TRUE_PHI" , &K_star_plus_TRUE_PHI, "K_star_plus_TRUE_PHI/D");
resolution_tree -> Branch( "K_star_plus_PX_DTF" , &K_star_plus_PX_DTF, "K_star_plus_PX_DTF/D"); resolution_tree -> Branch( "K_star_plus_PY_DTF" , &K_star_plus_PY_DTF, "K_star_plus_PY_DTF/D"); resolution_tree -> Branch( "K_star_plus_PZ_DTF" , &K_star_plus_PZ_DTF, "K_star_plus_PZ_DTF/D"); resolution_tree -> Branch( "K_star_plus_PT_DTF" , &K_star_plus_PT_DTF, "K_star_plus_PT_DTF/D"); resolution_tree -> Branch( "K_star_plus_PE_DTF" , &K_star_plus_PE_DTF, "K_star_plus_PE_DTF/D"); resolution_tree -> Branch( "K_star_plus_ETA_DTF", &K_star_plus_ETA_DTF, "K_star_plus_ETA_DTF/D"); resolution_tree -> Branch( "K_star_plus_PHI_DTF", &K_star_plus_PHI_DTF, "K_star_plus_PHI_DTF/D"); //-----------------------------------------------------------------------------------
if(Kst2Kpluspi0Merged){ //TODO: in case one really wants to do that, add DTF info
resolution_tree -> Branch( "pi_zero_merged_TRUE_PX" , &pi_zero_merged_TRUE_PX, "pi_zero_merged_TRUE_PX/D" ); resolution_tree -> Branch( "pi_zero_merged_TRUE_PY" , &pi_zero_merged_TRUE_PY, "pi_zero_merged_TRUE_PY/D" ); resolution_tree -> Branch( "pi_zero_merged_TRUE_PZ" , &pi_zero_merged_TRUE_PZ, "pi_zero_merged_TRUE_PZ/D" ); resolution_tree -> Branch( "pi_zero_merged_TRUE_PE" , &pi_zero_merged_TRUE_PE, "pi_zero_merged_TRUE_PE/D" ); resolution_tree -> Branch( "pi_zero_merged_TRUE_PT" , &pi_zero_merged_TRUE_PT, "pi_zero_merged_TRUE_PT/D" ); resolution_tree -> Branch( "pi_zero_merged_TRUE_ETA", &pi_zero_merged_TRUE_ETA, "pi_zero_merged_TRUE_ETA/D" ); resolution_tree -> Branch( "pi_zero_merged_TRUE_PHI", &pi_zero_merged_TRUE_PHI, "pi_zero_merged_TRUE_PHI/D" );
resolution_tree -> Branch( "pi_zero_merged_PX_DTF" , &pi_zero_merged_PX_DTF, "pi_zero_merged_PX_DTF/D" ); resolution_tree -> Branch( "pi_zero_merged_PY_DTF" , &pi_zero_merged_PY_DTF, "pi_zero_merged_PY_DTF/D" ); resolution_tree -> Branch( "pi_zero_merged_PZ_DTF" , &pi_zero_merged_PZ_DTF, "pi_zero_merged_PZ_DTF/D" ); resolution_tree -> Branch( "pi_zero_merged_PE_DTF" , &pi_zero_merged_PE_DTF, "pi_zero_merged_PE_DTF/D" ); resolution_tree -> Branch( "pi_zero_merged_PT_DTF" , &pi_zero_merged_PT_DTF, "pi_zero_merged_PT_DTF/D" ); resolution_tree -> Branch( "pi_zero_merged_ETA_DTF" , &pi_zero_merged_ETA_DTF, "pi_zero_merged_ETA_DTF/D" ); resolution_tree -> Branch( "pi_zero_merged_PHI_DTF" , &pi_zero_merged_PHI_DTF, "pi_zero_merged_PHI_DTF/D" ); } //-----------------------------------------------------------------------------------
if(Kst2Kpluspi0Resolved){ resolution_tree -> Branch( "pi_zero_resolved_PHI", &pi_zero_resolved_PHI, "pi_zero_resolved_PHI/D" );
resolution_tree -> Branch( "pi_zero_resolved_TRUE_PX" , &pi_zero_resolved_TRUE_PX , "pi_zero_resolved_TRUE_PX/D" ); resolution_tree -> Branch( "pi_zero_resolved_TRUE_PY" , &pi_zero_resolved_TRUE_PY , "pi_zero_resolved_TRUE_PY/D" ); resolution_tree -> Branch( "pi_zero_resolved_TRUE_PZ" , &pi_zero_resolved_TRUE_PZ, "pi_zero_resolved_TRUE_PZ/D" ); resolution_tree -> Branch( "pi_zero_resolved_TRUE_PE" , &pi_zero_resolved_TRUE_PE, "pi_zero_resolved_TRUE_PE/D" ); resolution_tree -> Branch( "pi_zero_resolved_TRUE_PT" , &pi_zero_resolved_TRUE_PT , "pi_zero_resolved_TRUE_PT/D" ); resolution_tree -> Branch( "pi_zero_resolved_TRUE_ETA", &pi_zero_resolved_TRUE_ETA , "pi_zero_resolved_TRUE_ETA/D" ); resolution_tree -> Branch( "pi_zero_resolved_TRUE_PHI", &pi_zero_resolved_TRUE_PHI, "pi_zero_resolved_TRUE_PHI/D" );
resolution_tree -> Branch( "pi_zero_resolved_PX_DTF" , &pi_zero_resolved_PX_DTF , "pi_zero_resolved_PX_DTF/D" ); resolution_tree -> Branch( "pi_zero_resolved_PY_DTF" , &pi_zero_resolved_PY_DTF, "pi_zero_resolved_PY_DTF/D" ); resolution_tree -> Branch( "pi_zero_resolved_PZ_DTF" , &pi_zero_resolved_PZ_DTF , "pi_zero_resolved_PZ_DTF/D" ); resolution_tree -> Branch( "pi_zero_resolved_PT_DTF" , &pi_zero_resolved_PT_DTF , "pi_zero_resolved_PT_DTF/D" ); resolution_tree -> Branch( "pi_zero_resolved_PE_DTF" , &pi_zero_resolved_PE_DTF , "pi_zero_resolved_PE_DTF/D" ); resolution_tree -> Branch( "pi_zero_resolved_ETA_DTF" , &pi_zero_resolved_ETA_DTF , "pi_zero_resolved_ETA_DTF/D" ); resolution_tree -> Branch( "pi_zero_resolved_PHI_DTF" , &pi_zero_resolved_PHI_DTF, "pi_zero_resolved_PHI_DTF/D" );
//-----------------------------------------------------------------------------------
resolution_tree -> Branch( "gamma1_TRUE_PX" , &gamma1_TRUE_PX , "gamma1_TRUE_PX/D"); resolution_tree -> Branch( "gamma1_TRUE_PY" , &gamma1_TRUE_PY , "gamma1_TRUE_PY/D" ); resolution_tree -> Branch( "gamma1_TRUE_PZ" , &gamma1_TRUE_PZ , "gamma1_TRUE_PZ/D" ); resolution_tree -> Branch( "gamma1_TRUE_PE" , &gamma1_TRUE_PE , "gamma1_TRUE_PE/D"); resolution_tree -> Branch( "gamma1_TRUE_PT" , &gamma1_TRUE_PT , "gamma1_TRUE_PT/D"); resolution_tree -> Branch( "gamma1_TRUE_ETA", &gamma1_TRUE_ETA, "gamma1_TRUE_ETA/D" ); resolution_tree -> Branch( "gamma1_TRUE_PHI", &gamma1_TRUE_PHI, "gamma1_TRUE_PHI/D" );
resolution_tree -> Branch( "gamma2_TRUE_PX" , &gamma2_TRUE_PX, "gamma2_TRUE_PX/D" ); resolution_tree -> Branch( "gamma2_TRUE_PY" , &gamma2_TRUE_PY, "gamma2_TRUE_PY/D" ); resolution_tree -> Branch( "gamma2_TRUE_PZ" , &gamma2_TRUE_PZ, "gamma2_TRUE_PZ/D" ); resolution_tree -> Branch( "gamma2_TRUE_PE" , &gamma2_TRUE_PE , "gamma2_TRUE_PE/D"); resolution_tree -> Branch( "gamma2_TRUE_PT" , &gamma2_TRUE_PT, "gamma2_TRUE_PT/D" ); resolution_tree -> Branch( "gamma2_TRUE_ETA", &gamma2_TRUE_ETA, "gamma2_TRUE_ETA/D" ); resolution_tree -> Branch( "gamma2_TRUE_PHI", &gamma2_TRUE_PHI, "gamma2_TRUE_PHI/D" );
resolution_tree -> Branch( "gamma1_PX_DTF" , &gamma1_PX_DTF, "gamma1_PX_DTF/D"); resolution_tree -> Branch( "gamma1_PY_DTF" , &gamma1_PY_DTF, "gamma1_PY_DTF/D" ); resolution_tree -> Branch( "gamma1_PZ_DTF" , &gamma1_PZ_DTF, "gamma1_PZ_DTF/D" ); resolution_tree -> Branch( "gamma1_PE_DTF" , &gamma1_PE_DTF, "gamma1_PE_DTF/D" ); resolution_tree -> Branch( "gamma1_PT_DTF" , &gamma1_PT_DTF, "gamma1_PT_DTF/D"); resolution_tree -> Branch( "gamma1_ETA_DTF" , &gamma1_ETA_DTF , "gamma1_ETA_DTF/D"); resolution_tree -> Branch( "gamma1_PHI_DTF" , &gamma1_PHI_DTF , "gamma1_PHI_DTF/D");
resolution_tree -> Branch( "gamma2_PX_DTF" , &gamma2_PX_DTF, "gamma2_PX_DTF/D" ); resolution_tree -> Branch( "gamma2_PY_DTF" , &gamma2_PY_DTF, "gamma2_PY_DTF/D"); resolution_tree -> Branch( "gamma2_PZ_DTF" , &gamma2_PZ_DTF, "gamma2_PZ_DTF/D"); resolution_tree -> Branch( "gamma2_PE_DTF" , &gamma2_PE_DTF, "gamma2_PE_DTF/D" ); resolution_tree -> Branch( "gamma2_PT_DTF" , &gamma2_PT_DTF, "gamma2_PT_DTF/D"); resolution_tree -> Branch( "gamma2_ETA_DTF" , &gamma2_ETA_DTF , "gamma2_ETA_DTF/D"); resolution_tree -> Branch( "gamma2_PHI_DTF" , &gamma2_PHI_DTF , "gamma2_PHI_DTF/D");
} //-----------------------------------------------------------------------------------
if(Kst2Kpluspi0Merged || Kst2Kpluspi0Resolved){
resolution_tree -> Branch( "K_plus_TRUE_PX" , &K_plus_TRUE_PX , "K_plus_TRUE_PY/D"); resolution_tree -> Branch( "K_plus_TRUE_PY" , &K_plus_TRUE_PY , "K_plus_TRUE_PY/D"); resolution_tree -> Branch( "K_plus_TRUE_PZ" , &K_plus_TRUE_PZ , "K_plus_TRUE_PY/D" ); resolution_tree -> Branch( "K_plus_TRUE_PE" , &K_plus_TRUE_PE , "K_plus_TRUE_PY/D" ); resolution_tree -> Branch( "K_plus_TRUE_PT" , &K_plus_TRUE_PT , "K_plus_TRUE_PY/D" ); resolution_tree -> Branch( "K_plus_TRUE_ETA" , &K_plus_TRUE_ETA , "K_plus_TRUE_PY/D" ); resolution_tree -> Branch( "K_plus_TRUE_PHI" , &K_plus_TRUE_PHI , "K_plus_TRUE_PY/D" );
resolution_tree -> Branch( "K_plus_PX_DTF" , &K_plus_PX_DTF , "K_plus_PX_DTF/D"); resolution_tree -> Branch( "K_plus_PY_DTF" , &K_plus_PY_DTF , "K_plus_PY_DTF/D"); resolution_tree -> Branch( "K_plus_PZ_DTF" , &K_plus_PZ_DTF , "K_plus_PZ_DTF/D"); resolution_tree -> Branch( "K_plus_PE_DTF" , &K_plus_PE_DTF , "K_plus_PE_DTF/D"); resolution_tree -> Branch( "K_plus_PT_DTF" , &K_plus_PT_DTF , "K_plus_PT_DTF/D"); resolution_tree -> Branch( "K_plus_ETA_DTF" , &K_plus_ETA_DTF , "K_plus_ETA_DTF/D"); resolution_tree -> Branch( "K_plus_PHI_DTF" , &K_plus_PHI_DTF , "K_plus_PHI_DTF/D");
} //-----------------------------------------------------------------------------------
resolution_tree -> Branch( "mu_minus_TRUE_PX" , &mu_minus_TRUE_PX , "mu_minus_TRUE_PX/D"); resolution_tree -> Branch( "mu_minus_TRUE_PY" , &mu_minus_TRUE_PY , "mu_minus_TRUE_PY/D"); resolution_tree -> Branch( "mu_minus_TRUE_PZ" , &mu_minus_TRUE_PZ , "mu_minus_TRUE_PZ/D"); resolution_tree -> Branch( "mu_minus_TRUE_PE" , &mu_minus_TRUE_PE , "mu_minus_TRUE_PE/D"); resolution_tree -> Branch( "mu_minus_TRUE_PT" , &mu_minus_TRUE_PT , "mu_minus_TRUE_PT/D"); resolution_tree -> Branch( "mu_minus_TRUE_ETA" , &mu_minus_TRUE_ETA , "mu_minus_TRUE_ETA/D"); resolution_tree -> Branch( "mu_minus_TRUE_PHI" , &mu_minus_TRUE_PHI , "mu_minus_TRUE_PHI/D");
resolution_tree -> Branch( "mu_plus_TRUE_PX" , &mu_plus_TRUE_PX , "mu_plus_TRUE_PX/D"); resolution_tree -> Branch( "mu_plus_TRUE_PY" , &mu_plus_TRUE_PY , "mu_plus_TRUE_PY/D"); resolution_tree -> Branch( "mu_plus_TRUE_PZ" , &mu_plus_TRUE_PZ , "mu_plus_TRUE_PZ/D"); resolution_tree -> Branch( "mu_plus_TRUE_PE" , &mu_plus_TRUE_PE , "mu_plus_TRUE_PE/D"); resolution_tree -> Branch( "mu_plus_TRUE_PT" , &mu_plus_TRUE_PT , "mu_plus_TRUE_PT/D"); resolution_tree -> Branch( "mu_plus_TRUE_ETA" , &mu_plus_TRUE_ETA , "mu_plus_TRUE_ETA/D"); resolution_tree -> Branch( "mu_plus_TRUE_PHI" , &mu_plus_TRUE_PHI , "mu_plus_TRUE_PHI/D");
resolution_tree -> Branch( "mu_minus_PX_DTF" , &mu_minus_PX_DTF , "mu_minus_PX_DTF/D"); resolution_tree -> Branch( "mu_minus_PY_DTF" , &mu_minus_PY_DTF , "mu_minus_PY_DTF/D"); resolution_tree -> Branch( "mu_minus_PZ_DTF" , &mu_minus_PZ_DTF , "mu_minus_PZ_DTF/D"); resolution_tree -> Branch( "mu_minus_PE_DTF" , &mu_minus_PE_DTF , "mu_minus_PE_DTF/D"); resolution_tree -> Branch( "mu_minus_PT_DTF" , &mu_minus_PT_DTF , "mu_minus_PT_DTF/D"); resolution_tree -> Branch( "mu_minus_ETA_DTF" , &mu_minus_ETA_DTF , "mu_minus_ETA_DTF/D"); resolution_tree -> Branch( "mu_minus_PHI_DTF" , &mu_minus_PHI_DTF , "mu_minus_PHI_DTF/D");
resolution_tree -> Branch( "mu_plus_PX_DTF" , &mu_plus_PX_DTF , "mu_plus_PX_DTF/D"); resolution_tree -> Branch( "mu_plus_PY_DTF" , &mu_plus_PY_DTF , "mu_plus_PY_DTF/D"); resolution_tree -> Branch( "mu_plus_PZ_DTF" , &mu_plus_PZ_DTF , "mu_plus_PZ_DTF/D"); resolution_tree -> Branch( "mu_plus_PE_DTF" , &mu_plus_PE_DTF , "mu_plus_PE_DTF/D"); resolution_tree -> Branch( "mu_plus_PT_DTF" , &mu_plus_PT_DTF , "mu_plus_PT_DTF/D"); resolution_tree -> Branch( "mu_plus_ETA_DTF" , &mu_plus_ETA_DTF , "mu_plus_ETA_DTF/D"); resolution_tree -> Branch( "mu_plus_PHI_DTF" , &mu_plus_PHI_DTF , "mu_plus_PHI_DTF/D");
//-----------------------------------------------------------------------------------
resolution_tree -> Branch( "B_plus_DTF_PV_Z" , &B_plus_DTF_PV_Z, "B_plus_DTF_PV_Z/D"); resolution_tree -> Branch( "open_angle" , &open_angle, "open_angle/D"); resolution_tree -> Branch( "open_angle_DTF" , &open_angle_DTF, "open_angle_DTF/D"); resolution_tree -> Branch( "TRUE_open_angle", &TRUE_open_angle , "TRUE_open_angle/D");
resolution_tree -> Branch( "B_plus_ThetaL_DTF" , &B_plus_ThetaL_DTF, "B_plus_ThetaL_DTF/D"); resolution_tree -> Branch( "B_plus_ThetaK_DTF" , &B_plus_ThetaK_DTF, "B_plus_ThetaK_DTF/D"); resolution_tree -> Branch( "B_plus_Phi_DTF" , &B_plus_Phi_DTF , "B_plus_Phi_DTF/D");
//////////////////////////////////
///// //////
//// Loop over events /////
///// //////
//////////////////////////////////
for (int i=0; i<N; i++){
//output the different counters!
if ((0ul == (i % 10000ul) || i + 1 == N) && i != 0) { cout << "Read event " << i + 1 << "/" << N << endl; }
tree->GetEntry(i);
/////////////////////
// DTF-values //
/////////////////////
LorVec_DTF_mu_minus = TLorentzVector (f_mu_minus_PX_DTF[0], f_mu_minus_PY_DTF[0], f_mu_minus_PZ_DTF[0], f_mu_minus_PE_DTF[0]); LorVec_DTF_mu_plus = TLorentzVector (f_mu_plus_PX_DTF[0], f_mu_plus_PY_DTF[0], f_mu_plus_PZ_DTF[0], f_mu_plus_PE_DTF[0]); if(Kst2Kspiplus){ /// Ks, pi+
LorVec_DTF_pi_plus = TLorentzVector (f_pi_plus_PX_DTF[0], f_pi_plus_PY_DTF[0], f_pi_plus_PZ_DTF[0], f_pi_plus_PE_DTF[0]); LorVec_DTF_KS_pi_plus = TLorentzVector (f_Ks_pi_plus_PX_DTF[0], f_Ks_pi_plus_PY_DTF[0], f_Ks_pi_plus_PZ_DTF[0], f_Ks_pi_plus_PE_DTF[0]); LorVec_DTF_KS_pi_minus = TLorentzVector (f_Ks_pi_minus_PX_DTF[0], f_Ks_pi_minus_PY_DTF[0], f_Ks_pi_minus_PZ_DTF[0], f_Ks_pi_minus_PE_DTF[0]); LorVec_DTF_pi_plus_MisIDed.SetXYZM (f_pi_plus_PX_DTF[0], f_pi_plus_PY_DTF[0], f_pi_plus_PZ_DTF[0], PDGMASS.MU); LorVec_DTF_mu_plus_MisIDed.SetXYZM (f_mu_plus_PX_DTF[0], f_mu_plus_PY_DTF[0], f_mu_plus_PZ_DTF[0], PDGMASS.PI_PLUS); } else{ /// K+, pi0
LorVec_DTF_K_plus = TLorentzVector (f_K_plus_PX_DTF[0], f_K_plus_PY_DTF[0], f_K_plus_PZ_DTF[0], f_K_plus_PE_DTF[0]); LorVec_DTF_gamma1 = TLorentzVector (f_gamma1_PX_DTF[0], f_gamma1_PY_DTF[0], f_gamma1_PZ_DTF[0], f_gamma1_PE_DTF[0]); LorVec_DTF_gamma2 = TLorentzVector (f_gamma2_PX_DTF[0], f_gamma2_PY_DTF[0], f_gamma2_PZ_DTF[0], f_gamma2_PE_DTF[0]); }
//directly recombine the non-stable particles for later use (K*+ not really needed/used for Kst2Kspiplus)
if(Kst2Kspiplus){ LorVec_DTF_K_short = LorVec_DTF_KS_pi_plus + LorVec_DTF_KS_pi_minus; LorVec_DTF_KaonPion = LorVec_DTF_K_short + LorVec_DTF_pi_plus; } if(Kst2Kpluspi0Resolved){ LorVec_DTF_DiGamma = LorVec_DTF_gamma1 + LorVec_DTF_gamma2; LorVec_DTF_pi_zero_resolved = LorVec_DTF_DiGamma; LorVec_DTF_KaonPion = LorVec_DTF_K_plus + LorVec_DTF_pi_zero_resolved; } LorVec_DTF_K_star_plus = LorVec_DTF_KaonPion; LorVec_DTF_DiMuon = LorVec_DTF_mu_minus + LorVec_DTF_mu_plus; LorVec_DTF_B_plus = LorVec_DTF_K_star_plus + LorVec_DTF_DiMuon; open_angle_DTF =LorVec_DTF_gamma1.Angle(LorVec_DTF_gamma2.Vect());
/////////////////////
// TRUE values //
/////////////////////
LorVec_TRUE_B_plus.SetXYZM (B_plus_TRUE_PX, B_plus_TRUE_PY, B_plus_TRUE_PZ, PDGMASS.B_PLUS); LorVec_TRUE_K_star_plus.SetXYZM (K_star_plus_TRUE_PX, K_star_plus_TRUE_PY, K_star_plus_TRUE_PZ, PDGMASS.K_STAR_PLUS); LorVec_TRUE_mu_minus.SetXYZM (mu_minus_TRUE_PX, mu_minus_TRUE_PY, mu_minus_TRUE_PZ, PDGMASS.MU); LorVec_TRUE_mu_plus.SetXYZM (mu_plus_TRUE_PX, mu_plus_TRUE_PY, mu_plus_TRUE_PZ, PDGMASS.MU); if(Kst2Kspiplus){ /// Ks, pi+
LorVec_TRUE_K_short.SetXYZM (K_short_TRUE_PX, K_short_TRUE_PY, K_short_TRUE_PZ, PDGMASS.K_SHORT); LorVec_TRUE_pi_plus.SetXYZM (pi_plus_TRUE_PX, pi_plus_TRUE_PY, pi_plus_TRUE_PZ, PDGMASS.PI_PLUS); } else{ /// K+, pi0
LorVec_TRUE_K_plus.SetXYZM (K_plus_TRUE_PX, K_plus_TRUE_PY, K_plus_TRUE_PZ, PDGMASS.K_PLUS); LorVec_TRUE_pi_zero_merged.SetXYZM (pi_zero_merged_TRUE_PX, pi_zero_merged_TRUE_PY, pi_zero_merged_TRUE_PZ, PDGMASS.PI_ZERO); LorVec_TRUE_pi_zero_resolved.SetXYZM (pi_zero_resolved_TRUE_PX, pi_zero_resolved_TRUE_PY, pi_zero_resolved_TRUE_PZ, PDGMASS.PI_ZERO); LorVec_TRUE_gamma1.SetXYZM (gamma1_TRUE_PX, gamma1_TRUE_PY, gamma1_TRUE_PZ, PDGMASS.GAMMA); LorVec_TRUE_gamma2.SetXYZM (gamma2_TRUE_PX, gamma2_TRUE_PY, gamma2_TRUE_PZ, PDGMASS.GAMMA); } //Recombination of 'Parent'-Particles
LorVec_TRUE_DiMuon = LorVec_TRUE_mu_minus + LorVec_TRUE_mu_plus; if(Kst2Kspiplus){ LorVec_TRUE_KaonPion = LorVec_TRUE_K_short + LorVec_TRUE_pi_plus; } if(Kst2Kpluspi0Merged){ LorVec_TRUE_KaonPion = LorVec_TRUE_K_plus + LorVec_TRUE_pi_zero_merged; } if(Kst2Kpluspi0Resolved){ LorVec_TRUE_DiGamma = LorVec_TRUE_gamma1 + LorVec_TRUE_gamma2; LorVec_TRUE_KaonPion = LorVec_TRUE_K_plus + LorVec_TRUE_DiGamma; } TRUE_open_angle =LorVec_TRUE_gamma1.Angle(LorVec_TRUE_gamma2.Vect());
//////////////////////
// detector values //
//////////////////////
LorVec_B_plus = TLorentzVector (B_plus_PX, B_plus_PY, B_plus_PZ, B_plus_PE); LorVec_K_star_plus = TLorentzVector (K_star_plus_PX, K_star_plus_PY, K_star_plus_PZ, K_star_plus_PE); LorVec_mu_minus = TLorentzVector (mu_minus_PX, mu_minus_PY, mu_minus_PZ, mu_minus_PE); LorVec_mu_plus = TLorentzVector (mu_plus_PX, mu_plus_PY, mu_plus_PZ, mu_plus_PE); if(Kst2Kspiplus){ /// Ks, pi+
LorVec_K_short = TLorentzVector (K_short_PX, K_short_PY, K_short_PZ, K_short_PE); LorVec_pi_plus = TLorentzVector (pi_plus_PX, pi_plus_PY, pi_plus_PZ, pi_plus_PE); LorVec_KS_pi_plus = TLorentzVector (Ks_pi_plus_PX, Ks_pi_plus_PY, Ks_pi_plus_PZ, Ks_pi_plus_PE); LorVec_KS_pi_minus = TLorentzVector (Ks_pi_minus_PX, Ks_pi_minus_PY, Ks_pi_minus_PZ, Ks_pi_minus_PE);
LorVec_pi_plus_MisIDed.SetXYZM (pi_plus_PX, pi_plus_PY, pi_plus_PZ, PDGMASS.MU); LorVec_mu_plus_MisIDed.SetXYZM (mu_plus_PX, mu_plus_PY, mu_plus_PZ, PDGMASS.PI_PLUS); } else{ /// K+, pi0
LorVec_K_plus = TLorentzVector (K_plus_PX, K_plus_PY, K_plus_PZ, K_plus_PE); LorVec_pi_zero_merged = TLorentzVector (pi_zero_merged_PX, pi_zero_merged_PY, pi_zero_merged_PZ, pi_zero_merged_PE); LorVec_pi_zero_resolved = TLorentzVector (pi_zero_resolved_PX, pi_zero_resolved_PY, pi_zero_resolved_PZ, pi_zero_resolved_PE); LorVec_gamma1 = TLorentzVector (gamma1_PX, gamma1_PY, gamma1_PZ, gamma1_PE); LorVec_gamma2 = TLorentzVector (gamma2_PX, gamma2_PY, gamma2_PZ, gamma2_PE); } //Recombination of 'Parent'-Particles
LorVec_DiMuon = LorVec_mu_minus + LorVec_mu_plus; if(Kst2Kspiplus){ LorVec_KaonPion = LorVec_K_short + LorVec_pi_plus; } if(Kst2Kpluspi0Merged){ LorVec_KaonPion = LorVec_K_plus + LorVec_pi_zero_merged; } if(Kst2Kpluspi0Resolved){ LorVec_DiGamma = LorVec_gamma1 + LorVec_gamma2; LorVec_KaonPion = LorVec_K_plus + LorVec_DiGamma; } TRUE_open_angle =LorVec_gamma1.Angle(LorVec_gamma2.Vect());
//Recombination of Particles
if(Kst2Kspiplus){ LorVec_DTF_KshortMuMu = LorVec_DTF_K_short + LorVec_DTF_DiMuon; LorVec_KshortMuMu = LorVec_K_short + LorVec_DiMuon; } if(Kst2Kpluspi0Merged){ LorVec_DTF_KplusMuMu = LorVec_DTF_K_plus + LorVec_DTF_DiMuon; LorVec_KplusMuMu = LorVec_K_plus + LorVec_DiMuon; } if(Kst2Kpluspi0Resolved){ LorVec_DTF_KplusMuMu = LorVec_DTF_K_plus + LorVec_DTF_DiMuon; LorVec_KplusMuMu = LorVec_K_plus + LorVec_DiMuon; LorVec_DTF_ReconBPiZero = LorVec_DTF_DiMuon + LorVec_DTF_K_plus + LorVec_DTF_pi_zero_resolved; LorVec_ReconBPiZero = LorVec_DiMuon + LorVec_K_plus + LorVec_pi_zero_resolved; LorVec_DTF_pi_zero_resolved = LorVec_DTF_DiGamma; LorVec_pi_zero_resolved = LorVec_DiGamma; }
LorVec_DTF_K_star_plus = LorVec_DTF_KaonPion; LorVec_K_star_plus = LorVec_KaonPion; LorVec_DTF_ReconB = LorVec_DTF_DiMuon + LorVec_DTF_K_star_plus; LorVec_ReconB = LorVec_DiMuon + LorVec_K_star_plus;
//-----------------------------------------------------------------------------------
B_plus_TRUE_ETA = LorVec_TRUE_B_plus.Eta(); B_plus_TRUE_PHI = LorVec_TRUE_B_plus.Phi();
if(preselected) B_plus_PHI = LorVec_ReconB.Phi();
B_plus_PX_DTF = LorVec_DTF_B_plus.Px(); B_plus_PY_DTF = LorVec_DTF_B_plus.Py(); B_plus_PZ_DTF = LorVec_DTF_B_plus.Pz(); B_plus_PT_DTF = LorVec_DTF_B_plus.Pt(); B_plus_PE_DTF = LorVec_DTF_B_plus.E(); B_plus_ETA_DTF = LorVec_DTF_B_plus.Eta(); B_plus_PHI_DTF = LorVec_DTF_B_plus.Phi(); //-----------------------------------------------------------------------------------
K_star_plus_TRUE_ETA = LorVec_TRUE_K_star_plus.Eta(); K_star_plus_TRUE_PHI = LorVec_TRUE_K_star_plus.Phi();
K_star_plus_PX_DTF = LorVec_DTF_K_star_plus.Px(); K_star_plus_PY_DTF = LorVec_DTF_K_star_plus.Py(); K_star_plus_PZ_DTF = LorVec_DTF_K_star_plus.Pz(); K_star_plus_PT_DTF = LorVec_DTF_K_star_plus.Pt(); K_star_plus_PE_DTF = LorVec_DTF_K_star_plus.E(); K_star_plus_ETA_DTF = LorVec_DTF_K_star_plus.Eta(); K_star_plus_PHI_DTF = LorVec_DTF_K_star_plus.Phi(); //-----------------------------------------------------------------------------------
if(Kst2Kpluspi0Merged){ //TODO: in case one really wants to do that, add DTF info
pi_zero_merged_TRUE_ETA = LorVec_TRUE_pi_zero_merged.Eta(); pi_zero_merged_TRUE_PHI = LorVec_TRUE_pi_zero_merged.Phi();
pi_zero_merged_PX_DTF = LorVec_DTF_pi_zero_merged.Px(); pi_zero_merged_PY_DTF = LorVec_DTF_pi_zero_merged.Py(); pi_zero_merged_PZ_DTF = LorVec_DTF_pi_zero_merged.Pz(); pi_zero_merged_PT_DTF = LorVec_DTF_pi_zero_merged.Pt(); pi_zero_merged_PE_DTF = LorVec_DTF_pi_zero_merged.E(); pi_zero_merged_ETA_DTF = LorVec_DTF_pi_zero_merged.Eta(); pi_zero_merged_PHI_DTF = LorVec_DTF_pi_zero_merged.Phi(); } //-----------------------------------------------------------------------------------
if(Kst2Kpluspi0Resolved){ if(preselected) pi_zero_resolved_PHI = LorVec_pi_zero_resolved.Phi(); pi_zero_resolved_TRUE_ETA = LorVec_TRUE_pi_zero_resolved.Eta(); pi_zero_resolved_TRUE_PHI = LorVec_TRUE_pi_zero_resolved.Phi();
pi_zero_resolved_PX_DTF = LorVec_DTF_pi_zero_resolved.Px(); pi_zero_resolved_PY_DTF = LorVec_DTF_pi_zero_resolved.Py(); pi_zero_resolved_PZ_DTF = LorVec_DTF_pi_zero_resolved.Pz(); pi_zero_resolved_PT_DTF = LorVec_DTF_pi_zero_resolved.Pt(); pi_zero_resolved_PE_DTF = LorVec_DTF_pi_zero_resolved.E(); pi_zero_resolved_ETA_DTF = LorVec_DTF_pi_zero_resolved.Eta(); pi_zero_resolved_PHI_DTF = LorVec_DTF_pi_zero_resolved.Phi(); //-----------------------------------------------------------------------------------
gamma1_TRUE_ETA = LorVec_TRUE_gamma1.Eta(); gamma1_TRUE_PHI = LorVec_TRUE_gamma1.Phi();
gamma2_TRUE_ETA = LorVec_TRUE_gamma2.Eta(); gamma2_TRUE_PHI = LorVec_TRUE_gamma2.Phi();
if(preselected){ gamma1_ETA= LorVec_gamma1.Eta(); gamma1_PHI= LorVec_gamma1.Phi();
gamma2_ETA= LorVec_gamma2.Eta(); gamma2_PHI= LorVec_gamma2.Phi();
} gamma1_PX_DTF = LorVec_DTF_gamma1.Px(); gamma1_PY_DTF = LorVec_DTF_gamma1.Py(); gamma1_PZ_DTF = LorVec_DTF_gamma1.Pz(); gamma1_PT_DTF = LorVec_DTF_gamma1.Pt(); gamma1_PE_DTF = LorVec_DTF_gamma1.E(); gamma1_ETA_DTF = LorVec_DTF_gamma1.Eta(); gamma1_PHI_DTF = LorVec_DTF_gamma1.Phi();
gamma2_PX_DTF = LorVec_DTF_gamma2.Px(); gamma2_PY_DTF = LorVec_DTF_gamma2.Py(); gamma2_PZ_DTF = LorVec_DTF_gamma2.Pz(); gamma2_PT_DTF = LorVec_DTF_gamma2.Pt(); gamma2_PE_DTF = LorVec_DTF_gamma2.E(); gamma2_ETA_DTF = LorVec_DTF_gamma2.Eta(); gamma2_PHI_DTF = LorVec_DTF_gamma2.Phi(); } //-----------------------------------------------------------------------------------
if(Kst2Kpluspi0Merged || Kst2Kpluspi0Resolved){
K_plus_TRUE_ETA = LorVec_TRUE_K_star_plus.Eta(); K_plus_TRUE_PHI = LorVec_TRUE_K_star_plus.Phi();
if(preselected){ K_plus_PHI = LorVec_K_plus.Phi(); } K_plus_PX_DTF = LorVec_DTF_K_plus.Px(); K_plus_PY_DTF = LorVec_DTF_K_plus.Py(); K_plus_PZ_DTF = LorVec_DTF_K_plus.Pz(); K_plus_PT_DTF = LorVec_DTF_K_plus.Pt(); K_plus_PE_DTF = LorVec_DTF_K_plus.E(); K_plus_ETA_DTF = LorVec_DTF_K_plus.Eta(); K_plus_PHI_DTF = LorVec_DTF_K_plus.Phi(); } //-----------------------------------------------------------------------------------
mu_minus_TRUE_ETA = LorVec_TRUE_mu_minus.Eta(); mu_minus_TRUE_PHI = LorVec_TRUE_mu_minus.Phi();
mu_plus_TRUE_ETA = LorVec_TRUE_mu_plus.Eta(); mu_plus_TRUE_PHI = LorVec_TRUE_mu_plus.Phi();
if(preselected){ mu_minus_ETA= LorVec_mu_minus.Eta(); mu_minus_PHI= LorVec_mu_minus.Phi();
mu_plus_ETA= LorVec_mu_plus.Eta(); mu_plus_PHI= LorVec_mu_plus.Phi(); } mu_minus_PX_DTF = LorVec_DTF_mu_minus.Px(); mu_minus_PY_DTF = LorVec_DTF_mu_minus.Py(); mu_minus_PZ_DTF = LorVec_DTF_mu_minus.Pz(); mu_minus_PT_DTF = LorVec_DTF_mu_minus.Pt(); mu_minus_PE_DTF = LorVec_DTF_mu_minus.E(); mu_minus_ETA_DTF = LorVec_DTF_mu_minus.Eta(); mu_minus_PHI_DTF = LorVec_DTF_mu_minus.Phi();
mu_plus_PX_DTF = LorVec_DTF_mu_plus.Px(); mu_plus_PY_DTF = LorVec_DTF_mu_plus.Py(); mu_plus_PZ_DTF = LorVec_DTF_mu_plus.Pz(); mu_plus_PT_DTF = LorVec_DTF_mu_plus.Pt(); mu_plus_PE_DTF = LorVec_DTF_mu_plus.E(); mu_plus_ETA_DTF = LorVec_DTF_mu_plus.Eta(); mu_plus_PHI_DTF = LorVec_DTF_mu_plus.Phi();
resolution_tree->Fill(); } //end of event loop
//-----------------------------------------------------------------------------------
B_plus_DTF_PV_Z = (Double_t)(f_B_plus_DTF_PV_Z[0]);
//TODO
resolution_tree -> Branch( "B_plus_ThetaL_DTF" , &B_plus_ThetaL_DTF); resolution_tree -> Branch( "B_plus_ThetaK_DTF" , &B_plus_ThetaK_DTF); resolution_tree -> Branch( "B_plus_Phi_DTF" , &B_plus_Phi_DTF );
//-----------------------------------------------------------------------------------
resolution_tree->SetBranchStatus("*TRUEPT*",0); resolution_tree->SetBranchStatus("*TRUEP_*",0); resolution_tree->SetBranchStatus("*CONE*",0); resolution_tree->SetBranchStatus("*892*",0); resolution_tree->SetBranchStatus("*0.*",0); resolution_tree->SetBranchStatus("*J_psi_1S*",0); resolution_tree->SetBranchStatus("*TRUETAU*",0); if (preselected) resolution_tree->SetBranchStatus("*NEW*",0);
tree->Delete(); resolution_tree->CloneTree(-1)->Write();
output->Close(); cout << "[INFO]\t\t Histograms created." << endl; return 1; }
int ResPreselAllMC(Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if(Run != 1 && Run != 2){ std::cout << "[ERROR]\t\tInvalid Run number given: " << Run << ". Exit program!" << std::endl; return 0; }
if ( ResPresel((Run == 1 ? "2011" : "2015"),"down", true, false, false, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2011" : "2015"),"up" , true, false, false, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2012" : "2016"),"down", true, false, false, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2012" : "2016"),"up" , true, false, false, preselected, truthMatched) == 0) return 0; return 1;
} int ResPreselAllRefChannel(Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if(Run != 1 && Run != 2){ std::cout << "[ERROR]\t\tInvalid Run number given: " << Run << ". Exit program!" << std::endl; return 0; } if ( ResPresel((Run == 1 ? "2011" : "2015"),"down", true, true, false, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2011" : "2015"),"up" , true, true, false, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2012" : "2016"),"down", true, true, false, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2012" : "2016"),"up" , true, true, false, preselected, truthMatched) == 0) return 0; return 1;
} int ResPreselAllPHSP(Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if(Run != 1 && Run != 2){ std::cout << "[ERROR]\t\tInvalid Run number given: " << Run << ". Exit program!" << std::endl; return 0; } if ( ResPresel((Run == 1 ? "2011" : "2015"),"down", true, false, true, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2011" : "2015"),"up" , true, false, true, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2012" : "2016"),"down", true, false, true, preselected, truthMatched) == 0) return 0; if ( ResPresel((Run == 1 ? "2012" : "2016"),"up" , true, false, true, preselected, truthMatched) == 0) return 0; return 1;
} int ResPreselAll( Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if (ResPreselAllMC (Run, preselected, truthMatched)==0) return 0; if (Run == 2) cout << "[INFO]\tNo reference channel for run 2, Skipping."; else{ if (ResPreselAllRefChannel (Run, preselected, truthMatched)==0) return 0; } if (ResPreselAllPHSP (Run, preselected, truthMatched)==0) return 0; return 1; } int ResPreselComplete( Int_t Run = 1){ if (ResPreselAllMC (Run, 0, 0)==0) return 0; if (ResPreselAllMC (Run, 1, 0)==0) return 0; if (ResPreselAllMC (Run, 1, 1)==0) return 0; if (ResPreselAllRefChannel (Run, 0, 0)==0) return 0; if (ResPreselAllRefChannel (Run, 1, 0)==0) return 0; if (ResPreselAllRefChannel (Run, 1, 1)==0) return 0; if (ResPreselAllPHSP (Run, 0, 0)==0) return 0; if (ResPreselAllPHSP (Run, 1, 0)==0) return 0; if (ResPreselAllPHSP (Run, 1, 1)==0) return 0; return 1; }
double pull(double rec, double truth){ return double(rec-truth); } void res_sys(TH2* ref,TH1* res_sys, TH1* sys, TH1* res, TF1 *func, int nBins, TFile *output, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){
gStyle->SetOptStat(0); string name = ref->GetName(); //--------------------------------------------
// output->cd(); //remove to improve performance
design_diff(ref,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); ref->FitSlicesY(func,0,-1,0); TH2F *ref_0 = (TH2F*)output->Get((name +"_0").c_str()); //const
TH2F *ref_1 = (TH2F*)output->Get((name +"_1").c_str()); //mean
TH2F *ref_2 = (TH2F*)output->Get((name +"_2").c_str()); //sigma
ref_0->Write(); ref_1->Write(); ref_2->Write(); for (int b = 1; b < nBins+1; b++){ res_sys->SetBinContent(b,ref_1->GetBinContent(b)); res_sys->SetBinError(b,ref_2->GetBinContent(b));
res->SetBinContent(b,ref_2->GetBinContent(b)); res->SetBinError(b,ref_2->GetBinError(b));
sys->SetBinContent(b,ref_1->GetBinContent(b)); sys->SetBinError(b,ref_1->GetBinError(b));
}
design_fit (res_sys, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_systematics (sys, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_resolution (res, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
res_sys->Write(); sys->Write(); res->Write();
ref_0->Clear(); ref_1->Clear(); ref_2->Clear(); delete ref_0; delete ref_1; delete ref_2; return; }
void pull(TH1* res,TH1* pull, int nBins, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){
// output->cd(); //remove to improve performance
for (int b = 1; b < nBins+1; b++){ if (res->GetBinError(b) < 1e-8){ cout << "[ERROR]\tIn " << res->GetName() << " zero error. Check the fits!" << endl; cout << "[ERROR]\tSetting pull to 0" << endl; pull->SetBinContent(b,0); continue; } // cout << b << " " << res->GetBinContent(b) << endl;
pull->SetBinContent(b,double(res->GetBinContent(b))/res->GetBinError(b)); } pull->Write(); design_pull(pull,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); return; } void res(TH1* res_sys,TH1* res, int nBins, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){
// output->cd(); //remove to improve performance
/*
for (int b = 1; b < nBins+1; b++){ res->SetBinContent(b,res_sys->GetBinError(b)); } res->Write(); design_resolution(res,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); */ return; } void sys(TH1* res_sys,TH1* sys, int nBins, bool preselected, string year, string magnet, bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool truthMatched = false){ /*
// output->cd(); //remove to improve performance
for (int b = 1; b < nBins+1; b++){ sys->SetBinContent(b,res_sys->GetBinContent(b)); } sys->Write(); design_systematics(sys,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); */ return; }
int ResHist(std::string year = "2011", std::string magnet = "down", bool MC = true, bool ReferenceChannel = false, bool PHSP = false, bool preselected = true, bool truthMatched = false){
MC = true; // Kst2Kpluspi0Resolved case
bool OnlyDTF = false; //don't save non-DTF var
TFile *input = 0; string newName = ""; string legTitle = ""; string TM = ""; preselected ? newName = "_resolution_preselected" : newName ="_resolution"; truthMatched ? TM = "_TM" : ""; newName = newName + TM; Kst2Kspiplus? legTitle= particleLatex("Kstar") +" #rightarrow " +particleLatex("Kshort") + particleLatex("piplus") :legTitle= particleLatex("Kstar") +" #rightarrow " +particleLatex("Kplus") + particleLatex("pizero"); preselected ? legTitle= legTitle + ": preselected" : legTitle = legTitle+": stripped"; truthMatched ? legTitle= "#splitline{" + legTitle+":}{TruthMatched}" : legTitle = legTitle; if (MC){ if(ReferenceChannel) legTitle = legTitle + " {MCRef}"; else if (PHSP) legTitle = legTitle + " {PHSP MC}"; else legTitle = legTitle + " {MC}"; } TChain *tree =new TChain(truthMatched ? "DecayTreeTruthMatched" : "DecayTree");
bool bothPol = false; if (magnet == "downup" || magnet == "updown"){ bothPol = true; magnet = "down"; }
if(Kst2Kpluspi0Resolved){ if(!MC){ tree->Add(Form("%s/data/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),(magnet).c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),(magnet).c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else{ if(ReferenceChannel){ tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else if(PHSP){ tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else{ tree->Add(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } } } // Kst2Kpluspi0Merged case
if(Kst2Kpluspi0Merged){ if(!MC){ tree->Add(Form("%s/data/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else{ if(ReferenceChannel){ tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/MC/RefKplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else if(PHSP){ tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/PHSP/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else{ tree->Add(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } } } // Kst2Kspiplus case
if(Kst2Kspiplus){ if(!MC){ tree->Add(Form("%s/data/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/MC/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else{ if(ReferenceChannel){ tree->Add(Form("%s/data/MC/RefKshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/MC/RefKshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else if(PHSP){ tree->Add(Form("%s/data/PHSP/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/PHSP/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } else{ tree->Add(Form("%s/data/MC/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); if (bothPol){ magnet = "down"; tree->Add(Form("%s/data/MC/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str())); } } } } if (bothPol) magnet = "both";
/////////////////////
// Branches //
/////////////////////
//Just load everything in case it's needed later
/////////////////////
///B+
Double_t B_plus_PX = 0.; Double_t B_plus_PY = 0.; Double_t B_plus_PZ = 0.; Double_t B_plus_PT = 0.; Double_t B_plus_PE = 0.; Double_t B_plus_ETA = 0.; Double_t B_plus_PHI = 0.;
Double_t B_plus_TRUE_PX = 0.; Double_t B_plus_TRUE_PY = 0.; Double_t B_plus_TRUE_PZ = 0.; Double_t B_plus_TRUE_PT = 0.; Double_t B_plus_TRUE_PE = 0.; Double_t B_plus_TRUE_ETA = 0.; Double_t B_plus_TRUE_PHI = 0.;
Double_t B_plus_PX_DTF = 0.; Double_t B_plus_PY_DTF = 0.; Double_t B_plus_PZ_DTF = 0.; Double_t B_plus_PT_DTF = 0.; Double_t B_plus_PE_DTF = 0.; Double_t B_plus_ETA_DTF = 0.; Double_t B_plus_PHI_DTF = 0.;
///K*+
Double_t K_star_plus_PX = 0.; Double_t K_star_plus_PY = 0.; Double_t K_star_plus_PZ = 0.; Double_t K_star_plus_PT = 0.; Double_t K_star_plus_PE = 0.; Double_t K_star_plus_ETA = 0.; Double_t K_star_plus_PHI = 0.;
Double_t K_star_plus_TRUE_PX = 0.; Double_t K_star_plus_TRUE_PY = 0.; Double_t K_star_plus_TRUE_PZ = 0.; Double_t K_star_plus_TRUE_PT = 0.; Double_t K_star_plus_TRUE_PE = 0.; Double_t K_star_plus_TRUE_ETA = 0.; Double_t K_star_plus_TRUE_PHI = 0.;
Double_t K_star_plus_PX_DTF = 0.; Double_t K_star_plus_PY_DTF = 0.; Double_t K_star_plus_PZ_DTF = 0.; Double_t K_star_plus_PT_DTF = 0.; Double_t K_star_plus_PE_DTF = 0.; Double_t K_star_plus_ETA_DTF = 0.; Double_t K_star_plus_PHI_DTF = 0.;
///K+
Double_t K_plus_PX = 0.; Double_t K_plus_PY = 0.; Double_t K_plus_PZ = 0.; Double_t K_plus_PT = 0.; Double_t K_plus_PE = 0.; Double_t K_plus_ETA = 0.; Double_t K_plus_PHI = 0.;
Double_t K_plus_TRUE_PX = 0.; Double_t K_plus_TRUE_PY = 0.; Double_t K_plus_TRUE_PZ = 0.; Double_t K_plus_TRUE_PT = 0.; Double_t K_plus_TRUE_PE = 0.; Double_t K_plus_TRUE_ETA = 0.; Double_t K_plus_TRUE_PHI = 0.;
Double_t K_plus_PX_DTF = 0.; Double_t K_plus_PY_DTF = 0.; Double_t K_plus_PZ_DTF = 0.; Double_t K_plus_PE_DTF = 0.; Double_t K_plus_PT_DTF = 0.; Double_t K_plus_ETA_DTF = 0.; Double_t K_plus_PHI_DTF = 0.;
///pi0 (merged)
Double_t pi_zero_merged_PX = 0.; Double_t pi_zero_merged_PY = 0.; Double_t pi_zero_merged_PZ = 0.; Double_t pi_zero_merged_PT = 0.; Double_t pi_zero_merged_PE = 0.; Double_t pi_zero_merged_ETA = 0.; Double_t pi_zero_merged_PHI = 0.;
Double_t pi_zero_merged_TRUE_PX = 0.; Double_t pi_zero_merged_TRUE_PY = 0.; Double_t pi_zero_merged_TRUE_PZ = 0.; Double_t pi_zero_merged_TRUE_PT = 0.; Double_t pi_zero_merged_TRUE_PE = 0.; Double_t pi_zero_merged_TRUE_ETA = 0.; Double_t pi_zero_merged_TRUE_PHI = 0.;
Double_t pi_zero_merged_PX_DTF = 0.; Double_t pi_zero_merged_PY_DTF = 0.; Double_t pi_zero_merged_PZ_DTF = 0.; Double_t pi_zero_merged_PT_DTF = 0.; Double_t pi_zero_merged_PE_DTF = 0.; Double_t pi_zero_merged_ETA_DTF = 0.; Double_t pi_zero_merged_PHI_DTF = 0.;
///pi0 (resolved)
Double_t pi_zero_resolved_PX = 0.; Double_t pi_zero_resolved_PY = 0.; Double_t pi_zero_resolved_PZ = 0.; Double_t pi_zero_resolved_PT = 0.; Double_t pi_zero_resolved_PE = 0.; Double_t pi_zero_resolved_ETA = 0.; Double_t pi_zero_resolved_PHI = 0.;
Double_t pi_zero_resolved_TRUE_PX = 0.; Double_t pi_zero_resolved_TRUE_PY = 0.; Double_t pi_zero_resolved_TRUE_PZ = 0.; Double_t pi_zero_resolved_TRUE_PT = 0.; Double_t pi_zero_resolved_TRUE_PE = 0.; Double_t pi_zero_resolved_TRUE_ETA = 0.; Double_t pi_zero_resolved_TRUE_PHI = 0.;
Double_t pi_zero_resolved_PX_DTF = 0.; Double_t pi_zero_resolved_PY_DTF = 0.; Double_t pi_zero_resolved_PZ_DTF = 0.; Double_t pi_zero_resolved_PT_DTF = 0.; Double_t pi_zero_resolved_PE_DTF = 0.; Double_t pi_zero_resolved_ETA_DTF = 0.; Double_t pi_zero_resolved_PHI_DTF = 0.;
///Kshort
Double_t K_short_PX = 0.; Double_t K_short_PY = 0.; Double_t K_short_PZ = 0.; Double_t K_short_PT = 0.; Double_t K_short_PE = 0.; Double_t K_short_ETA = 0.; Double_t K_short_PHI = 0.;
Double_t K_short_TRUE_PX = 0.; Double_t K_short_TRUE_PY = 0.; Double_t K_short_TRUE_PZ = 0.; Double_t K_short_TRUE_PT = 0.; Double_t K_short_TRUE_PE = 0.; Double_t K_short_TRUE_ETA = 0.; Double_t K_short_TRUE_PHI = 0.;
Double_t K_short_PX_DTF = 0.; Double_t K_short_PY_DTF = 0.; Double_t K_short_PZ_DTF = 0.; Double_t K_short_PT_DTF = 0.; Double_t K_short_PE_DTF = 0.; Double_t K_short_ETA_DTF = 0.; Double_t K_short_PHI_DTF = 0.;
Float_t f_K_short_M_DTF[100]; Double_t K_short_M_DTF = 0.;
///pi+ (KS)
Double_t Ks_pi_plus_PX = 0.; Double_t Ks_pi_plus_PY = 0.; Double_t Ks_pi_plus_PZ = 0.; Double_t Ks_pi_plus_PT = 0.; Double_t Ks_pi_plus_PE = 0.; Double_t Ks_pi_plus_ETA = 0.; Double_t Ks_pi_plus_PHI = 0.;
Double_t Ks_pi_plus_TRUE_PX = 0.; Double_t Ks_pi_plus_TRUE_PY = 0.; Double_t Ks_pi_plus_TRUE_PZ = 0.; Double_t Ks_pi_plus_TRUE_PT = 0.; Double_t Ks_pi_plus_TRUE_PE = 0.; Double_t Ks_pi_plus_TRUE_ETA = 0.; Double_t Ks_pi_plus_TRUE_PHI = 0.;
Double_t Ks_pi_plus_PX_DTF = 0.; Double_t Ks_pi_plus_PY_DTF = 0.; Double_t Ks_pi_plus_PZ_DTF = 0.; Double_t Ks_pi_plus_PT_DTF = 0.; Double_t Ks_pi_plus_PE_DTF = 0.; Double_t Ks_pi_plus_ETA_DTF = 0.; Double_t Ks_pi_plus_PHI_DTF = 0.;
///pi- (KS)
Double_t Ks_pi_minus_PX = 0.; Double_t Ks_pi_minus_PY = 0.; Double_t Ks_pi_minus_PZ = 0.; Double_t Ks_pi_minus_PT = 0.; Double_t Ks_pi_minus_PE = 0.; Double_t Ks_pi_minus_ETA = 0.; Double_t Ks_pi_minus_PHI = 0.;
Double_t Ks_pi_minus_TRUE_PX = 0.; Double_t Ks_pi_minus_TRUE_PY = 0.; Double_t Ks_pi_minus_TRUE_PZ = 0.; Double_t Ks_pi_minus_TRUE_PT = 0.; Double_t Ks_pi_minus_TRUE_PE = 0.; Double_t Ks_pi_minus_TRUE_ETA = 0.; Double_t Ks_pi_minus_TRUE_PHI = 0.;
Double_t Ks_pi_minus_PX_DTF = 0.; Double_t Ks_pi_minus_PY_DTF = 0.; Double_t Ks_pi_minus_PZ_DTF = 0.; Double_t Ks_pi_minus_PT_DTF = 0.; Double_t Ks_pi_minus_PE_DTF = 0.; Double_t Ks_pi_minus_ETA_DTF = 0.; Double_t Ks_pi_minus_PHI_DTF = 0.;
///pi+
Double_t pi_plus_PX = 0.; Double_t pi_plus_PY = 0.; Double_t pi_plus_PZ = 0.; Double_t pi_plus_PT = 0.; Double_t pi_plus_PE = 0.; Double_t pi_plus_ETA = 0.; Double_t pi_plus_PHI = 0.;
Double_t pi_plus_TRUE_PX = 0.; Double_t pi_plus_TRUE_PY = 0.; Double_t pi_plus_TRUE_PZ = 0.; Double_t pi_plus_TRUE_PT = 0.; Double_t pi_plus_TRUE_PE = 0.; Double_t pi_plus_TRUE_ETA = 0.; Double_t pi_plus_TRUE_PHI = 0.;
Double_t pi_plus_PX_DTF = 0.; Double_t pi_plus_PY_DTF = 0.; Double_t pi_plus_PZ_DTF = 0.; Double_t pi_plus_PT_DTF = 0.; Double_t pi_plus_PE_DTF = 0.; Double_t pi_plus_ETA_DTF = 0.; Double_t pi_plus_PHI_DTF = 0.;
///mu+
Double_t mu_minus_PX = 0.; Double_t mu_minus_PY = 0.; Double_t mu_minus_PZ = 0.; Double_t mu_minus_PT = 0.; Double_t mu_minus_PE = 0.; Double_t mu_minus_ETA = 0.; Double_t mu_minus_PHI = 0.;
Double_t mu_minus_TRUE_PX = 0.; Double_t mu_minus_TRUE_PY = 0.; Double_t mu_minus_TRUE_PZ = 0.; Double_t mu_minus_TRUE_PT = 0.; Double_t mu_minus_TRUE_PE = 0.; Double_t mu_minus_TRUE_ETA = 0.; Double_t mu_minus_TRUE_PHI = 0.;
Double_t mu_minus_PX_DTF = 0.; Double_t mu_minus_PY_DTF = 0.; Double_t mu_minus_PZ_DTF = 0.; Double_t mu_minus_PT_DTF = 0.; Double_t mu_minus_PE_DTF = 0.; Double_t mu_minus_ETA_DTF = 0.; Double_t mu_minus_PHI_DTF = 0.;
///mu+
Double_t mu_plus_PX = 0.; Double_t mu_plus_PY = 0.; Double_t mu_plus_PZ = 0.; Double_t mu_plus_PT = 0.; Double_t mu_plus_PE = 0.; Double_t mu_plus_ETA = 0.; Double_t mu_plus_PHI = 0.;
Double_t mu_plus_TRUE_PX = 0.; Double_t mu_plus_TRUE_PY = 0.; Double_t mu_plus_TRUE_PZ = 0.; Double_t mu_plus_TRUE_PT = 0.; Double_t mu_plus_TRUE_PE = 0.; Double_t mu_plus_TRUE_ETA = 0.; Double_t mu_plus_TRUE_PHI = 0.;
Double_t mu_plus_PX_DTF = 0.; Double_t mu_plus_PY_DTF = 0.; Double_t mu_plus_PZ_DTF = 0.; Double_t mu_plus_PT_DTF = 0.; Double_t mu_plus_PE_DTF = 0.; Double_t mu_plus_ETA_DTF = 0.; Double_t mu_plus_PHI_DTF = 0.;
///gamma1
Double_t gamma1_PX = 0.; Double_t gamma1_PY = 0.; Double_t gamma1_PZ = 0.; Double_t gamma1_PT = 0.; Double_t gamma1_PE = 0.; Double_t gamma1_ETA = 0.; Double_t gamma1_PHI = 0.;
Double_t gamma1_TRUE_PX = 0.; Double_t gamma1_TRUE_PY = 0.; Double_t gamma1_TRUE_PZ = 0.; Double_t gamma1_TRUE_PT = 0.; Double_t gamma1_TRUE_PE = 0.; Double_t gamma1_TRUE_ETA = 0.; Double_t gamma1_TRUE_PHI = 0.;
Double_t gamma1_PX_DTF = 0.; Double_t gamma1_PY_DTF = 0.; Double_t gamma1_PZ_DTF = 0.; Double_t gamma1_PT_DTF = 0.; Double_t gamma1_PE_DTF = 0.; Double_t gamma1_ETA_DTF = 0.; Double_t gamma1_PHI_DTF = 0.;
///gamma2
Double_t gamma2_PX = 0.; Double_t gamma2_PY = 0.; Double_t gamma2_PZ = 0.; Double_t gamma2_PT = 0.; Double_t gamma2_PE = 0.; Double_t gamma2_ETA = 0.; Double_t gamma2_PHI = 0.;
Double_t gamma2_PX_DTF = 0.; Double_t gamma2_PY_DTF = 0.; Double_t gamma2_PZ_DTF = 0.; Double_t gamma2_PT_DTF = 0.; Double_t gamma2_PE_DTF = 0.; Double_t gamma2_ETA_DTF = 0.; Double_t gamma2_PHI_DTF = 0.;
Double_t gamma2_TRUE_PX = 0.; Double_t gamma2_TRUE_PY = 0.; Double_t gamma2_TRUE_PZ = 0.; Double_t gamma2_TRUE_PT = 0.; Double_t gamma2_TRUE_PE = 0.; Double_t gamma2_TRUE_ETA = 0.; Double_t gamma2_TRUE_PHI = 0.;
//angles
Double_t B_plus_ThetaL = 0.; Double_t B_plus_ThetaK = 0.; Double_t B_plus_Phi = 0.;
Double_t B_plus_ThetaL_DTF = 0.; Double_t B_plus_ThetaK_DTF = 0.; Double_t B_plus_Phi_DTF = 0.;
Double_t B_plus_TRUE_ThetaL = 0.; Double_t B_plus_TRUE_ThetaK = 0.; Double_t B_plus_TRUE_Phi = 0.;
Double_t open_angle = 0.; Double_t open_angle_DTF = 0.; Double_t TRUE_open_angle = 0.;
//global variables
Double_t B_plus_ENDVERTEX_Z = 0.; Double_t B_plus_ENDVERTEX_ZERR = 0.; Double_t B_plus_OWNPV_Z = 0.; Double_t B_plus_OWNPV_ZERR = 0.; Double_t B_plus_TRUEORIGINVERTEX_Z = 0.; Double_t B_plus_TRUEENDVERTEX_Z = 0.; Double_t B_plus_TOPPV_Z = 0.;//TODO: what is this?
Double_t B_plus_DTF_PV_Z = 0.;
Double_t K_star_plus_ENDVERTEX_Z = 0.; Double_t K_star_plus_ENDVERTEX_ZERR = 0.; Double_t K_star_plus_OWNPV_Z = 0.; Double_t K_star_plus_OWNPV_ZERR = 0.; Double_t K_star_plus_TRUEORIGINVERTEX_Z = 0.; Double_t K_star_plus_TRUEENDVERTEX_Z = 0.;
Double_t K_plus_OWNPV_Z = 0.; Double_t K_plus_OWNPV_ZERR = 0.; Double_t K_plus_TRUEORIGINVERTEX_Z = 0.; Double_t K_plus_TRUEENDVERTEX_Z = 0.;
Double_t pi_zero_resolved_TRUEORIGINVERTEX_Z = 0.; Double_t pi_zero_resolved_TRUEENDVERTEX_Z = 0.;
Double_t gamma1_TRUEORIGINVERTEX_Z = 0.; Double_t gamma1_TRUEENDVERTEX_Z = 0.;
Double_t gamma2_TRUEORIGINVERTEX_Z = 0.; Double_t gamma2_TRUEENDVERTEX_Z = 0.;
Double_t mu_plus_OWNPV_Z = 0.; Double_t mu_plus_OWNPV_ZERR = 0.; Double_t mu_plus_TRUEORIGINVERTEX_Z = 0.; Double_t mu_plus_TRUEENDVERTEX_Z = 0.;
Double_t mu_minus_OWNPV_Z = 0.; Double_t mu_minus_OWNPV_ZERR = 0.; Double_t mu_minus_TRUEORIGINVERTEX_Z = 0.; Double_t mu_minus_TRUEENDVERTEX_Z = 0.;
tree->SetBranchStatus("*",1);
//particle masses and momenta
tree -> SetBranchAddress( "B_plus_PX" , &B_plus_PX ); tree -> SetBranchAddress( "B_plus_PY" , &B_plus_PY ); tree -> SetBranchAddress( "B_plus_PZ" , &B_plus_PZ ); tree -> SetBranchAddress( "B_plus_PT" , &B_plus_PT ); tree -> SetBranchAddress( "B_plus_PE" , &B_plus_PE ); tree -> SetBranchAddress( "B_plus_ETA" , &B_plus_ETA ); tree -> SetBranchAddress( "B_plus_PHI" , &B_plus_PHI );
tree -> SetBranchAddress( "B_plus_TRUE_PX" , &B_plus_TRUE_PX ); tree -> SetBranchAddress( "B_plus_TRUE_PY" , &B_plus_TRUE_PY ); tree -> SetBranchAddress( "B_plus_TRUE_PZ" , &B_plus_TRUE_PZ ); tree -> SetBranchAddress( "B_plus_TRUE_PE" , &B_plus_TRUE_PE ); tree -> SetBranchAddress( "B_plus_TRUE_PT" , &B_plus_TRUE_PT ); tree -> SetBranchAddress( "B_plus_TRUE_ETA" , &B_plus_TRUE_ETA ); tree -> SetBranchAddress( "B_plus_TRUE_PHI" , &B_plus_TRUE_PHI );
tree -> SetBranchAddress( "B_plus_PX_DTF" , &B_plus_PX_DTF ); tree -> SetBranchAddress( "B_plus_PY_DTF" , &B_plus_PY_DTF ); tree -> SetBranchAddress( "B_plus_PZ_DTF" , &B_plus_PZ_DTF ); tree -> SetBranchAddress( "B_plus_PT_DTF" , &B_plus_PT_DTF ); tree -> SetBranchAddress( "B_plus_PE_DTF" , &B_plus_PE_DTF ); tree -> SetBranchAddress( "B_plus_ETA_DTF" , &B_plus_ETA_DTF ); tree -> SetBranchAddress( "B_plus_PHI_DTF" , &B_plus_PHI_DTF );
tree -> SetBranchAddress( "K_star_plus_PX" , &K_star_plus_PX ); tree -> SetBranchAddress( "K_star_plus_PY" , &K_star_plus_PY ); tree -> SetBranchAddress( "K_star_plus_PZ" , &K_star_plus_PZ ); tree -> SetBranchAddress( "K_star_plus_PE" , &K_star_plus_PE ); tree -> SetBranchAddress( "K_star_plus_PT" , &K_star_plus_PT ); tree -> SetBranchAddress( "K_star_plus_PHI" , &K_star_plus_PHI ); tree -> SetBranchAddress( "K_star_plus_ETA" , &K_star_plus_ETA );
tree -> SetBranchAddress( "K_star_plus_TRUE_PX" , &K_star_plus_TRUE_PX ); tree -> SetBranchAddress( "K_star_plus_TRUE_PY" , &K_star_plus_TRUE_PY ); tree -> SetBranchAddress( "K_star_plus_TRUE_PZ" , &K_star_plus_TRUE_PZ ); tree -> SetBranchAddress( "K_star_plus_TRUE_PE" , &K_star_plus_TRUE_PE ); tree -> SetBranchAddress( "K_star_plus_TRUE_PT" , &K_star_plus_TRUE_PT ); tree -> SetBranchAddress( "K_star_plus_TRUE_ETA" , &K_star_plus_TRUE_ETA ); tree -> SetBranchAddress( "K_star_plus_TRUE_PHI" , &K_star_plus_TRUE_PHI );
tree -> SetBranchAddress( "K_star_plus_PX_DTF" , &K_star_plus_PX_DTF ); tree -> SetBranchAddress( "K_star_plus_PY_DTF" , &K_star_plus_PY_DTF ); tree -> SetBranchAddress( "K_star_plus_PZ_DTF" , &K_star_plus_PZ_DTF ); tree -> SetBranchAddress( "K_star_plus_PE_DTF" , &K_star_plus_PE_DTF ); tree -> SetBranchAddress( "K_star_plus_PT_DTF" , &K_star_plus_PT_DTF ); tree -> SetBranchAddress( "K_star_plus_PHI_DTF" , &K_star_plus_PHI_DTF ); tree -> SetBranchAddress( "K_star_plus_ETA_DTF" , &K_star_plus_ETA_DTF );
if(Kst2Kpluspi0Merged){ //TODO: in case one really wants to do that, add DTF info
tree -> SetBranchAddress( "pi_zero_merged_PX" , &pi_zero_merged_PX ); tree -> SetBranchAddress( "pi_zero_merged_PY" , &pi_zero_merged_PY ); tree -> SetBranchAddress( "pi_zero_merged_PZ" , &pi_zero_merged_PZ ); tree -> SetBranchAddress( "pi_zero_merged_PE" , &pi_zero_merged_PE ); tree -> SetBranchAddress( "pi_zero_merged_PT" , &pi_zero_merged_PT ); tree -> SetBranchAddress( "pi_zero_merged_ETA" , &pi_zero_merged_ETA ); tree -> SetBranchAddress( "pi_zero_merged_PHI" , &pi_zero_merged_PHI );
tree -> SetBranchAddress( "pi_zero_merged_TRUE_PX" , &pi_zero_merged_TRUE_PX ); tree -> SetBranchAddress( "pi_zero_merged_TRUE_PY" , &pi_zero_merged_TRUE_PY ); tree -> SetBranchAddress( "pi_zero_merged_TRUE_PZ" , &pi_zero_merged_TRUE_PZ ); tree -> SetBranchAddress( "pi_zero_merged_TRUE_PE" , &pi_zero_merged_TRUE_PE ); tree -> SetBranchAddress( "pi_zero_merged_TRUE_PT" , &pi_zero_merged_TRUE_PT ); tree -> SetBranchAddress( "pi_zero_merged_TRUE_ETA" , &pi_zero_merged_TRUE_ETA ); tree -> SetBranchAddress( "pi_zero_merged_TRUE_PHI" , &pi_zero_merged_TRUE_PHI );
tree -> SetBranchAddress( "pi_zero_merged_PX_DTF" , &pi_zero_merged_PX_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PY_DTF" , &pi_zero_merged_PY_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PZ_DTF" , &pi_zero_merged_PZ_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PE_DTF" , &pi_zero_merged_PE_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PT_DTF" , &pi_zero_merged_PT_DTF ); tree -> SetBranchAddress( "pi_zero_merged_ETA_DTF" , &pi_zero_merged_ETA_DTF ); tree -> SetBranchAddress( "pi_zero_merged_PHI_DTF" , &pi_zero_merged_PHI_DTF ); }
if(Kst2Kpluspi0Resolved){ tree -> SetBranchAddress( "pi_zero_resolved_PX" , &pi_zero_resolved_PX ); tree -> SetBranchAddress( "pi_zero_resolved_PY" , &pi_zero_resolved_PY ); tree -> SetBranchAddress( "pi_zero_resolved_PZ" , &pi_zero_resolved_PZ ); tree -> SetBranchAddress( "pi_zero_resolved_PT" , &pi_zero_resolved_PT ); tree -> SetBranchAddress( "pi_zero_resolved_PE" , &pi_zero_resolved_PE ); tree -> SetBranchAddress( "pi_zero_resolved_ETA" , &pi_zero_resolved_ETA ); tree -> SetBranchAddress( "pi_zero_resolved_PHI" , &pi_zero_resolved_PHI );
tree -> SetBranchAddress( "pi_zero_resolved_TRUE_PX" , &pi_zero_resolved_TRUE_PX ); tree -> SetBranchAddress( "pi_zero_resolved_TRUE_PY" , &pi_zero_resolved_TRUE_PY ); tree -> SetBranchAddress( "pi_zero_resolved_TRUE_PZ" , &pi_zero_resolved_TRUE_PZ ); tree -> SetBranchAddress( "pi_zero_resolved_TRUE_PE" , &pi_zero_resolved_TRUE_PE ); tree -> SetBranchAddress( "pi_zero_resolved_TRUE_PT" , &pi_zero_resolved_TRUE_PT ); tree -> SetBranchAddress( "pi_zero_resolved_TRUE_ETA" , &pi_zero_resolved_TRUE_ETA ); tree -> SetBranchAddress( "pi_zero_resolved_TRUE_PHI" , &pi_zero_resolved_TRUE_PHI );
tree -> SetBranchAddress( "pi_zero_resolved_PX_DTF" , &pi_zero_resolved_PX_DTF ); tree -> SetBranchAddress( "pi_zero_resolved_PY_DTF" , &pi_zero_resolved_PY_DTF ); tree -> SetBranchAddress( "pi_zero_resolved_PZ_DTF" , &pi_zero_resolved_PZ_DTF ); tree -> SetBranchAddress( "pi_zero_resolved_PE_DTF" , &pi_zero_resolved_PE_DTF ); tree -> SetBranchAddress( "pi_zero_resolved_PT_DTF" , &pi_zero_resolved_PT_DTF ); tree -> SetBranchAddress( "pi_zero_resolved_ETA_DTF" , &pi_zero_resolved_ETA_DTF ); tree -> SetBranchAddress( "pi_zero_resolved_PHI_DTF" , &pi_zero_resolved_PHI_DTF );
tree -> SetBranchAddress( "gamma1_PX" , &gamma1_PX ); tree -> SetBranchAddress( "gamma1_PY" , &gamma1_PY ); tree -> SetBranchAddress( "gamma1_PZ" , &gamma1_PZ ); tree -> SetBranchAddress( "gamma1_PE" , &gamma1_PE ); tree -> SetBranchAddress( "gamma1_PT" , &gamma1_PT ); tree -> SetBranchAddress( "gamma1_ETA" , &gamma1_ETA ); tree -> SetBranchAddress( "gamma1_PHI" , &gamma1_PHI );
tree -> SetBranchAddress( "gamma1_TRUE_PX" , &gamma1_TRUE_PX ); tree -> SetBranchAddress( "gamma1_TRUE_PY" , &gamma1_TRUE_PY ); tree -> SetBranchAddress( "gamma1_TRUE_PZ" , &gamma1_TRUE_PZ ); tree -> SetBranchAddress( "gamma1_TRUE_PE" , &gamma1_TRUE_PE ); tree -> SetBranchAddress( "gamma1_TRUE_PT" , &gamma1_TRUE_PT ); tree -> SetBranchAddress( "gamma1_TRUE_ETA" , &gamma1_TRUE_ETA ); tree -> SetBranchAddress( "gamma1_TRUE_PHI" , &gamma1_TRUE_PHI );
tree -> SetBranchAddress( "gamma1_PX_DTF" , &gamma1_PX_DTF ); tree -> SetBranchAddress( "gamma1_PY_DTF" , &gamma1_PY_DTF ); tree -> SetBranchAddress( "gamma1_PZ_DTF" , &gamma1_PZ_DTF ); tree -> SetBranchAddress( "gamma1_PE_DTF" , &gamma1_PE_DTF ); tree -> SetBranchAddress( "gamma1_PT_DTF" , &gamma1_PT_DTF ); tree -> SetBranchAddress( "gamma1_ETA_DTF" , &gamma1_ETA_DTF ); tree -> SetBranchAddress( "gamma1_PHI_DTF" , &gamma1_PHI_DTF );
tree -> SetBranchAddress( "gamma2_PX" , &gamma2_PX ); tree -> SetBranchAddress( "gamma2_PY" , &gamma2_PY ); tree -> SetBranchAddress( "gamma2_PZ" , &gamma2_PZ ); tree -> SetBranchAddress( "gamma2_PE" , &gamma2_PE ); tree -> SetBranchAddress( "gamma2_PT" , &gamma2_PT ); tree -> SetBranchAddress( "gamma2_ETA" , &gamma2_ETA ); tree -> SetBranchAddress( "gamma2_PHI" , &gamma2_PHI );
tree -> SetBranchAddress( "gamma2_TRUE_PX" , &gamma2_TRUE_PX ); tree -> SetBranchAddress( "gamma2_TRUE_PY" , &gamma2_TRUE_PY ); tree -> SetBranchAddress( "gamma2_TRUE_PZ" , &gamma2_TRUE_PZ ); tree -> SetBranchAddress( "gamma2_TRUE_PE" , &gamma2_TRUE_PE ); tree -> SetBranchAddress( "gamma2_TRUE_PT" , &gamma2_TRUE_PT ); tree -> SetBranchAddress( "gamma2_TRUE_ETA" , &gamma2_TRUE_ETA ); tree -> SetBranchAddress( "gamma2_TRUE_PHI" , &gamma2_TRUE_PHI );
tree -> SetBranchAddress( "gamma2_PX_DTF" , &gamma2_PX_DTF ); tree -> SetBranchAddress( "gamma2_PY_DTF" , &gamma2_PY_DTF ); tree -> SetBranchAddress( "gamma2_PZ_DTF" , &gamma2_PZ_DTF ); tree -> SetBranchAddress( "gamma2_PE_DTF" , &gamma2_PE_DTF ); tree -> SetBranchAddress( "gamma2_PT_DTF" , &gamma2_PT_DTF ); tree -> SetBranchAddress( "gamma2_ETA_DTF" , &gamma2_ETA_DTF ); tree -> SetBranchAddress( "gamma2_PHI_DTF" , &gamma2_PHI_DTF );
}
if(Kst2Kpluspi0Merged || Kst2Kpluspi0Resolved){ tree -> SetBranchAddress( "K_plus_PX" , &K_plus_PX ); tree -> SetBranchAddress( "K_plus_PY" , &K_plus_PY ); tree -> SetBranchAddress( "K_plus_PZ" , &K_plus_PZ ); tree -> SetBranchAddress( "K_plus_PE" , &K_plus_PE ); tree -> SetBranchAddress( "K_plus_PT" , &K_plus_PT ); tree -> SetBranchAddress( "K_plus_ETA" , &K_plus_ETA ); tree -> SetBranchAddress( "K_plus_PHI" , &K_plus_PHI );
tree -> SetBranchAddress( "K_plus_TRUE_PX" , &K_plus_TRUE_PX ); tree -> SetBranchAddress( "K_plus_TRUE_PY" , &K_plus_TRUE_PY ); tree -> SetBranchAddress( "K_plus_TRUE_PZ" , &K_plus_TRUE_PZ ); tree -> SetBranchAddress( "K_plus_TRUE_PE" , &K_plus_TRUE_PE ); tree -> SetBranchAddress( "K_plus_TRUE_PT" , &K_plus_TRUE_PT ); tree -> SetBranchAddress( "K_plus_TRUE_ETA" , &K_plus_TRUE_ETA ); tree -> SetBranchAddress( "K_plus_TRUE_PHI" , &K_plus_TRUE_PHI );
tree -> SetBranchAddress( "K_plus_PX_DTF" , &K_plus_PX_DTF ); tree -> SetBranchAddress( "K_plus_PY_DTF" , &K_plus_PY_DTF ); tree -> SetBranchAddress( "K_plus_PZ_DTF" , &K_plus_PZ_DTF ); tree -> SetBranchAddress( "K_plus_PE_DTF" , &K_plus_PE_DTF ); tree -> SetBranchAddress( "K_plus_PT_DTF" , &K_plus_PT_DTF ); tree -> SetBranchAddress( "K_plus_ETA_DTF" , &K_plus_ETA_DTF ); tree -> SetBranchAddress( "K_plus_PHI_DTF" , &K_plus_PHI_DTF ); }
tree -> SetBranchAddress( "mu_minus_PX" , &mu_minus_PX ); tree -> SetBranchAddress( "mu_minus_PY" , &mu_minus_PY ); tree -> SetBranchAddress( "mu_minus_PZ" , &mu_minus_PZ ); tree -> SetBranchAddress( "mu_minus_PE" , &mu_minus_PE ); tree -> SetBranchAddress( "mu_minus_PT" , &mu_minus_PT ); tree -> SetBranchAddress( "mu_minus_PT" , &mu_minus_PT ); tree -> SetBranchAddress( "mu_minus_PT" , &mu_minus_PT );
tree -> SetBranchAddress( "mu_minus_TRUE_PX" , &mu_minus_TRUE_PX ); tree -> SetBranchAddress( "mu_minus_TRUE_PY" , &mu_minus_TRUE_PY ); tree -> SetBranchAddress( "mu_minus_TRUE_PZ" , &mu_minus_TRUE_PZ ); tree -> SetBranchAddress( "mu_minus_TRUE_PE" , &mu_minus_TRUE_PE ); tree -> SetBranchAddress( "mu_minus_TRUE_PT" , &mu_minus_TRUE_PT ); tree -> SetBranchAddress( "mu_minus_TRUE_ETA" , &mu_minus_TRUE_ETA ); tree -> SetBranchAddress( "mu_minus_TRUE_PHI" , &mu_minus_TRUE_PHI );
tree -> SetBranchAddress( "mu_minus_PX_DTF" , &mu_minus_PX_DTF ); tree -> SetBranchAddress( "mu_minus_PY_DTF" , &mu_minus_PY_DTF ); tree -> SetBranchAddress( "mu_minus_PZ_DTF" , &mu_minus_PZ_DTF ); tree -> SetBranchAddress( "mu_minus_PE_DTF" , &mu_minus_PE_DTF ); tree -> SetBranchAddress( "mu_minus_PT_DTF" , &mu_minus_PT_DTF ); tree -> SetBranchAddress( "mu_minus_ETA_DTF" , &mu_minus_ETA_DTF ); tree -> SetBranchAddress( "mu_minus_PHI_DTF" , &mu_minus_PHI_DTF );
tree -> SetBranchAddress( "mu_plus_PX" , &mu_plus_PX ); tree -> SetBranchAddress( "mu_plus_PY" , &mu_plus_PY ); tree -> SetBranchAddress( "mu_plus_PZ" , &mu_plus_PZ ); tree -> SetBranchAddress( "mu_plus_PE" , &mu_plus_PE ); tree -> SetBranchAddress( "mu_plus_PT" , &mu_plus_PT ); tree -> SetBranchAddress( "mu_plus_ETA" , &mu_plus_ETA ); tree -> SetBranchAddress( "mu_plus_PHI" , &mu_plus_PHI );
tree -> SetBranchAddress( "mu_plus_TRUE_PX" , &mu_plus_TRUE_PX ); tree -> SetBranchAddress( "mu_plus_TRUE_PY" , &mu_plus_TRUE_PY ); tree -> SetBranchAddress( "mu_plus_TRUE_PZ" , &mu_plus_TRUE_PZ ); tree -> SetBranchAddress( "mu_plus_TRUE_PE" , &mu_plus_TRUE_PE ); tree -> SetBranchAddress( "mu_plus_TRUE_PT" , &mu_plus_TRUE_PT ); tree -> SetBranchAddress( "mu_plus_TRUE_ETA" , &mu_plus_TRUE_ETA ); tree -> SetBranchAddress( "mu_plus_TRUE_PHI" , &mu_plus_TRUE_PHI );
tree -> SetBranchAddress( "mu_plus_PX_DTF" , &mu_plus_PX_DTF ); tree -> SetBranchAddress( "mu_plus_PY_DTF" , &mu_plus_PY_DTF); tree -> SetBranchAddress( "mu_plus_PZ_DTF" , &mu_plus_PZ_DTF ); tree -> SetBranchAddress( "mu_plus_PE_DTF" , &mu_plus_PE_DTF ); tree -> SetBranchAddress( "mu_plus_PT_DTF" , &mu_plus_PT_DTF ); tree -> SetBranchAddress( "mu_plus_ETA_DTF" , &mu_plus_ETA_DTF ); tree -> SetBranchAddress( "mu_plus_PHI_DTF" , &mu_plus_PHI_DTF );
/* TODO
tree -> SetBranchAddress( "B_plus_ThetaL_DTF" , &B_plus_ThetaL_DTF); tree -> SetBranchAddress( "B_plus_ThetaK_DTF" , &B_plus_ThetaK_DTF); tree -> SetBranchAddress( "B_plus_Phi_DTF" , &B_plus_Phi_DTF ); */ tree -> SetBranchAddress( "B_plus_ThetaL" , &B_plus_ThetaL); tree -> SetBranchAddress( "B_plus_ThetaK" , &B_plus_ThetaK); tree -> SetBranchAddress( "B_plus_Phi" , &B_plus_Phi );
tree -> SetBranchAddress( "B_plus_TRUEThetaL" , &B_plus_TRUE_ThetaL); tree -> SetBranchAddress( "B_plus_TRUEThetaK" , &B_plus_TRUE_ThetaK); tree -> SetBranchAddress( "B_plus_TRUEPhi" , &B_plus_TRUE_Phi );
tree -> SetBranchAddress( "open_angle" , &open_angle); tree -> SetBranchAddress( "open_angle_DTF" , &open_angle_DTF); tree -> SetBranchAddress( "TRUE_open_angle" , &TRUE_open_angle );
//global variables
tree -> SetBranchAddress( "B_plus_ENDVERTEX_Z", &B_plus_ENDVERTEX_Z); tree -> SetBranchAddress( "B_plus_ENDVERTEX_ZERR", &B_plus_ENDVERTEX_ZERR); tree -> SetBranchAddress( "B_plus_OWNPV_Z", &B_plus_OWNPV_Z); tree -> SetBranchAddress( "B_plus_OWNPV_ZERR", &B_plus_OWNPV_ZERR); tree -> SetBranchAddress( "B_plus_TRUEORIGINVERTEX_Z", &B_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "B_plus_TRUEENDVERTEX_Z", &B_plus_TRUEENDVERTEX_Z); tree -> SetBranchAddress( "B_plus_DTF_PV_Z", &B_plus_DTF_PV_Z); tree -> SetBranchAddress( "B_plus_TOPPV_Z", &B_plus_TOPPV_Z);//TODO: what is this?
tree -> SetBranchAddress( "K_star_plus_ENDVERTEX_Z", &K_star_plus_ENDVERTEX_Z); tree -> SetBranchAddress( "K_star_plus_ENDVERTEX_ZERR", &K_star_plus_ENDVERTEX_ZERR); tree -> SetBranchAddress( "K_star_plus_OWNPV_Z", &K_star_plus_OWNPV_Z); tree -> SetBranchAddress( "K_star_plus_OWNPV_ZERR", &K_star_plus_OWNPV_ZERR); tree -> SetBranchAddress( "K_star_plus_TRUEORIGINVERTEX_Z", &K_star_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "K_star_plus_TRUEENDVERTEX_Z", &K_star_plus_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "K_plus_OWNPV_Z", &K_plus_OWNPV_Z); tree -> SetBranchAddress( "K_plus_OWNPV_ZERR", &K_plus_OWNPV_ZERR); tree -> SetBranchAddress( "K_plus_TRUEORIGINVERTEX_Z", &K_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "K_plus_TRUEENDVERTEX_Z", &K_plus_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "pi_zero_resolved_TRUEORIGINVERTEX_Z", &pi_zero_resolved_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "pi_zero_resolved_TRUEENDVERTEX_Z", &pi_zero_resolved_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "gamma1_TRUEORIGINVERTEX_Z", &gamma1_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "gamma1_TRUEENDVERTEX_Z", &gamma1_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "gamma2_TRUEORIGINVERTEX_Z", &gamma2_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "gamma2_TRUEENDVERTEX_Z", &gamma2_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "mu_plus_OWNPV_Z", &mu_plus_OWNPV_Z); tree -> SetBranchAddress( "mu_plus_OWNPV_ZERR", &mu_plus_OWNPV_ZERR); tree -> SetBranchAddress( "mu_plus_TRUEORIGINVERTEX_Z", &mu_plus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "mu_plus_TRUEENDVERTEX_Z", &mu_plus_TRUEENDVERTEX_Z);
tree -> SetBranchAddress( "mu_minus_OWNPV_Z", &mu_minus_OWNPV_Z); tree -> SetBranchAddress( "mu_minus_OWNPV_ZERR", &mu_minus_OWNPV_ZERR); tree -> SetBranchAddress( "mu_minus_TRUEORIGINVERTEX_Z", &mu_minus_TRUEORIGINVERTEX_Z); tree -> SetBranchAddress( "mu_minus_TRUEENDVERTEX_Z", &mu_minus_TRUEENDVERTEX_Z);
int N = tree->GetEntries(); if(N == 0){ std::cout << "[ERROR]\t\tNo events found!" << std::endl; return 0; }
// Create outputfile
TFile *output = 0; preselected ? newName = "_resolution_preselected_histos" : newName ="_resolution_histos"; if (truthMatched) newName = newName + "_TM";
if(Kst2Kpluspi0Resolved){ if(!MC){ output = new TFile(Form("%s/resolution/data/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ if(ReferenceChannel){ output = new TFile(Form("%s/resolution/MC/RefKplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else if(PHSP){ output = new TFile(Form("%s/resolution/PHSP/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ output = new TFile(Form("%s/resolution/MC/KplusPi0/%s%s/%s%s_pi0Resolved%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } } } // Kst2Kpluspi0Merged case
if(Kst2Kpluspi0Merged){ if(!MC){ output = new TFile(Form("%s/resolution/data/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ if(ReferenceChannel){ output = new TFile(Form("%s/resolution/MC/RefKplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else if(PHSP){ output = new TFile(Form("%s/resolution/PHSP/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ output = new TFile(Form("%s/resolution/MC/KplusPi0/%s%s/%s%s_pi0Merged%s.root",path_to_output_KplusPizero.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } } } // Kst2Kspiplus case
if(Kst2Kspiplus){ if(!MC){ output = new TFile(Form("%s/resolution/data/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ if(ReferenceChannel){ output = new TFile(Form("%s/resolution/MC/RefKshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else if(PHSP){ output = new TFile(Form("%s/resolution/PHSP/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } else{ output = new TFile(Form("%s/resolution/MC/KshortPiplus/%s%s/%s%s_piplus%s.root",path_to_output_KshortPiplus.c_str(), year.c_str(),magnet.c_str(),year.c_str(),magnet.c_str(),newName.c_str()),"RECREATE"); } } }
//Initialize new tree
output->cd();
string tmpName = ""; string tmpYaxis= ""; double eta_low_edge = 1.4; double eta_high_edge = 5; int eta_bins = 36;///2;
double eta_low_edge_B = 1.4; double eta_high_edge_B = 6; int eta_bins_B = 46;///2;
int PVZ_bins = 40; double PVZ_low_edge = -90; double PVZ_high_edge = 180; double KstPt_bins = 50; double KstPt_low_edge = 800; double KstPt_high_edge = 5000; double angle_low_edge = -3.15; double angle_high_edge = 3.15; double angle_bins = 30;
//////////////////////////////////
///// //////
//// Basic eta histos /////
///// //////
//////////////////////////////////
///
//pi0
tmpYaxis = "Counts / 0.2";
//pi0
TH1 * h_pi0_ETA_DTF,*h_pi0_ETA, *h_pi0_ETA_TRUE; init_1D(h_pi0_ETA_DTF, "pi0", "ETA", "DTF", "", tmpYaxis,eta_bins, eta_low_edge, eta_high_edge); init_1D(h_pi0_ETA, "pi0", "ETA", "", "", tmpYaxis,eta_bins, eta_low_edge, eta_high_edge); init_1D(h_pi0_ETA_TRUE, "pi0", "ETA", "TRUE", "", tmpYaxis,eta_bins, eta_low_edge, eta_high_edge);
//K+
TH1 *h_Kplus_ETA_DTF,*h_Kplus_ETA,*h_Kplus_ETA_TRUE; init_1D(h_Kplus_ETA_DTF, "Kplus","ETA", "DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kplus_ETA, "Kplus","ETA", "", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kplus_ETA_TRUE, "Kplus","ETA", "TRUE", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K*
TH1 *h_Kstar_ETA_DTF,*h_Kstar_ETA,*h_Kstar_ETA_TRUE; init_1D(h_Kstar_ETA_DTF, "Kstar","ETA", "DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kstar_ETA, "Kstar","ETA", "", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kstar_ETA_TRUE, "Kstar","ETA", "TRUE", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//B+
TH1 *h_Bplus_ETA_DTF,*h_Bplus_ETA,*h_Bplus_ETA_TRUE; init_1D(h_Bplus_ETA_DTF, "Bplus","ETA", "DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); cout << h_Bplus_ETA_DTF->GetName() << endl; init_1D(h_Bplus_ETA, "Bplus","ETA", "", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Bplus_ETA_TRUE, "Bplus","ETA", "TRUE", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//if (Kst2Kpluspi0Resolved) tmpName = variableLatex("ETA") + "{" + particleLatex("Kplus") + particleLatex("pi0") + particleLatex("mu") + particleLatex("mu") + "}";
//else if (Kst2Kspiplus) tmpName = variableLatex("ETA") + "{" + particleLatex("Kshort") + particleLatex("piplus") + particleLatex("mu") + particleLatex("mu") + "}";
tmpYaxis = Form("Counts / %.3f",(6.3/angle_bins)); //ThetaK
TH1 *h_ThetaK_DTF,*h_ThetaK,*h_ThetaK_TRUE; init_1D(h_ThetaK_DTF, "","ThetaK", "DTF", "", tmpYaxis, angle_bins, 0, angle_high_edge); init_1D(h_ThetaK, "","ThetaK", "", "", tmpYaxis, angle_bins, 0, angle_high_edge); init_1D(h_ThetaK_TRUE, "","ThetaK", "TRUE", "", tmpYaxis, angle_bins, 0, angle_high_edge);
//ThetaL
TH1 *h_ThetaL_DTF,*h_ThetaL,*h_ThetaL_TRUE; init_1D(h_ThetaL_DTF, "","ThetaL", "DTF", "", tmpYaxis, angle_bins, 0, angle_high_edge); init_1D(h_ThetaL, "","ThetaL", "", "", tmpYaxis, angle_bins, 0, angle_high_edge);; init_1D(h_ThetaL_TRUE, "","ThetaL", "TRUE", "", tmpYaxis, angle_bins, 0, angle_high_edge);
//Phi
TH1 *h_Phi_DTF,*h_Phi,*h_Phi_TRUE; init_1D(h_Phi_DTF, "","Phi", "DTF", "", tmpYaxis, angle_bins, 0, angle_high_edge); init_1D(h_Phi, "","Phi", "", "", tmpYaxis, angle_bins, 0, angle_high_edge); init_1D(h_Phi_TRUE, "","Phi", "TRUE", "", tmpYaxis, angle_bins, 0, angle_high_edge);
tmpYaxis = Form("Counts / %.3f",(PVZ_high_edge-PVZ_low_edge/PVZ_bins)); //PVZ
TH1 *h_PVZ_DTF,*h_PVZ,*h_PVZ_TRUE; init_1D(h_PVZ_DTF, "","PVZ", "DTF", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge); init_1D(h_PVZ, "","PVZ", "", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge); init_1D(h_PVZ_TRUE, "","PVZ", "TRUE", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge);
//////////////////////////////////
///// //////
//// Pull histos /////
///// //////
//////////////////////////////////
///
tmpYaxis = "#frac{REC - MC}{#sigma}";
//pi0
TH1 * h_pi0_ETA_DTF_pull,*h_pi0_ETA_pull; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #frac{REC - MC}{#sigma}"; init_1D(h_pi0_ETA_DTF_pull, "pi0", "ETA", "PULL_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_pi0_ETA_pull, "pi0", "ETA", "PULL", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K+
TH1 *h_Kplus_ETA_DTF_pull,*h_Kplus_ETA_pull; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kplus")+"}" + " #frac{REC - MC}{#sigma}"; init_1D(h_Kplus_ETA_DTF_pull, "Kplus","ETA", "PULL_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kplus_ETA_pull, "Kplus","ETA", "PULL", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K*
TH1 *h_Kstar_ETA_DTF_pull,*h_Kstar_ETA_pull; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kstar")+"}" + " #frac{REC - MC}{#sigma}"; init_1D(h_Kstar_ETA_DTF_pull, "Kstar","ETA", "PULL_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kstar_ETA_pull, "Kstar","ETA", "PULL", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//B+
TH1 *h_Bplus_ETA_DTF_pull,*h_Bplus_ETA_pull; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Bplus")+"}" + " #frac{REC - MC}{#sigma}"; init_1D(h_Bplus_ETA_DTF_pull, "Bplus","ETA", "PULL_DTF", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B); init_1D(h_Bplus_ETA_pull, "Bplus","ETA", "PULL", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B);
//pi0 in Kstar_end_vertex
TH1 * h_pi0_PVZ_DTF_pull,*h_pi0_PVZ_pull; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #frac{REC - MC}{#sigma}"; init_1D(h_pi0_PVZ_DTF_pull, "Bplus", "PVZ", "PULL_DTF", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge); init_1D(h_pi0_PVZ_pull, "Bplus", "PVZ", "PULL", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge);
TH1 * h_pi0_KstPt_DTF_pull,*h_pi0_KstPt_pull; tmpYaxis = variableLatex("ETA") + "{"+particleLatex("pi0")+"}" + " #frac{REC - MC}{#sigma}"; init_1D(h_pi0_KstPt_DTF_pull, "pi0", "KstPt", "PULL_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_pi0_KstPt_pull, "pi0", "KstPt", "PULL", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaK in Kstar pT
TH1 *h_ThetaK_KstPt_DTF_pull,*h_ThetaK_KstPt_pull; tmpYaxis = variableLatex("ThetaK") + " #frac{REC - MC}{#sigma}"; init_1D(h_ThetaK_KstPt_DTF_pull, "ThetaK","KstPt", "PULL_DTF", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaK_KstPt_pull, "ThetaK","KstPt", "PULL", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaL in Kstar pT
TH1 *h_ThetaL_KstPt_DTF_pull,*h_ThetaL_KstPt_pull; tmpYaxis = variableLatex("ThetaL") + " #frac{REC - MC}{#sigma}"; init_1D(h_ThetaL_KstPt_DTF_pull, "ThetaL","KstPt", "PULL_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaL_KstPt_pull, "ThetaL","KstPt", "PULL", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//Phi in Kstar pT
TH1 *h_Phi_KstPt_DTF_pull,*h_Phi_KstPt_pull; tmpYaxis = variableLatex("Phi") + " #frac{REC - MC}{#sigma}"; init_1D(h_Phi_KstPt_DTF_pull, "Phi","KstPt", "PULL_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_Phi_KstPt_pull, "Phi","KstPt", "PULL", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//////////////////////////////////
///// //////
//// Resolution histos /////
///// 2D //////
//////////////////////////////////
//pi0
TH2 *h_pi0_ETA_DTF_ref, *h_pi0_ETA_ref; string tmpZaxis = "Counts a.u."; tmpYaxis = "#mu_{REC - TRUE}"; init_2D(h_pi0_ETA_DTF_ref, "pi0","ETA","ETA", "RES_DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1); init_2D(h_pi0_ETA_ref, "pi0","ETA","ETA", "RES", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1);
//pi0 (B_plus_ENDVERTEX_Z) PVZ
TH2 *h_pi0_PVZ_DTF_ref, *h_pi0_PVZ_ref; init_2D(h_pi0_PVZ_DTF_ref, "pi0","PVZ","ETA", "RES_DTF", tmpYaxis, tmpZaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge, 100, -1, 1); init_2D(h_pi0_PVZ_ref, "pi0","PVZ","ETA", "RES", tmpYaxis, tmpZaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge, 100, -1, 1);
//pi0 (K_star_plus_pT)
TH2 *h_pi0_KstPt_DTF_ref, *h_pi0_KstPt_ref; init_2D(h_pi0_KstPt_DTF_ref, "pi0","ETA","KstPt", "RES_DTF", tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 100, -1, 1); init_2D(h_pi0_KstPt_ref, "pi0","ETA","KstPt", "RES", tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 100, -1, 1);
//K+
TH2 *h_Kplus_ETA_DTF_ref, *h_Kplus_ETA_ref; init_2D(h_Kplus_ETA_DTF_ref, "Kplus","ETA","ETA", "RES_DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1); init_2D(h_Kplus_ETA_ref, "Kplus","ETA","ETA", "RES", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1);
//K*
TH2 *h_Kstar_ETA_DTF_ref, *h_Kstar_ETA_ref; init_2D(h_Kstar_ETA_DTF_ref, "Kstar","ETA","ETA", "RES_DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1); init_2D(h_Kstar_ETA_ref, "Kstar","ETA","ETA", "RES", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1);
//B+
TH2 *h_Bplus_ETA_DTF_ref, *h_Bplus_ETA_ref; init_2D(h_Bplus_ETA_DTF_ref, "Bplus","ETA","ETA", "RES_DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1); init_2D(h_Bplus_ETA_ref, "Bplus","ETA","ETA", "RES", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge, 100, -1, 1);
//ThetaK in Kstar pT
TH2 *h_ThetaK_KstPt_DTF_ref,*h_ThetaK_KstPt_ref; init_2D(h_ThetaK_KstPt_DTF_ref, "ThetaK","KstPt","ThetaK", "RES_DTF",tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 150, -2, 1); init_2D(h_ThetaK_KstPt_ref, "ThetaK","KstPt","ThetaK", "RES", tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 150, -2, 1);
//ThetaL in Kstar pT
TH2 *h_ThetaL_KstPt_DTF_ref,*h_ThetaL_KstPt_ref; init_2D(h_ThetaL_KstPt_DTF_ref, "ThetaL","KstPt","ThetaL", "RES_DTF",tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 100, -1, 1); init_2D(h_ThetaL_KstPt_ref, "ThetaL","KstPt","ThetaL", "RES", tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 100, -1, 1);
//Phi in Kstar pT
TH2 *h_Phi_KstPt_DTF_ref,*h_Phi_KstPt_ref; init_2D(h_Phi_KstPt_DTF_ref, "Phi","KstPt","Phi", "RES_DTF", tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 100, -1, 1); init_2D(h_Phi_KstPt_ref, "Phi","KstPt","Phi", "RES", tmpYaxis, tmpZaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge, 100, -1, 1);
//PVZ (B_plus_ENDVERTEX_Z)
TH2 *h_PVZ_ref; init_2D(h_PVZ_ref, "","PVZ","PVZ", "RES", tmpYaxis, tmpZaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge, 100, -1, 1);
//////////////////////////////////
///// //////
//// Res+sys histos /////
///// 1D //////
//////////////////////////////////
//pi0
TH1 * h_pi0_ETA_DTF_res_sys,*h_pi0_ETA_res_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_pi0_ETA_DTF_res_sys, "pi0", "ETA", "RES_SYS_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_pi0_ETA_res_sys, "pi0", "ETA", "RES_SYS", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K+
TH1 *h_Kplus_ETA_DTF_res_sys,*h_Kplus_ETA_res_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kplus")+"}" + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_Kplus_ETA_DTF_res_sys, "Kplus","ETA", "RES_SYS_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kplus_ETA_res_sys, "Kplus","ETA", "RES_SYS", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K*
TH1 *h_Kstar_ETA_DTF_res_sys,*h_Kstar_ETA_res_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kstar")+"}" + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_Kstar_ETA_DTF_res_sys, "Kstar","ETA", "RES_SYS_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kstar_ETA_res_sys, "Kstar","ETA", "RES_SYS", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//B+
TH1 *h_Bplus_ETA_DTF_res_sys,*h_Bplus_ETA_res_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Bplus")+"}" + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_Bplus_ETA_DTF_res_sys, "Bplus","ETA", "RES_SYS_DTF", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B); init_1D(h_Bplus_ETA_res_sys, "Bplus","ETA", "RES_SYS", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B);
//pi0 in Kstar_end_vertex
TH1 * h_pi0_PVZ_DTF_res_sys,*h_pi0_PVZ_res_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_pi0_PVZ_DTF_res_sys, "Bplus", "PVZ", "RES_SYS_DTF", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge); init_1D(h_pi0_PVZ_res_sys, "Bplus", "PVZ", "RES_SYS", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge);
TH1 * h_pi0_KstPt_DTF_res_sys,*h_pi0_KstPt_res_sys; init_1D(h_pi0_KstPt_DTF_res_sys, "", "KstPt", "RES_SYS_DTF", "res_sys", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_pi0_KstPt_res_sys, "", "KstPt", "RES_SYS", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaK in Kstar pT
TH1 *h_ThetaK_KstPt_DTF_res_sys,*h_ThetaK_KstPt_res_sys; tmpYaxis = variableLatex("ThetaK") + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_ThetaK_KstPt_DTF_res_sys, "ThetaK","KstPt", "RES_SYS_DTF", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaK_KstPt_res_sys, "ThetaK","KstPt", "RES_SYS", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaL in Kstar pT
TH1 *h_ThetaL_KstPt_DTF_res_sys,*h_ThetaL_KstPt_res_sys; tmpYaxis = variableLatex("ThetaL") + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_ThetaL_KstPt_DTF_res_sys, "ThetaL","KstPt", "RES_SYS_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaL_KstPt_res_sys, "ThetaL","KstPt", "RES_SYS", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//Phi in Kstar pT
TH1 *h_Phi_KstPt_DTF_res_sys,*h_Phi_KstPt_res_sys; tmpYaxis = variableLatex("Phi") + " #mu_{REC - TRUE} #pm #sigma_{REC - TRUE}"; init_1D(h_Phi_KstPt_DTF_res_sys, "Phi","KstPt", "RES_SYS_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_Phi_KstPt_res_sys, "Phi","KstPt", "RES_SYS", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//////////////////////////////////
///// //////
//// Resolution histos /////
///// 1D //////
//////////////////////////////////
//pi0
TH1 * h_pi0_ETA_DTF_res,*h_pi0_ETA_res; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #sigma_{REC - TRUE}"; init_1D(h_pi0_ETA_DTF_res, "pi0", "ETA", "RES_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_pi0_ETA_res, "pi0", "ETA", "RES", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K+
TH1 *h_Kplus_ETA_DTF_res,*h_Kplus_ETA_res; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kplus")+"}" + " #sigma_{REC - TRUE}"; init_1D(h_Kplus_ETA_DTF_res, "Kplus","ETA", "RES_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kplus_ETA_res, "Kplus","ETA", "RES", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K*
TH1 *h_Kstar_ETA_DTF_res,*h_Kstar_ETA_res; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kstar")+"}" + " #sigma_{REC - TRUE}"; init_1D(h_Kstar_ETA_DTF_res, "Kstar","ETA", "RES_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kstar_ETA_res, "Kstar","ETA", "RES", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//B+
TH1 *h_Bplus_ETA_DTF_res,*h_Bplus_ETA_res; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Bplus")+"}" + " #sigma_{REC - TRUE}"; init_1D(h_Bplus_ETA_DTF_res, "Bplus","ETA", "RES_DTF", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B); init_1D(h_Bplus_ETA_res, "Bplus","ETA", "RES", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B);
//pi0 in Kstar_end_vertex
TH1 * h_pi0_PVZ_DTF_res,*h_pi0_PVZ_res; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #sigma_{REC - TRUE}"; init_1D(h_pi0_PVZ_DTF_res, "Bplus", "PVZ", "RES_DTF", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge); init_1D(h_pi0_PVZ_res, "Bplus", "PVZ", "RES", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge);
TH1 * h_pi0_KstPt_DTF_res,*h_pi0_KstPt_res; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #sigma_{REC - TRUE}"; init_1D(h_pi0_KstPt_DTF_res, "pi0", "KstPt", "RES_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_pi0_KstPt_res, "pi0", "KstPt", "RES", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaK in Kstar pT
TH1 *h_ThetaK_KstPt_DTF_res,*h_ThetaK_KstPt_res; tmpYaxis = variableLatex("ThetaK")+ " #sigma_{REC - TRUE}"; init_1D(h_ThetaK_KstPt_DTF_res, "ThetaK","KstPt", "RES_DTF", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaK_KstPt_res, "ThetaK","KstPt", "RES", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaL in Kstar pT
TH1 *h_ThetaL_KstPt_DTF_res,*h_ThetaL_KstPt_res; tmpYaxis = variableLatex("ThetaL")+ " #sigma_{REC - TRUE}"; init_1D(h_ThetaL_KstPt_DTF_res, "ThetaL","KstPt", "RES_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaL_KstPt_res, "ThetaL","KstPt", "RES", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//Phi in Kstar pT
TH1 *h_Phi_KstPt_DTF_res,*h_Phi_KstPt_res; tmpYaxis = variableLatex("Phi")+ " #sigma_{REC - TRUE}"; init_1D(h_Phi_KstPt_DTF_res, "Phi","KstPt", "RES_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_Phi_KstPt_res, "Phi","KstPt", "RES", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//////////////////////////////////
///// //////
//// Systematics histos /////
///// 1D //////
//////////////////////////////////
tmpYaxis = "#mu_{REC - TRUE}"; //pi0
//pi0
TH1 * h_pi0_ETA_DTF_sys,*h_pi0_ETA_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #mu_{REC - TRUE}"; init_1D(h_pi0_ETA_DTF_sys, "pi0", "ETA", "SYS_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_pi0_ETA_sys, "pi0", "ETA", "SYS", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K+
TH1 *h_Kplus_ETA_DTF_sys,*h_Kplus_ETA_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kplus")+"}" + " #mu_{REC - TRUE}"; init_1D(h_Kplus_ETA_DTF_sys, "Kplus","ETA", "SYS_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kplus_ETA_sys, "Kplus","ETA", "SYS", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//K*
TH1 *h_Kstar_ETA_DTF_sys,*h_Kstar_ETA_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Kstar")+"}" + " #mu_{REC - TRUE}"; init_1D(h_Kstar_ETA_DTF_sys, "Kstar","ETA", "SYS_DTF", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge); init_1D(h_Kstar_ETA_sys, "Kstar","ETA", "SYS", "", tmpYaxis, eta_bins, eta_low_edge, eta_high_edge);
//B+
TH1 *h_Bplus_ETA_DTF_sys,*h_Bplus_ETA_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("Bplus")+"}" + " #mu_{REC - TRUE}"; init_1D(h_Bplus_ETA_DTF_sys, "Bplus","ETA", "SYS_DTF", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B); init_1D(h_Bplus_ETA_sys, "Bplus","ETA", "SYS", "", tmpYaxis, eta_bins_B, eta_low_edge_B, eta_high_edge_B);
//pi0 in Kstar_end_vertex
TH1 * h_pi0_PVZ_DTF_sys,*h_pi0_PVZ_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #mu_{REC - TRUE}"; init_1D(h_pi0_PVZ_DTF_sys, "Bplus", "PVZ", "SYS_DTF", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge); init_1D(h_pi0_PVZ_sys, "Bplus", "PVZ", "SYS", "", tmpYaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge);
TH1 * h_pi0_KstPt_DTF_sys,*h_pi0_KstPt_sys; tmpYaxis = variableLatex("ETA")+"{"+particleLatex("pi0")+"}" + " #mu_{REC - TRUE}"; init_1D(h_pi0_KstPt_DTF_sys, "pi0", "KstPt", "SYS_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_pi0_KstPt_sys, "pi0", "KstPt", "SYS", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaK in Kstar pT
TH1 *h_ThetaK_KstPt_DTF_sys,*h_ThetaK_KstPt_sys; tmpYaxis = variableLatex("ThetaK")+ + " #mu_{REC - TRUE}"; init_1D(h_ThetaK_KstPt_DTF_sys, "ThetaK","KstPt", "SYS_DTF", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaK_KstPt_sys, "ThetaK","KstPt", "SYS", "",tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//ThetaL in Kstar pT
TH1 *h_ThetaL_KstPt_DTF_sys,*h_ThetaL_KstPt_sys; tmpYaxis = variableLatex("ThetaL")+"{"+particleLatex("pi0")+"}" + " #mu_{REC - TRUE}"; init_1D(h_ThetaL_KstPt_DTF_sys, "ThetaL","KstPt", "SYS_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_ThetaL_KstPt_sys, "ThetaL","KstPt", "SYS", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//Phi in Kstar pT
TH1 *h_Phi_KstPt_DTF_sys,*h_Phi_KstPt_sys; tmpYaxis = variableLatex("Phi")+ + " #mu_{REC - TRUE}"; init_1D(h_Phi_KstPt_DTF_sys, "Phi","KstPt", "SYS_DTF", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge); init_1D(h_Phi_KstPt_sys, "Phi","KstPt", "SYS", "", tmpYaxis, KstPt_bins, KstPt_low_edge, KstPt_high_edge);
//////////////////////////////////
///// //////
//// REC vs MC histos /////
///// //////
//////////////////////////////////
//pi0
TH2 *h_pi0_ETA_DTF_rec_MC, *h_pi0_ETA_rec_MC; tmpZaxis = "Counts a.u."; tmpYaxis = "TRUE "; init_2D(h_pi0_ETA_DTF_rec_MC, "pi0","ETA","ETA", "DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge); init_2D(h_pi0_ETA_rec_MC, "pi0","ETA","ETA", "", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge);
//K+
TH2 *h_Kplus_ETA_DTF_rec_MC, *h_Kplus_ETA_rec_MC; init_2D(h_Kplus_ETA_DTF_rec_MC, "Kplus","ETA","ETA", "DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge); init_2D(h_Kplus_ETA_rec_MC, "Kplus","ETA","ETA", "", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge);
//K*
TH2 *h_Kstar_ETA_DTF_rec_MC, *h_Kstar_ETA_rec_MC; init_2D(h_Kstar_ETA_DTF_rec_MC, "Kstar","ETA","ETA", "DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge); init_2D(h_Kstar_ETA_rec_MC, "Kstar","ETA","ETA", "", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge);
//B+
TH2 *h_Bplus_ETA_DTF_rec_MC, *h_Bplus_ETA_rec_MC; init_2D(h_Bplus_ETA_DTF_rec_MC, "Bplus","ETA","ETA", "DTF", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge); init_2D(h_Bplus_ETA_rec_MC, "Bplus","ETA","ETA", "", tmpYaxis, tmpZaxis, eta_bins, eta_low_edge, eta_high_edge);
//ThetaK in Kstar pT
TH2 *h_ThetaK_DTF_rec_MC,*h_ThetaK_rec_MC; init_2D(h_ThetaK_DTF_rec_MC, "","ThetaK","ThetaK", "DTF",tmpYaxis, tmpZaxis, angle_bins, 0, angle_high_edge); init_2D(h_ThetaK_rec_MC, "","ThetaK","ThetaK", "", tmpYaxis, tmpZaxis, angle_bins, 0, angle_high_edge);
//ThetaL in Kstar pT
TH2 *h_ThetaL_DTF_rec_MC,*h_ThetaL_rec_MC; init_2D(h_ThetaL_DTF_rec_MC, "","ThetaL","ThetaL", "DTF", tmpYaxis, tmpZaxis, angle_bins, 0, angle_high_edge); init_2D(h_ThetaL_rec_MC, "","ThetaL","ThetaL", "", tmpYaxis, tmpZaxis, angle_bins, 0, angle_high_edge);
//Phi in Kstar pT
TH2 *h_Phi_DTF_rec_MC,*h_Phi_rec_MC; init_2D(h_Phi_DTF_rec_MC, "","Phi","Phi", "DTF", tmpYaxis, tmpZaxis, angle_bins, 0, angle_high_edge); init_2D(h_Phi_rec_MC, "","Phi","Phi", "", tmpYaxis, tmpZaxis, angle_bins, 0, angle_high_edge);
//PVZ
TH2 *h_PVZ_DTF_rec_MC, *h_PVZ_rec_MC; init_2D(h_PVZ_DTF_rec_MC, "Bplus", "PVZ", "PVZ", "DTF", tmpYaxis, tmpZaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge); init_2D(h_PVZ_rec_MC, "Bplus", "PVZ", "PVZ", "", tmpYaxis, tmpZaxis, PVZ_bins, PVZ_low_edge, PVZ_high_edge);
//////////////////////////////////
///// //////
//// Loop over events /////
///// //////
//////////////////////////////////
for (int i=0; i<N; i++){
//output the different counters!
if ((0ul == (i % 10000ul) || i + 1 == N) && i != 0) { cout << "Read event " << i + 1 << "/" << N << endl; }
tree->GetEntry(i);
// fill HISTOGRAMS //
h_Bplus_ETA_DTF ->Fill(B_plus_ETA_DTF); h_Bplus_ETA_TRUE ->Fill(B_plus_TRUE_ETA); h_Bplus_ETA_DTF_rec_MC ->Fill(B_plus_ETA_DTF,B_plus_TRUE_ETA); h_Bplus_ETA_DTF_ref ->Fill(B_plus_ETA_DTF,B_plus_ETA_DTF-B_plus_TRUE_ETA); if (!OnlyDTF){ h_Bplus_ETA ->Fill(B_plus_ETA); h_Bplus_ETA_rec_MC ->Fill(B_plus_ETA,B_plus_TRUE_ETA); h_Bplus_ETA_ref ->Fill(B_plus_ETA,B_plus_ETA-B_plus_TRUE_ETA); }
h_ThetaK_DTF ->Fill(B_plus_ThetaK_DTF); h_ThetaK_TRUE ->Fill(B_plus_TRUE_ThetaK); h_ThetaK_DTF_rec_MC ->Fill(B_plus_ThetaK_DTF,B_plus_TRUE_ThetaK); h_ThetaK_KstPt_DTF_ref ->Fill(K_star_plus_PT_DTF,B_plus_ThetaK_DTF-B_plus_TRUE_ThetaK); // if (!OnlyDTF){
h_ThetaK ->Fill(B_plus_ThetaK); h_ThetaK_rec_MC ->Fill(B_plus_ThetaK,B_plus_TRUE_ThetaK); h_ThetaK_KstPt_ref ->Fill(K_star_plus_PT_DTF,B_plus_ThetaK-B_plus_TRUE_ThetaK); // }
h_ThetaL_DTF ->Fill(B_plus_ThetaL_DTF); h_ThetaL_TRUE ->Fill(B_plus_TRUE_ThetaL); h_ThetaL_DTF_rec_MC ->Fill(B_plus_ThetaL_DTF, B_plus_TRUE_ThetaL); h_ThetaL_KstPt_DTF_ref ->Fill(K_star_plus_PT_DTF, B_plus_ThetaL-B_plus_TRUE_ThetaL);
// if (!OnlyDTF){
h_ThetaL ->Fill(B_plus_ThetaL); h_ThetaL_rec_MC ->Fill(B_plus_ThetaL, B_plus_TRUE_ThetaL); h_ThetaL_KstPt_ref ->Fill(K_star_plus_PT_DTF, B_plus_ThetaL-B_plus_TRUE_ThetaL); // }
h_Phi_DTF ->Fill(B_plus_Phi_DTF); h_Phi_TRUE ->Fill(B_plus_TRUE_Phi); h_Phi_DTF_rec_MC ->Fill(B_plus_Phi_DTF,B_plus_TRUE_Phi); h_Phi_KstPt_DTF_ref ->Fill(K_star_plus_PT_DTF, B_plus_Phi-B_plus_TRUE_Phi);
// if (!OnlyDTF){
h_Phi ->Fill(TMath::Abs(B_plus_Phi)); h_Phi_rec_MC ->Fill(TMath::Abs(B_plus_Phi), TMath::Abs(B_plus_TRUE_Phi)); h_Phi_KstPt_ref ->Fill(K_star_plus_PT_DTF, TMath::Abs(B_plus_Phi)-TMath::Abs(B_plus_TRUE_Phi)); // }
//--------------------------------------------------
h_PVZ_TRUE ->Fill(B_plus_TRUEENDVERTEX_Z); h_PVZ ->Fill(B_plus_ENDVERTEX_Z); h_PVZ_rec_MC ->Fill(B_plus_ENDVERTEX_Z, B_plus_TRUEENDVERTEX_Z); h_PVZ_ref ->Fill(B_plus_ENDVERTEX_Z, B_plus_ENDVERTEX_Z-B_plus_TRUEENDVERTEX_Z);
h_Kstar_ETA_DTF ->Fill(K_star_plus_ETA_DTF); h_Kstar_ETA_TRUE ->Fill(K_star_plus_TRUE_ETA); h_Kstar_ETA_DTF_rec_MC ->Fill(K_star_plus_ETA_DTF, K_star_plus_TRUE_ETA); h_Kstar_ETA_DTF_ref ->Fill(K_star_plus_ETA_DTF, K_star_plus_ETA_DTF-K_star_plus_TRUE_ETA); if (!OnlyDTF){ h_Kstar_ETA ->Fill(K_star_plus_ETA); h_Kstar_ETA_rec_MC ->Fill(K_star_plus_ETA, K_star_plus_TRUE_ETA); h_Kstar_ETA_ref ->Fill(K_star_plus_ETA, K_star_plus_ETA-K_star_plus_TRUE_ETA); }
//--------------------------------------------------
//--------------------------------------------------
//--------------------------------------------------
if(Kst2Kspiplus){ // h_Kshort_ETA_DTF ->Fill(K_short_ETA_DTF);
// h_Kshort_ETA_TRUE ->Fill(K_short_TRUE_ETA);
// h_Kshort_ETA ->Fill(K_short_ETA);
} //--------------------------------------------------
//--------------------------------------------------
//--------------------------------------------------
if (Kst2Kpluspi0Resolved){ h_Kplus_ETA_DTF ->Fill(K_plus_ETA_DTF); h_Kplus_ETA_TRUE ->Fill(K_plus_TRUE_ETA); h_Kplus_ETA_DTF_rec_MC ->Fill(K_plus_ETA_DTF,K_plus_TRUE_ETA); h_Kplus_ETA_DTF_ref ->Fill(K_plus_ETA_DTF,K_plus_ETA_DTF-K_plus_TRUE_ETA); if (!OnlyDTF){ h_Kplus_ETA ->Fill(K_plus_ETA); h_Kplus_ETA_rec_MC ->Fill(K_plus_ETA,K_plus_TRUE_ETA); h_Kplus_ETA_ref ->Fill(K_plus_ETA,K_plus_ETA-K_plus_TRUE_ETA); } //--------------------------------------------------
h_pi0_ETA_DTF ->Fill(pi_zero_resolved_ETA_DTF); h_pi0_ETA_TRUE ->Fill(pi_zero_resolved_TRUE_ETA); h_pi0_ETA_DTF_rec_MC ->Fill(pi_zero_resolved_ETA_DTF,pi_zero_resolved_TRUE_ETA); h_pi0_ETA_DTF_ref ->Fill(pi_zero_resolved_ETA_DTF,pi_zero_resolved_ETA_DTF-pi_zero_resolved_TRUE_ETA); h_pi0_PVZ_DTF_ref ->Fill(B_plus_ENDVERTEX_Z,pi_zero_resolved_ETA_DTF-pi_zero_resolved_TRUE_ETA); h_pi0_KstPt_DTF_ref ->Fill(K_star_plus_PT_DTF,pi_zero_resolved_ETA_DTF-pi_zero_resolved_TRUE_ETA); if (!OnlyDTF){ h_pi0_ETA ->Fill(pi_zero_resolved_ETA); h_pi0_ETA_rec_MC ->Fill(pi_zero_resolved_ETA,pi_zero_resolved_TRUE_ETA); h_pi0_ETA_ref ->Fill(pi_zero_resolved_ETA,pi_zero_resolved_ETA-pi_zero_resolved_TRUE_ETA); h_pi0_PVZ_ref ->Fill(B_plus_ENDVERTEX_Z,pi_zero_resolved_ETA-pi_zero_resolved_TRUE_ETA); h_pi0_KstPt_ref ->Fill(K_star_plus_PT,pi_zero_resolved_ETA-pi_zero_resolved_TRUE_ETA); } }
} output->cd();
//////////////////////////////////
///// //////
//// Fill res histos /////
///// //////
//////////////////////////////////
///
TF1 *func = new TF1("func","gaus",-1,1);
res_sys(h_Bplus_ETA_DTF_ref, h_Bplus_ETA_DTF_res_sys, h_Bplus_ETA_DTF_sys,h_Bplus_ETA_DTF_res, func, eta_bins_B, output ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Bplus_ETA_DTF_res_sys,h_Bplus_ETA_DTF_res, eta_bins_B ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Bplus_ETA_DTF_res_sys,h_Bplus_ETA_DTF_sys, eta_bins_B ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // if (!OnlyDTF){
res_sys(h_Bplus_ETA_ref, h_Bplus_ETA_res_sys, h_Bplus_ETA_sys, h_Bplus_ETA_res, func, eta_bins_B, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Bplus_ETA_res_sys, h_Bplus_ETA_res, eta_bins_B ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Bplus_ETA_res_sys, h_Bplus_ETA_sys , eta_bins_B ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // }
res_sys(h_ThetaK_KstPt_DTF_ref, h_ThetaK_KstPt_DTF_res_sys, h_ThetaK_KstPt_DTF_sys, h_ThetaK_KstPt_DTF_res, func, eta_bins_B, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_ThetaK_KstPt_DTF_res_sys, h_ThetaK_KstPt_DTF_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_ThetaK_KstPt_DTF_res_sys, h_ThetaK_KstPt_DTF_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // if (!OnlyDTF){
res_sys(h_ThetaK_KstPt_ref, h_ThetaK_KstPt_res_sys, h_ThetaK_KstPt_sys, h_ThetaK_KstPt_res, func, eta_bins_B, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_ThetaK_KstPt_res_sys, h_ThetaK_KstPt_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_ThetaK_KstPt_res_sys, h_ThetaK_KstPt_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // }
res_sys(h_ThetaL_KstPt_DTF_ref, h_ThetaL_KstPt_DTF_res_sys, h_ThetaL_KstPt_DTF_sys, h_ThetaL_KstPt_DTF_res, func, eta_bins_B, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_ThetaL_KstPt_DTF_res_sys, h_ThetaL_KstPt_DTF_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_ThetaL_KstPt_DTF_res_sys, h_ThetaL_KstPt_DTF_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // if (!OnlyDTF){
res_sys(h_ThetaL_KstPt_ref, h_ThetaL_KstPt_res_sys, h_ThetaL_KstPt_sys, h_ThetaL_KstPt_res, func, eta_bins_B, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_ThetaL_KstPt_res_sys, h_ThetaL_KstPt_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_ThetaL_KstPt_res_sys, h_ThetaL_KstPt_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // }
res_sys(h_Phi_KstPt_DTF_ref, h_Phi_KstPt_DTF_res_sys, h_Phi_KstPt_DTF_sys, h_Phi_KstPt_DTF_res, func, eta_bins_B, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Phi_KstPt_DTF_res_sys, h_Phi_KstPt_DTF_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Phi_KstPt_DTF_res_sys, h_Phi_KstPt_DTF_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); if (!OnlyDTF){ res_sys(h_Phi_KstPt_ref, h_Phi_KstPt_res_sys, h_Phi_KstPt_sys, h_Phi_KstPt_res, func, eta_bins_B, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Phi_KstPt_res_sys, h_Phi_KstPt_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Phi_KstPt_res_sys, h_Phi_KstPt_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); }
res_sys(h_Kstar_ETA_DTF_ref,h_Kstar_ETA_DTF_res_sys,h_Kstar_ETA_DTF_sys,h_Kstar_ETA_DTF_res,func, eta_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Kstar_ETA_DTF_res_sys, h_Kstar_ETA_DTF_res,eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Kstar_ETA_DTF_res_sys, h_Kstar_ETA_DTF_sys,eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); if (!OnlyDTF){ res_sys(h_Kstar_ETA_ref, h_Kstar_ETA_res_sys, h_Kstar_ETA_sys,h_Kstar_ETA_res, func, eta_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Kstar_ETA_res_sys, h_Kstar_ETA_res, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Kstar_ETA_res_sys, h_Kstar_ETA_sys, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); }
res_sys(h_Kplus_ETA_DTF_ref,h_Kplus_ETA_DTF_res_sys,h_Kplus_ETA_DTF_sys,h_Kplus_ETA_DTF_res,func, eta_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Kplus_ETA_DTF_res_sys, h_Kplus_ETA_DTF_res,eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Kplus_ETA_DTF_res_sys, h_Kplus_ETA_DTF_sys,eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); if (!OnlyDTF){ res_sys(h_Kplus_ETA_ref, h_Kplus_ETA_res_sys, h_Kplus_ETA_sys, h_Kplus_ETA_res, func, eta_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res(h_Kplus_ETA_res_sys, h_Kplus_ETA_res,eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys(h_Kplus_ETA_res_sys, h_Kplus_ETA_sys,eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); }
res_sys(h_pi0_ETA_DTF_ref, h_pi0_ETA_DTF_res_sys, h_pi0_ETA_DTF_sys, h_pi0_ETA_DTF_res, func, eta_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res_sys(h_pi0_PVZ_DTF_ref, h_pi0_PVZ_DTF_res_sys, h_pi0_PVZ_DTF_sys, h_pi0_PVZ_DTF_res, func, PVZ_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res_sys(h_pi0_KstPt_DTF_ref,h_pi0_KstPt_DTF_res_sys,h_pi0_KstPt_DTF_sys,h_pi0_KstPt_DTF_res,func, KstPt_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res( h_pi0_ETA_DTF_res_sys, h_pi0_ETA_DTF_res, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res( h_pi0_PVZ_DTF_res_sys, h_pi0_PVZ_res, PVZ_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res( h_pi0_KstPt_DTF_res_sys, h_pi0_KstPt_DTF_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys( h_pi0_ETA_DTF_res_sys, h_pi0_ETA_DTF_sys, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys( h_pi0_PVZ_DTF_res_sys, h_pi0_PVZ_sys, PVZ_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys( h_pi0_KstPt_DTF_res_sys, h_pi0_KstPt_DTF_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); if (!OnlyDTF){ res_sys(h_pi0_ETA_ref, h_pi0_ETA_res_sys, h_pi0_ETA_sys, h_pi0_ETA_res, func, eta_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res_sys(h_pi0_PVZ_ref, h_pi0_PVZ_res_sys, h_pi0_PVZ_sys, h_pi0_PVZ_res, func, PVZ_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res_sys(h_pi0_KstPt_ref, h_pi0_KstPt_res_sys, h_pi0_KstPt_sys, h_pi0_KstPt_res, func, KstPt_bins, output, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res( h_pi0_ETA_res_sys, h_pi0_ETA_res, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res( h_pi0_PVZ_res_sys, h_pi0_PVZ_res, PVZ_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); res( h_pi0_KstPt_res_sys, h_pi0_KstPt_res, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys( h_pi0_ETA_res_sys, h_pi0_ETA_sys, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys( h_pi0_PVZ_res_sys, h_pi0_PVZ_sys, PVZ_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); sys( h_pi0_KstPt_res_sys, h_pi0_KstPt_sys, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
}
//////////////////////////////////
///// //////
//// Fill pull histos /////
///// //////
//////////////////////////////////
pull(h_Bplus_ETA_DTF_res, h_Bplus_ETA_DTF_pull, eta_bins_B ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_ThetaK_KstPt_DTF_res_sys,h_ThetaK_KstPt_DTF_pull,KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_ThetaL_KstPt_DTF_res_sys,h_ThetaL_KstPt_DTF_pull,KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_Phi_KstPt_DTF_res_sys, h_Phi_KstPt_DTF_pull, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_Kstar_ETA_DTF_res_sys, h_Kstar_ETA_DTF_pull, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_Kplus_ETA_DTF_res_sys, h_Kplus_ETA_DTF_pull, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_pi0_ETA_DTF_res_sys, h_pi0_ETA_DTF_pull, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_pi0_PVZ_DTF_res_sys, h_pi0_PVZ_DTF_pull, PVZ_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_pi0_KstPt_DTF_res_sys, h_pi0_KstPt_DTF_pull, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
if (!OnlyDTF){ pull(h_Bplus_ETA_res, h_Bplus_ETA_pull, eta_bins_B ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_ThetaK_KstPt_res_sys,h_ThetaK_KstPt_pull, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_ThetaL_KstPt_res_sys,h_ThetaL_KstPt_pull, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_Phi_KstPt_res_sys, h_Phi_KstPt_pull, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_Kstar_ETA_res_sys, h_Kstar_ETA_pull, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_Kplus_ETA_res_sys, h_Kplus_ETA_pull, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_pi0_ETA_res_sys, h_pi0_ETA_pull, eta_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_pi0_PVZ_res_sys, h_pi0_PVZ_pull, PVZ_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); pull(h_pi0_KstPt_res_sys, h_pi0_KstPt_pull, KstPt_bins ,preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
}
//////////////////////////////////
///// //////
//// Save all histos /////
///// //////
//////////////////////////////////
h_Bplus_ETA_DTF ->Write(); h_Bplus_ETA_TRUE ->Write(); h_Bplus_ETA_DTF_ref ->Write(); h_Bplus_ETA_DTF_rec_MC ->Write(); design_corr(h_Bplus_ETA_DTF_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Bplus_ETA_DTF,h_Bplus_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); if (!OnlyDTF){ h_Bplus_ETA ->Write(); h_Bplus_ETA_ref ->Write(); h_Bplus_ETA_rec_MC ->Write(); design_corr(h_Bplus_ETA_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Bplus_ETA,h_Bplus_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); }
//--------------------------
h_ThetaK_DTF ->Write(); h_ThetaK_TRUE ->Write(); h_ThetaK_KstPt_DTF_ref ->Write(); h_ThetaK_DTF_rec_MC ->Write(); design_corr(h_ThetaK_DTF_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_ThetaK_DTF,h_ThetaK_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
// if (!OnlyDTF){
h_ThetaK ->Write(); h_ThetaK_KstPt_ref ->Write(); h_ThetaK_rec_MC ->Write(); design_corr(h_ThetaK_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_ThetaK,h_ThetaK_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // }
//--------------------------
h_ThetaL_DTF ->Write(); h_ThetaL_TRUE ->Write(); h_ThetaL_KstPt_DTF_ref ->Write(); h_ThetaL_DTF_rec_MC ->Write(); design_corr(h_ThetaL_DTF_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_ThetaL_DTF,h_ThetaL_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
// if (!OnlyDTF){
h_ThetaL ->Write(); h_ThetaL_KstPt_ref ->Write(); h_ThetaL_rec_MC ->Write(); design_corr(h_ThetaL_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_ThetaL,h_ThetaL_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // }
//--------------------------
h_Phi_DTF ->Write(); h_Phi_TRUE ->Write(); h_Phi_KstPt_DTF_ref ->Write(); h_Phi_DTF_rec_MC ->Write(); design_corr(h_Phi_DTF_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Phi_DTF,h_Phi_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
// if (!OnlyDTF){
h_Phi ->Write(); h_Phi_KstPt_ref ->Write(); h_Phi_rec_MC ->Write(); design_corr(h_Phi_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Phi,h_Phi_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); // }
//--------------------------
h_Kstar_ETA_DTF ->Write(); h_Kstar_ETA_TRUE ->Write(); h_Kstar_ETA_DTF_ref ->Write(); h_Kstar_ETA_DTF_rec_MC ->Write(); design_corr(h_Kstar_ETA_DTF_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Kstar_ETA_DTF,h_Kstar_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
if (!OnlyDTF){ h_Kstar_ETA ->Write(); h_Kstar_ETA_ref ->Write(); h_Kstar_ETA_rec_MC ->Write(); design_corr(h_Kstar_ETA_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Kstar_ETA,h_Kstar_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); } //--------------------------
h_PVZ_TRUE ->Write(); h_PVZ ->Write(); h_PVZ_rec_MC ->Write(); h_PVZ_ref ->Write();
design_corr(h_PVZ_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_diff(h_PVZ_ref, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_PVZ,h_PVZ_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
//--------------------------
if (Kst2Kpluspi0Resolved){ h_Kplus_ETA_DTF ->Write(); h_Kplus_ETA_TRUE ->Write(); h_Kplus_ETA_DTF_ref ->Write(); h_Kplus_ETA_DTF_rec_MC ->Write(); design_corr(h_Kplus_ETA_DTF_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Kplus_ETA_DTF,h_Kplus_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); if (!OnlyDTF){ h_Kplus_ETA ->Write(); h_Kplus_ETA_ref ->Write(); h_Kplus_ETA_rec_MC ->Write(); design_corr(h_Kplus_ETA_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_Kplus_ETA,h_Kplus_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); } //--------------------------
h_pi0_ETA_DTF ->Write(); h_pi0_ETA_TRUE ->Write(); h_pi0_ETA_DTF_ref ->Write(); h_pi0_PVZ_ref ->Write(); h_pi0_ETA_DTF_rec_MC->Write(); design_corr(h_pi0_ETA_DTF_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_pi0_ETA_DTF,h_pi0_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched);
if (!OnlyDTF){ h_pi0_ETA ->Write(); h_pi0_ETA_ref ->Write(); h_pi0_ETA_rec_MC ->Write(); design_corr(h_pi0_ETA_rec_MC, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); design_comparison(h_pi0_ETA,h_pi0_ETA_TRUE, preselected, year, magnet, MC, ReferenceChannel, PHSP, truthMatched); }
} //--------------------------
output->Close();
return 1; }
int ResHistAllMC(Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if(Run != 1 && Run != 2){ std::cout << "[ERROR]\t\tInvalid Run number given: " << Run << ". Exit program!" << std::endl; return 0; }
if ( ResHist((Run == 1 ? "2011" : "2015"),"down", true, false, false, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2011" : "2015"),"up" , true, false, false, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2012" : "2016"),"down", true, false, false, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2012" : "2016"),"up" , true, false, false, preselected, truthMatched) == 0) return 0; return 1;
} int ResHistAllRefChannel(Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if(Run != 1 && Run != 2){ std::cout << "[ERROR]\t\tInvalid Run number given: " << Run << ". Exit program!" << std::endl; return 0; } if ( ResHist((Run == 1 ? "2011" : "2015"),"down", true, true, false, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2011" : "2015"),"up" , true, true, false, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2012" : "2016"),"down", true, true, false, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2012" : "2016"),"up" , true, true, false, preselected, truthMatched) == 0) return 0; return 1;
} int ResHistAllPHSP(Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if(Run != 1 && Run != 2){ std::cout << "[ERROR]\t\tInvalid Run number given: " << Run << ". Exit program!" << std::endl; return 0; } if ( ResHist((Run == 1 ? "2011" : "2015"),"down", true, false, true, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2011" : "2015"),"up" , true, false, true, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2012" : "2016"),"down", true, false, true, preselected, truthMatched) == 0) return 0; if ( ResHist((Run == 1 ? "2012" : "2016"),"up" , true, false, true, preselected, truthMatched) == 0) return 0; return 1;
} int ResHistAll( Int_t Run = 1, bool preselected = true, bool truthMatched = false) {
if (ResHistAllMC (Run, preselected, truthMatched)==0) return 0; if (ResHistAllRefChannel (Run, preselected, truthMatched)==0) return 0; if (ResHistAllPHSP (Run, preselected, truthMatched)==0) return 0; return 1; } int ResHistComplete( Int_t Run = 1){ if (ResHistAllMC (Run, 0, 0)==0) return 0; if (ResHistAllMC (Run, 1, 0)==0) return 0; if (ResHistAllMC (Run, 1, 1)==0) return 0; if (ResHistAllRefChannel (Run, 0, 0)==0) return 0; if (ResHistAllRefChannel (Run, 1, 0)==0) return 0; if (ResHistAllRefChannel (Run, 1, 1)==0) return 0; if (ResHistAllPHSP (Run, 0, 0)==0) return 0; if (ResHistAllPHSP (Run, 1, 0)==0) return 0; if (ResHistAllPHSP (Run, 1, 1)==0) return 0; return 1; }
|