00001 #include "iomanip"
00002
00003 int cut_flow(TString file){
00004
00005 TFile *_file0 = TFile::Open(file);
00006
00007 vector<TString> v_cut;
00008
00009 _file0->cd("cut_info");
00010 TTree *cut_order = (TTree*)gDirectory->Get("cut_order");
00011
00012
00013 Char_t cut_01[24];
00014 Char_t cut_02[24];
00015 Char_t cut_03[24];
00016 Char_t cut_04[24];
00017 Char_t cut_05[24];
00018 Char_t cut_06[24];
00019 Char_t cut_07[24];
00020 Char_t cut_08[18];
00021 Char_t cut_09[18];
00022 Char_t cut_10[18];
00023 Char_t cut_11[18];
00024 Char_t cut_12[18];
00025 Char_t cut_13[17];
00026 Char_t cut_14[17];
00027 Char_t cut_15[17];
00028 Char_t cut_16[17];
00029 Char_t cut_17[17];
00030 Char_t cut_18[12];
00031 Char_t cut_19[11];
00032 Int_t nb_cuts;
00033
00034
00035 cut_order->SetBranchAddress("cut_01",cut_01);
00036 cut_order->SetBranchAddress("cut_02",cut_02);
00037 cut_order->SetBranchAddress("cut_03",cut_03);
00038 cut_order->SetBranchAddress("cut_04",cut_04);
00039 cut_order->SetBranchAddress("cut_05",cut_05);
00040 cut_order->SetBranchAddress("cut_06",cut_06);
00041 cut_order->SetBranchAddress("cut_07",cut_07);
00042 cut_order->SetBranchAddress("cut_08",cut_08);
00043 cut_order->SetBranchAddress("cut_09",cut_09);
00044 cut_order->SetBranchAddress("cut_10",cut_10);
00045 cut_order->SetBranchAddress("cut_11",cut_11);
00046 cut_order->SetBranchAddress("cut_12",cut_12);
00047 cut_order->SetBranchAddress("cut_13",cut_13);
00048 cut_order->SetBranchAddress("cut_14",cut_14);
00049 cut_order->SetBranchAddress("cut_15",cut_15);
00050 cut_order->SetBranchAddress("cut_16",cut_16);
00051 cut_order->SetBranchAddress("cut_17",cut_17);
00052 cut_order->SetBranchAddress("cut_18",cut_18);
00053 cut_order->SetBranchAddress("cut_19",cut_19);
00054 cut_order->SetBranchAddress("nb_cuts",&nb_cuts);
00055 cut_order->GetEntry(0);
00056 v_cut.push_back(TString(cut_01));
00057 v_cut.push_back(TString(cut_02));
00058 v_cut.push_back(TString(cut_03));
00059 v_cut.push_back(TString(cut_04));
00060 v_cut.push_back(TString(cut_05));
00061 v_cut.push_back(TString(cut_06));
00062 v_cut.push_back(TString(cut_07));
00063 v_cut.push_back(TString(cut_08));
00064 v_cut.push_back(TString(cut_09));
00065 v_cut.push_back(TString(cut_10));
00066 v_cut.push_back(TString(cut_11));
00067 v_cut.push_back(TString(cut_12));
00068 v_cut.push_back(TString(cut_13));
00069 v_cut.push_back(TString(cut_14));
00070 v_cut.push_back(TString(cut_15));
00071 v_cut.push_back(TString(cut_16));
00072 v_cut.push_back(TString(cut_17));
00073 v_cut.push_back(TString(cut_18));
00074 v_cut.push_back(TString(cut_19));
00075 v_cut.push_back("");v_cut.push_back("");v_cut.push_back("");
00076 v_cut.push_back("");v_cut.push_back("");v_cut.push_back("");
00077 v_cut.push_back("");v_cut.push_back("");v_cut.push_back("");
00078 v_cut.push_back("");v_cut.push_back("");v_cut.push_back("");
00079
00080 _file0->cd();
00081 analysis->cd();
00082
00083
00084
00085
00086
00087
00088
00089
00090 double nb_init(0);
00091 double nb_before(0);
00092 double nb_current(0);
00093
00094 double csec;
00095 cout<<"Enter cross section: ";
00096 cin>>csec;
00097
00098 cout<<endl<<endl<<"====== Cut evolution ======"<<endl;
00099 cout<<"cut eff cumeff events"<<endl;
00100 cout.width(38);
00101 cout<<"All events: ";
00102 cout.width(27);
00103 int tmp_bin;
00104 tmp_bin = cut_evolution->FindBin(0.);
00105 cout<<cut_evolution->GetBinContent(tmp_bin)<<endl;
00106 nb_init=cut_evolution->GetBinContent(tmp_bin);
00107 nb_before=nb_init;
00108 double rel_eff, cum_eff;
00109 for(int m=1; m<=19; m++){
00110 tmp_bin = cut_evolution->FindBin(m);
00111 nb_current=cut_evolution->GetBinContent(tmp_bin);
00112 if(nb_before==0) rel_eff=0;
00113 else rel_eff=double((int)(10000.*nb_current/nb_before))/100.;
00114 if(nb_init==0) cum_eff=0;
00115 else cum_eff=double((int)(10000.*nb_current/nb_init))/100.;
00116
00117
00118
00119 cout<<"cut ";
00120 cout.width(2);
00121 cout<<m;
00122 cout<<": ";
00123 cout.width(25);
00124
00125 cout<<v_cut.at(m-1);
00126 cout.width(12);cout.precision(4);
00127 cout<<rel_eff<<"%";
00128 cout.width(8);
00129 cout<<cum_eff<<"%";
00130 cout.width(10);
00131 cout<<(int)(nb_current);
00132 cout.width(10);
00133 cout<<(csec*nb_current/nb_init)<<endl;
00134 nb_before=nb_current;
00135 }
00136
00137
00138 return 0;
00139 }