alter ana macros to use pre-subbed root files, formatting, constant sigma
This commit is contained in:
parent
84df7596bf
commit
5153c4c4d6
@ -98,7 +98,8 @@ struct FittedParam
|
||||
this->decimals = decimals;
|
||||
}
|
||||
|
||||
FittedParam(std::string name, std::string title, double value, double err, int decimals) {
|
||||
FittedParam(std::string name, std::string title, double value, double err, int decimals)
|
||||
{
|
||||
this->title = title;
|
||||
this->name = name;
|
||||
this->value = value;
|
||||
@ -127,6 +128,7 @@ struct ShapeParamters
|
||||
double n_left;
|
||||
double alpha_right;
|
||||
double n_right;
|
||||
double sigma_lr;
|
||||
};
|
||||
|
||||
struct RooFitSummary
|
||||
@ -156,6 +158,7 @@ void DrawInDefaultCanvasStacked(std::vector<TH1D *> histograms, std::vector<Colo
|
||||
TString name = TString::Format("%s_stack_canvas", histograms[0]->GetName());
|
||||
TCanvas *c = new TCanvas(name, histograms[0]->GetName(), 0, 0, 800, 600);
|
||||
c->SetLeftMargin(margin_left);
|
||||
|
||||
std::string drwopt_2 = std::string(option).empty() ? "SAME HIST" : TString::Format("%s SAME HIST", option).Data();
|
||||
for (size_t i = 0; i < histograms.size(); i++)
|
||||
{
|
||||
@ -166,7 +169,8 @@ void DrawInDefaultCanvasStacked(std::vector<TH1D *> histograms, std::vector<Colo
|
||||
hist_clone->SetMaximum(scaling_factor + (scaling_factor * 0.05));
|
||||
hist_clone->SetMinimum(0.);
|
||||
hist_clone->SetStats(0);
|
||||
if (fill_style[i] != 0) {
|
||||
if (fill_style[i] != 0)
|
||||
{
|
||||
hist_clone->SetFillStyle(fill_style[i]);
|
||||
hist_clone->SetFillColor(colors[i]);
|
||||
}
|
||||
@ -372,7 +376,7 @@ RooPlot *CreateRooFitHistogram(TH1D *hist)
|
||||
return roo_frame_mass;
|
||||
}
|
||||
|
||||
RooFitSummary CreateRooDataSetAndFitCB(TTree *dataSet, TString var_name, TString xAxis, bool hasExpBkg, bool useExtShape, ShapeParamters extShape, Double_t fit_low = 0, Double_t fit_up = 0)
|
||||
RooFitSummary CreateRooDataSetAndFitCB(TTree *dataSet, TString var_name, TString xAxis, bool hasExpBkg, bool useExtShape, ShapeParamters extShape, bool const_sigma = false, Double_t fit_low = 0, Double_t fit_up = 0)
|
||||
{
|
||||
auto suffix_name = [name = dataSet->GetName()](const char *text)
|
||||
{
|
||||
@ -404,20 +408,38 @@ RooFitSummary CreateRooDataSetAndFitCB(TTree *dataSet, TString var_name, TString
|
||||
RooRealVar var_mass_nR(suffix_name("var_mass_nR"), "n_{R}", 5., 0., 15.);
|
||||
|
||||
if (useExtShape)
|
||||
{
|
||||
if (extShape.alpha_left != 0.)
|
||||
{
|
||||
var_mass_alphaL.setConstant(true);
|
||||
var_mass_alphaL.setVal(extShape.alpha_left);
|
||||
}
|
||||
|
||||
if (extShape.n_left != 0.)
|
||||
{
|
||||
var_mass_nL.setConstant(true);
|
||||
var_mass_nL.setVal(extShape.n_left);
|
||||
}
|
||||
|
||||
if (extShape.alpha_right != 0.)
|
||||
{
|
||||
var_mass_alphaR.setConstant(true);
|
||||
var_mass_alphaR.setVal(extShape.alpha_right);
|
||||
}
|
||||
|
||||
if (extShape.n_right != 0.)
|
||||
{
|
||||
var_mass_nR.setConstant(true);
|
||||
var_mass_nR.setVal(extShape.n_right);
|
||||
}
|
||||
|
||||
if (extShape.sigma_lr != 0. && const_sigma)
|
||||
{
|
||||
var_mass_sigmaLR.setConstant(true);
|
||||
var_mass_sigmaLR.setVal(extShape.sigma_lr);
|
||||
}
|
||||
}
|
||||
|
||||
TString signal_name = suffix_name("sig_cb");
|
||||
RooCrystalBall sig_cb(signal_name, "CB Signal", roo_var_mass, var_mass_x0, var_mass_sigmaLR, var_mass_alphaL, var_mass_nL, var_mass_alphaR, var_mass_nR);
|
||||
|
||||
@ -453,7 +475,6 @@ RooFitSummary CreateRooDataSetAndFitCB(TTree *dataSet, TString var_name, TString
|
||||
fitted_params.push_back(FittedParam(var_mass_nsig, 2));
|
||||
fitted_params.push_back(FittedParam(var_mass_nbkg, 2));
|
||||
|
||||
|
||||
double sig_val = var_mass_nsig.getVal();
|
||||
double sig_err = var_mass_nsig.getError();
|
||||
double bkg_val = var_mass_nbkg.getVal();
|
||||
@ -503,7 +524,8 @@ RooFitSummary CreateRooDataSetAndFitCB(TTree *dataSet, TString var_name, TString
|
||||
var_mass_alphaL.getVal(),
|
||||
var_mass_nL.getVal(),
|
||||
var_mass_alphaR.getVal(),
|
||||
var_mass_nR.getVal()}};
|
||||
var_mass_nR.getVal(),
|
||||
var_mass_sigmaLR.getVal()}};
|
||||
}
|
||||
|
||||
bool InRange(double value, double center, double low_intvl, double up_intvl)
|
||||
|
@ -89,7 +89,7 @@ int mapmc_b02hphmmumu()
|
||||
Double_t Kplus_PROBNN_K_out, piminus_PROBNN_K_out, B0_M_out, muplus_M_out, muminus_M_out, Kplus_M_out, piminus_M_out;
|
||||
Int_t muplus_ID_out, muminus_ID_out, Kplus_ID_out, piminus_ID_out;
|
||||
|
||||
output_tree->Branch("B0_PT", &B0_PT_out, "B0_PT/D");
|
||||
output_tree->Branch("B0_PT", &B0_PT_out, "B0_PT/F");
|
||||
output_tree->Branch("B0_BPVFDCHI2", &B0_BPVFDCHI2_out, "B0_BPVFDCHI2/F");
|
||||
output_tree->Branch("B0_BPVDIRA", &B0_BPVDIRA_out, "B0_BPVDIRA/F");
|
||||
output_tree->Branch("B0_PX", &B0_PX_out, "0_PX/F");
|
||||
|
@ -45,39 +45,26 @@
|
||||
int new_analysis_b02hphmmumu()
|
||||
{
|
||||
const char *analysis_name = "B0ToHpHmMuMu";
|
||||
const char *data_tree_name = "B0ToHpHmMuMu";
|
||||
const char *sim_tree_name = "B0ToHpHmMuMu_noPID";
|
||||
const char *data_tree_name = "SpruceRD_B0ToHpHmMuMu";
|
||||
const char *sim_tree_name = "B0ToHpHmMuMu_noPID_mapped";
|
||||
const char *end_state_mass_literal = "m(#pi^{+}#pi^{-}_{(#rightarrow K^{-})}#mu^{+}#mu^{-} & #pi^{+}_{(#rightarrow K^{+})}#pi^{-}#mu^{+}#mu^{-})";
|
||||
const bool retrain_bdt = false;
|
||||
|
||||
TChain *data_chain = new TChain(TString::Format("%s/DecayTree", data_tree_name));
|
||||
// data_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/data_samples/spruce_magdown_2023_v0_tuple_90000000_v0r0p6288631.root");
|
||||
data_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/data_samples/spruce_magdown_2023_v0r1_tuple_90000000_2023_v0r0p6288631.root");
|
||||
data_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/data_samples/Collision23_Beam6800GeV-VeloClosed-MagDown-Excl-UT_RealData_Sprucing23r1_90000000_RD.root");
|
||||
|
||||
Double_t Hp_PID_K, Hm_PID_K;
|
||||
data_chain->SetBranchAddress("Hp_PID_K", &Hp_PID_K);
|
||||
data_chain->SetBranchAddress("Hm_PID_K", &Hm_PID_K);
|
||||
|
||||
FourVect *l14v_data = FourVect::Init(data_chain, "L1");
|
||||
FourVect *l24v_data = FourVect::Init(data_chain, "L2");
|
||||
FourVect *hp4v_data = FourVect::Init(data_chain, "Hp");
|
||||
FourVect *hm4v_data = FourVect::Init(data_chain, "Hm");
|
||||
FourVect *l14v_data = FourVect::Init(data_chain, "muminus");
|
||||
FourVect *l24v_data = FourVect::Init(data_chain, "muplus");
|
||||
FourVect *hp4v_data = FourVect::Init(data_chain, "Kplus");
|
||||
FourVect *hm4v_data = FourVect::Init(data_chain, "piminus");
|
||||
|
||||
TChain *sim_chain = new TChain(TString::Format("%s/DecayTree", sim_tree_name));
|
||||
sim_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/MC/rd_btoxll_simulation_fullstream_v0r0p6671378_B0ToKpPimMuMu_11144002_magdown.root");
|
||||
sim_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/MC/B0ToHpHmMuMu_mapped_mc.root");
|
||||
|
||||
FourVect *l14v_sim = FourVect::Init(sim_chain, "L1");
|
||||
FourVect *l24v_sim = FourVect::Init(sim_chain, "L2");
|
||||
FourVect *hp4v_sim = FourVect::Init(sim_chain, "Hp");
|
||||
FourVect *hm4v_sim = FourVect::Init(sim_chain, "Hm");
|
||||
|
||||
Int_t B_BKGCAT, L1_TRUEID, L2_TRUEID, Hp_TRUEID, Hm_TRUEID;
|
||||
|
||||
sim_chain->SetBranchAddress("L1_TRUEID", &L1_TRUEID);
|
||||
sim_chain->SetBranchAddress("L2_TRUEID", &L2_TRUEID);
|
||||
sim_chain->SetBranchAddress("Hp_TRUEID", &Hp_TRUEID);
|
||||
sim_chain->SetBranchAddress("Hm_TRUEID", &Hm_TRUEID);
|
||||
sim_chain->SetBranchAddress("B0_BKGCAT", &B_BKGCAT);
|
||||
FourVect *l14v_sim = FourVect::Init(sim_chain, "muminus");
|
||||
FourVect *l24v_sim = FourVect::Init(sim_chain, "muplus");
|
||||
FourVect *hp4v_sim = FourVect::Init(sim_chain, "Kplus");
|
||||
FourVect *hm4v_sim = FourVect::Init(sim_chain, "piminus");
|
||||
|
||||
Double_t B_Mass_jpsi_var, B_Mass_psi2s_var, B_Mass_sim_var;
|
||||
TString B_Mass_jpsi_var_name = "B_Mass_jpsi_var";
|
||||
@ -94,14 +81,12 @@ int new_analysis_b02hphmmumu()
|
||||
|
||||
TH1D *h1_B_Mass_unf = new TH1D("h1_B_Mass_unf", TString::Format("B Mass (%s), Unfiltered", data_tree_name), B_MASS_HIST_BINS, B_MASS_VAR_MIN, B_MASS_VAR_MAX);
|
||||
TH1D *h1_B_Mass_bdtf = new TH1D("h1_B_Mass_bdtf", TString::Format("B Mass (%s), BDT Filter", data_tree_name), B_MASS_HIST_BINS, B_MASS_VAR_MIN, B_MASS_VAR_MAX);
|
||||
TH1D *h1_B_Mass_sim_unf = new TH1D("h1_B_Mass_sim_unf", TString::Format("B Mass, Simualted (%s), Unfiltered", sim_tree_name), B_MASS_HIST_BINS, B_MASS_VAR_MIN, B_MASS_VAR_MAX);
|
||||
|
||||
TH2D *h2_Hlt1_flags_B_Mass = new TH2D("h2_Hlt1_flags_B_Mass", "Hlt1 Decision vs B Mass", 50, 5100, 5400, 13, 1., 14.);
|
||||
TH2D *h2_Hlt1_flags_excl_B_Mass = new TH2D("h2_Hlt1_flags_excl_B_Mass", "Excl Hlt1 Decision vs B Mass", 50, 5100, 5400, 13, 1., 14.);
|
||||
TH1D *h1_bdt_probs = new TH1D("h1_bdt_probs", "BDT Probabilities", 100, -1, 1);
|
||||
|
||||
h1_B_Mass_unf->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h1_B_Mass_sim_unf->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h1_B_Mass_bdtf->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h2_Hlt1_flags_B_Mass->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h2_Hlt1_flags_excl_B_Mass->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
@ -115,17 +100,14 @@ int new_analysis_b02hphmmumu()
|
||||
TV::Float("B0_BPVFDCHI2", "B0_BPVFDCHI2"),
|
||||
TV::Float("B0_BPVDIRA", "B0_BPVDIRA"),
|
||||
TV::Float("Jpsi_BPVIPCHI2", "Jpsi_BPVIPCHI2"),
|
||||
// TV::Float("Jpsi_BPVDIRA", "Jpsi_BPVDIRA"),
|
||||
TV::Float("Jpsi_PT", "Jpsi_PT"),
|
||||
TV::Float("Hp_BPVIPCHI2", "Hp_BPVIPCHI2"),
|
||||
TV::Float("Hp_PT", "Hp_PT"),
|
||||
TV::Float("Hm_BPVIPCHI2", "Hm_BPVIPCHI2"),
|
||||
TV::Float("Hm_PT", "Hm_PT"),
|
||||
// TV::Double("Kplus_PID_K", "K_PID_K"),
|
||||
TV::Double("Hp_PROBNN_K", "Hp_PROBNN_K"),
|
||||
TV::Double("Hm_PROBNN_K", "Hm_PROBNN_K"),
|
||||
TV::Float("L1_BPVIPCHI2", "L1_BPVIPCHI2"),
|
||||
TV::Float("L2_BPVIPCHI2", "L2_BPVIPCHI2"),
|
||||
TV::Float("Kplus_BPVIPCHI2", "Kplus_BPVIPCHI2"),
|
||||
TV::Float("Kplus_PT", "Kplus_PT"),
|
||||
TV::Float("piminus_BPVIPCHI2", "piminus_BPVIPCHI2"),
|
||||
TV::Float("piminus_PT", "piminus_PT"),
|
||||
TV::Double("Kplus_PROBNN_K", "Kplus_PROBNN_K"),
|
||||
TV::Float("muminus_BPVIPCHI2", "muminus_BPVIPCHI2"),
|
||||
TV::Float("muplus_BPVIPCHI2", "muplus_BPVIPCHI2"),
|
||||
};
|
||||
|
||||
TTree *sig_tree = new TTree("TreeS", "tree containing signal data");
|
||||
@ -145,33 +127,19 @@ int new_analysis_b02hphmmumu()
|
||||
for (unsigned int i = 0; i < data_entries; i++)
|
||||
{
|
||||
data_chain->GetEntry(i);
|
||||
TLorentzVector reconstructed_Kstar{};
|
||||
bool found_k_star = false;
|
||||
if (Hp_PID_K > 0 && Hm_PID_K < 0)
|
||||
{
|
||||
reconstructed_Kstar = hp4v_data->LorentzVector(K_MASS) + hm4v_data->LorentzVector();
|
||||
found_k_star = true;
|
||||
}
|
||||
else if (Hm_PID_K > 0 && Hp_PID_K < 0)
|
||||
{
|
||||
reconstructed_Kstar = hp4v_data->LorentzVector() + hm4v_data->LorentzVector(K_MASS);
|
||||
found_k_star = true;
|
||||
}
|
||||
|
||||
if (found_k_star)
|
||||
{
|
||||
Double_t reconstructed_B_Mass = (reconstructed_Kstar + l14v_data->LorentzVector() + l24v_data->LorentzVector()).M();
|
||||
TLorentzVector reconstructed_Kstar = hp4v_data->LorentzVector() + hm4v_data->LorentzVector();
|
||||
TLorentzVector dimuon = l14v_data->LorentzVector() + l24v_data->LorentzVector();
|
||||
Double_t reconstructed_B_Mass = (reconstructed_Kstar + dimuon).M();
|
||||
|
||||
if (std::all_of(vars.begin(), vars.end(), [](TV *v)
|
||||
{ return v->IsDataFinite(); }))
|
||||
{
|
||||
if (reconstructed_B_Mass > 5500.)
|
||||
if (reconstructed_B_Mass > 5500. && ((TMath::Abs(dimuon.M() - JPSI_MASS) < 100.) || (TMath::Abs(dimuon.M() - PSI2S_MASS) < 100.)))
|
||||
{
|
||||
bkg_tree->Fill();
|
||||
bkg_events++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PrintProgress(TString::Format("%s BKG Collection", analysis_name), data_entries, 10000, i);
|
||||
}
|
||||
@ -187,28 +155,7 @@ int new_analysis_b02hphmmumu()
|
||||
{
|
||||
sim_chain->GetEntry(i);
|
||||
|
||||
Double_t reco_mass_pipkp = (hp4v_sim->LorentzVector(K_MASS) + hm4v_sim->LorentzVector() + l14v_sim->LorentzVector() + l24v_sim->LorentzVector()).M();
|
||||
Double_t reco_mass_pimkm = (hp4v_sim->LorentzVector() + hm4v_sim->LorentzVector(K_MASS) + l14v_sim->LorentzVector() + l24v_sim->LorentzVector()).M();
|
||||
h1_B_Mass_sim_unf->Fill(reco_mass_pipkp);
|
||||
h1_B_Mass_sim_unf->Fill(reco_mass_pimkm);
|
||||
|
||||
if (B_BKGCAT == 30 && TMath::Abs(L1_TRUEID) == PID_MUON && L2_TRUEID == -L1_TRUEID)
|
||||
{
|
||||
TLorentzVector reconstructed_Kstar{};
|
||||
bool found_k_star = false;
|
||||
if (TMath::Abs(Hp_TRUEID) == PID_KAON && TMath::Abs(Hm_TRUEID) == PID_PION)
|
||||
{
|
||||
reconstructed_Kstar = hp4v_sim->LorentzVector(K_MASS) + hm4v_sim->LorentzVector();
|
||||
found_k_star = true;
|
||||
}
|
||||
else if (TMath::Abs(Hp_TRUEID) == PID_PION && TMath::Abs(Hm_TRUEID) == PID_KAON)
|
||||
{
|
||||
reconstructed_Kstar = hp4v_sim->LorentzVector() + hm4v_sim->LorentzVector(K_MASS);
|
||||
found_k_star = true;
|
||||
}
|
||||
|
||||
if (found_k_star)
|
||||
{
|
||||
TLorentzVector reconstructed_Kstar = hp4v_sim->LorentzVector() + hm4v_sim->LorentzVector();
|
||||
Double_t reconstructed_B_Mass = (reconstructed_Kstar + l14v_sim->LorentzVector() + l24v_sim->LorentzVector()).M();
|
||||
|
||||
if (sig_events < bkg_events)
|
||||
@ -223,14 +170,13 @@ int new_analysis_b02hphmmumu()
|
||||
|
||||
B_Mass_sim_var = reconstructed_B_Mass;
|
||||
tree_B_Mass_sim->Fill();
|
||||
}
|
||||
}
|
||||
|
||||
PrintProgress(TString::Format("%s SIG Collection", analysis_name), sim_entries, 10000, i);
|
||||
}
|
||||
|
||||
if (retrain_bdt)
|
||||
{
|
||||
std::cout << "# Added " << sig_events << " signal events." << std::endl;
|
||||
TrainBDT(vars, analysis_name, sig_tree, bkg_tree);
|
||||
std::cout << "# Finished BDT retrain." << std::endl;
|
||||
}
|
||||
@ -240,28 +186,14 @@ int new_analysis_b02hphmmumu()
|
||||
Float_t *train_vars = new Float_t[vars.size()];
|
||||
auto reader = SetupReader(vars, train_vars, analysis_name);
|
||||
|
||||
const double mva_cut_value = -0.0508;
|
||||
const double mva_cut_value = 0;
|
||||
|
||||
for (unsigned int i = 0; i < data_entries; i++)
|
||||
{
|
||||
data_chain->GetEntry(i);
|
||||
|
||||
TLorentzVector dimuon = l14v_data->LorentzVector() + l24v_data->LorentzVector();
|
||||
TLorentzVector reconstructed_Kstar{};
|
||||
bool found_k_star = false;
|
||||
if (Hp_PID_K > 0 && Hm_PID_K < 0)
|
||||
{
|
||||
reconstructed_Kstar = hp4v_data->LorentzVector(K_MASS) + hm4v_data->LorentzVector();
|
||||
found_k_star = true;
|
||||
}
|
||||
else if (Hm_PID_K > 0 && Hp_PID_K < 0)
|
||||
{
|
||||
reconstructed_Kstar = hp4v_data->LorentzVector() + hm4v_data->LorentzVector(K_MASS);
|
||||
found_k_star = true;
|
||||
}
|
||||
|
||||
if (found_k_star)
|
||||
{
|
||||
TLorentzVector reconstructed_Kstar = hp4v_data->LorentzVector() + hm4v_data->LorentzVector();
|
||||
Double_t reconstructed_B_Mass = (reconstructed_Kstar + dimuon).M();
|
||||
|
||||
if (std::all_of(vars.begin(), vars.end(), [](TV *v)
|
||||
@ -308,7 +240,6 @@ int new_analysis_b02hphmmumu()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PrintProgress(TString::Format("%s BDT Evaluation", analysis_name), data_entries, 10000, i);
|
||||
}
|
||||
@ -323,14 +254,13 @@ int new_analysis_b02hphmmumu()
|
||||
DrawInDefaultCanvas(h2_Hlt1_flags_excl_B_Mass, analysis_name, 0.16, "COLZ");
|
||||
|
||||
DrawInDefaultCanvas(h1_B_Mass_unf, analysis_name, 0.1);
|
||||
DrawInDefaultCanvas(h1_B_Mass_sim_unf, analysis_name, 0.1);
|
||||
DrawInDefaultCanvas(h1_B_Mass_bdtf, analysis_name, 0.1);
|
||||
|
||||
DrawInDefaultCanvasStacked({h1_B_Mass_unf, h1_B_Mass_bdtf}, {kRed, kBlue}, {0, 3003}, analysis_name);
|
||||
|
||||
auto roofit_hist_sim = CreateRooDataSetAndFitCB(tree_B_Mass_sim, B_Mass_sim_var_name, end_state_mass_literal, false, false, ShapeParamters{});
|
||||
auto roofit_hist_jpsi_fitsum = CreateRooDataSetAndFitCB(tree_B_Mass_jpsi, B_Mass_jpsi_var_name, end_state_mass_literal, true, true, roofit_hist_sim.shape_parameters);
|
||||
auto roofit_hist_psi2s_fitsum = CreateRooDataSetAndFitCB(tree_B_Mass_psi2s, B_Mass_psi2s_var_name, end_state_mass_literal, true, true, roofit_hist_sim.shape_parameters);
|
||||
auto roofit_hist_psi2s_fitsum = CreateRooDataSetAndFitCB(tree_B_Mass_psi2s, B_Mass_psi2s_var_name, end_state_mass_literal, true, true, roofit_hist_sim.shape_parameters, true);
|
||||
|
||||
DrawInDefaultCanvas(roofit_hist_jpsi_fitsum, analysis_name);
|
||||
DrawInDefaultCanvas(roofit_hist_psi2s_fitsum, analysis_name);
|
||||
|
@ -45,34 +45,24 @@
|
||||
int new_analysis_bu2hpmumu()
|
||||
{
|
||||
const char *analysis_name = "BuToHpMuMu";
|
||||
const char *data_tree_name = "BuToHpMuMu";
|
||||
const char *sim_tree_name = "BuToHpMuMu_noPID";
|
||||
const char *data_tree_name = "SpruceRD_BuToHpMuMu";
|
||||
const char *sim_tree_name = "BuToHpMuMu_noPID_mapped";
|
||||
const char *end_state_mass_literal = "m(#pi^{+}_{(#rightarrow K^{+})}#mu^{+}#mu^{-})";
|
||||
const bool retrain_bdt = false;
|
||||
|
||||
TChain *data_chain = new TChain(TString::Format("%s/DecayTree", data_tree_name));
|
||||
// data_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/data_samples/spruce_magdown_2023_v0_tuple_90000000_v0r0p6288631.root");
|
||||
data_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/data_samples/spruce_magdown_2023_v0r1_tuple_90000000_2023_v0r0p6288631.root");
|
||||
data_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/data_samples/Collision23_Beam6800GeV-VeloClosed-MagDown-Excl-UT_RealData_Sprucing23r1_90000000_RD.root");
|
||||
|
||||
FourVect *l14v_data = FourVect::Init(data_chain, "L1");
|
||||
FourVect *l24v_data = FourVect::Init(data_chain, "L2");
|
||||
FourVect *hp4v_data = FourVect::Init(data_chain, "Hp");
|
||||
FourVect *l14v_data = FourVect::Init(data_chain, "muminus");
|
||||
FourVect *l24v_data = FourVect::Init(data_chain, "muplus");
|
||||
FourVect *hp4v_data = FourVect::Init(data_chain, "Kplus");
|
||||
|
||||
TChain *sim_chain = new TChain(TString::Format("%s/DecayTree", sim_tree_name));
|
||||
sim_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/MC/rd_btoxll_simulation_fullstream_v0r0p6671378_BuToKpMuMu_12143001_magdown.root");
|
||||
sim_chain->Add("/auto/data/pfeiffer/inclusive_detached_dilepton/MC/BuToHpMuMu_mapped_mc.root");
|
||||
|
||||
FourVect *l14v_sim = FourVect::Init(sim_chain, "L1");
|
||||
FourVect *l24v_sim = FourVect::Init(sim_chain, "L2");
|
||||
FourVect *hp4v_sim = FourVect::Init(sim_chain, "Hp");
|
||||
|
||||
Int_t B_BKGCAT, L1_TRUEID, L2_TRUEID, Hp_TRUEID;
|
||||
Double_t Hp_PID_K_sim;
|
||||
|
||||
sim_chain->SetBranchAddress("L1_TRUEID", &L1_TRUEID);
|
||||
sim_chain->SetBranchAddress("L2_TRUEID", &L2_TRUEID);
|
||||
sim_chain->SetBranchAddress("Hp_TRUEID", &Hp_TRUEID);
|
||||
sim_chain->SetBranchAddress("B_BKGCAT", &B_BKGCAT);
|
||||
sim_chain->SetBranchAddress("Hp_PID_K", &Hp_PID_K_sim);
|
||||
FourVect *l14v_sim = FourVect::Init(sim_chain, "muminus");
|
||||
FourVect *l24v_sim = FourVect::Init(sim_chain, "muplus");
|
||||
FourVect *hp4v_sim = FourVect::Init(sim_chain, "Kplus");
|
||||
|
||||
Double_t B_Mass_jpsi_var, B_Mass_psi2s_var, B_Mass_sim_var;
|
||||
TString B_Mass_jpsi_var_name = "B_Mass_jpsi_var";
|
||||
@ -89,16 +79,12 @@ int new_analysis_bu2hpmumu()
|
||||
|
||||
TH1D *h1_B_Mass_unf = new TH1D("h1_B_Mass_unf", TString::Format("B Mass (%s), Unfiltered", data_tree_name), B_MASS_HIST_BINS, B_MASS_VAR_MIN, B_MASS_VAR_MAX);
|
||||
TH1D *h1_B_Mass_bdtf = new TH1D("h1_B_Mass_bdtf", TString::Format("B Mass (%s), BDT Filter", data_tree_name), B_MASS_HIST_BINS, B_MASS_VAR_MIN, B_MASS_VAR_MAX);
|
||||
TH1D *h1_B_Mass_sim_unf = new TH1D("h1_B_Mass_sim_unf", TString::Format("B Mass, Simualted (%s), Unfiltered", sim_tree_name), B_MASS_HIST_BINS, B_MASS_VAR_MIN, B_MASS_VAR_MAX);
|
||||
|
||||
TH2D *h2_Hlt1_flags_B_Mass = new TH2D("h2_Hlt1_flags_B_Mass", "Hlt1 Decision vs B Mass", 50, 5100, 5400, 13, 1., 14.);
|
||||
TH2D *h2_Hlt1_flags_excl_B_Mass = new TH2D("h2_Hlt1_flags_excl_B_Mass", "Excl Hlt1 Decision vs B Mass", 50, 5100, 5400, 13, 1., 14.);
|
||||
TH1D *h1_bdt_probs = new TH1D("h1_bdt_probs", "BDT Probabilities", 100, -2, 2);
|
||||
TH1D *h1_Hp_PID_K_pref = new TH1D("h1_Hp_PID_K_pref", "H^{+} PID K, Before TrueID", 50, -10, 10);
|
||||
TH1D *h1_Hp_PID_K_postf = new TH1D("h1_Hp_PID_K_postf", "H^{+} PID K, After TrueID", 50, -10, 10);
|
||||
|
||||
h1_B_Mass_unf->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h1_B_Mass_sim_unf->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h1_B_Mass_bdtf->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h2_Hlt1_flags_B_Mass->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
h2_Hlt1_flags_excl_B_Mass->GetXaxis()->SetTitle(end_state_mass_literal);
|
||||
@ -112,14 +98,12 @@ int new_analysis_bu2hpmumu()
|
||||
TV::Float("B_BPVFDCHI2", "B_BPVFDCHI2"),
|
||||
TV::Float("B_BPVDIRA", "B_BPVDIRA"),
|
||||
TV::Float("Jpsi_BPVIPCHI2", "Jpsi_BPVIPCHI2"),
|
||||
// TV::Float("Jpsi_BPVDIRA", "Jpsi_BPVDIRA"),
|
||||
TV::Float("Jpsi_PT", "Jpsi_PT"),
|
||||
TV::Float("Hp_BPVIPCHI2", "Hp_BPVIPCHI2"),
|
||||
TV::Float("Hp_PT", "Hp_PT"),
|
||||
// TV::Double("Kplus_PID_K", "K_PID_K"),
|
||||
TV::Double("Hp_PROBNN_K", "Hp_PROBNN_K"),
|
||||
TV::Float("L1_BPVIPCHI2", "L1_BPVIPCHI2"),
|
||||
TV::Float("L2_BPVIPCHI2", "L2_BPVIPCHI2"),
|
||||
TV::Float("Kplus_BPVIPCHI2", "Kplus_BPVIPCHI2"),
|
||||
TV::Float("Kplus_PT", "Kplus_PT"),
|
||||
TV::Double("Kplus_PROBNN_K", "Kplus_PROBNN_K"),
|
||||
TV::Float("muminus_BPVIPCHI2", "muminus_BPVIPCHI2"),
|
||||
TV::Float("muplus_BPVIPCHI2", "muplus_BPVIPCHI2"),
|
||||
};
|
||||
|
||||
TTree *sig_tree = new TTree("TreeS", "tree containing signal data");
|
||||
@ -141,12 +125,13 @@ int new_analysis_bu2hpmumu()
|
||||
for (unsigned int i = 0; i < data_entries; i++)
|
||||
{
|
||||
data_chain->GetEntry(i);
|
||||
Double_t reconstructed_B_Mass = (hp4v_data->LorentzVector(K_MASS) + l14v_data->LorentzVector() + l24v_data->LorentzVector()).M();
|
||||
TLorentzVector dimuon = l14v_data->LorentzVector() + l24v_data->LorentzVector();
|
||||
Double_t reconstructed_B_Mass = (hp4v_data->LorentzVector() + dimuon).M();
|
||||
|
||||
if (std::all_of(vars.begin(), vars.end(), [](TV *v)
|
||||
{ return v->IsDataFinite(); }))
|
||||
{
|
||||
if (reconstructed_B_Mass > 5500.)
|
||||
if (reconstructed_B_Mass > 5500. && ((TMath::Abs(dimuon.M() - JPSI_MASS) < 100.) || (TMath::Abs(dimuon.M() - PSI2S_MASS) < 100.)))
|
||||
{
|
||||
bkg_tree->Fill();
|
||||
bkg_events++;
|
||||
@ -166,12 +151,7 @@ int new_analysis_bu2hpmumu()
|
||||
for (unsigned int i = 0; i < sim_entries; i++)
|
||||
{
|
||||
sim_chain->GetEntry(i);
|
||||
Double_t reconstructed_B_Mass = (hp4v_sim->LorentzVector(K_MASS) + l14v_sim->LorentzVector() + l24v_sim->LorentzVector()).M();
|
||||
h1_Hp_PID_K_pref->Fill(Hp_PID_K_sim);
|
||||
h1_B_Mass_sim_unf->Fill(reconstructed_B_Mass);
|
||||
if (B_BKGCAT == 30 && TMath::Abs(L1_TRUEID) == PID_MUON && L2_TRUEID == -L1_TRUEID && TMath::Abs(Hp_TRUEID) == PID_KAON)
|
||||
{
|
||||
h1_Hp_PID_K_postf->Fill(Hp_PID_K_sim);
|
||||
Double_t reconstructed_B_Mass = (hp4v_sim->LorentzVector() + l14v_sim->LorentzVector() + l24v_sim->LorentzVector()).M();
|
||||
if (sig_events < bkg_events)
|
||||
{
|
||||
if (retrain_bdt && std::all_of(vars.begin(), vars.end(), [](TV *v)
|
||||
@ -184,30 +164,30 @@ int new_analysis_bu2hpmumu()
|
||||
|
||||
B_Mass_sim_var = reconstructed_B_Mass;
|
||||
tree_B_Mass_sim->Fill();
|
||||
}
|
||||
|
||||
PrintProgress(TString::Format("%s SIG Collection", analysis_name), sim_entries, 10000, i);
|
||||
}
|
||||
|
||||
if (retrain_bdt)
|
||||
{
|
||||
TrainBDT(vars, "BuToHpMuMu", sig_tree, bkg_tree);
|
||||
std::cout << "# Added " << sig_events << " signal events." << std::endl;
|
||||
TrainBDT(vars, analysis_name, sig_tree, bkg_tree);
|
||||
std::cout << "# Finished BDT retrain." << std::endl;
|
||||
}
|
||||
|
||||
std::cout << "# Starting evaluation of data." << std::endl;
|
||||
|
||||
Float_t *train_vars = new Float_t[vars.size()];
|
||||
auto reader = SetupReader(vars, train_vars, "BuToHpMuMu");
|
||||
auto reader = SetupReader(vars, train_vars, analysis_name);
|
||||
|
||||
const double mva_cut_value = -0.02;
|
||||
const double mva_cut_value = -0.05;
|
||||
|
||||
for (unsigned int i = 0; i < data_entries; i++)
|
||||
{
|
||||
data_chain->GetEntry(i);
|
||||
|
||||
TLorentzVector dimuon = l14v_data->LorentzVector() + l24v_data->LorentzVector();
|
||||
Double_t reconstructed_B_Mass = (hp4v_data->LorentzVector(K_MASS) + dimuon).M();
|
||||
Double_t reconstructed_B_Mass = (hp4v_data->LorentzVector() + dimuon).M();
|
||||
|
||||
if (std::all_of(vars.begin(), vars.end(), [](TV *v)
|
||||
{ return v->IsDataFinite(); }))
|
||||
@ -264,15 +244,13 @@ int new_analysis_bu2hpmumu()
|
||||
DrawInDefaultCanvas(h2_Hlt1_flags_excl_B_Mass, analysis_name, 0.16, "COLZ");
|
||||
|
||||
DrawInDefaultCanvas(h1_B_Mass_unf, analysis_name, 0.1);
|
||||
DrawInDefaultCanvas(h1_B_Mass_sim_unf, analysis_name, 0.1);
|
||||
DrawInDefaultCanvas(h1_B_Mass_bdtf, analysis_name, 0.1);
|
||||
|
||||
DrawInDefaultCanvasStacked({h1_Hp_PID_K_pref, h1_Hp_PID_K_postf}, {kRed, kBlue}, {0, 3003}, analysis_name);
|
||||
DrawInDefaultCanvasStacked({h1_B_Mass_unf, h1_B_Mass_bdtf}, {kRed, kBlue}, {0, 3003}, analysis_name);
|
||||
|
||||
auto roofit_hist_sim = CreateRooDataSetAndFitCB(tree_B_Mass_sim, B_Mass_sim_var_name, end_state_mass_literal, false, false, ShapeParamters{});
|
||||
auto roofit_hist_jpsi_fitsum = CreateRooDataSetAndFitCB(tree_B_Mass_jpsi, B_Mass_jpsi_var_name, end_state_mass_literal, true, true, roofit_hist_sim.shape_parameters);
|
||||
auto roofit_hist_psi2s_fitsum = CreateRooDataSetAndFitCB(tree_B_Mass_psi2s, B_Mass_psi2s_var_name, end_state_mass_literal, true, true, roofit_hist_sim.shape_parameters);
|
||||
auto roofit_hist_psi2s_fitsum = CreateRooDataSetAndFitCB(tree_B_Mass_psi2s, B_Mass_psi2s_var_name, end_state_mass_literal, true, true, roofit_hist_sim.shape_parameters, true);
|
||||
|
||||
DrawInDefaultCanvas(roofit_hist_jpsi_fitsum, analysis_name);
|
||||
DrawInDefaultCanvas(roofit_hist_psi2s_fitsum, analysis_name);
|
||||
|
Loading…
Reference in New Issue
Block a user