void calc_SBRatio_DecMod_DchKpipi() { #include #include gROOT->Reset(); // Root macro to calculate uncertainty of signal //####################################################### // Change these values to meet your condition //####################################################### // Info of input data/MC root files TString baseDir("/home1x/OtherMounts/hep03/khamano/R16b/Run3"); //TString baseDir("/home1x/OtherMounts/hep03/khamano/R16b/kCut1"); TString nameBase_BpBm("SP-1235-BToDlnu-Run3-R16b"); int nStart_BpBm = 1; int nStop_BpBm = 10; //1193 //87 TString nameBase_B0B0bar("SP-1237-BToDlnu-Run3-R16b"); int nStart_B0B0bar = 100; int nStop_B0B0bar = 10; //855 //88 TString nameBase_ccbar("SP-1005-BToDlnu-Run3-R16b"); int nStart_ccbar = 100; int nStop_ccbar = 10; //208 //83 TString nameBase_uds("SP-998-BToDlnu-Run3-R16b"); int nStart_uds = 1000; int nStop_uds = 5; //143 //58 TString nameBase_tautau("SP-3429-BToDlnu-Run3-R16b"); int nStart_tautau = 100; int nStop_tautau = 2; //11 //5 // Name of the root tree in the input root files TString ntpName("ntp2"); // Info of output files TString outFileName("test_DchKpipi_Run3_BpBm_DecMod.txt"); // D mass peak region float DMassMin = 1.845; //for Dch float DMassMax = 1.893; // D mass off peak (side band)region float DSideMin1 = 1.821; //for Dch float DSideMax1 = 1.845; float DSideMin2 = 1.893; //for Dch float DSideMax2 = 1.917; // Select D decay mode int setDDecMod = 5; // DchKpipi //int setDDecMod = 6; // DchKspipi0 //int setDDecMod = 7; // DchKspi // Vertex cut float DprobMin = 0.01; //0.001 float BprobMin = 0.01; //0.001 // Thrust cut float cosThrMax = 0.80; // Select a bin float DMomMin = 0.2; float DMomMax = 2.8; float LMomMin = 0.8; float LMomMax = 2.8; float cosBYMin = -10; float cosBYMax = 5; // uncertainty on background float rho = 0; //####################################################################### // Chain input root files and define trees. cout << "start chain\n"; TChain * chain_MC = new TChain(ntpName); for (Int_t i=nStart_BpBm; i<=nStop_BpBm; i++) { chain_MC->Add(baseDir+"/"+nameBase_BpBm+"-"+i+".root"); } for (Int_t i=nStart_B0B0bar; i<=nStop_B0B0bar; i++) { chain_MC->Add(baseDir+"/"+nameBase_B0B0bar+"-"+i+".root"); } for (Int_t i=nStart_ccbar; i<=nStop_ccbar; i++) { chain_MC->Add(baseDir+"/"+nameBase_ccbar+"-"+i+".root"); } for (Int_t i=nStart_uds; i<=nStop_uds; i++) { chain_MC->Add(baseDir+"/"+nameBase_uds+"-"+i+".root"); } for (Int_t i=nStart_tautau; i<=nStop_tautau; i++) { chain_MC->Add(baseDir+"/"+nameBase_tautau+"-"+i+".root"); } TTree * tree_MC = chain_MC; int numDl(0); int DDecMod[200], DType[200]; double fitDprob[200], fitBprob[200]; float cosThr[200]; int isABEvent[200], isDirectFromB[200], isFromSameB[200]; int BDecMod[200], BDecMod2[200], BDecMod3[200]; int mcDDecMod[200], mcD[200]; int noExtKPi[200], KMissID[200], PiMissID[200], KPiSameD[200]; float Dmass[200]; float pD[200], pLep[200], cosBY[200]; tree_MC->SetBranchAddress("nDl", &numDl); tree_MC->SetBranchAddress("DDecayMode", &DDecMod); tree_MC->SetBranchAddress("DhadType", &DType); tree_MC->SetBranchAddress("FitDprob", &fitDprob); tree_MC->SetBranchAddress("FitBprob", &fitBprob); tree_MC->SetBranchAddress("cosDlnonDl", &cosThr); tree_MC->SetBranchAddress("trueLepFromB", &isABEvent); tree_MC->SetBranchAddress("mcDirectLepFromB", &isDirectFromB); tree_MC->SetBranchAddress("trueLepFromSameB", &isFromSameB); tree_MC->SetBranchAddress("trueBDecMod", &BDecMod); tree_MC->SetBranchAddress("trueBDecMod2", &BDecMod2); tree_MC->SetBranchAddress("trueBDecMod3", &BDecMod3); tree_MC->SetBranchAddress("trueDDecMod", &mcDDecMod); tree_MC->SetBranchAddress("trueD", &mcD); tree_MC->SetBranchAddress("noExtraKorPi", &noExtKPi); tree_MC->SetBranchAddress("mcKaonMissID", &KMissID); tree_MC->SetBranchAddress("mcPiMissID", &PiMissID); tree_MC->SetBranchAddress("mcKPifromSameD", &KPiSameD); tree_MC->SetBranchAddress("DMass", &Dmass); tree_MC->SetBranchAddress("DMom", &pD); tree_MC->SetBranchAddress("DlLeptMom", &pLep); tree_MC->SetBranchAddress("DLcosBY", &cosBY); int realD_Peak(0), CascL_SameB_Peak(0), CascL_DiffB_Peak(0), DiffB_Peak; int realD_nDToKenu_Peak(0), realD_nDToKstarenu_Peak(0); int CascL_SameB_nDToKenu_Peak(0), CascL_SameB_nDToKstarenu_Peak(0); int CascL_SameB_nDDX_Peak(0); int CascL_SameB_nDD_Peak(0), CascL_SameB_nDDs_Peak(0); int CascL_SameB_nDDK_Peak(0), CascL_SameB_nDDPi_Peak(0); int CascL_SameB_nDDsK_Peak(0), CascL_SameB_nDDsPi_Peak(0); int CascL_DiffB_nDToKenu_Peak(0), CascL_DiffB_nDToKstarenu_Peak(0); int CascL_DiffB_nDDX_Peak(0); int CascL_DiffB_nDD_Peak(0), CascL_DiffB_nDDs_Peak(0); int CascL_DiffB_nDDK_Peak(0), CascL_DiffB_nDDPi_Peak(0); int CascL_DiffB_nDDsK_Peak(0), CascL_DiffB_nDDsPi_Peak(0); int DiffB_nDDX_Peak(0); int DiffB_nDD_Peak(0), DiffB_nDDs_Peak(0); int DiffB_nDDK_Peak(0), DiffB_nDDPi_Peak(0); int DiffB_nDDsK_Peak(0), DiffB_nDDsPi_Peak(0); Int_t nEvent =(Int_t)tree_MC->GetEntries(); // get number of events cout << "nEvent = " << nEvent << endl; int nSelEvent(0); for (Int_t i=0;iGetEntry(i); //read complete event in memory int nDl_total(0), nDl_sig(0), nDl_bkg(0); int nDl_side(0); for (Int_t j=0;j