#include #include #include #include #include "TLorentzVector.h" #include #include #include /* srand, rand */ #include #include #include void GetBDTEfficiencies(){ ofstream ofile; ofile.open("Efficiencies2.dat"); ofile << "RunNum, ROC, BDTVal_For_1e-5, effB, effS\n"; for( int i =1; i<=84; i++){ if ( (i >= 37 && i <= 48) || i == 80) continue; stringstream ssi; ssi << i; string fname = "MultiJet/SS_TMVA_Out_" + ssi.str() + "_MJ.root"; cout << fname << endl; TFile *f = TFile::Open(fname.c_str()); if (f == 0) { // if we cannot open the file, print an error message and return immediatly printf("Error: cannot open\n"); return; } double effB = 1e-5; TH1 *MVA_BDTD_effB=0; TH1 *MVA_BDTD_effBvsS=0; TH1 *MVA_BDTD_effS=0; f->GetObject("Method_BDT/BDTD/MVA_BDTD_effB", MVA_BDTD_effB); f->GetObject("Method_BDT/BDTD/MVA_BDTD_effS", MVA_BDTD_effS); f->GetObject("Method_BDT/BDTD/MVA_BDTD_effBvsS",MVA_BDTD_effBvsS); int binnum = MVA_BDTD_effB->FindLastBinAbove(effB); double BDTval = MVA_BDTD_effB->GetBinCenter(binnum); double BDTROC = 1 - MVA_BDTD_effBvsS->Integral(); int binnum_S = MVA_BDTD_effS->FindBin(BDTval); double effS = MVA_BDTD_effS->GetBinContent(binnum_S); cout << i << ",\t" << BDTROC << ",\t" << BDTval << ",\t" << effB << ",\t" << effS << endl; ofile << i << ",\t" << BDTROC << ",\t" << BDTval << ",\t" << effB << ",\t" << effS << endl; f->Close("R"); } ofile.close(); }