void findtruthpp() { seth(10,0,1); auto hmcppxJTrue = geth("hmcppxJTrue","true;x_{J};Event fractions"); auto hmcppxJTrueTag = geth("hmcppxJTrueTag","true tagged;x_{J};Event fractions"); auto hmcppxJTrueTagCorr = geth("hmcppxJTrueTagCorr","true tagged corrected;x_{J};Event fractions"); TFile *fmcpp = new TFile(config.getFileName_djt("mcppbfa")); Fill(fmcpp,[&] (dict &m) { if (m["pthat"]<pthatcut) return; if (m[pairCodeSB1]!=0) return; // if (m["pthat"]<80) return; // if (m["bProdCode"]!=1) return; float w = m["weight"]*processweight((int)m["bProdCode"]); // float w = m["weight"]; // if (m["bProdCode"]==2) return; float corr = tageffcorrectionpp(m["jtpt1"],m["jteta1"],m[jtptSB],m[jtetaSB]); float wb = w*corr; if (m["jtpt1"]>pt1cut && m["refpt1"]>50 && abs(m["refparton_flavorForB1"])==5 && m[jtptSB]>pt2cut && m[dphiSB1]>PI23) hmcppxJTrue->Fill(m[jtptSB]/m["jtpt1"],w); if (m["jtpt1"]>pt1cut && m["refpt1"]>50 && abs(m["refparton_flavorForB1"])==5 && m[jtptSB]>pt2cut && m[dphiSB1]>PI23 && m["discr_csvV1_1"]>0.9 && m[discr_csvV1_SB]>0.9) { hmcppxJTrueTag->Fill(m[jtptSB]/m["jtpt1"],w); hmcppxJTrueTagCorr->Fill(m[jtptSB]/m["jtpt1"],wb); } }); NormalizeAllHists(); plotputmean = true; plotytitle = "Event fractions"; plotdivide = false; // aktstring += "R=0.4 |#eta|<2.0"; // plotsecondline = Form("p_{T,1}>%d GeV, p_{T,2}>%d GeV", (int)pt1cut, (int)pt2cut); // plotthirdline = "#Delta#phi>2/3#pi"; plottextposy = 0.8; plottextposx = 0.2; plotmeanposy = 0.43; plotymax = 0.2; plotymin = 0; plotlegendpos = BottomRight;//TopLeft; aktstring = "pp"; SetMC({hmcppxJTrue,hmcppxJTrueTag,hmcppxJTrueTagCorr}); SetData({hmcppxJTrue}); Draw({hmcppxJTrue,hmcppxJTrueTag,hmcppxJTrueTagCorr}); hmcppxJTrue->SetMinimum(0); hmcppxJTrue->SetMaximum(0.3); hmcppxJTrue->SetLineWidth(2); hmcppxJTrue->SetMarkerStyle(kNone); hmcppxJTrue->SetFillStyle(0); hmcppxJTrueTag->SetMarkerStyle(kOpenCircle); hmcppxJTrueTagCorr->SetMarkerStyle(kOpenSquare); plotymax = 0.3; SetB({hmcppxJTrue,hmcppxJTrueTag,hmcppxJTrueTagCorr}); float xjtrue = hmcppxJTrue->GetMean(); float xjtruetag = hmcppxJTrueTag->GetMean(); float xjtruetagcorr = hmcppxJTrueTagCorr->GetMean(); float exjtrue = hmcppxJTrue->GetMeanError(); float exjtruetag = hmcppxJTrueTag->GetMeanError(); float exjtruetagcorr = hmcppxJTrueTagCorr->GetMeanError(); auto c = getc(); hmcppxJTrue->Draw("hist"); hmcppxJTrueTag->Draw("E1,same"); hmcppxJTrueTagCorr->Draw("E1,same"); plotlegendpos = TopLeft; auto l = getLegend(); l->AddEntry(hmcppxJTrue,Form("b-dijets, #LTx_{J}#GT=%.3f#pm%.3f",xjtrue,exjtrue),"L"); l->AddEntry(hmcppxJTrueTag,Form("uncorrected, #LTx_{J}#GT=%.3f#pm%.3f",xjtruetag,exjtruetag),"P"); l->AddEntry(hmcppxJTrueTagCorr,Form("corrected, #LTx_{J}#GT=%.3f#pm%.3f",xjtruetagcorr,exjtruetagcorr),"P"); l->Draw(); TLatex *Tl = new TLatex(); Tl->DrawLatexNDC(0.2, 0.8, aktstring); SavePlot(c,"closurepp"); }
void Analyze7p2_Lin(bool force_recompile=true) { FNameManager fnm("fnameconfig.dat"); TString results_dir = fnm.GetResultsDir(true); TString target_id = TString::Format("%s_%.1f_%s",target.Data(), eg, pol.Data()); TString combined_hist_run = (results_dir + "/"); combined_hist_run += (fnm.GetHistFileBase(false) + target_id.Data() + ".root"); TString int_file = (fnm.GetResultsDir() + "/IntOutput/" + target_id.Data()); TString int_subbed_file = (fnm.GetResultsDir() + "/IntOutput/" + target_id.Data() + "_bgsubbed"); TString int_sanormed_file = (fnm.GetResultsDir() + "/IntOutput/" + target_id.Data() + "_sanormed"); TString int_subbed_sanormed_file = (fnm.GetResultsDir() + "/IntOutput/" + target_id.Data() + "_bgsubbed_sanormed"); TString angle_file = "angle_data/angles"; TString sa_corr_file = "angle_data/sa_corrections"; TString correction_id = TString::Format("%s_%.1f_%s", target.Data(), eg, pol.Data()); TString circ_corr_file = TString::Format("corrections%s.root",correction_id.Data()); TString angdist_dir = (results_dir + "/ang_dists"); TString angdist_text_file = (angdist_dir + "/angdists_" + target_id + ".dat"); TString angdist_subbed_text_file = (angdist_dir + "/angdists_" + target_id + "_bgsubbed.dat"); TString angdist_sanormed_text_file = (angdist_dir + "/angdists_" + target_id + "_sanormed" + ".dat"); TString angdist_subbed_sanormed_text_file = (angdist_dir + "/angdists_" + target_id + "_sanormed_bgsubbed.dat"); TString angdist_root_file = (angdist_dir + "/angdists_" + target_id + ".root"); TString angdist_subbed_root_file = (angdist_dir + "/angdists_" + target_id + "_bgsubbed.root"); TString angdist_sanormed_root_file = (angdist_dir + "/angdists_" + target_id + "_sanormed" + ".root"); TString angdist_subbed_sanormed_root_file = (angdist_dir + "/angdists_" + target_id + "_sanormed_bgsubbed.root"); TString overnight_hist_run = (results_dir + "/" + fnm.GetHistFileBase(false).data() + bgnd_id + "_0.0_--.root"); if (force_recompile==true) { gROOT->ProcessLine(".L analysis_soft/Scripts/GenerateTGraphInputFiles.cpp++"); gROOT->ProcessLine(".L analysis_soft/Scripts/CreatePlotOverlay.C++"); gROOT->ProcessLine(".L analysis_soft/Scripts/CleanupCombinedCanvasesDirectory.cpp++"); gROOT->ProcessLine(".L analysis_soft/Scripts/CreateOverlayCanvases.cpp++"); gROOT->ProcessLine(".L analysis_soft/Scripts/GenerateRatioAndAsymmetry.cpp++"); gROOT->ProcessLine(".L GenerateSubtractionUncertainties.cpp++"); gROOT->ProcessLine(".L NormalizeByLiveTimeFractionForRuns.cpp++"); gROOT->ProcessLine(".L NormalizeAllHists.C++"); gROOT->ProcessLine(".L ShiftHistsFromFile.cpp++"); gROOT->ProcessLine(".L SubtractBgnd.cpp++"); gROOT->ProcessLine(".L UnnormalizeAllHists.C++"); gROOT->ProcessLine(".L NormalizeAlphaCountsByReference.cpp++"); gROOT->ProcessLine(".L CalibrateHIsts.cpp++"); gROOT->ProcessLine(".L CreateSysCorrRatios.cpp++"); gROOT->ProcessLine(".L CreateRatioFromAlphaInts.cpp++"); } else { gROOT->ProcessLine(".L analysis_soft/Scripts/GenerateTGraphInputFiles.cpp+"); gROOT->ProcessLine(".L analysis_soft/Scripts/CreatePlotOverlay.C+"); gROOT->ProcessLine(".L analysis_soft/Scripts/CleanupCombinedCanvasesDirectory.cpp+"); gROOT->ProcessLine(".L analysis_soft/Scripts/CreateOverlayCanvases.cpp+"); gROOT->ProcessLine(".L analysis_soft/Scripts/GenerateRatioAndAsymmetry.cpp+"); gROOT->ProcessLine(".L GenerateSubtractionUncertainties.cpp+"); gROOT->ProcessLine(".L NormalizeByLiveTimeFractionForRuns.cpp+"); gROOT->ProcessLine(".L NormalizeAllHists.C+"); gROOT->ProcessLine(".L ShiftHistsFromFile.cpp+"); gROOT->ProcessLine(".L SubtractBgnd.cpp+"); gROOT->ProcessLine(".L UnnormalizeAllHists.C+"); gROOT->ProcessLine(".L NormalizeAlphaCountsByReference.cpp+"); gROOT->ProcessLine(".L CalibrateHIsts.cpp+"); gROOT->ProcessLine(".L CreateSysCorrRatios.cpp+"); gROOT->ProcessLine(".L CreateRatioFromAlphaInts.cpp+"); } cout << "BEGIN ANALYSIS" << endl; cout << "begin processing runs" << endl; TString message = TString::Format("Form LTF corrected histograms"); if (OkToContinue(message)) { FormAlphaLTFCorrection(target.Data(), eg, pol.Data(), 678); } message = TString::Format("combine %s, Eg=%.1f, %s", target.Data(), eg, pol.Data()); if (OkToContinue(message)) { CombineAllRunsForTargetWithEnergyAndPol(target.Data(),eg,pol.Data(),true); f = new TFile(combined_hist_run,"UPDATE"); CleanupCombinedCanvasesDirectory(f); f->Close(); f = TFile::Open(combined_hist_run,"UPDATE"); CreateOverlayCanvases(f); f->Close(); } message = TString::Format("calibrate %s, Eg=%.1f, %s", target.Data(), eg, pol.Data()); if (OkToContinue(message)) { f = new TFile(combined_hist_run.Data(),"UPDATE"); TDirectory* dir = f->GetDirectory("adc"); if (dir==0) { std::cout << "\tfailed to find adc folder in " << f->GetName() << std::endl; } else { std::cout << "\tCalibrating adc with " << calib_file << std::endl; CalibrateHists(dir, calib_file.Data()); } f->Close(); dir = 0; f = new TFile(combined_hist_run.Data(),"UPDATE"); dir = f->GetDirectory("ltf_corr_adc"); if (dir==0) { std::cout << "\tfailed to find ltf_corr_adc folder in " << f->GetName() << std::endl; } else { std::cout << "\tCalibrating ltf_corr_adc with " << calib_file << std::endl; CalibrateHists(dir, calib_file.Data()); } dir = 0; dir = f->GetDirectory("ltf_corr_adc_gt_thresh"); if (dir==0) { std::cout << "\tfailed to find ltf_corr_adc_gt_thresh folder in " << f->GetName() << std::endl; } else { std::cout << "\tCalibrating ltf_corr_adc_gt_thresh with " << calib_file << std::endl; CalibrateHists(dir, calib_file.Data()); } f->Close(); } // TFile *f, *fcorr; // message = TString::Format("normalize %s, Eg=%.1f, %s data by 10HzClock", // target.Data(), eg, pol.Data()); // if (OkToContinue(message)) // { // f = new TFile(combined_hist_run.Data(),"UPDATE"); // // std::cout << "\tNormalizing hists in ltf_corr_adc directory" << std::endl; // TDirectory *dir = f->GetDirectory("ltf_corr_adc_cut_tofcut"); // if (dir==0) std::cout << "cannot find ltf_corr_adc histograms" << std::endl; // else NormalizeAllHists(dir,1/16042.0); // // std::cout << "\tNormalizing hists in ltf_corr_adc_gt_thresh directory" << std::endl; // dir = f->GetDirectory("ltf_corr_adc_gt_thresh_tofcut"); // if (dir==0) std::cout << "cannot find ltf_corr_adc_gt_thresh histograms" << std::endl; // else NormalizeAllHists(dir,1/16042.0); // // f->Close(); // } cout << "\n\nBegin processing runs overnight background runs\n" << endl; cout << "Do you want to skip the overnight bgnd subtraction? (y/n) " << endl; Char_t myans; cin >> myans; if (myans=='n') { message = TString::Format("Form LTF corrected histograms"); if (OkToContinue(message)) { FormAlphaLTFCorrection(bgnd_id.Data(), 0, "--", 678); } message = TString::Format("combine runs and set errors on %s", bgnd_id.Data()); if (OkToContinue(message)) { CombineAllRunsForTargetWithEnergyAndPol(bgnd_id.Data(),0,"--"); } message = TString::Format("normalize %s by Veto10HzClock", bgnd_id.Data()); if (OkToContinue(message)) { f = new TFile(overnight_hist_run.Data(),"UPDATE"); std::cout << "\tNormalizing hists in ltf_corr_adc directory" << std::endl; TDirectory *dir = f->GetDirectory("ltf_corr_adc"); if (dir==0) std::cout << "Cannot find ltf_corr_adc folder" << std::endl; else NormalizeAllHists(dir,normalization); std::cout << "\tNormalizing hists in ltf_corr_adc_gt_thresh directory" << std::endl; dir = f->GetDirectory("ltf_corr_adc_gt_thresh"); if (dir==0) std::cout << "Cannot find ltf_corr_adc_gt_thresh folder" << std::endl; else NormalizeAllHists(dir,normalization); std::cout << "\tNormalizing hists in ltf_corr_adc_gt_thresh_tofcut directory" << std::endl; dir = f->GetDirectory("ltf_corr_adc_gt_thresh_tofcut"); if (dir==0) std::cout << "Cannot find ltf_corr_adc_gt_thresh_tofcut folder" << std::endl; else NormalizeAllHists(dir,normalization); f->Close(); } message = TString::Format("calibrate %s", bgnd_id.Data()); if (OkToContinue(message)) { f = new TFile(overnight_hist_run,"UPDATE"); TDirectory* dir = f->GetDirectory("adc"); if (dir==0) { std::cout << "\tfailed to find adc folder in " << f->GetName() << std::endl; } else { std::cout << "\tCalibrating adc with " << bgnd_calib_file << std::endl; CalibrateHists(dir, bgnd_calib_file.Data()); } f = new TFile(overnight_hist_run,"UPDATE"); dir = f->GetDirectory("normed_ltf_corr_adc"); if (dir==0) { std::cout << "\tfailed to find normed_ltf_corr_adc folder in " << f->GetName() << std::endl; } else { std::cout << "\tCalibrating normed_ltf_corr_adc with " << bgnd_calib_file << std::endl; CalibrateHists(dir, bgnd_calib_file.Data()); } dir = f->GetDirectory("normed_ltf_corr_adc_gt_thresh"); if (dir==0) { std::cout << "\tfailed to find normed_ltf_corr_adc_gt_thresh folder in " << f->GetName() << std::endl; } else { std::cout << "\tCalibrating normed_ltf_corr_adc_gt_thresh with " << bgnd_calib_file << std::endl; CalibrateHists(dir, bgnd_calib_file.Data()); } // dir = f->GetDirectory("normed_ltf_corr_adc_gt_thresh_sanormed"); // if (dir==0) // { // std::cout << "\tfailed to find normed_ltf_corr_adc_gt_thresh_sanormed folder in " << f->GetName() << std::endl; // } // else // { // std::cout << "\tCalibrating normed_ltf_corr_adc_gt_thresh_sanormed with " << bgnd_calib_file // << std::endl; // CalibrateHists(dir, bgnd_calib_file.Data()); // } f->Close(); } message = TString::Format("align %s, Eg=%.1f, %s hists to %s", target.Data(), eg, pol.Data(), bgnd_id.Data()); if (OkToContinue(message)) { f = new TFile(combined_hist_run.Data(),"UPDATE"); std::cout << "\tShifting ltf_corr_adc hists" << std::endl; TDirectory *dir = f->GetDirectory("ltf_corr_adc"); if (dir==0) std::cout << "cannot find ltf_corr_adc directory" << std::endl; else ShiftHistsFromFile(dir, shift_data.Data()); std::cout << "\tShifting ltf_corr_adc_gt_thresh hists" << std::endl; dir = f->GetDirectory("ltf_corr_adc_gt_thresh"); if (dir==0) std::cout << "cannot find ltf_corr_adc_gt_thresh directory" << std::endl; else ShiftHistsFromFile(dir, shift_data.Data()); std::cout << "\tShifting ltf_corr_adc_gt_thresh_tofcut hists" << std::endl; dir = f->GetDirectory("ltf_corr_adc_gt_thresh_tofcut"); if (dir==0) std::cout << "cannot find ltf_corr_adc_gt_thresh_tofcut directory" << std::endl; else ShiftHistsFromFile(dir, shift_data.Data()); f->Close(); } cout << "Subtraction..." << endl; message = TString::Format("subtract %s from %s, Eg=%.1f, %s data", bgnd_id.Data(), target.Data(), eg, pol.Data()); if (OkToContinue(message)) { f = new TFile(combined_hist_run.Data(),"UPDATE"); std::cout << "\tSubtracting shifted_ltf_corr_adc hists" << std::endl; TDirectory *dir = f->GetDirectory("shifted_ltf_corr_adc"); if (dir==0) { std::cout << "cannot find shifted shifted_ltf_corr_adc histograms" << std::endl; } else { fbg = new TFile(overnight_hist_run.Data(),"UPDATE"); TDirectory *dirbg = fbg->GetDirectory("normed_ltf_corr_adc"); if (dirbg==0) std::cout << "cannot find normed histograms in " << fbg->GetName() << std::endl; else SubtractBgndRuns(dirbg,dir); fbg->Close(); } std::cout << "\tSubtracting shifted_ltf_corr_adc_gt_thresh hists" << std::endl; dir = f->GetDirectory("shifted_ltf_corr_adc_gt_thresh"); if (dir==0) { std::cout << "cannot find shifted_ltf_corr_adc_gt_thresh histograms" << std::endl; } else { fbg = new TFile(overnight_hist_run.Data(),"UPDATE"); TDirectory *dirbg = fbg->GetDirectory("normed_ltf_corr_adc_gt_thresh"); if (dirbg==0) std::cout << "cannot find normed histograms in " << fbg->GetName() << std::endl; else SubtractBgndRuns(dirbg,dir); fbg->Close(); } std::cout << "\tSubtracting shifted_ltf_corr_adc_gt_thresh_tofcut hists" << std::endl; dir = f->GetDirectory("shifted_ltf_corr_adc_gt_thresh_tofcut"); if (dir==0) { std::cout << "cannot find shifted_ltf_corr_adc_gt_thresh_tofcut histograms" << std::endl; } else { fbg = new TFile(overnight_hist_run.Data(),"UPDATE"); TDirectory *dirbg = fbg->GetDirectory("normed_ltf_corr_adc_gt_thresh_tofcut"); if (dirbg==0) std::cout << "cannot find normed histograms in " << fbg->GetName() << std::endl; else SubtractBgndRuns(dirbg,dir); fbg->Close(); } f->Close(); } // message = TString::Format("unnormalize run bgsubbed %s", pol.Data()); // if (OkToContinue(message)) // { // f = new TFile(combined_hist_run.Data(),"UPDATE"); // // std::cout << "\tUnnormalizing adc hists" << std::endl; // TDirectory* dir = f->GetDirectory("bgsubbed_shifted_ltf_corr_adc"); // if (dir==0) std::cout << "Cannot find folder containing hists" << std::endl; // else UnnormalizeAllHists(dir,16042.0); // // std::cout << "\tUnnormalizing adc_gt_thresh hists" << std::endl; // dir = f->GetDirectory("bgsubbed_shifted_ltf_corr_adc_gt_thresh"); // if (dir==0) std::cout << "Cannot find folder containing hists" << std::endl; // else UnnormalizeAllHists(dir,16042.0); // // f->Close(); // } } if (OkToContinue("compute systematic unc. from overnight bgnd histograms")) { TString uncorr_dir = "ltf_corr_adc_gt_thresh"; TString corr_dir = "bgsubbed_shifted_ltf_corr_adc_gt_thresh"; f = new TFile(combined_hist_run.Data(),"update"); TDirectory* du = f->GetDirectory(uncorr_dir.Data()); TDirectory* ds = f->GetDirectory(corr_dir.Data()); if (du==0) std::cout << "Cannot find " << uncorr_dir << std::endl; else if (ds==0) std::cout << "Cannot find " << corr_dir << std::endl; else { TGraph* gr = GenerateSubtractionUncertainties(du, ds); f->cd(); gr->Write("", TObject::kOverwrite); } f->Close(); } // if (OkToContinue("Form alpha normalized spectra")) // { // f = new TFile(combined_hist_run.Data(),"update"); // // TString uncorr_dir = "ltf_corr_adc_gt_thresh"; // TString corr_dir = "bgsubbed_shifted_ltf_corr_adc_gt_thresh"; // TDirectory* du = f->GetDirectory(uncorr_dir.Data()); // // // if (du==0) std::cout << "Cannot find " << uncorr_dir << std::endl; // else // { // CreateAlphaNormedHists(du, "g4_sa_corr_232Th.dat"); // } // // TDirectory* dc = f->GetDirectory(corr_dir); // // if (dc==0) std::cout << "Cannot find " << corr_dir << std::endl; // else // { // CreateAlphaNormedHists(dc, "g4_sa_corr_232Th.dat"); // } // // f->Close(); // } if (OkToContinue("integrate all \"adc_gt_thresh_tofcut\" histograms")) { PAnalysis::IntegrateSiStrips(combined_hist_run, TString("ltf_corr_adc_gt_thresh"), TString("")); PAnalysis::IntegrateSiStrips(combined_hist_run, "normed_bgsubbed_ltf_corr_adc_gt_thresh", "", int_subbed_file, "bgsubbed_shifted_ltf_corr_adc_gt_thresh"); // PAnalysis::IntegrateSiStrips(combined_hist_run, // "ltf_corr_adc_gt_thresh", // "_sanormed", // int_sanormed_file, // "ltf_corr_adc_gt_thresh_sanormed"); // // PAnalysis::IntegrateSiStrips(combined_hist_run, // "ltf_corr_normed_bgsubbed_ltf_corr_adc_gt_thresh", // "_sanormed", // int_subbed_sanormed_file, // "bgsubbed_shifted_ltf_corr_adc_gt_thresh_sanormed"); // } if (OkToContinue("generate angular distribution")) { GenerateTGraphInputFiles(int_file.Data(), angle_file.Data(), angdist_text_file.Data()); GenerateTGraphInputFiles(int_subbed_file.Data(), angle_file.Data(), angdist_subbed_text_file.Data()); // GenerateTGraphInputFiles(int_sanormed_file.Data(), // angle_file.Data(), // angdist_sanormed_text_file.Data()); // // GenerateTGraphInputFiles(int_subbed_sanormed_file.Data(), // angle_file.Data(), // angdist_subbed_sanormed_text_file.Data()); // } if (OkToContinue("generate ratio and asymmetry plots")) { f = new TFile(angdist_root_file.Data(),"UPDATE"); GenerateRatioAndAsymmetry(f); f->Close(); f = new TFile(angdist_subbed_root_file.Data(),"UPDATE"); GenerateRatioAndAsymmetry(f); f->Close(); // f = new TFile(angdist_sanormed_root_file.Data(),"UPDATE"); // GenerateRatioAndAsymmetry(f); // f->Close(); // // f = new TFile(angdist_subbed_sanormed_root_file.Data(),"UPDATE"); // GenerateRatioAndAsymmetry(f); // f->Close(); // } if (OkToContinue("create overlaid angular distributions")) { gROOT->SetBatch(true); f = new TFile(angdist_root_file.Data(),"UPDATE"); CreatePlotOverlay(f, Form("%s E_{#gamma}=%.1f MeV %s Yields", target.Data(), eg, pol.Data())); f->Close(); f = new TFile(angdist_subbed_root_file.Data(),"UPDATE"); CreatePlotOverlay(f, Form("%s E_{#gamma}=%.1f MeV %s Yields (subbed)", target.Data(), eg, pol.Data())); f->Close(); // f = new TFile(angdist_sanormed_root_file.Data(),"UPDATE"); // CreatePlotOverlay(f, Form("%s E_{#gamma}=%.1f MeV %s Yields SA Normed", target.Data(), eg, pol.Data())); // f->Close(); // // f = new TFile(angdist_subbed_sanormed_root_file.Data(),"UPDATE"); // CreatePlotOverlay(f, Form("%s E_{#gamma}=%.1f MeV %s Yields SA Normed (subbed)", target.Data(), eg, pol.Data())); // f->Close(); // gROOT->SetBatch(false); } // if (OkToContinue("generate 2D angular dist")) // { // GenerateTGraph2D(angdist_corr_text_file.Data(), angdist_root_file.Data()); // f = new TFile(angdist_root_file.Data(),"UPDATE"); //// GenerateTH2D(f); // f->Close(); // // GenerateTGraph2D(angdist_corr_text_file.Data(), angdist_root_file.Data()); // f = new TFile(angdist_root_file.Data(),"UPDATE"); //// GenerateTH2D(f); // f->Close(); // // // } if (OkToContinue("form alpha_ratio graph")) { f = new TFile(combined_hist_run.Data(),"UPDATE"); StripDb sdb(angle_file.Data()); TH1* halpha_ints; f->GetObject("alpha_ints",halpha_ints); TGraphErrors* gr_alpha_ratio = CreateRatioFromStripHist(halpha_ints,sdb); gr_alpha_ratio->Sort(); gr_alpha_ratio->Write("alpha_ratio", TObject::kOverwrite); f->Close(); } if (OkToContinue("incorporate systematic uncertainty into the ratio")) { f = new TFile(combined_hist_run.Data(),"UPDATE"); // if (gr_==0) // { // std::cout << "Failed to find the ratio graph" << std::endl; // } // else // { TFile* fsim = new TFile("alpha_source_r3_r5_x1_y0_z0_80M_analyzed.root"); // the next will look for the alpha_ratio graphs in specified directories CreateSysCorrRatios(f, fsim, angdist_subbed_root_file.Data()); fsim->Close(); // } f->Close(); f = new TFile(angdist_subbed_root_file.Data(),"UPDATE"); TDirectory* d = f->GetDirectory("uncorrected"); TGraphErrors* gr_ = 0; d->GetObject("ratio",gr_); if (gr_==0) { std::cout << "Failed to find the ratio graph" << std::endl; } else { TGraphErrors* grsys = 0; f->GetObject("systematic_alpha_diffs",grsys); if (grsys!=0) { CreateCorrectedRatios(gr_, grsys, f); } else { std::cout << "Couldn't find systematic_alpha_diffs graph" << std::endl; } fsim->Close(); } f->Close(); } cout << "ANALYSIS COMPLETE" << endl; }
void findtruthPbPb(int binMin, int binMax) { TFile *fmc = new TFile(config.getFileName_djt("mcPbbfa")); buildNamesuffix = TString::Format("_bin_%d_%d",binMin, binMax); // buildTitlesuffix = TString::Format("%d-%d %%",binMin/2, binMax/2); seth(10,0,1); auto hmcPbPbxJTrue = geth("hmcPbPbxJTrue","PbPb true;x_{J};Event fractions"); auto hmcPbPbxJTrueTag = geth("hmcPbPbxJTrueTag","PbPb true tagged;x_{J};Event fractions"); auto hmcPbPbxJTrueTagCorr = geth("hmcPbPbxJTrueTagCorr","PbPb true tagged corrected;x_{J};Event fractions"); auto hmcPbPbxJTrueTagCorrPt = geth("hmcPbPbxJTrueTagCorrPt","PbPb true tagged corrected pt;x_{J};Event fractions"); auto hmcPbPbxJTrueTagCorrEta = geth("hmcPbPbxJTrueTagCorrEta","PbPb true tagged corrected eta;x_{J};Event fractions"); auto hmcPbPbxJTrueTagCorrBin = geth("hmcPbPbxJTrueTagCorrBin","PbPb true tagged corrected bin;x_{J};Event fractions"); seth(12,20,140);//10,40,100); auto hpt2true = geth("hpt2true","true;p_{T,2} GeV"); auto hpt2truetag = geth("hpt2truetag","true tagged;p_{T,2} GeV"); auto hpt2truetagovertrue = geth("hpt2truetagovertrue","true tagged/true;p_{T,2} GeV"); auto hpt2truetagcorr = geth("hpt2truetagcorr","true tagged corrected;p_{T,2} GeV"); auto hpt2truetagcorrovertrue = geth("hpt2truetagcorrovertrue","true tagged corrected/true;p_{T,2} GeV"); seth(10,100,200); auto hpt1true = geth("hpt1true","true;p_{T,1} GeV"); auto hpt1truetag = geth("hpt1truetag","true tagged;p_{T,1} GeV"); auto hpt1truetagovertrue = geth("hpt1truetagovertrue","true tagged/true;p_{T,1} GeV"); auto hpt1truetagcorr = geth("hpt1truetagcorr","true tagged corrected;p_{T,1} GeV"); auto hpt1truetagcorrovertrue = geth("hpt1truetagcorrovertrue","true tagged corrected/true;p_{T,1} GeV"); seth(10,0,200); auto hbintrue = geth("hbintrue","true;bin"); auto hbintruetag = geth("hbintruetag","true tagged;bin"); auto hbintruetagovertrue = geth("hbintruetagovertrue","true tagged/true;bin"); auto hbintruetagcorr = geth("hbintruetagcorr","true tagged corrected;bin"); auto hbintruetagcorrovertrue = geth("hbintruetagcorrovertrue","true tagged corrected/true;bin"); seth(20,-2,2); auto heta2true = geth("heta2true","true;#eta_{2}"); auto heta2truetag = geth("heta2truetag","true tagged;#eta_{2}"); auto heta2truetagovertrue = geth("heta2truetagovertrue","true tagged/true;#eta_{2}"); auto heta2truetagcorr = geth("heta2truetagcorr","true tagged corrected;#eta_{2}"); auto heta2truetagcorrovertrue = geth("heta2truetagcorrovertrue","true tagged corrected/true;#eta_{2}"); auto heta1true = geth("heta1true","true;#eta_{1}"); auto heta1truetag = geth("heta1truetag","true tagged;#eta_{1}"); auto heta1truetagovertrue = geth("heta1truetagovertrue","true tagged/true;#eta_{1}"); auto heta1truetagcorr = geth("heta1truetagcorr","true tagged corrected;#eta_{1}"); auto heta1truetagcorrovertrue = geth("heta1truetagcorrovertrue","true tagged corrected/true;#eta_{1}"); unordered_set<int> eventstodiscard = {1805770,1116573,1084397};//, // 5755734,1599758,395810, // 1363321,211625,3195128}; // Fill(fmc,[&] (dict &m) { if (m["bin"]<binMin || m["bin"]>=binMax) return; if (m["pthat"]<pthatcut) return; if (m[pairCodeSB1]!=0) return; // if (m["bProdCode"]>1) return; if (eventstodiscard.find(m["event"])!=eventstodiscard.end()) return; //kill large-weight GSP event float w = m["weight"]*processweight((int)m["bProdCode"]); //because we have only b-dijets float corr = tageffcorrectionPbPb(m["jtpt1"],m["jteta1"],m[jtptSB],m[jtetaSB],m["bin"]); // float corrpt = getPbPbcorrectionPt(m["jtpt1"],m[jtptSB]); // float correta = getPbPbcorrectionEta(m["jteta1"],m[jtetaSB]); // float corrbin = getPbPbcorrectionBin(m["bin"]); float wb = w*corr; if (m["jtpt1"]>pt1cut && m["refpt1"]>50 && abs(m["refparton_flavorForB1"])==5 && m[jtptSB]>pt2cut && m[refptSB]>20 && m[dphiSB1]>PI23) { hmcPbPbxJTrue->Fill(m[jtptSB]/m["jtpt1"],w); hpt2true->Fill(m[jtptSB],w); hpt1true->Fill(m["jtpt1"],w); heta2true->Fill(m[jtetaSB],w); heta1true->Fill(m["jteta1"],w); hbintrue->Fill(m["bin"],w); } if (m["jtpt1"]>pt1cut && m["refpt1"]>50 && abs(m["refparton_flavorForB1"])==5 && m[jtptSB]>pt2cut && m[refptSB]>20 && m[dphiSB1]>PI23 && m["discr_csvV1_1"]>0.9 && m[discr_csvV1_SB]>0.9) { // //corrpt *= m[jtptSB] < 60 ? 1./0.7 : 1; //wb *= m[jtptSB] < 60 ? 1./0.7 : 1; hmcPbPbxJTrueTag->Fill(m[jtptSB]/m["jtpt1"],w); hmcPbPbxJTrueTagCorr->Fill(m[jtptSB]/m["jtpt1"],wb); // hmcPbPbxJTrueTagCorrPt->Fill(m[jtptSB]/m["jtpt1"],w*corrpt); // hmcPbPbxJTrueTagCorrEta->Fill(m[jtptSB]/m["jtpt1"],w*corrpt*correta); // hmcPbPbxJTrueTagCorrBin->Fill(m[jtptSB]/m["jtpt1"],w*corrpt*correta*corrbin); hpt2truetag->Fill(m[jtptSB],w); hpt1truetag->Fill(m["jtpt1"],w); heta2truetag->Fill(m[jtetaSB],w); heta1truetag->Fill(m["jteta1"],w); hbintruetag->Fill(m["bin"],w); hpt2truetagcorr->Fill(m[jtptSB],wb); hpt1truetagcorr->Fill(m["jtpt1"],wb); heta2truetagcorr->Fill(m[jtetaSB],wb); heta1truetagcorr->Fill(m["jteta1"],wb); hbintruetagcorr->Fill(m["bin"],wb); } }); NormalizeAllHists(); //plotymax = 9999; aktstring = TString::Format("PbPb %d-%d %%",binMin/2, binMax/2);//TString::Format("PbPb#Delta#phi>2/3#pi %d-%d %%",binMin/2, binMax/2); SetMC({hmcPbPbxJTrue,hmcPbPbxJTrueTag,hmcPbPbxJTrueTagCorr}); SetData({hmcPbPbxJTrue}); hmcPbPbxJTrue->SetMinimum(0); hmcPbPbxJTrue->SetMaximum(0.3); hmcPbPbxJTrue->SetLineWidth(2); hmcPbPbxJTrue->SetMarkerStyle(kNone); hmcPbPbxJTrue->SetFillStyle(0); hmcPbPbxJTrueTag->SetMarkerStyle(kOpenCircle); hmcPbPbxJTrueTagCorr->SetMarkerStyle(kOpenSquare); plotymax = 0.3; Draw({hmcPbPbxJTrue,hmcPbPbxJTrueTag,hmcPbPbxJTrueTagCorr}); SetB({hmcPbPbxJTrue,hmcPbPbxJTrueTag,hmcPbPbxJTrueTagCorr}); float xjtrue = hmcPbPbxJTrue->GetMean(); float xjtruetag = hmcPbPbxJTrueTag->GetMean(); float xjtruetagcorr = hmcPbPbxJTrueTagCorr->GetMean(); float exjtrue = hmcPbPbxJTrue->GetMeanError(); float exjtruetag = hmcPbPbxJTrueTag->GetMeanError(); float exjtruetagcorr = hmcPbPbxJTrueTagCorr->GetMeanError(); auto c = getc(); hmcPbPbxJTrue->Draw("hist"); hmcPbPbxJTrueTag->Draw("E1,same"); hmcPbPbxJTrueTagCorr->Draw("E1,same"); plotlegendpos = TopLeft; auto l = getLegend(); l->AddEntry(hmcPbPbxJTrue,Form("b-dijets, #LTx_{J}#GT=%.3f#pm%.3f",xjtrue,exjtrue),"L"); l->AddEntry(hmcPbPbxJTrueTag,Form("uncorrected, #LTx_{J}#GT=%.3f#pm%.3f",xjtruetag,exjtruetag),"P"); l->AddEntry(hmcPbPbxJTrueTagCorr,Form("corrected, #LTx_{J}#GT=%.3f#pm%.3f",xjtruetagcorr,exjtruetagcorr),"P"); l->Draw(); TLatex *Tl = new TLatex(); Tl->DrawLatexNDC(0.2, 0.8, aktstring); SavePlot(c,Form("closure%d%d",binMin,binMax)); // //if (binMin==0 && binMax==200) { // Draw({hmcPbPbxJTrueTag,hmcPbPbxJTrueTagCorrPt,hmcPbPbxJTrueTagCorrEta,hmcPbPbxJTrueTagCorrBin}); // SetMC({hpt2truetag,hpt1truetag,heta2truetag,heta1truetag,hbintruetag}); // plotputmean = false; // plotymax = 0.2; // Draw({hpt2true,hpt2truetag,hpt2truetagcorr}); // plotymax = 0.3; // Draw({hpt1true,hpt1truetag,hpt1truetagcorr}); // plotymax = 0.2; // Draw({heta2true,heta2truetag,heta2truetagcorr}); // Draw({heta1true,heta1truetag,heta1truetagcorr}); // plotymax = 1; // Draw({hbintrue,hbintruetag,hbintruetagcorr}); plotymin = 0; plotymax = 0.2; Draw({hpt2truetag,hpt2true}); Draw({hpt2truetagcorr,hpt2true}); hpt2truetagovertrue->Divide(hpt2truetag,hpt2true,1,1); //"B" hpt1truetagovertrue->Divide(hpt1truetag,hpt1true,1,1); //"B" heta2truetagovertrue->Divide(heta2truetag,heta2true,1,1); //"B" heta1truetagovertrue->Divide(heta1truetag,heta1true,1,1); //"B" hbintruetagovertrue->Divide(hbintruetag,hbintrue,1,1); //"B" hpt2truetagcorrovertrue->Divide(hpt2truetagcorr,hpt2true,1,1); //"B" hpt1truetagcorrovertrue->Divide(hpt1truetagcorr,hpt1true,1,1); //"B" heta2truetagcorrovertrue->Divide(heta2truetagcorr,heta2true,1,1); //"B" heta1truetagcorrovertrue->Divide(heta1truetagcorr,heta1true,1,1); //"B" hbintruetagcorrovertrue->Divide(hbintruetagcorr,hbintrue,1,1); //"B" NormalizeAllHists(); Draw({hpt2truetagovertrue,hpt2truetagcorrovertrue}); Draw({hpt1truetagovertrue,hpt1truetagcorrovertrue}); Draw({heta2truetagovertrue,heta2truetagcorrovertrue}); Draw({heta1truetagovertrue,heta1truetagcorrovertrue}); Draw({hbintruetagovertrue,hbintruetagcorrovertrue}); // } }