MyHtautauAnalysis/run/cut_eff.cxx

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      //Declaration of leaves types
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     // Set branch addresses.
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 //     for(int k=3; k<24; k++){
00083 //         //cout<<"Bin "<<k<<": "<<endl;
00084 //         cout<<"Cut "<<k-3<<" "<<v_cut.at(k-3)<<":  \t"<<cut_evolution->GetBinContent(k)<<endl;
00085 //      //cout<<"                Cut "<<k-2<<": "<<cut_evolution->GetBinContent(k+1)*100/cut_evolution->GetBinContent(k)<<"%"<<endl;
00086 //      
00087 //     }
00088 //     cout<<"Overall eff: "<<cut_evolution->GetBinContent(18)*100/cut_evolution->GetBinContent(3)<<"%"<<endl;
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<</*right<<*/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=/*(int)*/double((int)(10000.*nb_current/nb_before))/100.;
00114         if(nb_init==0) cum_eff=0;
00115         else cum_eff=/*(int)*/double((int)(10000.*nb_current/nb_init))/100.;
00116 
00117     //  cout<<"rel eff: "<<nb_current/nb_before<<endl;
00118     //  cout<<"cumulated eff: "<<nb_current/nb_init<<endl;
00119         cout<<"cut ";
00120         cout.width(2);
00121         cout<</*right<<*/m;
00122         cout<<": ";
00123         cout.width(25);
00124         //cout<<left<<cuts[m];//
00125         cout<</*left<<*/v_cut.at(m-1);
00126         cout.width(12);cout.precision(4);
00127         cout<</*right<<*/rel_eff<<"%";
00128         cout.width(8);
00129         cout<</*right<<*/cum_eff<<"%";
00130         cout.width(10);
00131         cout<</*right<<*/(int)(nb_current);
00132         cout.width(10);
00133         cout<</*right<<*/(csec*nb_current/nb_init)<<endl;
00134         nb_before=nb_current;
00135     }
00136 
00137 
00138     return 0;
00139 }

Generated on Tue Oct 21 11:50:44 2008 for NtupleAnalysis by  doxygen 1.5.1