3802 lines
189 KiB
C++
3802 lines
189 KiB
C++
|
|
||
|
#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;
|
||
|
}
|