From 84df7596bf1312ecca658b3b9a96c35db964f888 Mon Sep 17 00:00:00 2001 From: Marius Pfeiffer Date: Sun, 10 Mar 2024 14:21:17 +0100 Subject: [PATCH] mc mapping macros --- mapmc_b02hphmmumu.cpp | 256 +++++++++++++++++++++++++++++++++++++ mapmc_bu2hpmumu.cpp | 192 ++++++++++++++++++++++++++++ new_analysis_bu2hpmumu.cpp | 4 +- 3 files changed, 450 insertions(+), 2 deletions(-) create mode 100644 mapmc_b02hphmmumu.cpp create mode 100644 mapmc_bu2hpmumu.cpp diff --git a/mapmc_b02hphmmumu.cpp b/mapmc_b02hphmmumu.cpp new file mode 100644 index 0000000..24ba14d --- /dev/null +++ b/mapmc_b02hphmmumu.cpp @@ -0,0 +1,256 @@ +#include +#include +#include +#include +#include +#include + +#include "TH1D.h" +#include "TH2D.h" +#include "THStack.h" +#include "TGraph.h" +#include "TTree.h" +#include "TChain.h" +#include "TFile.h" +#include "TCanvas.h" +#include "TROOT.h" +#include "TStyle.h" +#include "TColor.h" +#include "TLorentzVector.h" +#include "TRandom3.h" +#include "TLegend.h" + +#include "RooDataHist.h" +#include "RooRealVar.h" +#include "RooPlot.h" +#include "RooGaussian.h" +#include "RooExponential.h" +#include "RooRealConstant.h" +#include "RooAddPdf.h" +#include "RooFitResult.h" +#include "RooProduct.h" +#include "RooCrystalBall.h" +#include "RooBreitWigner.h" +#include "RooArgSet.h" +#include "RooFFTConvPdf.h" +#include "RooNovosibirsk.h" + +#include "constants.h" +#include "basic_analysis.h" + +int mapmc_b02hphmmumu() +{ + + const char *sim_tree_name = "B0ToHpHmMuMu_noPID"; + + 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"); + + 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); + + Float_t B0_PT_in, B0_BPVFDCHI2_in, B0_BPVDIRA_in, Jpsi_BPVIPCHI2_in, Jpsi_PT_in, + Hp_BPVIPCHI2_in, Hp_PT_in, Hm_BPVIPCHI2_in, Hm_PT_in, L1_BPVIPCHI2_in, L2_BPVIPCHI2_in; + Double_t Hp_PROBNN_K_in, Hm_PROBNN_K_in; + + sim_chain->SetBranchAddress("B0_PT", &B0_PT_in); + sim_chain->SetBranchAddress("B0_BPVFDCHI2", &B0_BPVFDCHI2_in); + sim_chain->SetBranchAddress("B0_BPVDIRA", &B0_BPVDIRA_in); + sim_chain->SetBranchAddress("Jpsi_BPVIPCHI2", &Jpsi_BPVIPCHI2_in); + sim_chain->SetBranchAddress("Jpsi_PT", &Jpsi_PT_in); + sim_chain->SetBranchAddress("Hp_BPVIPCHI2", &Hp_BPVIPCHI2_in); + sim_chain->SetBranchAddress("Hp_PT", &Hp_PT_in); + sim_chain->SetBranchAddress("Hm_BPVIPCHI2", &Hm_BPVIPCHI2_in); + sim_chain->SetBranchAddress("Hm_PT", &Hm_PT_in); + sim_chain->SetBranchAddress("L1_BPVIPCHI2", &L1_BPVIPCHI2_in); + sim_chain->SetBranchAddress("L2_BPVIPCHI2", &L2_BPVIPCHI2_in); + sim_chain->SetBranchAddress("Hp_PROBNN_K", &Hp_PROBNN_K_in); + sim_chain->SetBranchAddress("Hm_PROBNN_K", &Hm_PROBNN_K_in); + + TTree *output_tree = new TTree("DecayTree", "DecayTree"); + + Float_t B0_PT_out, B0_BPVFDCHI2_out, B0_BPVDIRA_out, Jpsi_BPVIPCHI2_out, Jpsi_PT_out, + Kplus_BPVIPCHI2_out, Kplus_PT_out, piminus_BPVIPCHI2_out, piminus_PT_out, muplus_BPVIPCHI2_out, muminus_BPVIPCHI2_out, + B0_PX_out, B0_PY_out, B0_PZ_out, B0_ENERGY_out, + muplus_PX_out, muplus_PY_out, muplus_PZ_out, muplus_ENERGY_out, + muminus_PX_out, muminus_PY_out, muminus_PZ_out, muminus_ENERGY_out, + Kplus_PX_out, Kplus_PY_out, Kplus_PZ_out, Kplus_ENERGY_out, + piminus_PX_out, piminus_PY_out, piminus_PZ_out, piminus_ENERGY_out; + 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_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"); + output_tree->Branch("B0_PY", &B0_PY_out, "0_PY/F"); + output_tree->Branch("B0_PZ", &B0_PZ_out, "0_PZ/F"); + output_tree->Branch("B0_ENERGY", &B0_ENERGY_out, "B0_ENERGY/F"); + output_tree->Branch("B0_M", &B0_M_out, "B0_M/D"); + + output_tree->Branch("Jpsi_BPVIPCHI2", &Jpsi_BPVIPCHI2_out, "Jpsi_BPVIPCHI2/F"); + output_tree->Branch("Jpsi_PT", &Jpsi_PT_out, "Jpsi_PT/F"); + + output_tree->Branch("Kplus_BPVIPCHI2", &Kplus_BPVIPCHI2_out, "Kplus_BPVIPCHI2/F"); + output_tree->Branch("Kplus_PROBNN_K", &Kplus_PROBNN_K_out, "Kplus_PROBNN_K/D"); + output_tree->Branch("Kplus_PT", &Kplus_PT_out, "Kplus_PT/F"); + output_tree->Branch("Kplus_PX", &Kplus_PX_out, "Kplus_PX/F"); + output_tree->Branch("Kplus_PY", &Kplus_PY_out, "Kplus_PY/F"); + output_tree->Branch("Kplus_PZ", &Kplus_PZ_out, "Kplus_PZ/F"); + output_tree->Branch("Kplus_ENERGY", &Kplus_ENERGY_out, "Kplus_ENERGY/F"); + output_tree->Branch("Kplus_M", &Kplus_M_out, "Kplus_M/D"); + output_tree->Branch("Kplus_ID", &Kplus_ID_out, "Kplus_ID/I"); + + output_tree->Branch("piminus_BPVIPCHI2", &piminus_BPVIPCHI2_out, "piminus_BPVIPCHI2/F"); + output_tree->Branch("piminus_PROBNN_K", &piminus_PROBNN_K_out, "piminus_PROBNN_K/D"); + output_tree->Branch("piminus_PT", &piminus_PT_out, "piminus_PT/F"); + output_tree->Branch("piminus_PX", &piminus_PX_out, "piminus_PX/F"); + output_tree->Branch("piminus_PY", &piminus_PY_out, "piminus_PY/F"); + output_tree->Branch("piminus_PZ", &piminus_PZ_out, "piminus_PZ/F"); + output_tree->Branch("piminus_ENERGY", &piminus_ENERGY_out, "piminus_ENERGY/F"); + output_tree->Branch("piminus_M", &piminus_M_out, "piminus_M/D"); + output_tree->Branch("piminus_ID", &piminus_ID_out, "piminus_ID/I"); + + output_tree->Branch("muminus_BPVIPCHI2", &muminus_BPVIPCHI2_out, "muminus_BPVIPCHI2/F"); + output_tree->Branch("muminus_PX", &muminus_PX_out, "muminus_PX/F"); + output_tree->Branch("muminus_PY", &muminus_PY_out, "muminus_PY/F"); + output_tree->Branch("muminus_PZ", &muminus_PZ_out, "muminus_PZ/F"); + output_tree->Branch("muminus_ENERGY", &muminus_ENERGY_out, "muminus_ENERGY/F"); + output_tree->Branch("muminus_M", &muminus_M_out, "muminus_M/D"); + output_tree->Branch("muminus_ID", &muminus_ID_out, "muminus_ID/I"); + + output_tree->Branch("muplus_BPVIPCHI2", &muplus_BPVIPCHI2_out, "muplus_BPVIPCHI2/F"); + output_tree->Branch("muplus_PX", &muplus_PX_out, "muplus_PX/F"); + output_tree->Branch("muplus_PY", &muplus_PY_out, "muplus_PY/F"); + output_tree->Branch("muplus_PZ", &muplus_PZ_out, "muplus_PZ/F"); + output_tree->Branch("muplus_ENERGY", &muplus_ENERGY_out, "muplus_ENERGY/F"); + output_tree->Branch("muplus_M", &muplus_M_out, "muplus_M/D"); + output_tree->Branch("muplus_ID", &muplus_ID_out, "muplus_ID/I"); + + unsigned int sim_entries = sim_chain->GetEntries(); + + for (unsigned int i = 0; i < sim_entries; i++) + { + sim_chain->GetEntry(i); + if (B_BKGCAT == 30 && TMath::Abs(L1_TRUEID) == PID_MUON && L2_TRUEID == -L1_TRUEID && ((TMath::Abs(Hp_TRUEID) == PID_KAON && TMath::Abs(Hm_TRUEID) == PID_PION) || (TMath::Abs(Hp_TRUEID) == PID_PION && TMath::Abs(Hm_TRUEID) == PID_KAON))) + { + B0_PT_out = B0_PT_in; + B0_BPVFDCHI2_out = B0_BPVFDCHI2_in; + B0_BPVDIRA_out = B0_BPVDIRA_in; + + Jpsi_BPVIPCHI2_out = Jpsi_BPVIPCHI2_in; + Jpsi_PT_out = Jpsi_PT_in; + + muminus_BPVIPCHI2_out = L1_BPVIPCHI2_in; + muminus_ID_out = L1_TRUEID; + auto muminus_lv = l14v_sim->LorentzVector(); + muminus_PX_out = muminus_lv.Px(); + muminus_PY_out = muminus_lv.Py(); + muminus_PZ_out = muminus_lv.Pz(); + muminus_ENERGY_out = muminus_lv.E(); + muminus_M_out = muminus_lv.M(); + + muplus_BPVIPCHI2_out = L2_BPVIPCHI2_in; + muplus_ID_out = L2_TRUEID; + auto muplus_lv = l24v_sim->LorentzVector(); + muplus_PX_out = muplus_lv.Px(); + muplus_PY_out = muplus_lv.Py(); + muplus_PZ_out = muplus_lv.Pz(); + muplus_ENERGY_out = muplus_lv.E(); + muplus_M_out = muplus_lv.M(); + + if (TMath::Abs(Hp_TRUEID) == PID_KAON && TMath::Abs(Hm_TRUEID) == PID_PION) + { + Kplus_BPVIPCHI2_out = Hp_BPVIPCHI2_in; + Kplus_PT_out = Hp_PT_in; + Kplus_PROBNN_K_out = Hp_PROBNN_K_in; + Kplus_ID_out = Hp_TRUEID; + piminus_BPVIPCHI2_out = Hm_BPVIPCHI2_in; + piminus_PT_out = Hm_PT_in; + piminus_PROBNN_K_out = Hm_PROBNN_K_in; + piminus_ID_out = Hm_TRUEID; + + auto Kplus_lv = hp4v_sim->LorentzVector(K_MASS); + auto piminus_lv = hm4v_sim->LorentzVector(); + + Kplus_PX_out = Kplus_lv.Px(); + Kplus_PY_out = Kplus_lv.Py(); + Kplus_PZ_out = Kplus_lv.Pz(); + Kplus_ENERGY_out = Kplus_lv.E(); + Kplus_M_out = Kplus_lv.M(); + + piminus_PX_out = piminus_lv.Px(); + piminus_PY_out = piminus_lv.Py(); + piminus_PZ_out = piminus_lv.Pz(); + piminus_ENERGY_out = piminus_lv.E(); + piminus_M_out = piminus_lv.M(); + + auto B0_lv = muminus_lv + muplus_lv + Kplus_lv + piminus_lv; + + B0_PX_out = B0_lv.Px(); + B0_PY_out = B0_lv.Py(); + B0_PZ_out = B0_lv.Pz(); + B0_ENERGY_out = B0_lv.E(); + B0_M_out = B0_lv.M(); + } + else if (TMath::Abs(Hp_TRUEID) == PID_PION && TMath::Abs(Hm_TRUEID) == PID_KAON) + { + Kplus_BPVIPCHI2_out = Hm_BPVIPCHI2_in; + Kplus_PT_out = Hm_PROBNN_K_in; + Kplus_PROBNN_K_out = Hm_PROBNN_K_in; + Kplus_ID_out = Hm_TRUEID; + piminus_BPVIPCHI2_out = Hp_BPVIPCHI2_in; + piminus_PT_out = Hp_PT_in; + piminus_PROBNN_K_out = Hp_PROBNN_K_in; + piminus_ID_out = Hp_TRUEID; + + auto Kplus_lv = hm4v_sim->LorentzVector(K_MASS); + auto piminus_lv = hp4v_sim->LorentzVector(); + + Kplus_PX_out = Kplus_lv.Px(); + Kplus_PY_out = Kplus_lv.Py(); + Kplus_PZ_out = Kplus_lv.Pz(); + Kplus_ENERGY_out = Kplus_lv.E(); + Kplus_M_out = Kplus_lv.M(); + + piminus_PX_out = piminus_lv.Px(); + piminus_PY_out = piminus_lv.Py(); + piminus_PZ_out = piminus_lv.Pz(); + piminus_ENERGY_out = piminus_lv.E(); + piminus_M_out = piminus_lv.M(); + + auto B0_lv = muminus_lv + muplus_lv + Kplus_lv + piminus_lv; + + B0_PX_out = B0_lv.Px(); + B0_PY_out = B0_lv.Py(); + B0_PZ_out = B0_lv.Pz(); + B0_ENERGY_out = B0_lv.E(); + B0_M_out = B0_lv.M(); + } + + output_tree->Fill(); + } + + PrintProgress(TString::Format("%s Mapping", sim_tree_name), sim_entries, 10000, i); + } + + TFile* output_file = TFile::Open("/auto/data/pfeiffer/inclusive_detached_dilepton/MC/B0ToHpHmMuMu_mapped_mc.root", "RECREATE"); + output_file->cd(); + output_file->mkdir("B0ToHpHmMuMu_noPID_mapped/"); + output_file->cd("B0ToHpHmMuMu_noPID_mapped/"); + output_tree->SetDirectory(gDirectory); + output_tree->Write(); + output_file->Close(); + + return 0; +} \ No newline at end of file diff --git a/mapmc_bu2hpmumu.cpp b/mapmc_bu2hpmumu.cpp new file mode 100644 index 0000000..ed488d0 --- /dev/null +++ b/mapmc_bu2hpmumu.cpp @@ -0,0 +1,192 @@ +#include +#include +#include +#include +#include +#include + +#include "TH1D.h" +#include "TH2D.h" +#include "THStack.h" +#include "TGraph.h" +#include "TTree.h" +#include "TChain.h" +#include "TFile.h" +#include "TCanvas.h" +#include "TROOT.h" +#include "TStyle.h" +#include "TColor.h" +#include "TLorentzVector.h" +#include "TRandom3.h" +#include "TLegend.h" + +#include "RooDataHist.h" +#include "RooRealVar.h" +#include "RooPlot.h" +#include "RooGaussian.h" +#include "RooExponential.h" +#include "RooRealConstant.h" +#include "RooAddPdf.h" +#include "RooFitResult.h" +#include "RooProduct.h" +#include "RooCrystalBall.h" +#include "RooBreitWigner.h" +#include "RooArgSet.h" +#include "RooFFTConvPdf.h" +#include "RooNovosibirsk.h" + +#include "constants.h" +#include "basic_analysis.h" + +int mapmc_bu2hpmumu() +{ + + const char *sim_tree_name = "BuToHpMuMu_noPID"; + + 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"); + + 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; + + 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); + + Float_t B_PT_in, B_BPVFDCHI2_in, B_BPVDIRA_in, Jpsi_BPVIPCHI2_in, Jpsi_PT_in, + Hp_BPVIPCHI2_in, Hp_PT_in, L1_BPVIPCHI2_in, L2_BPVIPCHI2_in; + Double_t Hp_PROBNN_K_in; + + sim_chain->SetBranchAddress("B_PT", &B_PT_in); + sim_chain->SetBranchAddress("B_BPVFDCHI2", &B_BPVFDCHI2_in); + sim_chain->SetBranchAddress("B_BPVDIRA", &B_BPVDIRA_in); + sim_chain->SetBranchAddress("Jpsi_BPVIPCHI2", &Jpsi_BPVIPCHI2_in); + sim_chain->SetBranchAddress("Jpsi_PT", &Jpsi_PT_in); + sim_chain->SetBranchAddress("Hp_BPVIPCHI2", &Hp_BPVIPCHI2_in); + sim_chain->SetBranchAddress("Hp_PT", &Hp_PT_in); + sim_chain->SetBranchAddress("L1_BPVIPCHI2", &L1_BPVIPCHI2_in); + sim_chain->SetBranchAddress("L2_BPVIPCHI2", &L2_BPVIPCHI2_in); + sim_chain->SetBranchAddress("Hp_PROBNN_K", &Hp_PROBNN_K_in); + + TTree *output_tree = new TTree("DecayTree", "DecayTree"); + + Float_t B_PT_out, B_BPVFDCHI2_out, B_BPVDIRA_out, Jpsi_BPVIPCHI2_out, Jpsi_PT_out, + Kplus_BPVIPCHI2_out, Kplus_PT_out, muplus_BPVIPCHI2_out, muminus_BPVIPCHI2_out, + B_PX_out, B_PY_out, B_PZ_out, B_ENERGY_out, + muplus_PX_out, muplus_PY_out, muplus_PZ_out, muplus_ENERGY_out, + muminus_PX_out, muminus_PY_out, muminus_PZ_out, muminus_ENERGY_out, + Kplus_PX_out, Kplus_PY_out, Kplus_PZ_out, Kplus_ENERGY_out; + Double_t Kplus_PROBNN_K_out, B_M_out, muplus_M_out, muminus_M_out, Kplus_M_out; + Int_t muplus_ID_out, muminus_ID_out, Kplus_ID_out; + + output_tree->Branch("B_PT", &B_PT_out, "B_PT/D"); + output_tree->Branch("B_BPVFDCHI2", &B_BPVFDCHI2_out, "B_BPVFDCHI2/F"); + output_tree->Branch("B_BPVDIRA", &B_BPVDIRA_out, "B_BPVDIRA/F"); + output_tree->Branch("B_PX", &B_PX_out, "0_PX/F"); + output_tree->Branch("B_PY", &B_PY_out, "0_PY/F"); + output_tree->Branch("B_PZ", &B_PZ_out, "0_PZ/F"); + output_tree->Branch("B_ENERGY", &B_ENERGY_out, "B_ENERGY/F"); + output_tree->Branch("B_M", &B_M_out, "B_M/D"); + + output_tree->Branch("Jpsi_BPVIPCHI2", &Jpsi_BPVIPCHI2_out, "Jpsi_BPVIPCHI2/F"); + output_tree->Branch("Jpsi_PT", &Jpsi_PT_out, "Jpsi_PT/F"); + + output_tree->Branch("Kplus_BPVIPCHI2", &Kplus_BPVIPCHI2_out, "Kplus_BPVIPCHI2/F"); + output_tree->Branch("Kplus_PROBNN_K", &Kplus_PROBNN_K_out, "Kplus_PROBNN_K/D"); + output_tree->Branch("Kplus_PT", &Kplus_PT_out, "Kplus_PT/F"); + output_tree->Branch("Kplus_PX", &Kplus_PX_out, "Kplus_PX/F"); + output_tree->Branch("Kplus_PY", &Kplus_PY_out, "Kplus_PY/F"); + output_tree->Branch("Kplus_PZ", &Kplus_PZ_out, "Kplus_PZ/F"); + output_tree->Branch("Kplus_ENERGY", &Kplus_ENERGY_out, "Kplus_ENERGY/F"); + output_tree->Branch("Kplus_M", &Kplus_M_out, "Kplus_M/D"); + output_tree->Branch("Kplus_ID", &Kplus_ID_out, "Kplus_ID/I"); + + output_tree->Branch("muminus_BPVIPCHI2", &muminus_BPVIPCHI2_out, "muminus_BPVIPCHI2/F"); + output_tree->Branch("muminus_PX", &muminus_PX_out, "muminus_PX/F"); + output_tree->Branch("muminus_PY", &muminus_PY_out, "muminus_PY/F"); + output_tree->Branch("muminus_PZ", &muminus_PZ_out, "muminus_PZ/F"); + output_tree->Branch("muminus_ENERGY", &muminus_ENERGY_out, "muminus_ENERGY/F"); + output_tree->Branch("muminus_M", &muminus_M_out, "muminus_M/D"); + output_tree->Branch("muminus_ID", &muminus_ID_out, "muminus_ID/I"); + + output_tree->Branch("muplus_BPVIPCHI2", &muplus_BPVIPCHI2_out, "muplus_BPVIPCHI2/F"); + output_tree->Branch("muplus_PX", &muplus_PX_out, "muplus_PX/F"); + output_tree->Branch("muplus_PY", &muplus_PY_out, "muplus_PY/F"); + output_tree->Branch("muplus_PZ", &muplus_PZ_out, "muplus_PZ/F"); + output_tree->Branch("muplus_ENERGY", &muplus_ENERGY_out, "muplus_ENERGY/F"); + output_tree->Branch("muplus_M", &muplus_M_out, "muplus_M/D"); + output_tree->Branch("muplus_ID", &muplus_ID_out, "muplus_ID/I"); + + unsigned int sim_entries = sim_chain->GetEntries(); + + for (unsigned int i = 0; i < sim_entries; i++) + { + sim_chain->GetEntry(i); + if (B_BKGCAT == 30 && TMath::Abs(L1_TRUEID) == PID_MUON && L2_TRUEID == -L1_TRUEID && TMath::Abs(Hp_TRUEID) == PID_KAON) + { + B_PT_out = B_PT_in; + B_BPVFDCHI2_out = B_BPVFDCHI2_in; + B_BPVDIRA_out = B_BPVDIRA_in; + + Jpsi_BPVIPCHI2_out = Jpsi_BPVIPCHI2_in; + Jpsi_PT_out = Jpsi_PT_in; + + muminus_BPVIPCHI2_out = L1_BPVIPCHI2_in; + muminus_ID_out = L1_TRUEID; + auto muminus_lv = l14v_sim->LorentzVector(); + muminus_PX_out = muminus_lv.Px(); + muminus_PY_out = muminus_lv.Py(); + muminus_PZ_out = muminus_lv.Pz(); + muminus_ENERGY_out = muminus_lv.E(); + muminus_M_out = muminus_lv.M(); + + muplus_BPVIPCHI2_out = L2_BPVIPCHI2_in; + muplus_ID_out = L2_TRUEID; + auto muplus_lv = l24v_sim->LorentzVector(); + muplus_PX_out = muplus_lv.Px(); + muplus_PY_out = muplus_lv.Py(); + muplus_PZ_out = muplus_lv.Pz(); + muplus_ENERGY_out = muplus_lv.E(); + muplus_M_out = muplus_lv.M(); + + Kplus_BPVIPCHI2_out = Hp_BPVIPCHI2_in; + Kplus_PT_out = Hp_PT_in; + Kplus_PROBNN_K_out = Hp_PROBNN_K_in; + Kplus_ID_out = Hp_TRUEID; + + auto Kplus_lv = hp4v_sim->LorentzVector(K_MASS); + + Kplus_PX_out = Kplus_lv.Px(); + Kplus_PY_out = Kplus_lv.Py(); + Kplus_PZ_out = Kplus_lv.Pz(); + Kplus_ENERGY_out = Kplus_lv.E(); + Kplus_M_out = Kplus_lv.M(); + + auto B_lv = muminus_lv + muplus_lv + Kplus_lv; + + B_PX_out = B_lv.Px(); + B_PY_out = B_lv.Py(); + B_PZ_out = B_lv.Pz(); + B_ENERGY_out = B_lv.E(); + B_M_out = B_lv.M(); + + output_tree->Fill(); + } + + PrintProgress(TString::Format("%s Mapping", sim_tree_name), sim_entries, 10000, i); + } + + TFile *output_file = TFile::Open("/auto/data/pfeiffer/inclusive_detached_dilepton/MC/BuToHpMuMu_mapped_mc.root", "RECREATE"); + output_file->cd(); + output_file->mkdir("BuToHpMuMu_noPID_mapped/"); + output_file->cd("BuToHpMuMu_noPID_mapped/"); + output_tree->SetDirectory(gDirectory); + output_tree->Write(); + output_file->Close(); + + return 0; +} \ No newline at end of file diff --git a/new_analysis_bu2hpmumu.cpp b/new_analysis_bu2hpmumu.cpp index 378d4af..d79a9b2 100644 --- a/new_analysis_bu2hpmumu.cpp +++ b/new_analysis_bu2hpmumu.cpp @@ -267,8 +267,8 @@ int new_analysis_bu2hpmumu() 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); + 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);