MyCHiggsAnalysis/src/MyCHiggsAnalysis.cxx

00001 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00002 // 09.11.2006, AUTHOR: THIES EHRICH
00003 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00004 
00005 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00006 //:: IMPLEMENTATION OF METHODS DEFINED IN THE CLASS MyAnalysisExample ::
00007 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
00008 
00009 //::::::::::::::::::
00010 //:: HEADER FILES ::
00011 //::::::::::::::::::
00012 
00013 #include <TGraph.h>
00014 #include <TProfile.h>
00015 #include "MyCHiggsAnalysis/MyCHiggsAnalysis.h"
00016 #include "TObjString.h"
00017 
00018 
00019 //:::::::::::::::::::::::::
00020 //:: NAME SPACE SETTINGS ::
00021 //:::::::::::::::::::::::::
00022 
00023 using namespace std;
00024 
00025 
00026 //::::::::::::::::::::
00027 //::GLOBAL VARIABLES::
00028 //::::::::::::::::::::
00029 
00030 //*****************************************************************************
00031 
00032 //:::::::::::::::::
00033 //:: METHOD init ::
00034 //:::::::::::::::::
00035 
00036 void MyCHiggsAnalysis::init(void) {
00037     filename = "testfile";
00038     return;
00039 
00040 }
00041 
00042 //*****************************************************************************
00043 
00044 //:::::::::::::::::::::
00045 //:: METHOD destruct ::
00046 //:::::::::::::::::::::
00047 
00048 void MyCHiggsAnalysis::destruct(void) {
00049     return;
00050 }
00051 
00052 //*****************************************************************************
00053 
00054 //:::::::::::::::::::::::
00055 //:: METHOD initialize ::
00056 //:::::::::::::::::::::::
00057 
00058 void MyCHiggsAnalysis::initialize(void) {
00059     i_bTagMatch_nb=0;
00060     i_bbarTagMatch_nb=0;
00061     i_bMatch_nb=0;
00062     i_tryBTag_nb=0;
00063     i_tryBbarTag_nb=0;
00064     i_bbarTagMatchWrong_nb=0;
00065     i_bTagMatchWrong_nb=0;
00066     i_bMatchTrigger_nb=0;
00067     i_bbarMatchTrigger_nb=0;
00068     i_mu_nb=0;
00069     i_mu_all_nb=0;
00070     i_mu_ov_nb=0;
00071     i_mu_iso_nb=0;
00072     i_ele_nb=0;
00073     i_tau_nb=0;
00074     i_tau_ov_nb=0;
00075     i_tau_all_nb=0;
00076     i_tau_id_nb=0;
00077     i_jets_nb=0;
00078     i_bjets_nb=0;
00079     i_bjets_id_nb=0;
00080     i_noTag=0;
00081     i_b_nb=0;
00082     i_b_all_nb=0;
00083     i_light_all_nb=0;
00084     i_jet_nb=0;
00085     //i_jet_all_nb=0;
00086     i_btagvector=0;
00087     i_MatchTrigger_nb=0;
00088     i_bTagWrong_nb=0;
00089     i_bbarTagWrong_nb=0;
00090     i_bjet_nb=0;
00091     i_tr_ele_noisol=0;
00092     i_ele_all_nb=0;
00093     i_ele_match_noisol=0;
00094     i_tr_mu_all=0;
00095     i_tr_mu=0;
00096     i_tr_ele=0;
00097     i_tr_ele_all=0;
00098     i_ele_ov_nb=0;
00099     i_ele_iso_nb=0;
00100     i_ele_dd_nb=0;
00101     i_jets_all_nb=0;
00102     i_jets_ov_nb=0;
00103     i_tr_tau_all_nb=0;
00104     i_tr_tau_id1_nb=0;
00105     i_tr_tau_id2_nb=0;
00106     i_tr_tau_nb=0;
00107     i_tr_b_all_nb=0;
00108     i_tr_b_id1_nb=0;
00109     i_tr_b_id2_nb=0;
00110     i_tr_b_nb=0;
00111     i_tr_jet_all_nb=0;
00112     i_tr_jet_ov_nb=0;
00113     i_tr_jet_nb=0;
00114     i_ele_isem_nb=0;
00115     i_bjets_matched=0;
00116     d_tau_llh1=100;
00117     d_tau_llh2=100;
00118     d_tau_llh3=100;
00119     d_tau_pt1=10000;
00120     d_tau_pt2=10000;
00121     d_tau_pt3=10000;
00122     d_tau_charge1=0;
00123     d_tau_charge2=0;
00124     d_tau_charge3=0;
00125     d_lep_charge1=0;
00126     d_lep_charge2=0;
00127     d_lep_charge3=0;
00128     i_nb_lep=0;
00129     i_nb_tau=0;
00130 
00131     /* create the root file */
00132     // m_tfile = new TFile(filename.ReplaceAll(".aan",".selection") , "RECREATE");
00133     b_tag_llh = new TFile("b_tag_llh.root","READ");
00134     m_tfile = new TFile(filename, "RECREATE");
00135 
00136     /* always use squared weights */
00137     TH1::SetDefaultSumw2(kTRUE);
00138 
00139     /* local variables */
00140     m_dataset_info = &MyDatasetInfo::Instance();
00141     m_systematics = new MySystematics(324545); 
00142     generator = m_dataset_info->get_generator();
00143     MyTextFileReader m_reader(settingsFilename);
00144     m_reader.fill_cutvalue_map("preselection");
00145     m_cutvalue_etincone_ele= m_reader.get_cutvalue("cutvalue_etincone_ele");
00146     m_cutvalue_trackiso_ele= m_reader.get_cutvalue("cutvalue_trackiso_ele");
00147     m_cutvalue_etincone_muon= m_reader.get_cutvalue("cutvalue_etincone_muon");
00148     m_cutvalue_tau_llh= m_reader.get_cutvalue("cutvalue_tau_llh");
00149     m_cutvalue_b_tag_weight= m_reader.get_cutvalue("cutvalue_b_tag_weight");
00150     m_cutvalue_eta_ele=m_reader.get_cutvalue("cutvalue_eta_ele");
00151     m_cutvalue_eta_muon=m_reader.get_cutvalue("cutvalue_eta_muon");
00152     m_cutvalue_etmiss=m_reader.get_cutvalue("cutvalue_etmiss");
00153 
00154     m_value_cone_ele= (int)m_reader.get_cutvalue("value_cone_ele");
00155     m_value_cone_muon= (int)m_reader.get_cutvalue("value_cone_muon");
00156     m_cut_order_trigger = (int)m_reader.get_cutvalue("cut_order_trigger");
00157     m_cut_order_lepton = (int)m_reader.get_cutvalue("cut_order_lepton");
00158     m_cut_order_jet = (int)m_reader.get_cutvalue("cut_order_jet");
00159     m_cut_order_tau = (int)m_reader.get_cutvalue("cut_order_tau");
00160     m_cut_order_b = (int)m_reader.get_cutvalue("cut_order_b");
00161     m_cut_order_taupt = (int)m_reader.get_cutvalue("cut_order_taupt");
00162     m_cut_order_charge = (int)m_reader.get_cutvalue("cut_order_charge");
00163     m_cut_order_etmiss = (int)m_reader.get_cutvalue("cut_order_etmiss");
00164     atlfast = (bool)m_reader.get_cutvalue("atlfast");
00165     i_trigger_menu= (int)m_reader.get_cutvalue("trigger_menu");
00166     b_doSystematics= (bool)m_reader.get_cutvalue("doSystematics");
00167     b_doSmearing_Muon = (bool)m_reader.get_cutvalue("doSmearing_Muon");
00168     b_doScaling_plus_Muon = (bool)m_reader.get_cutvalue("doScaling_plus_Muon");
00169     b_doScaling_minus_Muon = (bool)m_reader.get_cutvalue("doScaling_minus_Muon");
00170     b_doKillEvents_Muon = (bool)m_reader.get_cutvalue("doKillEvents_Muon");
00171     b_doSmearing_Ele = (bool)m_reader.get_cutvalue("doSmearing_Ele");
00172     b_doSmearing_Gamma = (bool)m_reader.get_cutvalue("doSmearing_Gamma");
00173     b_doScaling_plus_EGamma = (bool)m_reader.get_cutvalue("doScaling_plus_EGamma");
00174     b_doScaling_minus_EGamma = (bool)m_reader.get_cutvalue("doScaling_minus_EGamma");
00175     b_doKillEvents_Ele = (bool)m_reader.get_cutvalue("doKillEvents_Ele");
00176     b_doSmearing_Tau = (bool)m_reader.get_cutvalue("doSmearing_Tau");
00177     b_doScaling_plus_Tau = (bool)m_reader.get_cutvalue("doScaling_plus_Tau");
00178     b_doScaling_minus_Tau = (bool)m_reader.get_cutvalue("doScaling_minus_Tau");
00179     b_doKillEvents_Tau = (bool)m_reader.get_cutvalue("doKillEvents_Tau");
00180     b_doSmearing_Jet = (bool)m_reader.get_cutvalue("doSmearing_Jet");
00181     b_doScaling_plus_Jet = (bool)m_reader.get_cutvalue("doScaling_plus_Jet");
00182     b_doScaling_minus_Jet = (bool)m_reader.get_cutvalue("doScaling_minus_Jet");
00183     b_doBtag = (bool)m_reader.get_cutvalue("doBtag");
00184     b_doBtag_old = (bool)m_reader.get_cutvalue("doBtag_old");
00185     b_doJetTree = (bool)m_reader.get_cutvalue("doJetTree");
00186     b_doLightRej60 = (bool)m_reader.get_cutvalue("doLightRej60");
00187     b_doLightRej80 = (bool)m_reader.get_cutvalue("doLightRej80");
00188     m_value_isem_flag_ele= 0x3FF;
00189     m_value_rec_flag_muon= (int)m_reader.get_cutvalue("value_rec_flag_muon");
00190     m_mcnlo_weight = new TH1F("mcnlo_weight", "MC@NLO EVENT WEIGHT", 5, -2.5, 2.5);
00191     tau_nu_ratio = new TH1F("tau_nu_ratio","",50,-1,1);
00192 
00193     cout <<filename <<endl;
00194     if (filename.Contains("6399")||
00195             filename.Contains("6800")||
00196             filename.Contains("6562")||
00197             filename.Contains("6398")||
00198             filename.Contains("6566")) {
00199         d_btag_b_eff=-1.1;
00200         d_btag_c_eff=-0.24;
00201         d_btag_add_light_70 = 0.95;
00202         d_btag_add_light_60 = 1.37;
00203         d_btag_add_light_80 = 0.66;
00204         d_btag_c_eff_95=d_btag_c_eff;
00205         d_btag_c_eff_105=0.28;
00206     }
00207     if (filename.Contains("5200")) {
00208         d_btag_b_eff=-1.09;
00209         d_btag_c_eff=-0.34;
00210         d_btag_add_light_70 = 0.85;
00211         d_btag_add_light_60 = 1.22;
00212         d_btag_add_light_80 = 0.57;
00213         d_btag_c_eff_95=d_btag_c_eff;
00214         d_btag_c_eff_105=0.32;
00215     }
00216     if (filename.Contains("5500")||
00217             filename.Contains("5501")||
00218             filename.Contains("5502")) {
00219         d_btag_b_eff=-1.12;
00220         d_btag_c_eff=-0.35;
00221         d_btag_add_light_70 = 0.83;
00222         d_btag_add_light_60 = 1.12;
00223         d_btag_add_light_80 = 0.60;
00224         d_btag_c_eff_95=d_btag_c_eff;
00225         d_btag_c_eff_105=0.29;
00226     }
00227     if (filename.Contains("8240")||
00228             filename.Contains("8241")||
00229             filename.Contains("8242")||
00230             filename.Contains("8243")){
00231         d_btag_b_eff=-0.91;
00232         d_btag_c_eff=-0.38;
00233         d_btag_add_light_70 = 0.78;
00234         d_btag_add_light_60 = 1.12;
00235         d_btag_add_light_80 = 0.54;
00236         d_btag_c_eff_95=d_btag_c_eff;
00237         d_btag_c_eff_105=0.32;
00238     }
00239     if (filename.Contains("8244")||
00240             filename.Contains("8245")||
00241             filename.Contains("8246")||
00242             filename.Contains("8247")) {
00243         d_btag_b_eff=-1.05;
00244         d_btag_c_eff=-0.33;
00245         d_btag_add_light_70 = 0.88;
00246         d_btag_add_light_60 = 1.26;
00247         d_btag_add_light_80 = 0.56;
00248         d_btag_c_eff_95=d_btag_c_eff;
00249         d_btag_c_eff_105=0.33;
00250     }
00251     if (filename.Contains("8248")||
00252             filename.Contains("8249")||
00253             filename.Contains("8250")||
00254             filename.Contains("8251")) {
00255         d_btag_b_eff=-1.48;
00256         d_btag_c_eff=-0.31;
00257         d_btag_add_light_70 = 0.85;
00258         d_btag_add_light_60 = 1.20;
00259         d_btag_add_light_80 = 0.54;
00260         d_btag_c_eff_95=d_btag_c_eff;
00261         d_btag_c_eff_105=0.33;
00262     }
00263 
00264     /* Electrons */
00265     m_e_truth_nb = new TH1F("e_truth_nb", "NUMBER OF TRUTH ELECTRONS / EVENT", 11, -0.5, 10.5);
00266     m_e_truth_pt = new TH1F("e_truth_pt", "TRUTH ELECTRON PT (GeV)", 100, 0, 200);
00267     m_e_truth_eta = new TH1F("e_truth_eta", "TRUTH ELECTRON ETA ", 60, -3, 3);
00268     m_e_truth_phi = new TH1F("e_truth_phi", "TRUTH ELECTRON PHI ", 70, -3.5, 3.5);
00269     m_e_nb = new TH1F("e_nb", "NUMBER OF RECO ELECTRONS / EVENT", 11, -0.5, 10.5);
00270     m_e_energy = new TH1F("e_energy", "ELECTRON ENERGY (GeV)", 100, 0, 200);
00271     m_e_pt = new TH1F("e_pt", "ELECTRON PT (GeV)", 100, 0, 200);
00272     m_e_eta = new TH1F("e_eta", "ELECTRON ETA", 60, -3, 3);
00273     m_e_phi = new TH1F("e_phi", "ELECTRON PHI", 70, -3.5, 3.5);
00274     m_e_e_over_p = new TH1F("e_e_over_p", "ELECTRON E/P ", 51, -0.5, 5.5);
00275     m_e_charge = new TH1F("e_charge", "ELECTRON CHARGE", 3, -1.5, 1.5);
00276     m_e_isol_et_in_cone_0 = new TH1F("e_isol_et_in_cone_0", 
00277             "ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00278     m_e_isol_et_in_cone_1 = new TH1F("e_isol_et_in_cone_1", 
00279             "ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00280     m_e_isol_et_in_cone_2 = new TH1F("e_isol_et_in_cone_2", 
00281             "ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00282     m_e_isol_et_in_cone_3 = new TH1F("e_isol_et_in_cone_3", 
00283             "ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00284     m_e_noisol_et_in_cone_0 = new TH1F("e_noisol_et_in_cone_0", 
00285             "NOT ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00286     m_e_noisol_et_in_cone_1 = new TH1F("e_noisol_et_in_cone_1", 
00287             "NOT ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00288     m_e_noisol_et_in_cone_2 = new TH1F("e_noisol_et_in_cone_2", 
00289             "NOT ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00290     m_e_noisol_et_in_cone_3 = new TH1F("e_noisol_et_in_cone_3", 
00291             "NOT ISOLATED ELECTRON ET IN CONE (GEV)", 100, 0, 50);
00292     m_e_isol_trackIsolationEnergy_0 = new TH1F("e_isol_trackIsolationEnergy_0", 
00293             "ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00294     m_e_isol_trackIsolationEnergy_1 = new TH1F("e_isol_trackIsolationEnergy_1", 
00295             "ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00296     m_e_isol_trackIsolationEnergy_2 = new TH1F("e_isol_trackIsolationEnergy_2", 
00297             "ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00298     m_e_isol_trackIsolationEnergy_3 = new TH1F("e_isol_trackIsolationEnergy_3", 
00299             "ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00300     m_e_noisol_trackIsolationEnergy_0 = new TH1F("e_noisol_trackIsolationEnergy_0", 
00301             "NOT ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00302     m_e_noisol_trackIsolationEnergy_1 = new TH1F("e_noisol_trackIsolationEnergy_1", 
00303             "NOT ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00304     m_e_noisol_trackIsolationEnergy_2 = new TH1F("e_noisol_trackIsolationEnergy_2", 
00305             "NOT ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00306     m_e_noisol_trackIsolationEnergy_3 = new TH1F("e_noisol_trackIsolationEnergy_3", 
00307             "NOT ISOLATED ELECTRON TRACK ET IN CONE (GEV)", 100, 0, 50);
00308     m_e_mother_id = new TH1F("e_mother_id","ELECTRON MOTHER ID",10000,0,10000);
00309     m_e_all_pt = new TH1F("e_all_pt", "all ELECTRON PT (GeV)", 100, 0, 200);
00310     m_e_all_eta = new TH1F("e_all_eta", "all ELECTRON ETA", 60, -3, 3);
00311     m_e_all_phi = new TH1F("e_all_phi", "all ELECTRON PHI", 70, -3.5, 3.5);
00312     m_e_good_nb = new TH1F("e_good_nb", "NUMBER OF ISOLATED ELECTRONS WITH ISEM FLAG / EVENT", 
00313             11, -0.5, 10.5);
00314     m_e_good_pt = new TH1F("e_good_pt", "PT OF RECONSTRUCTED ELECTRONS (GeV)", 100, 0, 200);
00315     m_e_good_eta = new TH1F("e_good_eta", "ETA OF RECONSTRUCTED ELECTRONS", 60, -3, 3);
00316     m_e_good_phi = new TH1F("e_good_phi", "PHI OF RECONSTRUCTED ELECTRONS", 70, -3.5, 3.5);
00317     m_e_good_e_over_p = new TH1F("e_good_e_over_p", "E/P OF RECONSTRUCTED ELECTRONS", 
00318             51, -0.5, 5.5);
00319     m_e_good_et_in_cone = new TH1F("e_good_et_in_cone", "ETINCONE OF RECONSTRUCTED ELECTRONS (GEV)", 
00320             100, 0, 50);
00321     m_e_good_energy = new TH1F("e_good_energy", "ENERGY OF RECONSTRUCTED ELECTRONS (GeV)", 
00322             100, 0, 200);
00323     m_e_matched_tr_pt = new TH1F("e_matched_tr_pt","MATCHED TRUTH ELECTRONS PT (GEV)", 
00324             100, 0, 200);
00325     m_e_matched_tr_eta = new TH1F("e_matched_tr_eta","MATCHED TRUTH ELECTRONS ETA (GEV)", 
00326             60, -3, 3);
00327     m_e_matched_tr_phi = new TH1F("e_matched_tr_phi","MATCHED TRUTH ELECTRONS PHI (GEV)", 
00328             70, -3.5, 3.5);
00329     m_e_matched_tr_trackiso_pt = new TH1F("e_matched_tr_trackiso_pt","MATCHED TRUTH ELECTRONS PT (GEV)", 
00330             100, 0, 200);
00331     m_e_matched_tr_trackiso_eta = new TH1F("e_matched_tr_trackiso_eta","MATCHED TRUTH ELECTRONS ETA (GEV)", 
00332             60, -3, 3);
00333     m_e_matched_tr_trackiso_phi = new TH1F("e_matched_tr_trackiso_phi","MATCHED TRUTH ELECTRONS PHI (GEV)", 
00334             70, -3.5, 3.5);
00335     m_e_all_matched_tr_pt = new TH1F("e_all_matched_tr_pt","MATCHED TRUTH ELECTRONS PT (GEV)", 
00336             100, 0, 200);
00337     m_e_all_matched_tr_eta = new TH1F("e_all_matched_tr_eta","MATCHED TRUTH ELECTRONS ETA (GEV)", 
00338             60, -3, 3);
00339     m_e_all_matched_tr_phi = new TH1F("e_all_matched_tr_phi","MATCHED TRUTH ELECTRONS PHI (GEV)", 
00340             70, -3.5, 3.5);
00341     m_e_fake_pt = new TH1F("e_fake_pt","FAKED ELECTRONS VS. PT (GEV)", 100, 0, 200);
00342     m_e_fake_eta = new TH1F("e_fake_eta","FAKED ELECTRONS VS. ETA (GEV)", 60, -3, 3);
00343     m_e_fake_phi = new TH1F("e_fake_phi","FAKED ELECTRONS VS. PHI (GEV)", 70, -3.5, 3.5);
00344     m_e_fake_trackiso_pt = new TH1F("e_fake_trackiso_pt","FAKED ELECTRONS VS. PT (GEV)", 100, 0, 200);
00345     m_e_fake_trackiso_eta = new TH1F("e_fake_trackiso_eta","FAKED ELECTRONS VS. ETA (GEV)", 60, -3, 3);
00346     m_e_fake_trackiso_phi = new TH1F("e_fake_trackiso_phi","FAKED ELECTRONS VS. PHI (GEV)", 70, -3.5, 3.5);
00347     m_e_all_fake_pt = new TH1F("e_all_fake_pt","FAKED ELECTRONS VS. PT (GEV)", 100, 0, 200);
00348     m_e_all_fake_eta = new TH1F("e_all_fake_eta","FAKED ELECTRONS VS. ETA (GEV)", 60, -3, 3);
00349     m_e_all_fake_phi = new TH1F("e_all_fake_phi","FAKED ELECTRONS VS. PHI (GEV)", 70, -3.5, 3.5);
00350     m_e_res_ratio_energy =new TH1F("e_res_ratio_energy", "ELECTRON ENERGY REC VS. TRUTH (GeV)", 
00351             281, -30.5, 250.5); 
00352     m_e_res_ratio_eta = new TH1F("e_res_ratio_eta", "ELECTRON ETA RESOLUTION (REC - TRUTH)", 
00353             101, -0.01, 0.01);
00354     m_e_res_ratio_phi = new TH1F("e_res_ratio_phi", "ELECTRON PHI RESOLUTION (REC - TRUTH)", 
00355             101, -0.01, 0.01);
00356     m_e_res_ratio_pt = new TH1F("e_res_ratio_pt", "ELECTRON PT RESOLUTION (REC - TRUTH) (GeV)", 
00357             201, -0.25, 0.25);
00358     m_e_res_profile_pt = new TProfile(
00359             "e_res_profile_pt", "ELECTRON PT RESOLUTION (PROFILE) VS PT",20,0.0,200.0,0.0,1.0,"G"); 
00360     m_e_res_profile_eta = new TProfile(
00361             "e_res_profile_eta", "ELECTRON ETA RESOLUTION (PROFILE) VS PT",20,0.0,200.0,0,1.0,"G"); 
00362     m_e_res_profile_phi = new TProfile(
00363             "e_res_profile_phi", "ELECTRON PHI RESOLUTION (PROFILE) VS PT",20,0.0,200.0,0,1.0,"G"); 
00364     m_e_from_b_matched_reco_et_in_cone = new TH1F(
00365             "e_from_b_matched_reco_et_in_cone", "MATCHED RECO ELECTRON (FROM B JET) ET IN CONE (GEV)",
00366             442, -20, 200);
00367     /* Muons */
00368     m_m_truth_nb = new TH1F("m_truth_nb", "NUMBER OF TRUTH MUONS / EVENT", 11, -0.5, 10.5);
00369     m_m_truth_pt = new TH1F("m_truth_pt", "TRUTH MUON PT (GeV)", 100, 0, 200);
00370     m_m_truth_eta = new TH1F("m_truth_eta", "TRUTH MUON ETA ", 60, -3, 3);
00371     m_m_truth_phi = new TH1F("m_truth_phi", "TRUTH MUON PHI ", 70, -3.5, 3.5);
00372     m_m_nb = new TH1F("m_nb", "NUMBER OF RECONSTRUCTED MUONS / EVENT", 11, -0.5, 10.5);
00373     m_m_pt = new TH1F("m_pt", "PT OF ALL RECONSTRUCTED MUONS (GeV)", 100, 0, 200);
00374     m_sys_m_pt = new TH1F("sys_m_pt", "PT OF ALL RECONSTRUCTED MUONS (GeV)", 100, 0, 200);
00375     m_m_phi = new TH1F("m_phi", "PHI OF ALL RECONSTRUCTED MUONS / EVENT", 70, -3.5, 3.5);
00376     m_m_eta = new TH1F("m_eta", "ETA OF ALL RECONSTRUCTED MUONS / EVENT", 60, -3, 3);
00377     m_m_charge = new TH1F("m_charge", "CHARGE OF ALL RECONSTRUCTED MUON", 3, -1.5, 1.5);
00378     m_m_energy = new TH1F("m_energy", "ENERGY OF ALL RECONSTRUCTED MUON (GeV)", 100, 0, 200);
00379     m_m_isol_et_in_cone_0 = new TH1F("m_isol_et_in_cone_0", 
00380             "ISOLATED MUON ETINCONE", 100, 0, 50);
00381     m_m_isol_et_in_cone_1 = new TH1F("m_isol_et_in_cone_1", 
00382             "ISOLATED MUON ETINCONE", 100, 0, 50);
00383     m_m_isol_et_in_cone_2 = new TH1F("m_isol_et_in_cone_2", 
00384             "ISOLATED MUON ETINCONE", 100, 0, 50);
00385     m_m_isol_et_in_cone_3 = new TH1F("m_isol_et_in_cone_3", 
00386             "ISOLATED MUON ETINCONE", 100, 0, 50);
00387     m_m_isol_et_in_cone_4 = new TH1F("m_isol_et_in_cone_4", 
00388             "ISOLATED MUON ETINCONE", 100, 0, 50);
00389     m_m_isol_et_in_cone_5 = new TH1F("m_isol_et_in_cone_5", 
00390             "ISOLATED MUON ETINCONE", 100, 0, 50);
00391     m_m_isol_et_in_cone_6 = new TH1F("m_isol_et_in_cone_6", 
00392             "ISOLATED MUON ETINCONE", 100, 0, 50);
00393     m_m_isol_et_in_cone_7 = new TH1F("m_isol_et_in_cone_7", 
00394             "ISOLATED MUON ETINCONE", 100, 0, 50);
00395     m_m_noisol_et_in_cone_0 = new TH1F("m_noisol_et_in_cone_0", 
00396             "ISOLATED MUON ETINCONE", 100, 0, 50);
00397     m_m_noisol_et_in_cone_1 = new TH1F("m_noisol_et_in_cone_1", 
00398             "ISOLATED MUON ETINCONE", 100, 0, 50);
00399     m_m_noisol_et_in_cone_2 = new TH1F("m_noisol_et_in_cone_2", 
00400             "ISOLATED MUON ETINCONE", 100, 0, 50);
00401     m_m_noisol_et_in_cone_3 = new TH1F("m_noisol_et_in_cone_3", 
00402             "ISOLATED MUON ETINCONE", 100, 0, 50);
00403     m_m_noisol_et_in_cone_4 = new TH1F("m_noisol_et_in_cone_4", 
00404             "ISOLATED MUON ETINCONE", 100, 0, 50);
00405     m_m_noisol_et_in_cone_5 = new TH1F("m_noisol_et_in_cone_5", 
00406             "ISOLATED MUON ETINCONE", 100, 0, 50);
00407     m_m_noisol_et_in_cone_6 = new TH1F("m_noisol_et_in_cone_6", 
00408             "ISOLATED MUON ETINCONE", 100, 0, 50);
00409     m_m_noisol_et_in_cone_7 = new TH1F("m_noisol_et_in_cone_7", 
00410             "ISOLATED MUON ETINCONE", 100, 0, 50);
00411     m_m_isol_trackIsolationEnergy_0 = new TH1F("m_isol_trackIsolationEnergy_0", 
00412             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00413     m_m_isol_trackIsolationEnergy_1 = new TH1F("m_isol_trackIsolationEnergy_1", 
00414             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00415     m_m_isol_trackIsolationEnergy_2 = new TH1F("m_isol_trackIsolationEnergy_2", 
00416             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00417     m_m_isol_trackIsolationEnergy_3 = new TH1F("m_isol_trackIsolationEnergy_3", 
00418             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00419     m_m_isol_trackIsolationEnergy_4 = new TH1F("m_isol_trackIsolationEnergy_4", 
00420             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00421     m_m_isol_trackIsolationEnergy_5 = new TH1F("m_isol_trackIsolationEnergy_5", 
00422             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00423     m_m_isol_trackIsolationEnergy_6 = new TH1F("m_isol_trackIsolationEnergy_6", 
00424             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00425     m_m_isol_trackIsolationEnergy_7 = new TH1F("m_isol_trackIsolationEnergy_7", 
00426             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00427     m_m_noisol_trackIsolationEnergy_0 = new TH1F("m_noisol_trackIsolationEnergy_0", 
00428             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00429     m_m_noisol_trackIsolationEnergy_1 = new TH1F("m_noisol_trackIsolationEnergy_1", 
00430             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00431     m_m_noisol_trackIsolationEnergy_2 = new TH1F("m_noisol_trackIsolationEnergy_2", 
00432             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00433     m_m_noisol_trackIsolationEnergy_3 = new TH1F("m_noisol_trackIsolationEnergy_3", 
00434             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00435     m_m_noisol_trackIsolationEnergy_4 = new TH1F("m_noisol_trackIsolationEnergy_4", 
00436             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00437     m_m_noisol_trackIsolationEnergy_5 = new TH1F("m_noisol_trackIsolationEnergy_5", 
00438             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00439     m_m_noisol_trackIsolationEnergy_6 = new TH1F("m_noisol_trackIsolationEnergy_6", 
00440             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00441     m_m_noisol_trackIsolationEnergy_7 = new TH1F("m_noisol_trackIsolationEnergy_7", 
00442             "MUON TRACK ET IN CONE (GEV)", 100, 0, 50);
00443     m_m_mother_id = new TH1F("m_mother_id","MOTHER ID OF ALL RECONSTRUCTED MUONS",5000,0,5000);
00444     m_m_good_nb = new TH1F("m_good_nb", "NUMBER OF RECONSTRUCTED MUONS / EVENT", 11, -0.5, 10.5);
00445     m_m_good_pt = new TH1F("m_good_pt", "PT OF RECONSTRUCTED MUONS (GeV)", 100, 0, 200);
00446     m_m_good_eta = new TH1F("m_good_eta", "ETA OF RECONSTRUCTED MUONS / EVENT", 60, -3, 3);
00447     m_m_good_phi = new TH1F("m_good_phi", "PHI OF RECONSTRUCTED MUONS / EVENT", 70, -3.5, 3.5);
00448     m_m_good_energy = new TH1F("m_good_energy", "ENERGY OF RECONSTRUCTED MUONS (GeV)", 
00449             100, 0, 200);
00450     m_m_good_et_in_cone = new TH1F("m_good_et_in_cone", "ET IN CONE OF RECONSTRUCTED MUONS(GEV)", 
00451             100, 0, 100);
00452     h_m_matched_tr_com_pt = new TH1F("m_matched_tr_com_pt","MATCHED TRUTH MUONS PT (GEV)", 
00453             100, 0, 200);
00454     h_m_matched_tr_com_eta = new TH1F("m_matched_tr_com_eta","MATCHED TRUTH MUONS VS.  ETA", 
00455             60, -3, 3);
00456     h_m_matched_tr_com_phi = new TH1F("m_matched_tr_com_phi","MATCHED TRUTH MUONS VS.  PHI", 
00457             70, -3.5, 3.5);
00458     h_m_matched_tr_st_pt = new TH1F("m_matched_tr_st_pt","MATCHED TRUTH MUONS PT (GEV)", 
00459             100, 0, 200);
00460     h_m_matched_tr_st_eta = new TH1F("m_matched_tr_st_eta","MATCHED TRUTH MUONS VS.  ETA", 
00461             60, -3, 3);
00462     h_m_matched_tr_st_phi = new TH1F("m_matched_tr_st_phi","MATCHED TRUTH MUONS VS.  PHI", 
00463             70, -3.5, 3.5);
00464     h_m_fake_com_pt = new TH1F("m_fake_com_pt","FAKED MUONS VS. PT", 100, 0, 200);
00465     h_m_fake_com_eta = new TH1F("m_fake_com_eta","FAKED MUONS VS. ETA", 60, -3, 3);
00466     h_m_fake_com_phi = new TH1F("m_fake_com_phi","FAKED MUONS VS. PHI", 70, -3.5, 3.5);
00467     h_m_fake_com_et_in_cone = new TH1F("m_fake_com_et_in_cone","FAKED MUONS VS. ET IN CONE (GEV)", 
00468             100, 0, 200);
00469     h_m_fake_st_pt = new TH1F("m_fake_st_pt","FAKED MUONS VS. PT", 100, 0, 200);
00470     h_m_fake_st_eta = new TH1F("m_fake_st_eta","FAKED MUONS VS. ETA", 60, -3, 3);
00471     h_m_fake_st_phi = new TH1F("m_fake_st_phi","FAKED MUONS VS. PHI", 70, -3.5, 3.5);
00472     h_m_fake_st_et_in_cone = new TH1F("m_fake_st_et_in_cone","FAKED MUONS VS. ET IN CONE (GEV)", 
00473             100, 0, 200);
00474     m_m_res_ratio_energy =new TH1F("m_res_ratio_energy", "MUON ENERGY REC VS. TRUTH (GeV)", 
00475             281, -30.5, 250.5); 
00476     m_m_res_ratio_eta = new TH1F("m_res_ratio_eta", "MUON ETA RESOLUTION (REC - TRUTH)", 
00477             101, -0.01, 0.01);
00478     m_m_res_ratio_phi = new TH1F("m_res_ratio_phi", "MUON PHI RESOLUTION (REC - TRUTH)", 
00479             101, -0.01, 0.01);
00480     m_m_res_ratio_pt = new TH1F("m_res_ratio_pt", "MUON PT RESOLUTION (REC - TRUTH) (GeV)", 
00481             201, -0.25, 0.25);
00482     m_m_res_profile_pt = new TProfile("m_res_profile_pt", "MUON PHI RESOLUTION (PROFILE) VS PT",
00483             20,0.0,200.0,0.0,1.0,"G"); 
00484     m_m_res_profile_eta = new TProfile("m_res_profile_eta", "MUON PHI RESOLUTION (PROFILE) VS PT",
00485             20,0.0,200.0,0,1.0,"G"); 
00486     m_m_res_profile_phi = new TProfile("m_res_profile_phi", "MUON PHI RESOLUTION (PROFILE) VS PT",
00487             20,0.0,200.0,0,1.0,"G"); 
00488 
00489     /* Jets */
00490     m_jet_truth_nb = new TH1F("jet_truth_nb", "NUMBER OF TRUTH JETS / EVENT", 11, -0.5, 10.5);
00491     m_jet_plus_tau_truth_nb = new TH1F("jet_plus_tau_truth_nb", "NUMBER OF TRUTH JETS / EVENT", 
00492             11, -0.5, 10.5);
00493     m_lj_truth_pt = new TH1F("lj_truth_pt", "TRUTH LIGHT JETS PT (GeV)", 100, 0, 200);
00494     m_lj_truth_eta = new TH1F("lj_truth_eta", "TRUTH LIGHT JETS ETA ", 60, -3, 3);
00495     m_lj_truth_phi = new TH1F("lj_truth_phi", "TRUTH LIGHT JETS PHI ", 70, -3.5, 3.5);
00496     m_jet_tauveto_truth_pt = new TH1F("jet_tauveto_truth_pt", "TRUTH JETS (TAUVETO) PT (GeV)", 
00497             100, 0, 200);
00498     m_jet_tauveto_truth_eta = new TH1F("jet_tauveto_truth_eta", "TRUTH JETS (TAUVETO) ETA ", 
00499             100, -5, 5);
00500     m_jet_tauveto_truth_phi = new TH1F("jet_tauveto_truth_phi", "TRUTH JETS (TAUVETO) PHI ", 
00501             70, -3.5, 3.5);
00502     m_jet_nb = new TH1F("jet_nb", "NUMBER OF RECONSTRUCTED JETS / EVENT", 11, -0.5, 10.5);
00503     m_jet_pt = new TH1F("jet_pt", "RECONSTRUCTED JETS PT (GeV)", 100, 0, 200);
00504     m_jet_et = new TH1F("jet_et", "RECONSTRUCTED JETS ET (GeV)", 100, 0, 200);
00505     m_jet_phi = new TH1F("jet_phi", "PHI OF RECONSTRUCTED JETS / EVENT", 70, -3.5, 3.5);
00506     m_jet_eta = new TH1F("jet_eta", "ETA OF RECONSTRUCTED JETS / EVENT", 100, -5, 5);
00507     m_jet_charge_neg = new TH1F("jet_charge_neg", 
00508             "LIGHT JET CHARGE (NEG, HIGHEST PT, MATCH TO !B-QUARK)", 100, -1, 1);
00509     m_jet_charge_pos = new TH1F("jet_charge_pos", 
00510             "LIGHT JET CHARGE (POS, HIGHEST PT, MATCH TO !B-QUARK)", 100, -1, 1);
00511     m_jet_matched_truth_pt = new TH1F("jet_matched_truth_pt","MATCHED TRUTH JETS PT (GEV)", 
00512             100, 0, 200);
00513     m_jet_matched_truth_eta = new TH1F("jet_matched_truth_eta","MATCHED TRUTH JETS VS. ETA", 
00514             100, -5, 5);
00515     m_jet_matched_truth_phi = new TH1F("jet_matched_truth_phi","MATCHED TRUTH JETS VS. PHI", 
00516             70, -3.5, 3.5);
00517     m_jet_fake_pt = new TH1F("jet_fake_pt","FAKED RECONSTRUCTED JETS PT (GEV)", 100, 0, 200);
00518     m_jet_fake_eta = new TH1F("jet_fake_eta","FAKED RECONSTRUCTED JETS VS. ETA ", 100, -5, 5);
00519     m_jet_fake_phi = new TH1F("jet_fake_phi","FAKED RECONSTRUCTED JETS VS. PHI ", 70, -3.5, 3.5);
00520     m_jet_res_profile_pt = 
00521         new TProfile("jet_res_profile_pt", "JET PT RESOLUTION (PROFILE) VS PT",
00522                 20,0.0,200.0,0.0,1.0,"G"); 
00523     m_jet_res_profile_eta = 
00524         new TProfile("jet_res_profile_eta", "JET ETA RESOLUTION (PROFILE) VS PT",
00525                 20,0.0,200.0,0,1.0,"G"); 
00526     m_jet_res_profile_phi = 
00527         new TProfile("jet_res_profile_phi", "JET PHI RESOLUTION (PROFILE) VS PT",
00528                 20,0.0,200.0,0,1.0,"G"); 
00529     m_jet_res_ratio_eta = new TH1F("jet_res_ratio_eta", "JET RESOLUTION ETA((REC-TRUTH)/TRUTH)", 
00530             201, -0.5, 0.5);
00531     m_jet_res_ratio_phi = new TH1F("jet_res_ratio_phi", "JET RESOLUTION PHI((REC-TRUTH)/TRUTH)", 
00532             201, -0.5, 0.5);
00533     m_jet_res_ratio_pt = new TH1F("jet_res_ratio_pt", "JET RESOLUTION  PT((REC-TRUTH)/TRUTH) (GeV)", 
00534             201, -1, 1);
00535     m_jet_res_ratio_energy = new TH1F("jet_res_ratio_energy", 
00536             "JET RESOLUTION  ENERGY((REC-TRUTH)/TRUTH) (GeV)", 201, -1, 1);
00537 
00538     /* B Jets */
00539     m_b_truth_nb = new TH1F("b_truth_nb", "NUMBER OF TRUTH B JETS / EVENT", 11, -0.5, 10.5);
00540     m_b_pos_truth_pt = new TH1F("b_pos_truth_pt", "TRUTH POS B QUARKS PT (GeV)", 100, 0, 200);
00541     m_b_neg_truth_pt = new TH1F("b_neg_truth_pt", "TRUTH NEG B QUARKS PT (GeV)", 100, 0, 200);
00542     m_b_truth_eta = new TH1F("b_truth_eta", "TRUTH B JETS ETA ", 60, -3, 3);
00543     m_b_truth_phi = new TH1F("b_truth_phi", "TRUTH B JETS PHI ", 70, -3.5, 3.5);
00544     m_b_nb = new TH1F("b_nb", "NUMBER OF RECONSTRUCTED B JETS / EVENT", 11, -0.5, 10.5);
00545     m_b_pt = new TH1F("b_pt", "RECONSTRUCTED B JETS PT (GeV)", 100, 0, 200);
00546     m_b_eta = new TH1F("b_eta", "ETA OF RECONSTRUCTED B JETS / EVENT", 60, -3, 3);
00547     m_b_phi = new TH1F("b_phi", "PHI OF RECONSTRUCTED B JETS / EVENT", 70, -3.5, 3.5);
00548     m_b_charge_neg = new TH1F("b_charge_neg", "B JET CHARGE (NEG)", 50, -1, 1);
00549     m_b_charge_pos = new TH1F("b_charge_pos", "BBAR JET CHARGE (POS)", 50, -1, 1);
00550     m_b0_charge_neg = new TH1F("b0_charge_neg", "B JET CHARGE (NEG, HIGHEST PT)", 50, -1, 1);
00551     m_b0_charge_pos = new TH1F("b0_charge_pos", "BBAR JET CHARGE (POS, HIGHEST PT)", 50, -1, 1);
00552     m_b1_charge_neg = new TH1F("b1_charge_neg", "B JET CHARGE (NEG, NEXT TO HIGHEST PT)", 50, -1, 1);
00553     m_b1_charge_pos = new TH1F("b1_charge_pos", "BBAR JET CHARGE (POS, NEXT TO HIGHEST PT)", 50, -1, 1);
00554     h_bTag_pt= new TH1F("b_tag_pt", "RECONSTRUCTED TAGGED B JETS PT (GeV)", 40, 0, 200);
00555     h_bbarTag_pt= new TH1F("bbar_tag_pt", "RECONSTRUCTED TAGGED BBAR JETS PT (GeV)", 40, 0, 200);
00556 
00557     m_b_light_charge_neg = new TH1F("b_light_charge_neg", 
00558             "LIGHT JET CHARGE (NEG, HIGHEST PT, MATCH TO TRUTH B QUARK)", 50, -1, 1);
00559     m_b_light_charge_pos = new TH1F("b_light_charge_pos", 
00560             "LIGHT JET CHARGE (POS, HIGHEST PT, MATCH TO TRUTH BBAR QUARK)", 50, -1, 1);
00561     m_delphi_bt_right_pos = new TH1F("delphi_bt_right_pos", 
00562             "DELTA PHI (BJET-TAUJET, RIGHT COMBINATION (POSITIVE CHARGE) )", 50, 0, 3.2);
00563     m_delphi_bt_right_neg = new TH1F("delphi_bt_right_neg", 
00564             "DELTA PHI (BJET-TAUJET, RIGHT COMBINATION (NEGATIVE CHARGE))", 50, 0, 3.2);
00565     m_delphi_bt_false_1st = new TH1F("delphi_bt_false_1st", 
00566             "DELTA PHI (BJET-TAUJET, FALSE COMBINATION (BJET POS, TAU NEG))", 50, 0, 3.2);
00567     m_delphi_bt_false_2nd = new TH1F("delphi_bt_false_2nd", 
00568             "DELTA PHI (BJET-TAUJET, FALSE COMBINATION (BJET NEG, TAU POS))", 50, 0, 3.2);
00569     m_delphi_bl_right_pos = new TH1F("delphi_bl_right_pos", 
00570             "DELTA PHI (BJET-LEPTON, RIGHT COMBINATION (POSITIVE CHARGE))", 50, 0, 3.2);
00571     m_delphi_bl_right_neg = new TH1F("delphi_bl_right_neg", 
00572             "DELTA PHI (BJET-LEPTON, RIGHT COMBINATION (NEGATIVE CHARGE))", 50, 0, 3.2);
00573     m_delphi_bl_false_1st = new TH1F("delphi_bl_false_1st", 
00574             "DELTA PHI (BJET-LEPTON, FALSE COMBINATION (BJET POS, LEPTON NEG))", 50, 0, 3.2);
00575     m_delphi_bl_false_2nd = new TH1F("delphi_bl_false_2nd", 
00576             "DELTA PHI (BJET-LEPTON, FALSE COMBINATION (BJET NEG, LEPTON POS))", 50, 0, 3.2);
00577     m_b_energy = new TH1F("b_energy", "B JETS ENERGY (GeV)", 101, -1.5, 200.5);
00578     m_b_et_in_cone = new TH1F("b_et_in_cone", "B JETS ET IN CONE (GEV)", 101, -1.5, 50.5);
00579     m_b_llh = new TH1F("b_llh", "B TAG WEIGHT (ALL)", 100, -10, 50);
00580     m_b_matched_b_llh = new TH1F("b_matched_b_llh", "B TAG WEIGHT (MATCHED B)", 100, -10, 50);
00581     m_b_matched_light_llh = new TH1F("b_matched_light_llh", "B TAG WEIGHT (MATCHED LIGHT)", 100,
00582             -10, 50);
00583     m_b_matched_truth_pt = new TH1F("b_matched_truth_pt","MATCHED RECONSTRUCTED B JETS PT (GEV)", 
00584             100, 0, 200);
00585     m_b_matched_truth_eta = new TH1F("b_matched_truth_eta","MATCHED RECONSTRUCTED B JETSVS.  ETA", 
00586             60, -3, 3);
00587     m_b_matched_truth_phi = new TH1F("b_matched_truth_phi","MATCHED RECONSTRUCTED B JETS VS.  PHI", 
00588             70, -3.5, 3.5);
00589     m_b_fake_pt = new TH1F("b_fake_pt","FAKED B JETS VS. PT", 100, 0, 200);
00590     m_b_fake_eta = new TH1F("b_fake_eta","FAKED B JETS VS. ETA", 60, -3, 3);
00591     m_b_fake_phi = new TH1F("b_fake_phi","FAKED B JETS MATCH VS. PHI", 70, -3.5, 3.5);
00592     m_b_fake_charge = new TH1F("b_fake_charge", "FAKED B JET CHARGE", 100, -1, 1);
00593     m_b_fake_et_in_cone = new TH1F("b_fake_et_in_cone","FAKED B JETS VS. ET IN CONE (GEV)", 
00594             100, 0, 200);
00595     m_b_faked_by_lj_pt = new TH1F("b_faked_by_lj_pt","TRUTH LIGHT JETS FAKING B JETS VS. PT", 100, 0, 200);
00596     m_b_faked_by_lj_eta = new TH1F("b_faked_by_lj_eta","TRUTH LIGHT JETS FAKING B JETS VS. ETA", 60,
00597             -3, 3);
00598     m_b_faked_by_lj_phi = new TH1F("b_faked_by_lj_phi","TRUTH LIGHT JETS FAKING B JETS VS. PHI", 70,
00599             -3.5, 3.5);
00600     m_b_faked_by_lj_llh = new TH1F("b_faked_by_lj_llh","TRUTH LIGHT JETS FAKING B JETS VS. LLH", 100,
00601             -10, 50);
00602     m_b_res_ratio_energy =new TH1F("b_res_ratio_energy", "B JETS ENERGY REC VS. TRUTH (GeV)", 
00603             281, -30.5, 250.5); 
00604     m_b_res_ratio_eta = new TH1F("b_res_ratio_eta", "B JET RESOLUTION ETA(REC/TRUTH)", 201, -0.5,
00605             0.5);
00606     m_b_res_ratio_phi = new TH1F("b_res_ratio_phi", "B JET RESOLUTION PHI(REC/TRUTH)", 201, -0.5,
00607             0.5);
00608     m_b_res_ratio_pt = new TH1F("b_res_ratio_pt", "B JET RESOLUTION PT(REC/TRUTH)", 201, -1.5, 1.5);
00609     m_b_res_profile_pt = new TProfile("b_res_profile_pt", "B PT RESOLUTION (PROFILE) VS PT",
00610             20,0.0,200.0,0.0,1.0,"G"); 
00611     m_b_res_profile_eta = new TProfile("b_res_profile_eta", "B ETA RESOLUTION (PROFILE) VS PT",
00612             20,0.0,200.0,0,1.0,"G"); 
00613     m_b_res_profile_phi = new TProfile("b_res_profile_phi", "B PHI RESOLUTION (PROFILE) VS PT",
00614             20,0.0,200.0,0,1.0,"G"); 
00615     m_light_eta = new TH1F("light_eta", "ETA OF RECONSTRUCTED LIGHT JETS / EVENT", 60, -5, 5);
00616     h_b_tag_llh = new TH1F("b_bbar_tag_llh","B TAG LIKELIHOOD",50,0,10);
00617     /* Tau Jets */
00618     m_t_truth_nb = new TH1F("t_truth_nb", "NUMBER OF TRUTH TAUS / EVENT", 11, -0.5, 10.5);
00619     m_t_truth_pt = new TH1F("t_truth_pt", "TAU->h nu PT (GeV)", 100, 0, 200);
00620     m_t_truth_eta = new TH1F("t_truth_eta", "TRUTH TAUS ETA ", 60, -3, 3);
00621     m_t_truth_phi = new TH1F("t_truth_phi", "TRUTH TAUS PHI ", 70, -3.5, 3.5);
00622     m_t_truth_children_id = new TH1F("t_truth_children_id","ID TRUTH TAU CHILDREN",501, -250, 250);
00623     m_t_truth_decay = new TH1F("t_truth_decay", "DECAY MODES OF TRUTH TAUS (PDGID)", 100, 0, 100);
00624     m_t_nb = new TH1F("t_nb", "NUMBER OF RECONSTRUCTED TAUS (WITHOUT ISOLATED ELECTRONS)/ EVENT", 
00625             11, -0.5, 10.5);
00626     m_t_nb_tracks = new TH1F("t_nb_tracks", "NUMBER OF TRACKS OF THE TAUJET (before cuts)/ EVENT", 
00627             11, -0.5, 10.5);
00628     m_t_pt = new TH1F("t_pt", "TAU PT (GeV)", 100, 0, 200);
00629     m_t_et = new TH1F("t_et", "TAU ET (GeV)", 100, 0, 200);
00630     m_t_et_corr = new TH1F("t_et_corr", "TAU ET (GeV)", 100, 0, 200);
00631     m_t_pt_corr = new TH1F("t_pt_corr", "TAU PT (GeV)", 100, 0, 200);
00632     m_t_eta = new TH1F("t_eta", "TAU ETA", 60, -3, 3);
00633     m_t_phi = new TH1F("t_phi", "TAU PHI", 70, -3.5, 3.5);
00634     m_t_mother_id = new TH1F("t_mother_id","TAU MOTHER ID",5000,0,5000);
00635     m_t_track_pt_1 = new TH1F("t_track_pt_1", "PT OF FIRST TRACK (GEV)", 100, 0, 200);
00636     m_t_track_pt_2 = new TH1F("t_track_pt_2", "PT OF SECOND TRACK (GEV)", 100, 0, 200);
00637     m_t_track_pt_3 = new TH1F("t_track_pt_3", "PT OF THIRD TRACK (GEV)", 100, 0, 200);
00638     m_t_llh = new TH1F("t_llh", "PRESELECTED TAUS", 100, -50, 50);
00639     m_t_ethadcalib = new TH1F("t_e_ethadcalib", "TAU ET_HAD_CALIB", 101,0 , 100.);
00640     m_t_etemcalib = new TH1F("t_etemcalib", "TAU ET_EM_CALIB", 101, 0, 100.);
00641     m_t_ratio = new TH1F("t_ratio", "TAU ENERGY/SUM_TRACKS_PT", 101, 0, 1);
00642     m_t_charge = new TH1F("t_charge", "TAU CHARGE", 11, -5., 5.);
00643     m_t_matched_truth_pt = new TH1F("t_matched_truth_pt","MATCHED TRUTH TAUS PT (GEV)", 
00644             100, 0, 200);
00645     m_t_matched_truth_eta = new TH1F("t_matched_truth_eta","MATCHED TRUTH TAUS ETA (GEV)", 
00646             60, -3, 3);
00647     m_t_matched_truth_phi = new TH1F("t_matched_truth_phi","MATCHED TRUTH TAUS PHI (GEV)", 
00648             70, -3.5, 3.5);
00649     m_t_matched_re_llh = new TH1F("t_matched_re_llh","MATCHED RECONSTRUCTED TAUS", 
00650             100, -50, 50);
00651     m_t_matched_re_ratio_pt = new TH1F("t_matched_re_ratio_pt",
00652             "MATCHED RECONSTRUCTED TAU ENERGY(HAD)/PT(LEADING TRACK)", 101, 0, 1);
00653     m_t_fake_pt = new TH1F("t_fake_pt","FAKED TAUS VS. PT", 100, 0, 200);
00654     m_t_fake_eta = new TH1F("t_fake_eta","FAKED TAUS VS. ETA", 60, -3, 3);
00655     m_t_fake_phi = new TH1F("t_fake_phi","FAKED TAUS VS. PHI", 70, -3.5, 3.5);
00656     m_t_fake_ratio_pt = new TH1F("t_fake_ratio_pt","FAKED TAU ENERGY(HAD)/PT(LEADING TRACK)", 
00657             101, 0, 1);
00658     m_t_faked_by_lj_pt = new TH1F("t_faked_by_lj_pt","TRUTH LIGHT JETS FAKING TAUS VS. PT", 
00659             100, 0, 200);
00660     m_t_faked_by_lj_eta = new TH1F("t_faked_by_lj_eta","TRUTH LIGHT JETS FAKING TAUS VS. ETA", 
00661             100, -5, 5);
00662     m_t_faked_by_lj_phi = new TH1F("t_faked_by_lj_phi","TRUTH LIGHT JETS FAKING TAUS VS. PHI", 
00663             70, -3.5, 3.5);
00664     m_t_faked_by_lj_llh = new TH1F("t_faked_by_lj_llh","TRUTH LIGHT JETS FAKING TAUS", 
00665             100, -50, 50);
00666     m_t_faked_by_ele_pt = new TH1F("t_faked_by_ele_pt","TRUTH ELECTRONS FAKING TAUS VS. PT", 
00667             100, 0, 200);
00668     m_t_faked_by_ele_eta = new TH1F("t_faked_by_ele_eta","TRUTH ELECTRONS FAKING TAUS VS. ETA", 
00669             60, -3, 3);
00670     m_t_faked_by_ele_phi = new TH1F("t_faked_by_ele_phi","TRUTH ELECTRONS FAKING TAUS VS. PHI", 
00671             70, -3.5, 3.5);
00672     m_t_faked_by_ele_llh = new TH1F("t_faked_by_ele_llh","TRUTH ELECTRONS FAKING TAUS", 
00673             100, -50, 50);
00674     m_t_faked_by_b_pt = new TH1F("t_faked_by_b_pt","TRUTH B FAKING TAUS VS. PT", 
00675             100, 0, 200);
00676     m_t_faked_by_b_eta = new TH1F("t_faked_by_b_eta","TRUTH B FAKING TAUS VS. ETA", 
00677             60, -3, 3);
00678     m_t_faked_by_b_phi = new TH1F("t_faked_by_b_phi","TRUTH B FAKING TAUS VS. PHI", 
00679             70, -3.5, 3.5);
00680     m_t_faked_by_b_llh = new TH1F("t_faked_by_b_llh","TRUTH B FAKING TAUS", 
00681             100, -50, 50);
00682     m_t_faked_by_c_pt = new TH1F("t_faked_by_c_pt","TRUTH C FAKING TAUS VS. PT", 
00683             100, 0, 200);
00684     m_t_faked_by_c_eta = new TH1F("t_faked_by_c_eta","TRUTH C FAKING TAUS VS. ETA", 
00685             60, -3, 3);
00686     m_t_faked_by_c_phi = new TH1F("t_faked_by_c_phi","TRUTH C FAKING TAUS VS. PHI", 
00687             70, -3.5, 3.5);
00688     m_t_faked_by_c_llh = new TH1F("t_faked_by_c_llh","TRUTH C FAKING TAUS", 
00689             100, -50, 50);
00690     m_t_res_ratio_pt = new TH1F("t_res_ratio_pt", "TAU PT RESOLUTION (REC - TRUTH) (GeV)", 
00691             201, -0.5, 0.5);
00692     m_t_res_ratio_pt_corr = new TH1F("t_res_ratio_pt_corr", "TAU PT RESOLUTION (REC - TRUTH) (GeV)", 
00693             201, -0.5, 0.5);
00694     m_t_res_ratio_eta = new TH1F("t_res_ratio_eta", "TAU ETA RESOLUTION (REC - TRUTH) (GeV)", 
00695             101, -0.5, 0.5);
00696     m_t_res_ratio_phi = new TH1F("t_res_ratio_phi", "TAU PHI RESOLUTION (REC - TRUTH) (GeV)",
00697             101, -0.5, 0.5);
00698     m_t_res_ratio_energy =new TH1F("t_res_ratio_energy", "TAU ENERGY REC VS. TRUTH (GeV)", 
00699             281, -30.5, 250.5); 
00700     m_t_res_profile_pt = new TProfile("t_res_profile_pt", "TAU PT RESOLUTION (PROFILE) VS PT",
00701             20,0.0,200.0,0.0,1.0,"G"); 
00702     m_t_res_profile_eta = new TProfile("t_res_profile_eta", "TAU ETA RESOLUTION (PROFILE) VS PT",
00703             20,0.0,200.0,0,1.0,"G"); 
00704     m_t_res_profile_phi = new TProfile("t_res_profile_phi", "TAU PHI RESOLUTION (PROFILE) VS PT",
00705             20,0.0,200.0,0,1.0,"G"); 
00706 
00707     /* Missing Energy */
00708     m_missing_etx = new TH1F("missing_etx", "MISSING ETX (GEV)",1001,-500,500);
00709     m_truth_missing_etx = new TH1F("missing_etx_truth", "TRUTH MISSING ETX (GEV)",1001,-500,500);
00710     m_res_ratio_missing_etx = new TH1F("missing_etx_res_ratio", "RESOLUTION MISSING ETX (GEV)",
00711             1001,-500,500);
00712     m_missing_ety = new TH1F("missing_ety", "MISSING ETY (GEV)",1001,-500,500);
00713     m_truth_missing_ety = new TH1F("missing_ety_truth", "TRUTH MISSING ETY (GEV)",1001,-500,500);
00714     m_res_ratio_missing_ety = new TH1F("missing_ety_res_ratio", "RESOLUTION MISSING ETY (GEV)",
00715             1001,-500,500);
00716     m_missing_et = new TH1F("missing_et", "MISSING ET (GEV)",40,0,200);
00717     m_truth_missing_et = new TH1F("missing_et_truth", "TRUTH MISSING ET (GEV)",40,0,200);
00718     m_res_ratio_missing_et = new TH1F("missing_et_res_ratio", "RESOLUTION MISSING ET (GEV)",
00719             40,0,200);
00720     m_missing_et_sum = new TH1F("missing_et_sum", "MISSING ET SUM (GEV)",2001,0,2000);
00721     m_cutflow = new TH1F("cutflow", "CUT EVOLUTION ", 9, -0.5, 8.5);
00722 
00723     /* Analysis Histograms */
00724     for (unsigned i=0;i<11;i++) {
00725         sprintf(name,"jets_pt_cut%d",i);
00726         m_jets_pt_cut[i] = new TH1F(name,"B JETS PT",40,-0.5,199.5);
00727         sprintf(name,"jets_nb_cut%d",i);
00728         m_jets_nb_cut[i] = new TH1F(name,"NUMBER OF JETS/EVENT",9,-0.5,8.5);
00729         sprintf(name,"sel_b_nb_cut%d",i);
00730         m_sel_b_nb_cut[i] = new TH1F(name,"NUMBER OF B JETS/EVENT",5,-0.5,4.5);
00731         sprintf(name,"taus_nb_cut%d",i);
00732         m_taus_nb_cut[i] = new TH1F(name,"NUMBER OF TAUS/EVENT",3,-0.5,2.5);
00733         sprintf(name,"tau_pt_cut%d",i);
00734         m_tau_pt_cut[i] = new TH1F(name,"TAU PT",40,-0.5,199.5);
00735         sprintf(name,"charge_tau_plus_lepton%d",i);
00736         m_charge_tau_plus_lepton[i] = new TH1F(name,"CHARGE TAU PLUS LEPTON",10,-5,5);
00737         sprintf(name,"missinget_cut%d",i);
00738         m_missinget_cut[i] = new TH1F(name,"ET MISS",100,-2.5,497.5);
00739         sprintf(name,"sel_lepton_pt_cut%d",i);
00740         m_sel_lepton_pt_cut[i] = new TH1F(name,"LEPTON PT",40,-0.5,199.5);
00741         sprintf(name,"sel_b_pt_cut%d",i);
00742         m_sel_b_pt_cut[i] = new TH1F(name,"B JET PT",40,-0.5,199.5);
00743         sprintf(name,"sel_lepton_nb_cut%d",i);
00744         m_sel_lepton_nb_cut[i] = new TH1F(name,"NUMBER OF LEPTONS/EVENT",4,-0.5,3.5);
00745         sprintf(name,"mass_tb%d",i);
00746         h_mass_tb[i] = new TH1F(name,"INVARIANT TAU BJET MASS", 50, 0, 200);
00747         sprintf(name,"transverse_mass_tb%d",i);
00748         h_transverse_mass_tb[i] = new TH1F(name,"TRANSVERSE MASS", 100, 0, 500);
00749         sprintf(name,"taus_llh%d",i);
00750         h_taus_llh[i] = new TH1F(name,"tau llh", 100, -50, 50);
00751     }
00752     m_trigger_histo = new TH1F("trigger", "TRIGGER ", 4, 0, 4);
00753     t_trigger_eff = new TTree("trigger_eff", "TRIGGER EFFICIENCY");
00754     t_trigger_eff->Branch("i_nb_event",&i_nb_event,"i_nb_event/I");
00755     t_trigger_eff->Branch("b_passed_event",&b_passed_event,"b_passed_event/O");
00756     t_trigger_eff->Branch("mcnlo_weight",&mcnlo_weight,"mcnlo_weight/D");
00757     h_trigger_met_ef = new TH1F("trigger_met_ef", "MET TRIGGER (EF)", 40, 0, 200);
00758     t_tau_llh = new TTree("tau_llh", "TAU LIKELIHOOD");
00759     t_tau_llh->Branch("d_tau_llh1",&d_tau_llh1,"d_tau_llh1/D" );
00760     t_tau_llh->Branch("d_tau_llh2",&d_tau_llh2,"d_tau_llh2/D" );
00761     t_tau_llh->Branch("d_tau_llh3",&d_tau_llh3,"d_tau_llh3/D" );
00762     t_tau_llh->Branch("d_tau_pt1",&d_tau_pt1,"d_tau_pt1/D" );
00763     t_tau_llh->Branch("d_tau_pt2",&d_tau_pt2,"d_tau_pt2/D" );
00764     t_tau_llh->Branch("d_tau_pt3",&d_tau_pt3,"d_tau_pt3/D" );
00765     t_tau_llh->Branch("d_tau_charge1",&d_tau_charge1,"d_tau_charge1/D" );
00766     t_tau_llh->Branch("d_tau_charge2",&d_tau_charge2,"d_tau_charge2/D" );
00767     t_tau_llh->Branch("d_tau_charge3",&d_tau_charge3,"d_tau_charge3/D" );
00768     t_tau_llh->Branch("d_lep_charge1",&d_lep_charge1,"d_lep_charge1/D" );
00769     t_tau_llh->Branch("d_lep_charge2",&d_lep_charge2,"d_lep_charge2/D" );
00770     t_tau_llh->Branch("d_lep_charge3",&d_lep_charge3,"d_lep_charge3/D" );
00771     t_tau_llh->Branch("i_nb_lep",&i_nb_lep,"i_nb_lep/I" );
00772     t_tau_llh->Branch("i_nb_tau",&i_nb_tau,"i_nb_tau/I" );
00773     t_tau_llh->Branch("d_etmiss",&d_etmiss,"d_etmiss/D" );
00774     t_tau_llh->Branch("mcnlo_weight",&mcnlo_weight,"mcnlo_weight/D" );
00775     t_jets = new TTree("jet tree", "jet tree");
00776     t_jets->Branch("i_jet_all_nb",&i_jet_all_nb,"i_jet_all_nb/I" );
00777     t_jets->Branch("d_jet_weight",&d_jet_weight,"d_jet_weight[i_jet_all_nb]/D" );
00778     t_jets->Branch("d_jet_pt",&d_jet_pt,"d_jet_pt[i_jet_all_nb]/D" );
00779     t_jets->Branch("d_jet_eta",&d_jet_eta,"d_jet_eta[i_jet_all_nb]/D" );
00780     t_jets->Branch("d_jet_phi",&d_jet_phi,"d_jet_phi[i_jet_all_nb]/D" );
00781     t_jets->Branch("d_jet_e",&d_jet_e,"d_jet_e[i_jet_all_nb]/D" );
00782     t_jets->Branch("i_jet_flavor",&i_jet_flavor,"i_jet_flavor[i_jet_all_nb]/I" );
00783     t_jets->Branch("mcnlo_weight",&mcnlo_weight,"mcnlo_weight/D" );
00784 
00785 
00786     /* Truth Histograms */
00787     m_truth_mass_lt= new TH1F("truth_mass_lt", "TRUTH INVARIANT MASS (LEPTON,TAUJET)", 100, 0, 500);
00788     m_truth_mass_bt = new TH1F("truth_mass_bt", "TRUTH INVARIANT MASS(BJET(-),TAUJET)", 100, 0, 500);
00789     m_truth_delta_phi_bt = new TH1F("truth_delta_phi_bt", "TRUTH DELTA PHI(BJET,TAUJET)", 40, -3, 3);
00790     m_delphi_bt_higgsRestframe = new TH1F("delphi_bt_higgsRestframe","",40,-3,3);
00791     m_delphi_bt_tauRestframe = new TH1F("delphi_bt_tauRestframe","",40,-3,3);
00792     m_truth_delta_phi_bbart = new TH1F("truth_delta_phi_bbart", "TRUTH DELTA PHI(BBARJET,TAUJET)", 
00793             40, -3, 3);
00794     m_truth_delta_phi_bbarl = new TH1F("truth_delta_phi_bbarl", "TRUTH DELTA PHI(BBARJET,LEPTON)", 
00795             40, -3, 3);
00796     m_truth_delta_phi_bl = new TH1F("truth_delta_phi_bl", "TRUTH DELTA PHI(BJET,LEPTON)", 40, -3,3);
00797     h_tr_delphi_bb = new TH1F("truth_delphi_bb","TRUTH DELTA PHI BB",40,-3,3);
00798     h_weights = new TH1F("weights","weights",5,-2,2);
00799 
00800     h_costheta_fake=new TH1F("costheta_tb_fake","",1000,-20,20);
00801     h_costheta_match=new TH1F("costheta_tb_match","",1000,-20,20);
00802 
00803     m_c_truth_pt = new TH1F("c_truth_pt", "TRUTH C JETS PT (GeV)", 100, 0, 200);
00804     m_c_truth_eta = new TH1F("c_truth_eta", "TRUTH C JETS ETA ", 60, -3, 3);
00805     m_c_truth_phi = new TH1F("c_truth_phi", "TRUTH C JETS PHI ", 70, -3.5, 3.5);
00806     return;
00807 }
00808 
00809 
00810 //*****************************************************************************
00811 
00812 //:::::::::::::::::::::::::::::
00813 //:: METHOD select_electrons ::
00814 //:::::::::::::::::::::::::::::
00815 
00816 std::vector<MyParticle*> MyCHiggsAnalysis::select_electrons( 
00817         std::vector<MyParticle*> electron_vector, int cone,
00818         double cutvalue_iso, int m_value_isem_flag_ele, int flag) {
00819     std::vector<MyParticle*> selected_electrons(0);
00820     for (unsigned int k=0; k<electron_vector.size(); k++) {
00821         if (electron_vector[k]->type()=="truth_particle") {
00822             if(((MyTruthParticle*)electron_vector[k])->status() == 1 ) 
00823                 selected_electrons.push_back( electron_vector[k] );
00824         }
00825         else {
00826             if (flag==-1) 
00827                 selected_electrons.push_back(electron_vector[k]);
00828             if (flag==0) 
00829                 if((((MyElectron*)electron_vector[k])->Et_in_cone(cone))<cutvalue_iso &&
00830                         (((MyElectron*)electron_vector[k])->is_em() & m_value_isem_flag_ele)==0)
00831                     selected_electrons.push_back(electron_vector[k]);
00832             if (flag==1) 
00833                 if((((MyElectron*)electron_vector[k])->trackIsolationEnergy(cone))<cutvalue_iso &&
00834                         (((MyElectron*)electron_vector[k])->is_em() & m_value_isem_flag_ele)==0)
00835                     selected_electrons.push_back(electron_vector[k]);
00836         }
00837     }
00838     return selected_electrons;
00839 }
00840 std::vector<MyParticle*> MyCHiggsAnalysis::select_electrons(std::vector<MyParticle*>
00841         electron_vector) {
00842     return select_electrons(electron_vector,-1,-1,-1,-1);
00843 }
00844 
00845 //*****************************************************************************
00846 
00847 //:::::::::::::::::::::::::
00848 //:: METHOD select_muons ::
00849 //:::::::::::::::::::::::::
00850 
00851 std::vector<MyParticle*> MyCHiggsAnalysis::select_muons( 
00852         std::vector<MyParticle*> muon_vector, int cone, double
00853         cutvalue_etincone, int rec_flag  ){
00854     std::vector<MyParticle*> selected_muons(0);
00855     for (unsigned int k=0; k<muon_vector.size(); k++) {
00856         if (muon_vector[k]->type()=="truth_particle") {
00857             if( ((MyTruthParticle*)muon_vector[k])->status() == 1 ) selected_muons.push_back( muon_vector[k] );
00858         }
00859         else{
00860             if (rec_flag==0) { 
00861                 if((((MyMuon*)muon_vector[k])->Et_in_cone(cone))<cutvalue_etincone)
00862                     selected_muons.push_back(muon_vector[k]);
00863             }
00864             if (rec_flag==1){
00865                 if((((MyMuon*)muon_vector[k])->Et_in_cone(cone))<cutvalue_etincone &&
00866                         (((MyMuon*)muon_vector[k])->reconstruction_flag()==1 ||
00867                          ((MyMuon*)muon_vector[k])->reconstruction_flag()==3 ))
00868                     selected_muons.push_back(muon_vector[k]);
00869             }
00870             if (rec_flag==2){
00871                 if(((MyMuon*)muon_vector[k])->Et_in_cone(cone)<cutvalue_etincone &&
00872                         ((MyMuon*)muon_vector[k])->reconstruction_flag()==1)
00873                     selected_muons.push_back(muon_vector[k]);
00874             }
00875             if (rec_flag==3){
00876                 if(((MyMuon*)muon_vector[k])->Et_in_cone(cone)<cutvalue_etincone &&
00877                         (((MyMuon*)muon_vector[k])->reconstruction_flag()==1 ||
00878                          ((MyMuon*)muon_vector[k])->reconstruction_flag()==2 ))
00879                     selected_muons.push_back(muon_vector[k]);
00880             }
00881             if (rec_flag==-1) { 
00882                 selected_muons.push_back(muon_vector[k]);
00883             }
00884         }
00885     }
00886     return selected_muons;
00887 }
00888 
00889 std::vector<MyParticle*> MyCHiggsAnalysis::select_muons(std::vector<MyParticle*> muon_vector) {
00890     return select_muons(muon_vector,-1,-1,-1);   
00891 }
00892 
00893 //*****************************************************************************
00894 
00895 //::::::::::::::::::::::::::
00896 //:: METHOD select_b_jets ::
00897 //::::::::::::::::::::::::::
00898 
00899 std::vector<MyParticle*> MyCHiggsAnalysis::select_b_jets( std::vector<MyParticle*>
00900         b_jets_vector){
00901     std::vector<MyParticle*> selected_b_jets(0);
00902     for (unsigned int k=0; k<b_jets_vector.size(); k++) {
00903         if (b_jets_vector[k]->type()=="truth_particle") {
00904             if (generator=="Pythia" && ((MyTruthParticle*)b_jets_vector[k])->status()==3 ) 
00905                 selected_b_jets.push_back( b_jets_vector[k] );
00906             if (generator=="McAtNlo" || generator=="Herwig"|| generator=="Alpgen")
00907                 selected_b_jets.push_back( b_jets_vector[k] );
00908         }       
00909     }
00910     return selected_b_jets;
00911 }
00912 //*****************************************************************************
00913 
00914 //::::::::::::::::::::::::
00915 //:: METHOD select_taus ::
00916 //::::::::::::::::::::::::
00917 
00918 std::vector<MyParticle*> MyCHiggsAnalysis::select_taus( 
00919         std::vector<MyParticle*> tau_vector, double cutvalue_tau_llh ){
00920     std::vector<MyParticle*> selected_taus(0);
00921     for (unsigned int k=0; k<tau_vector.size(); k++) {
00922         if (tau_vector[k]->type()=="truth_particle") {
00923             if (generator=="Pythia")
00924                 if (((MyTruthParticle*)tau_vector[k])->status()==2 )
00925                     selected_taus.push_back( tau_vector[k] );
00926             if (generator=="McAtNlo" || generator=="Herwig"|| generator=="Alpgen")      
00927                 if (((MyTruthParticle*)tau_vector[k])->status()==195 ) selected_taus.push_back( tau_vector[k] );
00928         }
00929         else if(((MyTauJet*)tau_vector[k])->llh() > cutvalue_tau_llh &&
00930                 TMath::Abs(tau_vector[k]->charge())==1) selected_taus.push_back( tau_vector[k] );
00931     }
00932     return selected_taus;
00933 }
00934 //*****************************************************************************
00935 
00936 //:::::::::::::::::::::::::::
00937 //:: METHOD get_jet_charge ::
00938 //:::::::::::::::::::::::::::
00939 
00940 double MyCHiggsAnalysis::get_jet_charge(MyParticleJet* myJet) {
00941     double charge=-1111;
00942     double charge_track=0;
00943     double charge_weighted=0;
00944     double trackpt_sum=0;
00945     TVector3 mom_track;
00946     int nb_tracks = myJet->nb_tracks();
00947     TVector3 mom_jet=myJet->tlv().Vect();
00948     for (int i=0;i<nb_tracks;i++) {
00949         mom_track=myJet->tracks_tlv(i).Vect();
00950         charge_track=myJet->tracks_charge(i);
00951         charge_weighted  += sqrt(mom_track * mom_jet) * charge_track;
00952         trackpt_sum      += sqrt(mom_track * mom_jet);
00953     }
00954     charge = charge_weighted/trackpt_sum;
00955     if (charge==-1111) cerr << "FIXME: charge couldn't be set! <<endl" << endl;
00956     return charge;
00957 }
00958 //*****************************************************************************
00959 
00960 //::::::::::::::::::::
00961 //:: METHOD get_llh ::
00962 //::::::::::::::::::::
00963 
00964 double MyCHiggsAnalysis::get_llh(double d_value, TFile* f_file, char* c_histo) {
00965     TH1F* h_histo = ((TH1F*)f_file->Get(c_histo)); 
00966     double pdf_value = h_histo->GetBinContent(h_histo->FindBin(d_value));       
00967     return pdf_value;
00968 }
00969 
00970 //*****************************************************************************
00971 
00972 //::::::::::::::::::::::::::
00973 //:: METHOD analyse_event ::
00974 //::::::::::::::::::::::::::
00975 
00976 
00977 void MyCHiggsAnalysis::analyse_event(const MyEvent & event) {
00978 
00979     /*-----------------------------------------------------------------------------
00980      *  VARIABLES AND OBJECTS
00981      *-----------------------------------------------------------------------------*/
00982     MyTruthParticleManager truth_manager = MyTruthParticleManager(event.truth_particles());
00983     if (generator=="unknown") generator="Alpgen";
00984     truth_manager.set_generator(generator);     
00985     mcnlo_weight=event.event_weight();
00986     i_nb_event=event.event_number();
00987     for (unsigned int i=0;i<50;i++) {
00988         d_jet_weight[i]=0;
00989         d_jet_pt[i]=0;
00990         d_jet_eta[i]=0;
00991         d_jet_phi[i]=0;
00992         d_jet_e[i]=0;
00993         i_jet_flavor[i]=0;
00994     }
00995     /*-----------------------------------------------------------------------------
00996      *  GET TRUTH ELECTRONS
00997      *-----------------------------------------------------------------------------*/
00998     vector<MyParticle*> truth_electrons(0);
00999     vector<MyParticle*> truth_electrons_from_b(0);
01000     vector<MyParticle*> tmp_truth_electrons = truth_manager.getParticles_with_ID(11);
01001     for (unsigned int k=0; k<tmp_truth_electrons.size(); k++){
01002         if (truth_manager.get_mother((MyTruthParticle*)tmp_truth_electrons[k])!=NULL ) {
01003             MyTruthParticle* mother1=truth_manager.get_mother((MyTruthParticle*)tmp_truth_electrons[k]);
01004             m_e_mother_id->Fill(mother1->pdgId(),mcnlo_weight);
01005             if (TMath::Abs(mother1->pdgId()) < 38) truth_electrons.push_back(tmp_truth_electrons[k]);
01006             else truth_electrons_from_b.push_back(tmp_truth_electrons[k]);
01007         }
01008     }
01009     vector<MyParticle*> tr_ele = select_electrons(truth_electrons);
01010     vector<MyParticle*> presel_tr_ele = 
01011         m_tools.pt_eta_cut(select_electrons(truth_electrons),10,-1,-2.5,2.5);
01012     vector<MyParticle*> tr_ele_noisol = select_electrons(truth_electrons_from_b);
01013     i_tr_ele_noisol+=tr_ele_noisol.size();
01014     i_tr_ele+=presel_tr_ele.size();
01015     i_tr_ele_all+=tr_ele.size();
01016     /*-----------------------------------------------------------------------------
01017      *  GET TRUTH MUONS
01018      *-----------------------------------------------------------------------------*/
01019     vector<MyParticle*> truth_muons(0);
01020     vector<MyParticle*> truth_muons_from_b(0);
01021     vector<MyParticle*> tmp_truth_muons = truth_manager.getParticles_with_ID(13);
01022     for (unsigned int k=0; k<tmp_truth_muons.size(); k++){
01023         if (truth_manager.get_mother((MyTruthParticle*)tmp_truth_muons[k])!=NULL){ 
01024             MyTruthParticle* mother1=truth_manager.get_mother((MyTruthParticle*)tmp_truth_muons[k]);
01025             m_m_mother_id->Fill(TMath::Abs(mother1->pdgId()),mcnlo_weight);     
01026             if (TMath::Abs(mother1->pdgId()) < 38 ) truth_muons.push_back(tmp_truth_muons[k]);
01027             else truth_muons_from_b.push_back(tmp_truth_muons[k]);
01028         }
01029     }
01030     vector<MyParticle*> tr_mu = select_muons(truth_muons);
01031     vector<MyParticle*> presel_tr_mu =
01032         m_tools.pt_eta_cut(select_muons(truth_muons),10,-1,-1*m_cutvalue_eta_muon,m_cutvalue_eta_muon);
01033     vector<MyParticle*> tr_mu_noisol = select_muons(truth_muons_from_b);
01034     i_tr_mu_all+=tr_mu.size();
01035     i_tr_mu+=presel_tr_mu.size();
01036     /*-----------------------------------------------------------------------------
01037      *  GET TRUTH LEPTONS
01038      *-----------------------------------------------------------------------------*/
01039     vector<MyParticle*> presel_tr_leptons=m_tools.append_vector(presel_tr_ele,presel_tr_mu);
01040     vector<MyParticle*> tr_leptons=m_tools.append_vector(tr_ele,tr_mu);
01041 
01042     /*-----------------------------------------------------------------------------
01043      *  GET (VISIBLE) TRUTH TAUS
01044      *-----------------------------------------------------------------------------*/
01045     vector<MyParticle*> tr_tau_vis(0);
01046     vector<MyParticle*> presel_tr_tau_vis(0);
01047     vector<MyParticle*> truth_taus(0);
01048     vector<MyParticle*> tmp_truth_taus = truth_manager.getParticles_with_ID(15);
01049     for (unsigned int k=0; k<tmp_truth_taus.size(); k++){
01050         if (truth_manager.get_mother((MyTruthParticle*)tmp_truth_taus[k])!=NULL ){
01051             MyTruthParticle *mother1=truth_manager.get_mother((MyTruthParticle*)tmp_truth_taus[k]);
01052             m_t_mother_id->Fill(TMath::Abs(mother1->pdgId()),mcnlo_weight);     
01053             if (TMath::Abs(mother1->pdgId()) < 38 ) {
01054                 truth_taus.push_back(tmp_truth_taus[k]);
01055             }
01056         }
01057     }
01058     vector<MyParticle*> presel_tr_tau = select_taus(truth_taus); 
01059     MyParticle* tmp_tau;
01060     for (unsigned int k=0; k<presel_tr_tau.size(); k++) {
01061         int n_e=0;
01062         int n_m=0;
01063         int n_t=0;
01064         int n_nu_e=0;
01065         int n_nu_m=0;
01066         int n_nu_t=0;
01067         int n_had=0;
01068         TLorentzVector nu_t_tlv, nu_e_tlv, nu_m_tlv;
01069         nu_e_tlv.SetPxPyPzE(0,0,0,0);
01070         nu_m_tlv.SetPxPyPzE(0,0,0,0);
01071         nu_t_tlv.SetPxPyPzE(0,0,0,0);
01072         vector<MyTruthParticle*> tmp_t_truth_children = truth_manager.get_children((MyTruthParticle*)presel_tr_tau[k]);
01073         for (unsigned int kk=0; kk<tmp_t_truth_children.size();kk++) {
01074             m_t_truth_children_id->Fill(tmp_t_truth_children[kk]->pdgId(),mcnlo_weight);
01075             if (TMath::Abs(tmp_t_truth_children[kk]->pdgId())==11 ) n_e++;
01076             if (TMath::Abs(tmp_t_truth_children[kk]->pdgId())==13 ) n_m++;
01077             if (TMath::Abs(tmp_t_truth_children[kk]->pdgId())==15 )     n_t++;
01078             if (TMath::Abs(tmp_t_truth_children[kk]->pdgId())==12 ){
01079                 n_nu_e++;
01080                 nu_e_tlv=tmp_t_truth_children[kk]->tlv();
01081             }
01082             if (TMath::Abs(tmp_t_truth_children[kk]->pdgId())==14) {
01083                 n_nu_m++;
01084                 nu_m_tlv=tmp_t_truth_children[kk]->tlv();
01085             }                   
01086             if (TMath::Abs(tmp_t_truth_children[kk]->pdgId())==16){
01087                 n_nu_t++;
01088                 nu_t_tlv=tmp_t_truth_children[kk]->tlv();
01089             }
01090             if (TMath::Abs(tmp_t_truth_children[kk]->pdgId())>100 || 
01091                     TMath::Abs(tmp_t_truth_children[kk]->pdgId())==24)   
01092                 n_had++;
01093         }
01094         if (n_e==1&& n_nu_e==1 && n_nu_t==1) m_t_truth_decay->Fill(11,mcnlo_weight);
01095         else if (n_m==1&& n_nu_m==1 && n_nu_t==1)  m_t_truth_decay->Fill(13,mcnlo_weight);
01096         else if (n_had>0&& n_nu_t==1) m_t_truth_decay->Fill(100,mcnlo_weight);
01097         else m_t_truth_decay->Fill(0.0,mcnlo_weight);
01098         if (n_t>0) m_t_truth_decay->Fill(15,mcnlo_weight); 
01099         if (n_nu_e == 0 && n_nu_m==0 && n_nu_t==1) { 
01100             TLorentzVector test;
01101             tmp_tau=((MyTauJet*)presel_tr_tau[k])->Clone();
01102             v_garbage.push_back(tmp_tau);
01103             test=(presel_tr_tau[k]->tlv()-nu_t_tlv);
01104             tmp_tau->set_tlv(test);
01105             tr_tau_vis.push_back(tmp_tau);
01106             tau_nu_ratio->Fill(nu_t_tlv.Pt()/presel_tr_tau[k]->tlv().Pt(),mcnlo_weight);
01107         }
01108     }
01109     presel_tr_tau_vis = m_tools.pt_eta_cut(tr_tau_vis,20,-1,-2.5,2.5);
01110     i_tr_tau_all_nb+=tmp_truth_taus.size();
01111     i_tr_tau_id1_nb+=truth_taus.size();
01112     i_tr_tau_id2_nb+=presel_tr_tau.size();
01113     i_tr_tau_nb+=presel_tr_tau_vis.size();
01114     /*-----------------------------------------------------------------------------
01115      *  GET TRUTH QUARKS (B, LIGHT AND ALL)
01116      *-----------------------------------------------------------------------------*/
01117     vector<MyParticle*> truth_bs(0);
01118     vector<MyParticle*> tmp_truth_bs = truth_manager.getParticles_with_ID(5);
01119     for (unsigned int k=0; k<tmp_truth_bs.size(); k++){
01120         if (truth_manager.get_mother((MyTruthParticle*)tmp_truth_bs[k])!=NULL &&
01121                 TMath::Abs(truth_manager.get_mother((MyTruthParticle*)tmp_truth_bs[k])->pdgId())==6 ){
01122             truth_bs.push_back(tmp_truth_bs[k]);
01123         }
01124     }
01125     vector<MyParticle*> presel_tr_b = m_tools.pt_eta_cut(select_b_jets(truth_bs),20,-1,-2.5,2.5);
01126     vector<MyParticle*> tr_b = select_b_jets(truth_bs);
01127     presel_tr_b = m_tools.sort_particles(presel_tr_b);
01128     vector<MyParticle*> tr_light_quarks(0);
01129     vector<MyParticle*> tr_c(0);
01130 
01131     vector<MyParticle*> tmp_truth_ws = truth_manager.getParticles_with_ID(24);
01132     for (unsigned int j=0;j<tmp_truth_ws.size();j++) {
01133         vector<MyTruthParticle*> ws_children = truth_manager.get_children((MyTruthParticle*)tmp_truth_ws[j]);
01134         for (unsigned int i=0;i<ws_children.size();i++) {
01135             if (TMath::Abs(ws_children[i]->pdgId())<5) tr_light_quarks.push_back(ws_children[i]);
01136             if (TMath::Abs(ws_children[i]->pdgId())==4)  
01137                 tr_c.push_back(ws_children[i]);
01138         }
01139     }
01140     vector<MyParticle*> presel_tr_quarks = m_tools.append_vector(tr_light_quarks, presel_tr_b);
01141     vector<MyParticle*> presel_tr_c = m_tools.pt_eta_cut(tr_c,20,-1,-5,5);
01142     presel_tr_quarks = m_tools.append_vector(presel_tr_quarks, presel_tr_tau_vis);
01143     i_tr_b_all_nb+=tmp_truth_bs.size();
01144     i_tr_b_id1_nb+=truth_bs.size();
01145     i_tr_b_id2_nb+=tr_b.size();
01146     i_tr_b_nb+=presel_tr_b.size();
01147 
01148     /*-----------------------------------------------------------------------------
01149      *  GET TRUTH JETS
01150      *-----------------------------------------------------------------------------*/
01151     //    vector<MyParticle*> tr_jets_nocuts =
01152     //        m_tools.pt_eta_cut(event.truth_jets(),1,-1,-10,10);
01153     vector<MyParticle*> tr_jets = m_tools.remove_overlap( event.truth_jets(), tr_ele, 0.25);
01154     tr_jets = m_tools.remove_overlap(tr_jets, tr_mu, 0.25);
01155     vector<MyParticle*> tr_jets_notau = m_tools.remove_overlap(tr_jets,
01156             tr_tau_vis, 0.25);
01157     vector<MyParticle*> tr_lj = m_tools.remove_overlap(tr_jets_notau,
01158             tr_b, 0.25);
01159     vector<MyParticle*> presel_tr_jets_notau = m_tools.pt_eta_cut(tr_jets_notau,20,-1,-5,5);
01160     vector<MyParticle*> presel_tr_jets = m_tools.pt_eta_cut(tr_jets,20,-1,-5,5);
01161     vector<MyParticle*> presel_tr_lj = m_tools.pt_eta_cut(tr_jets,20,-1,-5,5);
01162     i_tr_jet_all_nb+=event.truth_jets().size();
01163     i_tr_jet_ov_nb+=tr_jets.size();
01164     i_tr_jet_nb+=presel_tr_jets.size();
01165     /*-----------------------------------------------------------------------------
01166      *  GET TRUTH HIGGS
01167      *-----------------------------------------------------------------------------*/
01168     vector<MyParticle*> tmp = truth_manager.getParticles_with_ID(37);
01169     MyParticle* tr_chiggs;
01170     for (unsigned int i=0;i<tmp.size();i++){
01171         if (((MyTruthParticle*)tmp[i])->status() == 3) {tr_chiggs=tmp[i];
01172         }}
01173 
01174     /*-----------------------------------------------------------------------------
01175      *  GET RECONSTRUCTED MISSING ET
01176      *-----------------------------------------------------------------------------*/
01177     TLorentzVector v_missing_et;
01178     if (!atlfast) {
01179         m_missinget=event.met_manager().get_missinget("MET_RefFinal");
01180         m_trigger_met_ef=event.met_manager().get_missinget("MET_trigger_ef");
01181     }
01182     else m_missinget=event.met_manager().get_missinget("AtlfastMissingEt");
01183 
01184     /*-----------------------------------------------------------------------------
01185      *  GET RECONSTRUCTED MUONS
01186      *-----------------------------------------------------------------------------*/
01187     vector<MyParticle*> presel_re_mu_good_nocuts(0);
01188     vector<MyParticle*> presel_re_mu_nocuts(0);
01189     vector<MyParticle*> presel_re_mu_isem_nocuts(0);
01190     vector<MyParticle*> presel_re_mu_good(0);
01191     vector<MyParticle*> presel_re_mu(0);
01192     vector<MyParticle*> re_mu_nocuts(0);
01193     vector<MyParticle*> atlfast_mu(0);
01194     vector<MyParticle*> atlfast_mu_nocuts(0);
01195     if (!atlfast) {
01196         re_mu_nocuts = event.reco_muons("staco");
01197         presel_re_mu_isem_nocuts =
01198             select_muons(re_mu_nocuts,m_value_cone_muon,100000,m_value_rec_flag_muon);
01199         presel_re_mu_nocuts =
01200             select_muons(re_mu_nocuts,m_value_cone_muon,m_cutvalue_etincone_muon,
01201                     m_value_rec_flag_muon);
01202         presel_re_mu_good_nocuts=m_tools.delete_doubles(presel_re_mu_nocuts);// only for good!
01203         if (b_doSmearing_Muon||b_doScaling_minus_Muon||b_doScaling_plus_Muon||b_doKillEvents_Muon)
01204             m_systematics->apply_syst(&presel_re_mu_good_nocuts,&m_missinget,b_doSmearing_Muon,b_doScaling_minus_Muon,b_doScaling_plus_Muon,b_doKillEvents_Muon,0);
01205         presel_re_mu =
01206             m_tools.pt_eta_cut(re_mu_nocuts,10,-1,-1*m_cutvalue_eta_muon,m_cutvalue_eta_muon);
01207         presel_re_mu_good =
01208             m_tools.pt_eta_cut(presel_re_mu_good_nocuts,10,-1,-1*m_cutvalue_eta_muon,m_cutvalue_eta_muon);
01209         presel_re_mu = m_tools.sort_particles(presel_re_mu);
01210         presel_re_mu_good = m_tools.sort_particles(presel_re_mu_good);
01211         i_mu_all_nb+=event.reco_muons().size();
01212         i_mu_iso_nb+=presel_re_mu_nocuts.size();
01213         i_mu_ov_nb+=presel_re_mu_good_nocuts.size();
01214         i_mu_nb+=presel_re_mu_good.size();
01215     }
01216     else {
01217         atlfast_mu_nocuts = event.reco_muons("atlfast");
01218         atlfast_mu =
01219             m_tools.pt_eta_cut(atlfast_mu_nocuts,10,-1,-1*m_cutvalue_eta_muon,m_cutvalue_eta_muon);
01220         atlfast_mu = m_tools.sort_particles(atlfast_mu);
01221         i_mu_nb+=atlfast_mu.size();
01222     }
01223     /*-----------------------------------------------------------------------------
01224      *  GET RECONSTRUCTED ELECTRONS
01225      *-----------------------------------------------------------------------------*/
01226     vector<MyParticle*> re_ele_nocuts(0);
01227     vector<MyParticle*> presel_re_ele(0);
01228     vector<MyParticle*> presel_re_ele_good(0);
01229     vector<MyParticle*> presel_re_ele_good_nocuts(0);
01230     vector<MyParticle*> presel_re_ele_trackiso(0);
01231     vector<MyParticle*> presel_re_ele_trackiso_nocuts(0);
01232     vector<MyParticle*> presel_re_ele_isem_nocuts(0);
01233     vector<MyParticle*> atlfast_ele(0);
01234     vector<MyParticle*> atlfast_ele_nocuts(0);
01235     if (!atlfast) {
01236         re_ele_nocuts = event.reco_electrons();
01237         re_ele_nocuts = m_tools.remove_overlap(re_ele_nocuts,presel_re_mu_good_nocuts,0.1);
01238         presel_re_ele_isem_nocuts =
01239             select_electrons(re_ele_nocuts, m_value_cone_ele,100000,m_value_isem_flag_ele,0);
01240         i_ele_isem_nb+=presel_re_ele_isem_nocuts.size();
01241         presel_re_ele_isem_nocuts=m_tools.delete_doubles(presel_re_ele_isem_nocuts); 
01242         i_ele_dd_nb+=presel_re_ele_isem_nocuts.size();//change this
01243         if (b_doSmearing_Ele||b_doScaling_minus_EGamma||b_doScaling_plus_EGamma||b_doKillEvents_Ele)
01244             m_systematics->apply_syst(&presel_re_ele_isem_nocuts,&m_missinget,b_doSmearing_Ele,b_doScaling_minus_EGamma,b_doScaling_plus_EGamma,b_doKillEvents_Ele,0);
01245         presel_re_ele_good_nocuts =
01246             select_electrons(presel_re_ele_isem_nocuts, 
01247                     m_value_cone_ele,m_cutvalue_etincone_ele,m_value_isem_flag_ele,0);
01248         presel_re_ele_trackiso_nocuts =
01249             select_electrons(presel_re_ele_isem_nocuts,
01250                     m_value_cone_ele,m_cutvalue_trackiso_ele,m_value_isem_flag_ele,1);
01251         i_ele_iso_nb+=presel_re_ele_trackiso_nocuts.size();
01252         presel_re_ele = m_tools.pt_eta_cut(re_ele_nocuts,10,-1,-1*m_cutvalue_eta_ele,m_cutvalue_eta_ele);
01253         presel_re_ele_good =
01254             m_tools.pt_eta_cut(presel_re_ele_good_nocuts,10,-1,-1*m_cutvalue_eta_ele,m_cutvalue_eta_ele);
01255         presel_re_ele_trackiso =
01256             m_tools.pt_eta_cut(presel_re_ele_trackiso_nocuts,10,-1,-1*m_cutvalue_eta_ele,m_cutvalue_eta_ele);
01257         presel_re_ele_good=m_tools.sort_particles(presel_re_ele_good);
01258         i_ele_all_nb+=event.reco_electrons().size();
01259         i_ele_ov_nb+=re_ele_nocuts.size();
01260         i_ele_nb+=presel_re_ele_trackiso.size();
01261     }
01262     else {
01263         atlfast_ele_nocuts = event.reco_electrons();
01264         atlfast_ele = m_tools.pt_eta_cut(re_ele_nocuts,10,-1,-1*m_cutvalue_eta_ele,m_cutvalue_eta_ele);
01265         atlfast_ele = m_tools.sort_particles(atlfast_ele);
01266         i_ele_nb+=atlfast_ele.size();
01267 
01268     }
01269 
01270     /*-----------------------------------------------------------------------------
01271      *  GET RECONSTRUCTED PHOTONS
01272      *-----------------------------------------------------------------------------*/
01273     vector<MyParticle*> re_pho_nocuts(0);
01274     vector<MyParticle*> presel_re_pho_nocuts(0);
01275     if (!atlfast) {
01276         re_pho_nocuts = event.reco_photons();
01277         for (unsigned int i=0;i<re_pho_nocuts.size();i++) {
01278             if (((MyPhoton*)re_pho_nocuts[i])->is_em()==0) {
01279                 presel_re_pho_nocuts.push_back(re_pho_nocuts[i]);
01280             }
01281         }
01282         presel_re_pho_nocuts=m_tools.delete_doubles(presel_re_pho_nocuts); 
01283         presel_re_pho_nocuts=m_tools.remove_overlap(presel_re_pho_nocuts,presel_re_mu_good_nocuts,0.1);
01284         presel_re_pho_nocuts=m_tools.remove_overlap(presel_re_pho_nocuts,presel_re_ele_trackiso_nocuts,0.1);
01285     }
01286     if (b_doSmearing_Gamma||b_doScaling_minus_EGamma||b_doScaling_plus_EGamma)
01287         m_systematics->apply_syst(&presel_re_pho_nocuts,&m_missinget,b_doSmearing_Gamma,b_doScaling_minus_EGamma,b_doScaling_plus_EGamma,0,0);
01288     /*-----------------------------------------------------------------------------
01289      *  GET RECONSTRUCTED LEPTONS
01290      *-----------------------------------------------------------------------------*/
01291     vector<MyParticle*> presel_leptons(0);
01292     if (!atlfast) {
01293         presel_leptons = m_tools.append_vector(presel_re_ele_trackiso,presel_re_mu_good);
01294     }
01295     else {
01296         presel_leptons = m_tools.append_vector(atlfast_ele,atlfast_mu);
01297     }
01298     presel_leptons = m_tools.sort_particles(presel_leptons);
01299 
01300     /*-----------------------------------------------------------------------------
01301      *  GET RECONSTRUCTED TAUJETS
01302      *-----------------------------------------------------------------------------*/
01303     vector<MyParticle*> presel_re_tau_nocuts(0);
01304     vector<MyParticle*> presel_re_tau_good_nocuts(0);
01305     vector<MyParticle*> presel_re_tau_good(0);
01306     vector<MyParticle*> v_allTauJets(0);
01307     vector<MyParticle*> v_allTauJets_tmp(0);
01308     if (!atlfast) {
01309         v_allTauJets_tmp = event.reco_taujets();
01310         MyTauJet *tmp_tau2;
01311         for (unsigned int k=0;k<v_allTauJets_tmp.size();k++) {
01312             tmp_tau2=((MyTauJet*)v_allTauJets_tmp[k])->Clone();
01313             v_garbage.push_back(tmp_tau2);
01314             TLorentzVector tau_tlv_corr;
01315             if (((MyTauJet*)v_allTauJets_tmp[k])->tlv_corr().E()>0) {
01316                 tau_tlv_corr=(((MyTauJet*)v_allTauJets_tmp[k])->tlv_corr());
01317                 tmp_tau2->set_tlv(tau_tlv_corr);
01318                 v_allTauJets.push_back(tmp_tau2);
01319             }
01320         }
01321         presel_re_tau_nocuts = 
01322             m_tools.remove_overlap(v_allTauJets, presel_re_mu_good_nocuts,0.25);
01323         presel_re_tau_nocuts = m_tools.remove_overlap(presel_re_tau_nocuts, presel_re_ele_isem_nocuts,0.25);
01324         i_tau_ov_nb+=presel_re_tau_nocuts.size();
01325         presel_re_tau_nocuts = select_taus(presel_re_tau_nocuts,m_cutvalue_tau_llh);
01326         for (unsigned int i=0; i<presel_re_tau_nocuts.size(); i++) {
01327             double ethadcalib = ((MyTauJet*)presel_re_tau_nocuts[i])->ethadcalib();
01328             double track_pt_1 = ((MyTauJet*)presel_re_tau_nocuts[i])->track_1().Pt();
01329             double track_pt_2 = ((MyTauJet*)presel_re_tau_nocuts[i])->track_2().Pt();
01330             double track_pt_3 = ((MyTauJet*)presel_re_tau_nocuts[i])->track_3().Pt();
01331             m_t_track_pt_1->Fill(track_pt_1,mcnlo_weight);
01332             m_t_track_pt_2->Fill(track_pt_2,mcnlo_weight);
01333             m_t_track_pt_3->Fill(track_pt_3,mcnlo_weight);
01334             m_t_ratio->Fill(ethadcalib/track_pt_1,mcnlo_weight);
01335             if (ethadcalib/track_pt_1>0.1) presel_re_tau_good_nocuts.push_back(presel_re_tau_nocuts[i]); 
01336         }
01337         if (b_doSmearing_Tau||b_doScaling_minus_Tau||b_doScaling_plus_Tau||b_doKillEvents_Tau)
01338             m_systematics->apply_syst(&presel_re_tau_good_nocuts,&m_missinget,b_doSmearing_Tau,b_doScaling_minus_Tau,b_doScaling_plus_Tau,b_doKillEvents_Tau,0);
01339         presel_re_tau_good = m_tools.pt_eta_cut(presel_re_tau_good_nocuts,20,-1,-2.5,2.5);
01340         presel_re_tau_good=m_tools.sort_particles(presel_re_tau_good);
01341         i_tau_all_nb+=v_allTauJets.size();
01342         i_tau_id_nb+=presel_re_tau_good_nocuts.size();
01343         i_tau_nb+=presel_re_tau_good.size();
01344     }
01345     else {
01346         vector<MyParticle*> atlfast_tau = event.reco_taujets();
01347     }
01348     /*-----------------------------------------------------------------------------
01349      *  GET RECONSTRUCTED JETS  
01350      *-----------------------------------------------------------------------------*/
01351     vector<MyParticle*> tmp_presel_re_jets_nocuts = event.reco_jets();
01352     for (unsigned int i=0;i<tmp_presel_re_jets_nocuts.size();i++)
01353         tmp_presel_re_jets_nocuts=m_tools.remove_overlap(tmp_presel_re_jets_nocuts, presel_re_mu_good_nocuts,0.25);
01354     tmp_presel_re_jets_nocuts=m_tools.remove_overlap(tmp_presel_re_jets_nocuts,
01355             presel_re_ele_trackiso_nocuts,0.25);
01356     vector<MyParticle*> presel_re_jets_notau_nocuts = m_tools.remove_overlap(tmp_presel_re_jets_nocuts, presel_re_tau_good_nocuts,0.25);
01357     //scale b-tag of light jets according to a 70% lower rejection
01358     m_tools.scale_b_tags(&presel_re_jets_notau_nocuts,0,d_btag_add_light_70);
01359     if (b_doSmearing_Jet||b_doScaling_minus_Jet||b_doScaling_plus_Jet)
01360         m_systematics->apply_syst(&presel_re_jets_notau_nocuts,&m_missinget,b_doSmearing_Jet,b_doScaling_minus_Jet,b_doScaling_plus_Jet,0,0);
01361     vector<MyParticle*> presel_re_jets_notau=m_tools.pt_eta_cut(presel_re_jets_notau_nocuts,20,-1,-5,5);
01362     vector<MyParticle*> presel_re_jets_nocuts=m_tools.append_vector(presel_re_jets_notau_nocuts, presel_re_tau_good_nocuts);
01363     vector<MyParticle*> presel_re_jets=m_tools.pt_eta_cut(presel_re_jets_nocuts,20,-1,-5,5);
01364     presel_re_jets=m_tools.sort_particles(presel_re_jets);
01365     i_jets_all_nb+=event.reco_jets().size();
01366     i_jets_ov_nb+=presel_re_jets_notau_nocuts.size();
01367     i_jets_nb+=presel_re_jets.size();
01368 
01370     // VARIABLES FOR JET TREE //
01372     if (b_doJetTree) {
01373         i_jet_all_nb=presel_re_jets_notau_nocuts.size();
01374         for (unsigned int i=0;i<presel_re_jets_notau_nocuts.size();i++) {
01375             if (i<50) {
01376                 d_jet_pt[i]=presel_re_jets_notau_nocuts[i]->tlv().Pt();
01377                 d_jet_eta[i]=presel_re_jets_notau_nocuts[i]->tlv().Eta();
01378                 d_jet_phi[i]=presel_re_jets_notau_nocuts[i]->tlv().Phi();
01379                 d_jet_e[i]=presel_re_jets_notau_nocuts[i]->tlv().E();
01380                 d_jet_weight[i]=((MyParticleJet*)presel_re_jets_notau_nocuts[i])->b_tag_weight();
01381                 i_jet_flavor[i]=((MyParticleJet*)presel_re_jets_notau_nocuts[i])->truth_flavour();
01382             }
01383             else cerr<<"WARNING: jet arrays too small, max_index="<<presel_re_jets_notau_nocuts.size()<<endl; 
01384         }
01385         t_jets->Fill();
01386         //return;
01387     }
01388     /*-----------------------------------------------------------------------------
01389      *  GET RECONTRUCTED B AND LIGHT JETS
01390      *-----------------------------------------------------------------------------*/
01391     vector<MyParticle*> v_matched_bJets(0);
01392     vector<MyParticle*> v_matched_bJets_to_c(0);
01393     vector<MyParticle*> v_not_matched_bJets(0);
01394     vector <MyParticle*> presel_re_b_nocuts(0);
01395 
01396 
01397     if (b_doBtag) {
01398         m_tools.scale_b_tags(&presel_re_jets_notau_nocuts,5,d_btag_b_eff);
01399     }
01400     if (b_doLightRej60) {
01401         m_tools.scale_b_tags(&presel_re_jets_notau_nocuts,0,d_btag_add_light_60-d_btag_add_light_70);
01402         m_tools.scale_b_tags(&presel_re_jets_notau_nocuts,4,d_btag_c_eff_105);
01403     }
01404     if (b_doLightRej80) {
01405         m_tools.scale_b_tags(&presel_re_jets_notau_nocuts,0,d_btag_add_light_80-d_btag_add_light_70);
01406         m_tools.scale_b_tags(&presel_re_jets_notau_nocuts,4,d_btag_c_eff_95);
01407     }
01408     for (unsigned int i=0; i<presel_re_jets_notau_nocuts.size(); i++){
01409         if(((MyParticleJet*)presel_re_jets_notau_nocuts[i])->b_tag_weight()>m_cutvalue_b_tag_weight)
01410             presel_re_b_nocuts.push_back(presel_re_jets_notau_nocuts[i]);       
01411     }
01412     MyParticle* tmp_b = NULL; 
01413     if (b_doBtag_old) {
01414         m_tools.clear_vector(tr_b);
01415         for (unsigned int k=0; k<presel_re_b_nocuts.size(); k++) {
01416             tmp_b = m_tools.find_matching_particle( presel_re_b_nocuts[k],
01417                     tr_b,0.25 );
01418             if(tmp_b!=NULL){ 
01419                 v_matched_bJets.push_back(presel_re_b_nocuts[k]);
01420             }
01421             else v_not_matched_bJets.push_back(presel_re_b_nocuts[k]);
01422         }
01423         for (unsigned int k=0; k<presel_re_b_nocuts.size(); k++) {
01424             tmp_b = m_tools.find_matching_particle( presel_re_b_nocuts[k],
01425                     tr_c,0.25 );
01426             if(tmp_b!=NULL){ 
01427                 v_matched_bJets_to_c.push_back(presel_re_b_nocuts[k]);
01428             }
01429         }
01430         m_systematics->apply_syst(&v_matched_bJets,&m_missinget,0,0,0,0,b_doBtag_old);
01431         presel_re_b_nocuts.clear();
01432         presel_re_b_nocuts=m_tools.append_vector(v_matched_bJets,v_not_matched_bJets);
01433         presel_re_b_nocuts=m_tools.append_vector(presel_re_b_nocuts,v_matched_bJets_to_c);
01434     }
01435     vector<MyParticle*>
01436         presel_re_light_nocuts=m_tools.remove_overlap(presel_re_jets_notau_nocuts,presel_re_b_nocuts,0.25);
01437     vector<MyParticle*> presel_re_b=m_tools.pt_eta_cut(presel_re_b_nocuts,20,-1,-2.5,2.5);
01438     vector<MyParticle*> presel_re_jets_light=m_tools.pt_eta_cut(presel_re_light_nocuts,20,-1,-5,5);
01439     presel_re_b=m_tools.sort_particles(presel_re_b);
01440     presel_re_jets_light=m_tools.sort_particles(presel_re_jets_light);
01441     i_bjets_id_nb+=presel_re_b_nocuts.size();
01442     i_bjets_nb+=presel_re_b.size();
01443     i_light_all_nb+=presel_re_jets_light.size();
01444     i_bjets_matched+=v_matched_bJets.size();
01445 
01446     /*-----------------------------------------------------------------------------
01447      *  FILL ETMISS VARIABLES
01448      *-----------------------------------------------------------------------------*/
01449     d_missing_etx=m_missinget.met_x();
01450     d_missing_ety=m_missinget.met_y();
01451     cuts_missinget=m_missinget.met();
01452     d_etmiss=m_missinget.met();
01453     v_missing_et=m_missinget.tlv(); 
01454     /*-----------------------------------------------------------------------------
01455      *  FILL HISTOGRAMS (RECONSTRUCTED PARTICLES)
01456      *-----------------------------------------------------------------------------*/
01457 
01459     //WEIGHTS//
01461     m_mcnlo_weight->Fill(mcnlo_weight,1.0);
01462     if (!atlfast) {
01464         //ALL ELECTRONS//
01466         for (unsigned int k=0; k<presel_re_ele_isem_nocuts.size(); k++) {
01467             if (TMath::Abs(presel_re_ele_isem_nocuts[k]->tlv().Eta())<2.5)
01468                 m_e_all_pt->Fill(presel_re_ele_isem_nocuts[k]->tlv().Pt(), mcnlo_weight);
01469             if (presel_re_ele_isem_nocuts[k]->tlv().Pt()>10)
01470                 m_e_all_eta->Fill(presel_re_ele_isem_nocuts[k]->tlv().Eta(), mcnlo_weight);  
01471             if (presel_re_ele_isem_nocuts[k]->tlv().Pt()>10 &&
01472                     TMath::Abs(presel_re_ele_isem_nocuts[k]->tlv().Eta())<2.5)
01473                 m_e_all_phi->Fill(presel_re_ele_isem_nocuts[k]->tlv().Phi(), mcnlo_weight);  
01474         }       
01475         m_e_nb->Fill(presel_re_ele.size(), mcnlo_weight);
01476 
01478         //GOOD ELECTRONS//
01480         for (unsigned int k=0; k<presel_re_ele_good_nocuts.size(); k++) {
01481             if (TMath::Abs(presel_re_ele_good_nocuts[k]->tlv().Eta())<2.5)
01482                 m_e_good_pt->Fill(presel_re_ele_good_nocuts[k]->tlv().Pt(), mcnlo_weight);
01483             if (presel_re_ele_good_nocuts[k]->tlv().Pt()>10)
01484                 m_e_good_eta->Fill(presel_re_ele_good_nocuts[k]->tlv().Eta(), mcnlo_weight);  
01485             if (presel_re_ele_good_nocuts[k]->tlv().Pt()>10 &&
01486                     TMath::Abs(presel_re_ele_good_nocuts[k]->tlv().Eta())<2.5)
01487                 m_e_good_phi->Fill(presel_re_ele_good_nocuts[k]->tlv().Phi(), mcnlo_weight);  
01488         }       
01489         i_e_nb=presel_re_ele_good.size();
01490         m_e_good_nb->Fill(presel_re_ele_good.size(), mcnlo_weight);
01491 
01493         //RECONSTRUCTED MUONS//
01495         for (unsigned int k=0; k<presel_re_mu_nocuts.size(); k++) {
01496             if (TMath::Abs(presel_re_mu_nocuts[k]->tlv().Eta())<2.7)
01497                 m_m_pt->Fill(presel_re_mu_nocuts[k]->tlv().Pt(), mcnlo_weight);
01498             if (presel_re_mu_nocuts[k]->tlv().Pt()>10)
01499                 m_m_eta->Fill(presel_re_mu_nocuts[k]->tlv().Eta(), mcnlo_weight);
01500             if (presel_re_mu_nocuts[k]->tlv().Pt()>10 &&
01501                     TMath::Abs(presel_re_mu_nocuts[k]->tlv().Eta())<2.7)
01502                 m_m_phi->Fill(presel_re_mu_nocuts[k]->tlv().Phi(), mcnlo_weight);
01503         }
01504         m_m_nb->Fill(presel_re_mu.size(), mcnlo_weight);
01505 
01507         //GOOD MUONS//
01509         for (unsigned int k=0; k<presel_re_mu_good_nocuts.size(); k++) {
01510             if (TMath::Abs(presel_re_mu_good_nocuts[k]->tlv().Eta())<2.7)
01511                 m_m_good_pt->Fill(presel_re_mu_good_nocuts[k]->tlv().Pt(), mcnlo_weight);
01512             if (presel_re_mu_good_nocuts[k]->tlv().Pt()>10)
01513                 m_m_good_eta->Fill(presel_re_mu_good_nocuts[k]->tlv().Eta(), mcnlo_weight);
01514             if (presel_re_mu_good_nocuts[k]->tlv().Pt()>10 &&
01515                     TMath::Abs(presel_re_mu_good_nocuts[k]->tlv().Eta())<2.7)
01516                 m_m_good_phi->Fill(presel_re_mu_good_nocuts[k]->tlv().Phi(), mcnlo_weight);
01517         }
01518         i_m_nb=presel_re_mu_good.size();
01519         m_m_good_nb->Fill(presel_re_mu_good.size(), mcnlo_weight);
01520 
01522         //RECONSTRUCTED TAUJETS//
01524         for (unsigned int i=0; i<presel_re_tau_good_nocuts.size(); i++) {
01525             if (TMath::Abs(presel_re_tau_good_nocuts[i]->tlv().Eta())<2.5)
01526                 m_t_pt->Fill(presel_re_tau_good_nocuts[i]->tlv().Pt(), mcnlo_weight);
01527             if ((presel_re_tau_good_nocuts[i]->tlv().Pt())>20)
01528                 m_t_eta->Fill(presel_re_tau_good_nocuts[i]->tlv().Eta(), mcnlo_weight);
01529             if (presel_re_tau_good_nocuts[i]->tlv().Pt()>20 &&
01530                     TMath::Abs(presel_re_tau_good_nocuts[i]->tlv().Eta())<2.5) {
01531                 m_t_charge->Fill(presel_re_tau_good_nocuts[i]->charge(),mcnlo_weight);
01532                 m_t_ethadcalib->Fill(((MyTauJet*)presel_re_tau_good_nocuts[i])->ethadcalib(),mcnlo_weight);
01533                 m_t_etemcalib->Fill(((MyTauJet*)presel_re_tau_good_nocuts[i])->etemcalib(),mcnlo_weight);
01534                 m_t_llh->Fill(((MyTauJet*)presel_re_tau_good_nocuts[i])->llh(), mcnlo_weight);
01535                 m_t_phi->Fill(presel_re_tau_good_nocuts[i]->tlv().Phi(), mcnlo_weight);
01536                 m_t_et->Fill(presel_re_tau_good_nocuts[i]->tlv().Et(), mcnlo_weight);
01537             }
01538         }
01539         m_t_nb->Fill(presel_re_tau_good.size(),mcnlo_weight); 
01540 
01542         //RECONSTRUCTED JETS//
01544         for (unsigned int k=0; k<presel_re_jets.size(); k++) {
01545             m_jet_pt->Fill(presel_re_jets[k]->tlv().Pt(), mcnlo_weight);
01546             m_jet_et->Fill(presel_re_jets[k]->tlv().Et(), mcnlo_weight);
01547             m_jet_eta->Fill(presel_re_jets[k]->tlv().Eta(), mcnlo_weight);
01548             m_jet_phi->Fill(presel_re_jets[k]->tlv().Phi(), mcnlo_weight);
01549         }
01550         i_jet_nb=presel_re_jets.size();
01551         m_jet_nb->Fill(presel_re_jets.size(), mcnlo_weight);
01552         for (unsigned int k=0; k<presel_re_jets_notau.size(); k++) {
01553             m_b_llh->Fill(((MyParticleJet*)presel_re_jets_notau[k])->b_tag_weight(), mcnlo_weight);
01554         }
01556         //RECONSTRUCTED B JETS//
01558         for (unsigned int k=0; k<presel_re_b_nocuts.size(); k++) {
01559             if (TMath::Abs(presel_re_b_nocuts[k]->tlv().Eta())<2.5)
01560                 m_b_pt->Fill(presel_re_b_nocuts[k]->tlv().Pt(), mcnlo_weight);
01561             if ((presel_re_b_nocuts[k]->tlv().Pt())>20)
01562                 m_b_eta->Fill(presel_re_b_nocuts[k]->tlv().Eta(), mcnlo_weight);
01563             if (presel_re_b_nocuts[k]->tlv().Pt()>20 &&
01564                     TMath::Abs(presel_re_b_nocuts[k]->tlv().Eta())<2.5) {
01565                 m_b_phi->Fill(presel_re_b_nocuts[k]->tlv().Phi(), mcnlo_weight);
01566                 m_b_energy->Fill(presel_re_b_nocuts[k]->tlv()[3], mcnlo_weight);
01567             }
01568         }
01569         i_b_nb=presel_re_b.size();
01570         i_b_all_nb+=presel_re_b.size();
01571         m_b_nb->Fill(presel_re_b.size(),mcnlo_weight);
01572     }
01573     else {
01574         for (unsigned int k=0; k<atlfast_ele_nocuts.size(); k++) {
01575             if (TMath::Abs(atlfast_ele_nocuts[k]->tlv().Eta())<2.5)
01576                 m_e_good_pt->Fill(atlfast_ele_nocuts[k]->tlv().Pt(), mcnlo_weight);
01577             if (atlfast_ele_nocuts[k]->tlv().Pt()>10)
01578                 m_e_good_eta->Fill(atlfast_ele_nocuts[k]->tlv().Eta(), mcnlo_weight);  
01579             if (atlfast_ele_nocuts[k]->tlv().Pt()>10 &&
01580                     TMath::Abs(atlfast_ele_nocuts[k]->tlv().Eta())<2.5)
01581                 m_e_good_phi->Fill(atlfast_ele_nocuts[k]->tlv().Phi(), mcnlo_weight);  
01582         }       
01583         i_e_nb=atlfast_ele.size();
01584         m_e_good_nb->Fill(atlfast_ele.size(), mcnlo_weight);
01585     }
01587     //MISSING ET//
01589     m_missing_etx->Fill(m_missinget.met_x(),mcnlo_weight);
01590     m_missing_ety->Fill(m_missinget.met_y(),mcnlo_weight);
01591     m_missing_et->Fill(m_missinget.met(),mcnlo_weight);
01592     m_missing_et_sum->Fill(m_missinget.met_sum(),mcnlo_weight);
01593     h_trigger_met_ef->Fill(m_trigger_met_ef.met(),mcnlo_weight); 
01594 
01595     /*-----------------------------------------------------------------------------
01596      *  FILL HISTOGRAMS (TRUTH PARTICLES)
01597      *-----------------------------------------------------------------------------*/
01598 
01600     //ELECTRONS//
01602     for (unsigned int k=0; k<tr_ele.size(); k++) {
01603         if (TMath::Abs(tr_ele[k]->tlv().Eta())<2.5)
01604             m_e_truth_pt->Fill(tr_ele[k]->tlv().Pt(),mcnlo_weight );
01605         if (tr_ele[k]->tlv().Pt()>10)
01606             m_e_truth_eta->Fill(tr_ele[k]->tlv().Eta(),mcnlo_weight );
01607         if (TMath::Abs(tr_ele[k]->tlv().Eta())<2.5&&tr_ele[k]->tlv().Pt()>10)
01608             m_e_truth_phi->Fill(tr_ele[k]->tlv().Phi(),mcnlo_weight );
01609     }  
01610     m_e_truth_nb->Fill(presel_tr_ele.size(), mcnlo_weight);
01611 
01613     //MUONS//
01615     for (unsigned int k=0; k<tr_mu.size(); k++) {
01616         if (TMath::Abs(tr_mu[k]->tlv().Eta())<2.5)
01617             m_m_truth_pt->Fill(tr_mu[k]->tlv().Pt(),mcnlo_weight );
01618         if (tr_mu[k]->tlv().Pt()>10)
01619             m_m_truth_eta->Fill(tr_mu[k]->tlv().Eta(),mcnlo_weight );
01620         if (TMath::Abs(tr_mu[k]->tlv().Eta())<2.5&&tr_mu[k]->tlv().Pt()>10)
01621             m_m_truth_phi->Fill(tr_mu[k]->tlv().Phi(),mcnlo_weight );
01622     }
01623     m_m_truth_nb->Fill(presel_tr_mu.size(), mcnlo_weight);
01624 
01626     //B QUARKS//
01628     for (unsigned int k=0; k<tr_b.size(); k++) {
01629 //        if (TMath::Abs(tr_b[k]->tlv().Eta())<2.5)
01630             if (tr_b[k]->pdgId()==5) m_b_neg_truth_pt->Fill(tr_b[k]->tlv().Pt(),mcnlo_weight );
01631             else if (tr_b[k]->pdgId()==-5) m_b_pos_truth_pt->Fill(tr_b[k]->tlv().Pt(),mcnlo_weight );
01632             else cerr <<"Strange bquark selection"<<endl;
01633         if (tr_b[k]->tlv().Pt()>20)
01634             m_b_truth_eta->Fill(tr_b[k]->tlv().Eta(),mcnlo_weight );
01635         if (TMath::Abs(tr_b[k]->tlv().Eta())<2.5&&tr_b[k]->tlv().Pt()>20)
01636             m_b_truth_phi->Fill(tr_b[k]->tlv().Phi(),mcnlo_weight );
01637     }
01638     m_b_truth_nb->Fill(presel_tr_b.size(), mcnlo_weight);
01639 
01641     //C QUARKS//
01643     for (unsigned int k=0; k<presel_tr_c.size(); k++) {
01644         m_c_truth_pt->Fill(presel_tr_c[k]->tlv().Pt(),mcnlo_weight );
01645         m_c_truth_eta->Fill(presel_tr_c[k]->tlv().Eta(),mcnlo_weight );
01646         m_c_truth_phi->Fill(presel_tr_c[k]->tlv().Phi(),mcnlo_weight );
01647     }
01648 
01650     //TAUJETS//
01652     for (unsigned int k=0;k<presel_tr_tau_vis.size();k++){
01653         m_t_truth_pt->Fill(presel_tr_tau_vis[k]->tlv().Pt(),mcnlo_weight); 
01654         m_t_truth_eta->Fill(presel_tr_tau_vis[k]->tlv().Eta(),mcnlo_weight); 
01655         m_t_truth_phi->Fill(presel_tr_tau_vis[k]->tlv().Phi(),mcnlo_weight); 
01656     }
01657     m_t_truth_nb->Fill(presel_tr_tau_vis.size(), mcnlo_weight); 
01658 
01660     //JETS//
01662     for (unsigned int k=0; k<tr_lj.size(); k++) {
01663         if (TMath::Abs(tr_lj[k]->tlv().Eta())<2.5)
01664             m_lj_truth_pt->Fill(tr_lj[k]->tlv().Pt(),mcnlo_weight );
01665         if (tr_lj[k]->tlv().Pt()>20)
01666             m_lj_truth_eta->Fill(tr_lj[k]->tlv().Eta(),mcnlo_weight );
01667         if (TMath::Abs(tr_lj[k]->tlv().Eta())<2.5&&tr_lj[k]->tlv().Pt()>20)
01668             m_lj_truth_phi->Fill(tr_lj[k]->tlv().Phi(),mcnlo_weight );
01669     }
01670     m_jet_truth_nb->Fill(tr_jets.size(), mcnlo_weight); 
01671 
01672 
01674     //MISSING ENERGY//
01676     d_truth_missing_etx=event.met_manager().get_missinget("TruthMET_NonInt").met_x();
01677     d_truth_missing_ety=event.met_manager().get_missinget("TruthMET_NonInt").met_y();
01678     m_truth_missing_etx->Fill(event.met_manager().get_missinget("TruthMET_NonInt").met_x(),mcnlo_weight);
01679     m_truth_missing_ety->Fill(event.met_manager().get_missinget("TruthMET_NonInt").met_y(),mcnlo_weight);
01680     m_truth_missing_et->Fill(event.met_manager().get_missinget("TruthMET_NonInt").met(),mcnlo_weight);
01681 
01682     /*-----------------------------------------------------------------------------
01683      *  PARTICLE MATCHING 
01684      *-----------------------------------------------------------------------------*/
01685 
01686     /* matching electrons */
01687     m_tools.clear_vector(presel_re_ele_good_nocuts);
01688     vector<MyParticle*> v_matched_leptons(0);
01689     for (unsigned int k=0; k<tr_ele.size(); k++) {
01690         MyParticle* tmp_electron; 
01691         tmp_electron = m_tools.find_matching_particle(tr_ele[k],
01692                 presel_re_ele_good_nocuts,0.1);
01693         if(tmp_electron!=NULL){ 
01694             if (tmp_electron->charge()==tr_ele[k]->charge()) 
01695                 v_matched_leptons.push_back(tmp_electron);
01696             if (TMath::Abs(tr_ele[k]->tlv().Eta())<m_cutvalue_eta_ele) 
01697                 m_e_matched_tr_pt->Fill(tr_ele[k]->tlv().Pt(),mcnlo_weight);
01698             if (tr_ele[k]->tlv().Pt()>10) 
01699                 m_e_matched_tr_eta->Fill(tr_ele[k]->tlv().Eta(),mcnlo_weight);
01700             if (TMath::Abs(tr_ele[k]->tlv().Eta())<m_cutvalue_eta_ele && 
01701                     tr_ele[k]->tlv().Pt()>10) 
01702                 m_e_matched_tr_phi->Fill(tr_ele[k]->tlv().Phi(),mcnlo_weight);
01703         }
01704     }
01705     m_tools.clear_vector(presel_re_ele_trackiso_nocuts);
01706     for (unsigned int k=0; k<tr_ele.size(); k++) {
01707         MyParticle* tmp_electron; 
01708         tmp_electron = m_tools.find_matching_particle(tr_ele[k],
01709                 presel_re_ele_trackiso_nocuts,0.1);
01710         if(tmp_electron!=NULL){ 
01711             if (TMath::Abs(tr_ele[k]->tlv().Eta())<m_cutvalue_eta_ele) 
01712                 m_e_matched_tr_trackiso_pt->Fill(tr_ele[k]->tlv().Pt(),mcnlo_weight);
01713             if (tr_ele[k]->tlv().Pt()>10) 
01714                 m_e_matched_tr_trackiso_eta->Fill(tr_ele[k]->tlv().Eta(),mcnlo_weight);
01715             if (TMath::Abs(tr_ele[k]->tlv().Eta())<m_cutvalue_eta_ele && 
01716                     tr_ele[k]->tlv().Pt()>10) 
01717                 m_e_matched_tr_trackiso_phi->Fill(tr_ele[k]->tlv().Phi(),mcnlo_weight);
01718             m_e_res_ratio_eta->Fill((tmp_electron->tlv().Eta()-
01719                         tr_ele[k]->tlv().Eta())/
01720                     tr_ele[k]->tlv().Eta(),mcnlo_weight ); 
01721             m_e_res_ratio_phi->Fill((tmp_electron->tlv().Phi()-
01722                         tr_ele[k]->tlv().Phi())/
01723                     tr_ele[k]->tlv().Phi(),mcnlo_weight ); 
01724             m_e_res_ratio_energy->Fill(((tmp_electron->tlv()[3]-
01725                             tr_ele[k]->tlv()[3]))/
01726                     tr_ele[k]->tlv()[3],mcnlo_weight);
01727             m_e_res_ratio_pt->Fill(((tmp_electron->tlv().Pt()-
01728                             tr_ele[k]->tlv().Pt())/
01729                         tr_ele[k]->tlv().Pt()),mcnlo_weight);
01730             m_e_res_profile_pt->Fill(tmp_electron->tlv().Pt(),
01731                     fabs((tmp_electron->tlv().Pt()-tr_ele[k]->tlv().Pt())/
01732                         tr_ele[k]->tlv().Pt()),mcnlo_weight);
01733             m_e_res_profile_eta->Fill(tmp_electron->tlv().Pt(),
01734                     fabs((tmp_electron->tlv().Eta()-tr_ele[k]->tlv().Eta())/
01735                         tr_ele[k]->tlv().Eta()),mcnlo_weight);
01736             m_e_res_profile_phi->Fill(tmp_electron->tlv().Pt(),
01737                     fabs((tmp_electron->tlv().Phi()-tr_ele[k]->tlv().Phi())/
01738                         tr_ele[k]->tlv().Phi()),mcnlo_weight);
01739         }
01740     }
01741     m_tools.clear_vector(presel_re_ele_isem_nocuts);
01742     for (unsigned int k=0; k<tr_ele.size(); k++) {
01743         MyParticle* tmp_electron; 
01744         tmp_electron = m_tools.find_matching_particle(tr_ele[k],
01745                 presel_re_ele_isem_nocuts,0.1);
01746         if(tmp_electron!=NULL){ 
01747             if (TMath::Abs(tr_ele[k]->tlv().Eta())<m_cutvalue_eta_ele) 
01748                 m_e_all_matched_tr_pt->Fill(tr_ele[k]->tlv().Pt(),mcnlo_weight);
01749             if (tr_ele[k]->tlv().Pt()>10) 
01750                 m_e_all_matched_tr_eta->Fill(tr_ele[k]->tlv().Eta(),mcnlo_weight);
01751             if (TMath::Abs(tr_ele[k]->tlv().Eta())<m_cutvalue_eta_ele && 
01752                     tr_ele[k]->tlv().Pt()>10) 
01753                 m_e_all_matched_tr_phi->Fill(tr_ele[k]->tlv().Phi() ,mcnlo_weight);
01754             m_e_isol_et_in_cone_0->Fill(((MyElectron*)tmp_electron)->Et_in_cone(0),mcnlo_weight);
01755             m_e_isol_et_in_cone_1->Fill(((MyElectron*)tmp_electron)->Et_in_cone(1),mcnlo_weight);
01756             m_e_isol_et_in_cone_2->Fill(((MyElectron*)tmp_electron)->Et_in_cone(2),mcnlo_weight);
01757             m_e_isol_et_in_cone_3->Fill(((MyElectron*)tmp_electron)->Et_in_cone(3),mcnlo_weight);
01758             m_e_isol_trackIsolationEnergy_0->Fill(
01759                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(0),mcnlo_weight);
01760             m_e_isol_trackIsolationEnergy_1->Fill(
01761                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(1),mcnlo_weight);
01762             m_e_isol_trackIsolationEnergy_2->Fill(
01763                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(2),mcnlo_weight);
01764             m_e_isol_trackIsolationEnergy_3->Fill(
01765                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(3),mcnlo_weight);
01766         }
01767     }
01768     m_tools.clear_vector(presel_re_ele_isem_nocuts);
01769 
01770     for (unsigned int k=0; k<tr_ele_noisol.size(); k++) {
01771         MyParticle* tmp_electron; 
01772         tmp_electron = m_tools.find_matching_particle(tr_ele_noisol[k],
01773                 presel_re_ele_isem_nocuts,0.1);
01774         if(tmp_electron!=NULL){ 
01775             i_ele_match_noisol++;
01776             m_e_noisol_et_in_cone_0->Fill(((MyElectron*)tmp_electron)->Et_in_cone(0),mcnlo_weight);
01777             m_e_noisol_et_in_cone_1->Fill(((MyElectron*)tmp_electron)->Et_in_cone(1),mcnlo_weight);
01778             m_e_noisol_et_in_cone_2->Fill(((MyElectron*)tmp_electron)->Et_in_cone(2),mcnlo_weight);
01779             m_e_noisol_et_in_cone_3->Fill(((MyElectron*)tmp_electron)->Et_in_cone(3),mcnlo_weight);
01780             m_e_noisol_trackIsolationEnergy_0->Fill(
01781                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(0),mcnlo_weight);
01782             m_e_noisol_trackIsolationEnergy_1->Fill(
01783                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(1),mcnlo_weight);
01784             m_e_noisol_trackIsolationEnergy_2->Fill(
01785                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(2),mcnlo_weight);
01786             m_e_noisol_trackIsolationEnergy_3->Fill(
01787                     ((MyElectron*)tmp_electron)->trackIsolationEnergy(3),mcnlo_weight);
01788         }
01789     }
01790     /* matching muons */
01791     m_tools.clear_vector(presel_re_mu_good);
01792     for (unsigned int k=0; k<tr_mu.size(); k++) {
01793         MyParticle* tmp_muon = NULL; 
01794         tmp_muon = m_tools.find_matching_particle(tr_mu[k],
01795                 presel_re_mu_good_nocuts,0.1 );
01796         if(tmp_muon!=NULL){ 
01797             if (tmp_muon->charge()==tr_mu[k]->charge()) {
01798                 v_matched_leptons.push_back(tmp_muon);
01799             }
01800             if (((MyMuon*)tmp_muon)->reconstruction_flag()==1) {
01801                 if (TMath::Abs(tr_mu[k]->tlv().Eta())<2.5) 
01802                     h_m_matched_tr_com_pt->Fill(tr_mu[k]->tlv().Pt() ,mcnlo_weight);
01803                 if (tr_mu[k]->tlv().Pt()>10)
01804                     h_m_matched_tr_com_eta->Fill(tr_mu[k]->tlv().Eta() ,mcnlo_weight);
01805                 if (TMath::Abs(tr_mu[k]->tlv().Eta())<2.5 && 
01806                         tr_mu[k]->tlv().Pt()>10) 
01807                     h_m_matched_tr_com_phi->Fill(tr_mu[k]->tlv().Phi() ,mcnlo_weight);
01808             }
01809             if (((MyMuon*)tmp_muon)->reconstruction_flag()==2) {
01810                 if (TMath::Abs(tr_mu[k]->tlv().Eta())<2.7) 
01811                     h_m_matched_tr_st_pt->Fill(tr_mu[k]->tlv().Pt() ,mcnlo_weight);
01812                 if (tr_mu[k]->tlv().Pt()>10)
01813                     h_m_matched_tr_st_eta->Fill(tr_mu[k]->tlv().Eta() ,mcnlo_weight);
01814                 if (TMath::Abs(tr_mu[k]->tlv().Eta())<2.7 && 
01815                         tr_mu[k]->tlv().Pt()>10) 
01816                     h_m_matched_tr_st_phi->Fill(tr_mu[k]->tlv().Phi() ,mcnlo_weight);
01817             }
01818             if (TMath::Abs(tr_mu[k]->tlv().Eta())<2.7 && 
01819                     tr_mu[k]->tlv().Pt()>10) {
01820                 m_m_res_ratio_pt->Fill((tmp_muon->tlv().Pt()-tr_mu[k]->tlv().Pt())/
01821                         tr_mu[k]->tlv().Pt(),mcnlo_weight);
01822                 m_m_res_ratio_eta->Fill((tmp_muon->tlv().Eta()-tr_mu[k]->tlv().Eta())/
01823                         tr_mu[k]->tlv().Eta(),mcnlo_weight);
01824                 m_m_res_ratio_phi->Fill((tmp_muon->tlv().Phi()-tr_mu[k]->tlv().Phi())/
01825                         tr_mu[k]->tlv().Phi(),mcnlo_weight);
01826                 m_m_res_ratio_energy->Fill((tmp_muon->tlv()[3]-tr_mu[k]->tlv()[3])/
01827                         tr_mu[k]->tlv()[3],mcnlo_weight);
01828                 m_m_res_profile_pt->Fill(tmp_muon->tlv().Pt(),
01829                         fabs((tmp_muon->tlv().Pt()-tr_mu[k]->tlv().Pt())/
01830                             tr_mu[k]->tlv().Pt()),mcnlo_weight);
01831                 m_m_res_profile_eta->Fill(tmp_muon->tlv().Pt(),
01832                         fabs((tmp_muon->tlv().Eta()-tr_mu[k]->tlv().Eta())/
01833                             tr_mu[k]->tlv().Eta()),mcnlo_weight);
01834                 m_m_res_profile_phi->Fill(tmp_muon->tlv().Pt(),
01835                         fabs((tmp_muon->tlv().Phi()-tr_mu[k]->tlv().Phi())/
01836                             tr_mu[k]->tlv().Phi()),mcnlo_weight);
01837             }
01838         }
01839     }
01840     v_matched_leptons=m_tools.sort_particles(v_matched_leptons);
01841 
01842     m_tools.clear_vector(presel_re_mu_isem_nocuts);
01843     for (unsigned int k=0; k<tr_mu.size(); k++) {
01844         MyParticle* tmp_muon; 
01845         tmp_muon = m_tools.find_matching_particle(tr_mu[k],
01846                 presel_re_mu_isem_nocuts,0.1);
01847         if(tmp_muon!=NULL){ 
01848             m_m_isol_et_in_cone_0->Fill(((MyMuon*)tmp_muon)->Et_in_cone(0),mcnlo_weight);
01849             m_m_isol_et_in_cone_1->Fill(((MyMuon*)tmp_muon)->Et_in_cone(1),mcnlo_weight);
01850             m_m_isol_et_in_cone_2->Fill(((MyMuon*)tmp_muon)->Et_in_cone(2),mcnlo_weight);
01851             m_m_isol_et_in_cone_3->Fill(((MyMuon*)tmp_muon)->Et_in_cone(3),mcnlo_weight);
01852             m_m_isol_et_in_cone_4->Fill(((MyMuon*)tmp_muon)->Et_in_cone(4),mcnlo_weight);
01853             m_m_isol_et_in_cone_5->Fill(((MyMuon*)tmp_muon)->Et_in_cone(5),mcnlo_weight);
01854             m_m_isol_et_in_cone_6->Fill(((MyMuon*)tmp_muon)->Et_in_cone(6),mcnlo_weight);
01855             m_m_isol_et_in_cone_7->Fill(((MyMuon*)tmp_muon)->Et_in_cone(7),mcnlo_weight);
01856             m_m_isol_trackIsolationEnergy_0->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(0),mcnlo_weight);
01857             m_m_isol_trackIsolationEnergy_1->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(1),mcnlo_weight);
01858             m_m_isol_trackIsolationEnergy_2->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(2),mcnlo_weight);
01859             m_m_isol_trackIsolationEnergy_3->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(3),mcnlo_weight);
01860             m_m_isol_trackIsolationEnergy_4->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(4),mcnlo_weight);
01861             m_m_isol_trackIsolationEnergy_5->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(5),mcnlo_weight);
01862             m_m_isol_trackIsolationEnergy_6->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(6),mcnlo_weight);
01863             m_m_isol_trackIsolationEnergy_7->Fill(((MyMuon*)tmp_muon)->trackIsolationEnergy(7),mcnlo_weight);
01864         }
01865     }
01866     m_tools.clear_vector(presel_re_mu_isem_nocuts);
01867 
01868     for (unsigned int k=0; k<tr_mu_noisol.size(); k++) {
01869         MyParticle* tmp_muon; 
01870         tmp_muon = m_tools.find_matching_particle(tr_mu_noisol[k],
01871                 presel_re_mu_isem_nocuts,0.1);
01872         if(tmp_muon!=NULL){ 
01873         }
01874     }
01875     /* matching Tau Jets */
01876     vector<MyParticle*> v_matched_taujets(0);
01877     m_tools.clear_vector(presel_re_tau_good_nocuts);
01878     for (unsigned int k=0; k<tr_tau_vis.size(); k++) {
01879         MyParticle* tmp_tau; 
01880         tmp_tau = m_tools.find_matching_particle(tr_tau_vis[k],
01881                 presel_re_tau_good_nocuts,0.25 );
01882         if(tmp_tau!=NULL){ 
01883             if (tmp_tau->charge()==tr_tau_vis[k]->charge()) 
01884                 v_matched_taujets.push_back(tmp_tau);
01885             if (TMath::Abs(tr_tau_vis[k]->tlv().Eta())<2.5) 
01886                 m_t_matched_truth_pt->Fill(tr_tau_vis[k]->tlv().Pt(),mcnlo_weight);
01887             if (tr_tau_vis[k]->tlv().Pt()>20) 
01888                 m_t_matched_truth_eta->Fill(tr_tau_vis[k]->tlv().Eta(),mcnlo_weight);
01889             if (TMath::Abs(tr_tau_vis[k]->tlv().Eta())<2.5 && 
01890                     tr_tau_vis[k]->tlv().Pt()>20) { 
01891                 m_t_matched_truth_phi->Fill(tr_tau_vis[k]->tlv().Phi(),mcnlo_weight);
01892                 m_t_matched_re_llh->Fill(((MyTauJet*)tmp_tau)->llh(),mcnlo_weight);
01893                 m_t_matched_re_ratio_pt->Fill(((MyTauJet*)tmp_tau)->ethadcalib()/
01894                         ((MyTauJet*)tmp_tau)->track_1().Pt(),mcnlo_weight);
01895                 m_t_res_ratio_eta->Fill((tmp_tau->tlv().Eta()-tr_tau_vis[k]->tlv().Eta())/
01896                         tr_tau_vis[k]->tlv().Eta(),mcnlo_weight); 
01897                 m_t_res_ratio_phi->Fill((tmp_tau->tlv().Phi()-tr_tau_vis[k]->tlv().Phi())/
01898                         tr_tau_vis[k]->tlv().Phi(),mcnlo_weight); 
01899                 m_t_res_ratio_energy->Fill((tmp_tau->tlv()[3]-tr_tau_vis[k]->tlv()[3])/
01900                         tr_tau_vis[k]->tlv()[3],mcnlo_weight);
01901                 m_t_res_ratio_pt->Fill((tmp_tau->tlv().Pt()-tr_tau_vis[k]->tlv().Pt())/
01902                         tr_tau_vis[k]->tlv().Pt(),mcnlo_weight);
01903                 m_t_res_profile_pt->Fill(tmp_tau->tlv().Pt(),
01904                         fabs((tmp_tau->tlv().Pt()-tr_tau_vis[k]->tlv().Pt())/
01905                             tr_tau_vis[k]->tlv().Pt()),mcnlo_weight);
01906                 m_t_res_profile_eta->Fill(tmp_tau->tlv().Pt(),
01907                         fabs((tmp_tau->tlv().Eta()-tr_tau_vis[k]->tlv().Eta())/
01908                             tr_tau_vis[k]->tlv().Eta()),mcnlo_weight);
01909                 m_t_res_profile_phi->Fill(tmp_tau->tlv().Pt(),
01910                         fabs((tmp_tau->tlv().Phi()-tr_tau_vis[k]->tlv().Phi())/
01911                             tr_tau_vis[k]->tlv().Phi()),mcnlo_weight);
01912             }
01913         }
01914     }
01915     v_matched_taujets=m_tools.sort_particles(v_matched_taujets);
01916 
01917     /* matching Jets */
01918     m_tools.clear_vector(presel_re_jets_notau);
01919     m_tools.clear_vector(tr_jets_notau);
01920     for (unsigned int k=0; k<tr_jets_notau.size(); k++) {
01921         MyParticle* tmp_jet = NULL; 
01922         tmp_jet = m_tools.find_matching_particle(tr_jets_notau[k], presel_re_jets_notau,0.25 );
01923         if(tmp_jet!=NULL){ 
01924             m_jet_matched_truth_pt->Fill(tr_jets_notau[k]->tlv().Pt() ,mcnlo_weight);
01925             if (tmp_jet->tlv().Pt()>20) 
01926                 m_jet_matched_truth_eta->Fill(tr_jets_notau[k]->tlv().Eta() ,mcnlo_weight);
01927             if (tmp_jet->tlv().Pt()>20) 
01928                 m_jet_matched_truth_phi->Fill(tr_jets_notau[k]->tlv().Phi() ,mcnlo_weight);
01929             m_jet_res_profile_pt->Fill(tmp_jet->tlv().Pt(),
01930                     fabs((tmp_jet->tlv().Pt()-tr_jets_notau[k]->tlv().Pt())/
01931                         tr_jets_notau[k]->tlv().Pt()),mcnlo_weight);
01932             m_jet_res_profile_eta->Fill(tmp_jet->tlv().Pt(),
01933                     fabs((tmp_jet->tlv().Eta()-tr_jets_notau[k]->tlv().Eta())/
01934                         tr_jets_notau[k]->tlv().Eta()),mcnlo_weight);
01935             m_jet_res_profile_phi->Fill(tmp_jet->tlv().Pt(),
01936                     fabs((tmp_jet->tlv().Phi()-tr_jets_notau[k]->tlv().Phi())/
01937                         tr_jets_notau[k]->tlv().Phi()),mcnlo_weight);
01938             m_jet_res_ratio_pt->Fill((tmp_jet->tlv().Pt()-tr_jets_notau[k]->tlv().Pt())/
01939                     tr_jets_notau[k]->tlv().Pt(),mcnlo_weight);
01940             m_jet_res_ratio_eta->Fill((tmp_jet->tlv().Eta()-tr_jets_notau[k]->tlv().Eta())/
01941                     tr_jets_notau[k]->tlv().Eta(),mcnlo_weight);
01942             m_jet_res_ratio_phi->Fill((tmp_jet->tlv().Phi()-tr_jets_notau[k]->tlv().Phi())/
01943                     tr_jets_notau[k]->tlv().Phi(),mcnlo_weight);
01944             m_jet_res_ratio_energy->Fill((tmp_jet->tlv()[3]-tr_jets_notau[k]->tlv()[3])/
01945                     tr_jets_notau[k]->tlv()[3],mcnlo_weight);
01946         }
01947     }
01948     /* matching b jets*/
01949     m_tools.clear_vector(tr_b);
01950     m_tools.clear_vector(presel_re_b_nocuts);
01951     for (unsigned int k=0; k<tr_b.size(); k++) {
01952         MyParticle* tmp_b = NULL; 
01953         tmp_b = m_tools.find_matching_particle( tr_b[k],
01954                 presel_re_b_nocuts,0.25 );
01955         if(tmp_b!=NULL){ 
01956             if (TMath::Abs(tr_b[k]->tlv().Eta())<2.5) 
01957                 m_b_matched_truth_pt->Fill(tr_b[k]->tlv().Pt(),mcnlo_weight);
01958             if (tr_b[k]->tlv().Pt()>20) 
01959                 m_b_matched_truth_eta->Fill(tr_b[k]->tlv().Eta(),mcnlo_weight);
01960             if (TMath::Abs(tr_b[k]->tlv().Eta())<2.5 && tr_b[k]->tlv().Pt()>20) {
01961                 m_b_matched_truth_phi->Fill(tr_b[k]->tlv().Phi(),mcnlo_weight);
01962                 m_b_matched_b_llh->Fill(((MyParticleJet*)tmp_b)->b_tag_weight(),mcnlo_weight);
01963                 m_b_res_ratio_pt->Fill((tmp_b->tlv().Pt()-tr_b[k]->tlv().Pt())/
01964                         tr_b[k]->tlv().Pt(),mcnlo_weight);
01965                 m_b_res_ratio_eta->Fill((tmp_b->tlv().Eta()-tr_b[k]->tlv().Eta())/
01966                         tr_b[k]->tlv().Eta(),mcnlo_weight);
01967                 m_b_res_ratio_phi->Fill((tmp_b->tlv().Phi()-tr_b[k]->tlv().Phi())/
01968                         tr_b[k]->tlv().Phi(),mcnlo_weight);
01969             }
01970         }
01971     }
01973     //TRIGGER//
01975     const vector<MyParticle*> * trigger_muon;
01976     trigger_muon=event.trigger_muon();
01977     Bool_t passed_mu40_lvl2=false;
01978     Bool_t passed_mu40_ef=false;
01979 
01980     for (int j=1;j<3;j++){
01981         vector<MyParticle*> test=(trigger_muon)[j];
01982         for (unsigned int i=0;i<test.size();i++){
01983             if (test[i]->tlv().Pt()>39&&j==1) passed_mu40_lvl2=true;  
01984             if (test[i]->tlv().Pt()>40&&j==2&&((MyTriggerMuon*)test[i])->code()>100) passed_mu40_ef=true;  
01985         }
01986     }
01987 
01988 
01989 
01990     MyTrigger m_trigger = event.trigger();
01991 
01992     Bool_t passed_xe20=false;
01993     Bool_t passed_xe30=false;
01994     Bool_t passed_xe40=false;
01995     Bool_t passed_xe50=false;
01996     Bool_t passed_tau15i=false;
01997     Bool_t passed_tau20i=false;
01998     Bool_t passed_tau35i=false;
01999     Bool_t passed_mu20i=false;
02000     Bool_t passed_mu40=false;
02001     Bool_t passed_em25i=false;
02002     Bool_t passed_em60=false;
02003     if (m_trigger.isTriggered("L1_XE20",1)&&m_trigger_met_ef.tlv().Et()>20) passed_xe20=true;
02004     if (m_trigger.isTriggered("L1_XE30",1)&&m_trigger_met_ef.tlv().Et()>30) passed_xe30=true;
02005     if (m_trigger.isTriggered("L1_XE40",1)&&m_trigger_met_ef.tlv().Et()>40) passed_xe40=true;
02006     if (m_trigger.isTriggered("L1_XE50",1)&&m_trigger_met_ef.tlv().Et()>50) passed_xe50=true;
02007     if (m_trigger.isTriggered("L1_TAU15I",1)&&m_trigger.isTriggered("L2_tau15i",2)&&
02008             m_trigger.isTriggered("EF_tau15i",3)) passed_tau15i=true;
02009     if (m_trigger.isTriggered("L1_TAU20I",1)&&m_trigger.isTriggered("L2_tau20i",2)&&
02010             m_trigger.isTriggered("EF_tau20i",3)) passed_tau20i=true;
02011     if (m_trigger.isTriggered("L1_TAU35I",1)&&m_trigger.isTriggered("L2_tau35i",2)&&
02012             m_trigger.isTriggered("EF_tau35i",3)) passed_tau35i=true;
02013     if ((m_trigger.isTriggered("L1_MU20",1)||m_trigger.isTriggered("L1_MU40",1))&&
02014             m_trigger.isTriggered("L2_mu20i",2)&&
02015             m_trigger.isTriggered("EF_mu20i",3)) passed_mu20i=true;
02016     if (m_trigger.isTriggered("L1_EM25I",1)&&m_trigger.isTriggered("L2_e25i",2)&&
02017             m_trigger.isTriggered("EF_e25i",3)) passed_em25i=true;
02018     if (m_trigger.isTriggered("L1_EM60",1)&&m_trigger.isTriggered("L2_e60",2)&&
02019             m_trigger.isTriggered("EF_e60",3)) passed_em60=true;
02020     if (m_trigger.isTriggered("L1_MU40",1)&&passed_mu40_lvl2&&passed_mu40_ef) passed_mu40=true;
02021 
02022     for (unsigned int i=0;i<5;i++) {
02023         b_trigger_ele[i]=false;
02024         b_trigger_mu[i]=false;
02025         b_trigger_tau[i]=false;
02026         b_trigger_lep[i]=false;
02027         b_trigger_and_offline_lep[i]=false;
02028     }
02029     b_trigger_ele[0]=true;
02030     b_trigger_mu[0]=true;
02031     b_trigger_tau[0]=true;
02032     b_trigger_lep[0]=true;
02033     b_trigger_and_offline_lep[0]=true;
02034     if (m_trigger.isTriggered("EF_e25i",3)) {
02035         b_trigger_ele[1]=true;
02036         b_trigger_lep[1]=true;
02037     }
02038     if (m_trigger.isTriggered("EF_mu20i",3)) {
02039         b_trigger_mu[1]=true;
02040         b_trigger_lep[1]=true;
02041     }
02042     if (m_trigger.isTriggered("EF_tau35i",3)) {
02043         b_trigger_tau[1]=true;
02044     }
02045     if (passed_em25i) {
02046         b_trigger_ele[2]=true;
02047         b_trigger_lep[2]=true;
02048     }
02049     if (passed_mu20i) {
02050         b_trigger_mu[2]=true;
02051         b_trigger_lep[2]=true;
02052     }
02053     if ((passed_tau20i && passed_xe30)||
02054             (passed_tau15i&&passed_xe20&&m_trigger.isTriggered("EF_jet20cEtEF_jet20cEtEF_jet20cEt",3))) {
02055         b_trigger_tau[2]=true;
02056     }
02057     if (passed_em60) {
02058         b_trigger_ele[3]=true;
02059         b_trigger_lep[3]=true;
02060     }
02061     if (passed_mu40) {
02062         b_trigger_mu[3]=true;
02063         b_trigger_lep[3]=true;
02064     }
02065     if (passed_tau35i&&passed_xe40&&m_trigger.isTriggered("EF_jet20cEtEF_jet20cEtEF_jet20cEt",3))
02066     {
02067         b_trigger_tau[3]=true;
02068     }
02069     if (passed_em25i&&passed_xe30) {
02070         b_trigger_ele[4]=true;
02071         b_trigger_lep[4]=true;
02072     }
02073     if (passed_mu20i&&passed_xe30) {
02074         b_trigger_mu[4]=true;
02075         b_trigger_lep[4]=true;
02076     }
02077     if ((passed_tau35i&&passed_xe50)|| (passed_tau35i&&passed_xe40&&
02078                 m_trigger.isTriggered("EF_jet20cEtEF_jet20cEtEF_jet20cEt",3))) {
02079         b_trigger_tau[4]=true;
02080     }
02081     for (unsigned int i=0;i<5;i++) {
02082         if (b_trigger_ele[i]) {
02083             if (presel_re_ele_trackiso.size()>0) {
02084                 if (presel_re_ele_trackiso[0]->tlv().Pt()>25 && !b_trigger_tau[i]) {
02085                     b_trigger_and_offline_lep[i]=true;
02086                 }
02087             }
02088         }
02089         if (b_trigger_mu[i]) {
02090             if (presel_re_mu_good.size()>0) {
02091                 if (presel_re_mu_good[0]->tlv().Pt()>20 && !b_trigger_tau[i]) {
02092                     b_trigger_and_offline_lep[i]=true;
02093                 }
02094             }
02095         }
02096     }
02097     if (b_trigger_ele[i_trigger_menu]) {
02098         m_trigger_histo->Fill(0.0,mcnlo_weight);        
02099     }
02100     if (b_trigger_mu[i_trigger_menu]) {
02101         m_trigger_histo->Fill(1.0,mcnlo_weight);        
02102     }
02103     if (b_trigger_tau[i_trigger_menu]) {
02104         m_trigger_histo->Fill(2.0,mcnlo_weight);        
02105     }
02106     /*  matching b quarks to b jets 
02107         calculate b-jet charge          
02108         calculate delta phi of the 
02109         lepton/taujet and the b jet     */
02110     m_tools.clear_vector(tr_b);
02111     m_tools.clear_vector(presel_re_b_nocuts);
02112     tmp_b = NULL; 
02113     float bt_delphi=100;
02114     int nb_tracks;
02115     float bl_delphi=100;
02116     double tau_charge=0, lepton_charge=0;
02117     double charge, charge_weighted, trackpt_sum, charge_track;
02118     int i_t_nb=presel_re_tau_good.size();
02119     int i_lep_nb=presel_leptons.size();
02120     for (unsigned int k=0; k<presel_re_b_nocuts.size(); k++) {
02121         tmp_b = m_tools.find_matching_particle( presel_re_b_nocuts[k],
02122                 tr_b,0.25 );
02123         i_bMatch_nb++;
02124         if(tmp_b!=NULL){ 
02125             charge=0, charge_weighted=0, trackpt_sum=0, charge_track=0;
02126             if (i_b_nb>0 && i_jet_nb>2 && i_t_nb>0 && i_lep_nb>0 &&
02127                     (b_trigger_lep[i_trigger_menu] ||
02128                      b_trigger_tau[i_trigger_menu] )) {
02129                 i_MatchTrigger_nb++;
02130                 if (tmp_b->pdgId()==5) i_bMatchTrigger_nb++;
02131                 else if (tmp_b->pdgId()==-5) i_bbarMatchTrigger_nb++;
02132                 else cerr<<"FIXME"<<endl;
02133             }
02134             charge = get_jet_charge((MyParticleJet*)presel_re_b_nocuts[k]);
02135             if (v_matched_taujets.size()>0) {
02136                 bt_delphi=TMath::Abs(presel_re_b_nocuts[k]->tlv().DeltaPhi(v_matched_taujets[0]->tlv()));
02137                 tau_charge=((MyTauJet*)v_matched_taujets[0])->charge();         
02138             }
02139             if (v_matched_leptons.size()>0) {
02140                 bl_delphi=TMath::Abs(presel_re_b_nocuts[k]->tlv().DeltaPhi(v_matched_leptons[0]->tlv()));
02141                 lepton_charge=v_matched_leptons[0]->charge();           
02142             }   
02143             if (tmp_b->pdgId()==5 && tau_charge==1 )
02144                 m_delphi_bt_right_pos->Fill(bt_delphi,mcnlo_weight);
02145             if (tmp_b->pdgId()==-5 && tau_charge==-1 )
02146                 m_delphi_bt_right_neg->Fill(bt_delphi,mcnlo_weight);
02147             if (tmp_b->pdgId()==5 && lepton_charge==1 )
02148                 m_delphi_bl_right_pos->Fill(bl_delphi,mcnlo_weight);
02149             if (tmp_b->pdgId()==-5 && lepton_charge==-1 )
02150                 m_delphi_bl_right_neg->Fill(bl_delphi,mcnlo_weight);
02151             if (tmp_b->pdgId()==5 && tau_charge==-1 )
02152                 m_delphi_bt_false_1st->Fill(bt_delphi,mcnlo_weight);
02153             if (tmp_b->pdgId()==-5 && tau_charge==1 )
02154                 m_delphi_bt_false_2nd->Fill(bt_delphi,mcnlo_weight);
02155             if (tmp_b->pdgId()==5 && lepton_charge==-1 )
02156                 m_delphi_bl_false_1st->Fill(bl_delphi,mcnlo_weight);
02157             if (tmp_b->pdgId()==-5 && lepton_charge==1 )
02158                 m_delphi_bl_false_2nd->Fill(bl_delphi,mcnlo_weight);
02159             if (tmp_b->pdgId()==5 && k==0) 
02160                 m_b0_charge_neg->Fill(charge,mcnlo_weight); 
02161             if (tmp_b->pdgId()==-5 && k==0) {
02162                 m_b0_charge_pos->Fill(charge,mcnlo_weight); }
02163             if (tmp_b->pdgId()==5 && k==1) {
02164                 m_b1_charge_neg->Fill(charge,mcnlo_weight); }
02165             if (tmp_b->pdgId()==-5 && k==1) {
02166                 m_b1_charge_pos->Fill(charge,mcnlo_weight); }
02167             if (tmp_b->pdgId()==5) {
02168                 m_b_charge_neg->Fill(charge,mcnlo_weight); }
02169             if (tmp_b->pdgId()==-5) {
02170                 m_b_charge_pos->Fill(charge,mcnlo_weight); }
02171         }
02172     }
02173 
02174     /* matching b quarks to light jets */
02175     m_tools.clear_vector(presel_re_jets_light);
02176     tmp_b = NULL;
02177     tau_charge=0, lepton_charge=0;
02178     TVector3  mom_track, mom_jet;
02179     for (unsigned int k=0; k<presel_re_jets_light.size(); k++) {
02180         charge=0, charge_weighted=0, trackpt_sum=0, charge_track=0;
02181         tmp_b = m_tools.find_matching_particle( presel_re_jets_light[k],
02182                 tr_b,0.25 );
02183         if(tmp_b!=NULL){
02184             m_b_matched_light_llh->Fill(((MyParticleJet*)presel_re_jets_light[k])->b_tag_weight(),mcnlo_weight);
02185             nb_tracks = ((MyParticleJet*)presel_re_jets_light[k])->nb_tracks();
02186             mom_jet=((MyParticleJet*)presel_re_jets_light[k])->tlv().Vect();
02187             for (int i=0;i<nb_tracks;i++) {
02188                 mom_track=((MyParticleJet*)presel_re_jets_light[k])->tracks_tlv(i).Vect();
02189                 charge_track=((MyParticleJet*)presel_re_jets_light[k])->tracks_charge(i);
02190                 charge_weighted  += sqrt(mom_track * mom_jet) * charge_track;
02191                 trackpt_sum  += sqrt(mom_track * mom_jet);
02192             }
02193             charge = charge_weighted/trackpt_sum;
02194             if (tmp_b->pdgId()==5) {
02195                 m_b_light_charge_neg->Fill(charge,mcnlo_weight); 
02196             }
02197             else if (tmp_b->pdgId()==-5) {
02198                 m_b_light_charge_pos->Fill(charge,mcnlo_weight); 
02199             }
02200         }
02201     }
02202 
02204     //B BBAR TAGGING//
02206     vector<MyParticle*> v_bbarTaggedJets(0);
02207     vector<MyParticle*> v_bTaggedJets(0);
02208     vector<MyParticle*> v_bTaggedJetsMatch(0);
02209     vector<MyParticle*> v_bbarTaggedJetsMatch(0);
02210     if (!atlfast) {
02211         if (i_b_nb>0 && i_jet_nb>2 && i_t_nb>0 && i_lep_nb>0 &&
02212                 (b_trigger_lep[i_trigger_menu] || b_trigger_tau[i_trigger_menu])) {
02213             i_bjet_nb++;
02214             for (unsigned int k=0; k<presel_re_b.size(); k++) {
02215                 double q_jet = get_jet_charge((MyParticleJet*)presel_re_b[k]);
02216                 double delphi_bt = TMath::Abs(presel_re_b[k]->tlv().DeltaPhi(presel_re_tau_good[0]->tlv()));
02217                 double delphi_bl = TMath::Abs(presel_re_b[k]->tlv().DeltaPhi(presel_leptons[0]->tlv()));
02218                 double llh_value[2][3];
02219                 double llh_b=1;
02220                 double llh_bbar=1;
02221                 llh_value[0][0] = get_llh(q_jet, b_tag_llh, "b_charge_pos");
02222                 llh_value[1][0] = get_llh(q_jet, b_tag_llh,"b_charge_neg");
02223                 llh_value[0][1] = get_llh(delphi_bt, b_tag_llh, "delphi_bt_right_neg");
02224                 llh_value[1][1] = get_llh(delphi_bt, b_tag_llh,"delphi_bt_false_2nd");
02225                 llh_value[0][2] = get_llh(delphi_bl, b_tag_llh, "delphi_bl_right_neg");
02226                 llh_value[1][2] = get_llh(delphi_bl, b_tag_llh,"delphi_bl_false_2nd");
02227                 if (presel_re_tau_good[0]->charge()<0) {
02228                     llh_b=llh_value[1][0]*llh_value[1][1];
02229                     llh_bbar=llh_value[0][0]*llh_value[0][1];
02230                 }
02231                 else if (presel_re_tau_good[0]->charge()>0) {
02232                     llh_b=llh_value[1][0]*llh_value[0][1];
02233                     llh_bbar=llh_value[0][0]*llh_value[1][1];
02234                 }
02235                 if (llh_bbar>llh_b) {
02236                     i_tryBbarTag_nb++;
02237                     v_bbarTaggedJets.push_back(presel_re_b[k]);
02238                     h_b_tag_llh->Fill(100000*llh_bbar,mcnlo_weight);
02239                 }
02240                 else if (llh_bbar<llh_b) {
02241                     i_tryBTag_nb++;
02242                     v_bTaggedJets.push_back(presel_re_b[k]);
02243                     h_b_tag_llh->Fill(100000*llh_b,mcnlo_weight);
02244                 }
02245                 else if (llh_bbar==llh_b) 
02246                     i_noTag++;
02247             }
02248         }
02249         i_btagvector+=v_bTaggedJets.size();
02250         i_btagvector+=v_bbarTaggedJets.size();
02251         m_tools.clear_vector(tr_b);
02252         for (unsigned int k=0; k<v_bTaggedJets.size(); k++) {
02253             h_bTag_pt->Fill(v_bTaggedJets[k]->tlv().Pt(),mcnlo_weight);
02254             tmp_b = m_tools.find_matching_particle( v_bTaggedJets[k],
02255                     tr_b, 0.25);
02256             if (tmp_b==NULL) i_bTagWrong_nb++;
02257             else if(tmp_b!=NULL)  {
02258                 if (tmp_b->charge()<0){
02259                     v_bTaggedJetsMatch.push_back(v_bTaggedJets[k]);
02260                     i_bTagMatch_nb++;}
02261                 else if (tmp_b->charge()>0) 
02262                     i_bTagMatchWrong_nb++;
02263             }
02264         }
02265         for (unsigned int k=0; k<v_bbarTaggedJets.size(); k++) {
02266             h_bbarTag_pt->Fill(v_bbarTaggedJets[k]->tlv().Pt(),mcnlo_weight);
02267             tmp_b = m_tools.find_matching_particle( v_bbarTaggedJets[k],
02268                     tr_b, 0.25);
02269             if (tmp_b==NULL) i_bbarTagWrong_nb++;
02270             if(tmp_b!=NULL) {
02271                 if (tmp_b->charge()>0) {
02272                     v_bbarTaggedJetsMatch.push_back(v_bbarTaggedJets[k]);
02273                     i_bbarTagMatch_nb++;}
02274                 else if (tmp_b->charge()<0) 
02275                     i_bbarTagMatchWrong_nb++;
02276             }
02277         }
02278     }
02279 
02281     //TAU-B MASS//
02283     vector<MyParticle*> v_faked_taujets(0);
02284     Double_t d_costheta;
02285     Double_t d_mass_tPlus_b;
02286     Double_t d_mass_tMinus_bbar;
02287     for (unsigned int i=0; i<v_faked_taujets.size();i++) {
02288         for (unsigned int k=0; k<v_bTaggedJets.size(); k++) {
02289             if (v_faked_taujets[i]->charge()>0) {
02290                 d_mass_tPlus_b=(v_bTaggedJets[k]->tlv()+v_faked_taujets[i]->tlv()).M();
02291                 d_costheta=(2*d_mass_tPlus_b*d_mass_tPlus_b)/(175*175-80.5*80.5)-1;
02292                 h_costheta_fake->Fill(d_costheta,mcnlo_weight);         
02293             }
02294         }
02295         for (unsigned int k=0; k<v_bbarTaggedJets.size(); k++) {
02296             if (v_faked_taujets[i]->charge()<0) {
02297                 d_mass_tMinus_bbar=(v_bbarTaggedJets[k]->tlv()+v_faked_taujets[i]->tlv()).M();
02298                 d_costheta=(2*d_mass_tMinus_bbar*d_mass_tMinus_bbar)/(175*175-80.5*80.5)-1;
02299                 h_costheta_fake->Fill(d_costheta,mcnlo_weight);         
02300             }
02301         }
02302     }
02303     for (unsigned int i=0; i<v_matched_taujets.size();i++) {
02304         for (unsigned int k=0; k<v_bTaggedJets.size(); k++) {
02305             if (v_matched_taujets[i]->charge()<0) {
02306                 d_mass_tPlus_b=(v_bTaggedJets[k]->tlv()+v_matched_taujets[i]->tlv()).M();
02307                 d_costheta=(2*d_mass_tPlus_b*d_mass_tPlus_b)/(175.*175.-80.5*80.5)-1.;
02308                 h_costheta_match->Fill(d_costheta,mcnlo_weight);                
02309             }
02310         }
02311         for (unsigned int k=0; k<v_bbarTaggedJets.size(); k++) {
02312             if (v_matched_taujets[i]->charge()>0) {
02313                 d_mass_tMinus_bbar=(v_bbarTaggedJets[k]->tlv()+v_matched_taujets[i]->tlv()).M();
02314                 d_costheta=(2*d_mass_tMinus_bbar*d_mass_tMinus_bbar)/(175*175-80.5*80.5)-1;
02315                 h_costheta_match->Fill(d_costheta,mcnlo_weight);                
02316             }
02317         }
02318     }
02319 
02320 
02321 
02322     /*-----------------------------------------------------------------------------
02323      *  FAKED PARTICLES
02324      *-----------------------------------------------------------------------------*/
02325 
02326     /* Electrons */
02327     m_tools.clear_vector(tr_ele);
02328     MyParticle* tmp_electron;
02329     for (unsigned int k=0; k<presel_re_ele_good_nocuts.size(); k++) {
02330         tmp_electron = m_tools.find_matching_particle(presel_re_ele_good_nocuts[k],
02331                 tr_ele); 
02332         if (tmp_electron==NULL) { 
02333             if (TMath::Abs(presel_re_ele_good_nocuts[k]->tlv().Eta())<2.5)
02334                 m_e_fake_pt->Fill(presel_re_ele_good_nocuts[k]->tlv().Pt(),mcnlo_weight);
02335             if (presel_re_ele_good_nocuts[k]->tlv().Pt()>10)
02336                 m_e_fake_eta->Fill(presel_re_ele_good_nocuts[k]->tlv().Eta(),mcnlo_weight);
02337             if (presel_re_ele_good_nocuts[k]->tlv().Pt()>10 &&
02338                     TMath::Abs(presel_re_ele_good_nocuts[k]->tlv().Eta())<2.5)
02339                 m_e_fake_phi->Fill(presel_re_ele_good_nocuts[k]->tlv().Phi(),mcnlo_weight);
02340         }
02341     }
02342     m_tools.clear_vector(tr_ele);
02343     for (unsigned int k=0; k<presel_re_ele_trackiso_nocuts.size(); k++) {
02344         tmp_electron = m_tools.find_matching_particle(presel_re_ele_trackiso_nocuts[k],
02345                 tr_ele); 
02346         if (tmp_electron==NULL) { 
02347             if (TMath::Abs(presel_re_ele_trackiso_nocuts[k]->tlv().Eta())<2.5)
02348                 m_e_fake_trackiso_pt->Fill(presel_re_ele_trackiso_nocuts[k]->tlv().Pt(),mcnlo_weight);
02349             if (presel_re_ele_trackiso_nocuts[k]->tlv().Pt()>10)
02350                 m_e_fake_trackiso_eta->Fill(presel_re_ele_trackiso_nocuts[k]->tlv().Eta(),mcnlo_weight);
02351             if (presel_re_ele_trackiso_nocuts[k]->tlv().Pt()>10 &&
02352                     TMath::Abs(presel_re_ele_trackiso_nocuts[k]->tlv().Eta())<2.5)
02353                 m_e_fake_trackiso_phi->Fill(presel_re_ele_trackiso_nocuts[k]->tlv().Phi(),mcnlo_weight);
02354         }
02355     }
02356     m_tools.clear_vector(tr_ele);
02357     for (unsigned int k=0; k<presel_re_ele_isem_nocuts.size(); k++) {
02358         tmp_electron = m_tools.find_matching_particle(presel_re_ele_isem_nocuts[k],
02359                 tr_ele); 
02360         if (tmp_electron==NULL) { 
02361             if (TMath::Abs(presel_re_ele_isem_nocuts[k]->tlv().Eta())<2.5)
02362                 m_e_all_fake_pt->Fill(presel_re_ele_isem_nocuts[k]->tlv().Pt(),mcnlo_weight);
02363             if (presel_re_ele_isem_nocuts[k]->tlv().Pt()>10)
02364                 m_e_all_fake_eta->Fill(presel_re_ele_isem_nocuts[k]->tlv().Eta(),mcnlo_weight);
02365             if (presel_re_ele_isem_nocuts[k]->tlv().Pt()>10 &&
02366                     TMath::Abs(presel_re_ele_isem_nocuts[k]->tlv().Eta())<2.5)
02367                 m_e_all_fake_phi->Fill(presel_re_ele_isem_nocuts[k]->tlv().Phi(),mcnlo_weight);
02368         }
02369     }
02370 
02371     /* Muons */
02372     m_tools.clear_vector(tr_mu);
02373     for (unsigned int k=0; k<presel_re_mu_good_nocuts.size(); k++) {
02374         MyParticle* tmp_muon = NULL;
02375         tmp_muon = m_tools.find_matching_particle(presel_re_mu_good_nocuts[k], tr_mu); 
02376         if (tmp_muon==NULL) { 
02377             if (((MyMuon*)presel_re_mu_good_nocuts[k])->reconstruction_flag()==1) {
02378                 if (TMath::Abs(presel_re_mu_good_nocuts[k]->tlv().Eta())<2.7) 
02379                     h_m_fake_com_pt->Fill(presel_re_mu_good_nocuts[k]->tlv().Pt(),mcnlo_weight);
02380                 if (presel_re_mu_good_nocuts[k]->tlv().Pt()>10)
02381                     h_m_fake_com_eta->Fill(presel_re_mu_good_nocuts[k]->tlv().Eta(),mcnlo_weight);
02382                 if (presel_re_mu_good_nocuts[k]->tlv().Pt()>10 &&
02383                         TMath::Abs(presel_re_mu_good_nocuts[k]->tlv().Eta())<2.7)
02384                     h_m_fake_com_phi->Fill(presel_re_mu_good_nocuts[k]->tlv().Phi(),mcnlo_weight);
02385                 h_m_fake_com_et_in_cone->Fill(
02386                         ((MyMuon*)presel_re_mu_good_nocuts[k])->Et_in_cone(m_value_cone_muon),mcnlo_weight);
02387             }   
02388             if (((MyMuon*)presel_re_mu_good_nocuts[k])->reconstruction_flag()==2) {
02389                 if (TMath::Abs(presel_re_mu_good_nocuts[k]->tlv().Eta())<2.7) 
02390                     h_m_fake_st_pt->Fill(presel_re_mu_good_nocuts[k]->tlv().Pt(),mcnlo_weight);
02391                 if (presel_re_mu_good_nocuts[k]->tlv().Pt()>10)
02392                     h_m_fake_st_eta->Fill(presel_re_mu_good_nocuts[k]->tlv().Eta(),mcnlo_weight);
02393                 if (presel_re_mu_good_nocuts[k]->tlv().Pt()>10 &&
02394                         TMath::Abs(presel_re_mu_good_nocuts[k]->tlv().Eta())<2.7)
02395                     h_m_fake_st_phi->Fill(presel_re_mu_good_nocuts[k]->tlv().Phi(),mcnlo_weight);
02396                 h_m_fake_st_et_in_cone->Fill(
02397                         ((MyMuon*)presel_re_mu_good_nocuts[k])->Et_in_cone(m_value_cone_muon),mcnlo_weight);
02398             }   
02399         }
02400     }
02401     /* TauJets */
02402     m_tools.clear_vector(tr_tau_vis);
02403     m_tools.clear_vector(presel_re_tau_good);
02404     for (unsigned int k=0; k<presel_re_tau_good_nocuts.size(); k++) {
02405         MyParticle* tmp_tau;
02406         tmp_tau = m_tools.find_matching_particle(presel_re_tau_good_nocuts[k], tr_tau_vis,0.25); 
02407         if (tmp_tau==NULL) { 
02408             v_faked_taujets.push_back(presel_re_tau_good_nocuts[k]);
02409             if (TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) 
02410                 m_t_fake_pt->Fill(presel_re_tau_good_nocuts[k]->tlv().Pt(),mcnlo_weight);
02411             if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20)
02412                 m_t_fake_eta->Fill(presel_re_tau_good_nocuts[k]->tlv().Eta(),mcnlo_weight);
02413             if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20 &&
02414                     TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) {
02415                 m_t_fake_phi->Fill(presel_re_tau_good_nocuts[k]->tlv().Phi(),mcnlo_weight);
02416                 m_t_fake_ratio_pt->Fill(((MyTauJet*)presel_re_tau_good_nocuts[k])->ethadcalib()/
02417                         ((MyTauJet*)presel_re_tau_good_nocuts[k])->track_1().Pt(),mcnlo_weight);
02418             }
02419             MyParticle* tmp_truth_particle = NULL;
02420             tmp_truth_particle = m_tools.find_matching_particle(presel_re_tau_good_nocuts[k],
02421                     tr_lj, 0.25); 
02422             if (tmp_truth_particle!=NULL) {
02423                 if (TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) 
02424                     m_t_faked_by_lj_pt->Fill(tmp_truth_particle->tlv().Pt(),mcnlo_weight);
02425                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20)
02426                     m_t_faked_by_lj_eta->Fill(tmp_truth_particle->tlv().Eta(),mcnlo_weight);
02427                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20 &&
02428                         TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) {
02429                     m_t_faked_by_lj_phi->Fill(tmp_truth_particle->tlv().Phi(),mcnlo_weight);
02430                     m_t_faked_by_lj_llh->Fill(((MyTauJet*)presel_re_tau_good_nocuts[k])->llh(),mcnlo_weight);
02431                 }
02432             }
02433             tmp_truth_particle = m_tools.find_matching_particle(presel_re_tau_good_nocuts[k],
02434                     tr_ele, 0.25); 
02435             if (tmp_truth_particle!=NULL) {
02436                 if (TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) 
02437                     m_t_faked_by_ele_pt->Fill(tmp_truth_particle->tlv().Pt(),mcnlo_weight);
02438                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20)
02439                     m_t_faked_by_ele_eta->Fill(tmp_truth_particle->tlv().Eta(),mcnlo_weight);
02440                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20 &&
02441                         TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) {
02442                     m_t_faked_by_ele_phi->Fill(tmp_truth_particle->tlv().Phi(),mcnlo_weight);
02443                     m_t_faked_by_ele_llh->Fill(((MyTauJet*)presel_re_tau_good_nocuts[k])->llh(),mcnlo_weight);
02444                 }
02445             }
02446             tmp_truth_particle = m_tools.find_matching_particle(presel_re_tau_good_nocuts[k],
02447                     tr_b, 0.25); 
02448             if (tmp_truth_particle!=NULL) {
02449                 if (TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) 
02450                     m_t_faked_by_b_pt->Fill(tmp_truth_particle->tlv().Pt(),mcnlo_weight);
02451                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20)
02452                     m_t_faked_by_b_eta->Fill(tmp_truth_particle->tlv().Eta(),mcnlo_weight);
02453                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20 &&
02454                         TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) {
02455                     m_t_faked_by_b_phi->Fill(tmp_truth_particle->tlv().Phi(),mcnlo_weight);
02456                     m_t_faked_by_b_llh->Fill(((MyTauJet*)presel_re_tau_good_nocuts[k])->llh(),mcnlo_weight);
02457                 }
02458             }
02459             tmp_truth_particle = m_tools.find_matching_particle(presel_re_tau_good_nocuts[k],
02460                     tr_c, 0.25); 
02461             if (tmp_truth_particle!=NULL) {
02462                 if (TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) 
02463                     m_t_faked_by_c_pt->Fill(tmp_truth_particle->tlv().Pt(),mcnlo_weight);
02464                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20)
02465                     m_t_faked_by_c_eta->Fill(tmp_truth_particle->tlv().Eta(),mcnlo_weight);
02466                 if (presel_re_tau_good_nocuts[k]->tlv().Pt()>20 &&
02467                         TMath::Abs(presel_re_tau_good_nocuts[k]->tlv().Eta())<2.5) {
02468                     m_t_faked_by_c_phi->Fill(tmp_truth_particle->tlv().Phi(),mcnlo_weight);
02469                     m_t_faked_by_c_llh->Fill(((MyTauJet*)presel_re_tau_good_nocuts[k])->llh(),mcnlo_weight);
02470                 }
02471             }
02472         }
02473     }
02474 
02475     /* B Jets */
02476     m_tools.clear_vector(tr_b);
02477     m_tools.clear_vector(presel_re_b_nocuts);
02478     m_tools.clear_vector(tr_lj);
02479     for (unsigned int k=0; k<presel_re_b_nocuts.size(); k++) {
02480         MyParticle* tmp_b = NULL; 
02481         tmp_b = m_tools.find_matching_particle( presel_re_b_nocuts[k],
02482                 tr_b,0.25 );
02483         if(tmp_b==NULL){ 
02484             m_b_fake_pt->Fill(presel_re_b_nocuts[k]->tlv().Pt() ,mcnlo_weight);
02485             m_b_fake_eta->Fill(presel_re_b_nocuts[k]->tlv().Eta() ,mcnlo_weight);
02486             m_b_fake_phi->Fill(presel_re_b_nocuts[k]->tlv().Phi() ,mcnlo_weight);
02487             MyParticle* tmp_truth_particle;
02488             tmp_truth_particle = m_tools.find_matching_particle(presel_re_b_nocuts[k],
02489                     tr_lj, 0.25); 
02490             if (tmp_truth_particle!=NULL) {
02491                 if (TMath::Abs(presel_re_b_nocuts[k]->tlv().Eta())<2.5) 
02492                     m_b_faked_by_lj_pt->Fill(tmp_truth_particle->tlv().Pt(),mcnlo_weight);
02493                 if (presel_re_b_nocuts[k]->tlv().Pt()>20)
02494                     m_b_faked_by_lj_eta->Fill(tmp_truth_particle->tlv().Eta(),mcnlo_weight);
02495                 if (presel_re_b_nocuts[k]->tlv().Pt()>20 &&
02496                         TMath::Abs(presel_re_b_nocuts[k]->tlv().Eta())<2.5) {
02497                     m_b_faked_by_lj_phi->Fill(tmp_truth_particle->tlv().Phi(),mcnlo_weight);
02498                     m_b_faked_by_lj_llh->Fill(((MyParticleJet*)presel_re_b_nocuts[k])->b_tag_weight(),mcnlo_weight);
02499                 }
02500             }
02501 
02502         }
02503     }
02504 
02505     /* Jets */
02506     m_tools.clear_vector(tr_jets_notau);
02507     m_tools.clear_vector(presel_re_jets_notau);
02508     for (unsigned int k=0; k<presel_re_jets_notau.size(); k++) {
02509         MyParticle* tmp_jet = NULL; 
02510         tmp_jet = m_tools.find_matching_particle(presel_re_jets_notau[k],
02511                 tr_jets_notau,0.25 );
02512         if(tmp_jet==NULL){ 
02513             m_jet_fake_pt->Fill(presel_re_jets_notau[k]->tlv().Pt() ,mcnlo_weight);
02514             if (presel_re_jets_notau[k]->tlv().Pt()>20)
02515                 m_jet_fake_eta->Fill(presel_re_jets_notau[k]->tlv().Eta() ,mcnlo_weight);
02516             if (presel_re_jets_notau[k]->tlv().Pt()>20)
02517                 m_jet_fake_phi->Fill(presel_re_jets_notau[k]->tlv().Phi() ,mcnlo_weight);
02518         }
02519     }
02520 
02521 
02522 
02523     /*-----------------------------------------------------------------------------
02524      *  TRUTH OBSERVABLES
02525      *-----------------------------------------------------------------------------*/
02526 
02527     Float_t truth_mass_lt=-100;
02528     Double_t delta_phi_bt=-100;
02529     Float_t truth_mass_bt=-100;
02530     Double_t delta_phi_bbart=-100;
02531     Float_t delta_phi_bbarl=-100;
02532     Float_t delta_phi_bl=-100;
02533     Float_t tr_delphi_bb=-100;
02534     if (presel_tr_leptons.size()==1 && presel_tr_tau_vis.size()==1 ) {
02535         truth_mass_lt=(presel_tr_leptons[0]->tlv()+presel_tr_tau_vis[0]->tlv()).M();
02536     }
02537     m_truth_mass_lt->Fill(truth_mass_lt,mcnlo_weight);
02538     for (unsigned int i=0;i<presel_tr_b.size();i++) {
02539         if (presel_tr_tau_vis.size()==1 && ((presel_tr_b[i]->charge()>0 &&
02540                         presel_tr_tau_vis[0]->charge()==-1) || (presel_tr_b[i]->charge()<0 &&
02541                         presel_tr_tau_vis[0]->charge()==1) ) ) {  
02542             delta_phi_bt=presel_tr_b[i]->tlv().DeltaPhi(presel_tr_tau_vis[0]->tlv());
02543             truth_mass_bt=(presel_tr_b[i]->tlv()+presel_tr_tau_vis[0]->tlv()).M();
02544 
02545         }
02546         else if (presel_tr_b[i]->charge()>0 && presel_tr_tau_vis.size()==1) { 
02547             delta_phi_bbart=presel_tr_b[i]->tlv().DeltaPhi(presel_tr_tau_vis[0]->tlv());
02548         }
02549     }
02550     m_truth_delta_phi_bt->Fill(delta_phi_bt,mcnlo_weight);
02551     m_truth_delta_phi_bbart->Fill(delta_phi_bbart,mcnlo_weight);
02552     m_truth_mass_bt->Fill(truth_mass_bt,mcnlo_weight);
02553     for (unsigned int i=0;i<presel_tr_b.size();i++) {
02554         if (presel_tr_b[i]->charge()>0 && presel_tr_leptons.size()==1 ) {
02555             delta_phi_bbarl=presel_tr_b[i]->tlv().DeltaPhi(presel_tr_leptons[0]->tlv());
02556         }
02557         else if (presel_tr_b[i]->charge()<0 && presel_tr_leptons.size()==1 ) {
02558             delta_phi_bl=presel_tr_b[i]->tlv().DeltaPhi(presel_tr_leptons[0]->tlv());
02559         }
02560     }
02561     m_truth_delta_phi_bl->Fill(delta_phi_bl,mcnlo_weight);
02562     m_truth_delta_phi_bbarl->Fill(delta_phi_bbarl,mcnlo_weight);
02563 
02564     if (tr_b.size()==2) {
02565         tr_delphi_bb=tr_b[0]->tlv().DeltaPhi(tr_b[1]->tlv());
02566         h_tr_delphi_bb->Fill(tr_delphi_bb,mcnlo_weight);
02567     }
02568 
02569     /*-----------------------------------------------------------------------------
02570      *  TRIGGER AND CUTS
02571      *-----------------------------------------------------------------------------*/
02572     bool cut[8]={false,false,false,false,false,false,false,false};
02573     b_passed_event=false;
02574     for (int i=0;i<10;i++) {
02575         if (i==0 || cut[i-1]>0) {
02576             cuts_nb_jet=0;
02577             cuts_nb_tau=0;
02578             int nb_charge_tau_plus_lepton_0=0;
02579             m_sel_lepton_nb_cut[i]->Fill(presel_leptons.size(),mcnlo_weight);
02580             m_jets_nb_cut[i]->Fill(presel_re_jets.size(),mcnlo_weight);   
02581             m_sel_b_nb_cut[i]->Fill(presel_re_b.size(),mcnlo_weight); 
02582             m_taus_nb_cut[i]->Fill(presel_re_tau_good.size(),mcnlo_weight);  
02583             m_missinget_cut[i]->Fill(cuts_missinget,mcnlo_weight);  
02584             for (unsigned ii=0;
02585                     ii<presel_leptons.size(); ii++) {
02586                 m_sel_lepton_pt_cut[i]->Fill(presel_leptons[ii]->tlv().Pt(),mcnlo_weight);      
02587             }
02588             for (unsigned ii=0;  ii<presel_re_b.size(); ii++) {
02589                 m_sel_b_pt_cut[i]->Fill(presel_re_b[ii]->tlv().Pt(),mcnlo_weight);      
02590             }
02591             for (unsigned ii=0;  ii<presel_re_jets.size(); ii++) {
02592                 if (presel_re_jets[ii]->tlv().Pt()>20) cuts_nb_jet++;
02593             }
02594             for (unsigned ii=0;  ii<presel_re_tau_good.size(); ii++) {
02595                 if (((MyTauJet*)presel_re_tau_good[ii])->tlv().Pt()>40) cuts_nb_tau++;
02596                 h_taus_llh[i]->Fill(((MyTauJet*)presel_re_tau_good[ii])->llh());
02597             }
02598             for (unsigned ii=0;  ii<presel_re_b.size(); ii++) {
02599                 m_jets_pt_cut[i]->Fill(presel_re_b[ii]->tlv().Pt(),mcnlo_weight);
02600             }
02601             for (unsigned ii=0;  ii<presel_re_tau_good.size(); ii++) {
02602                 m_tau_pt_cut[i]->Fill(((MyTauJet*)presel_re_tau_good[ii])->tlv().Pt(),mcnlo_weight);; 
02603             }
02604             for (unsigned ii=0;  ii<presel_re_tau_good.size(); ii++) {
02605                 for (unsigned jj=0;  jj<presel_leptons.size(); jj++) {
02606                     double charge_tau_plus_lepton=
02607                         presel_re_tau_good[ii]->charge()+presel_leptons[jj]->charge();  
02608                     m_charge_tau_plus_lepton[i]->Fill(charge_tau_plus_lepton,mcnlo_weight);
02609                     if (charge_tau_plus_lepton==0) nb_charge_tau_plus_lepton_0++;
02610                 }
02611             }
02612             if (presel_re_tau_good.size()>0) {
02613                 for (unsigned int k=0; k<v_bTaggedJets.size(); k++) {
02614                     if (presel_re_tau_good[0]->charge()>0) 
02615                         h_mass_tb[i]->Fill((v_bTaggedJets[k]->tlv()+presel_re_tau_good[0]->tlv()).M(),mcnlo_weight);            
02616                 }
02617                 for (unsigned int k=0; k<v_bbarTaggedJets.size(); k++) {
02618                     if (presel_re_tau_good[0]->charge()<0) 
02619                         h_mass_tb[i]->Fill((v_bbarTaggedJets[k]->tlv()+presel_re_tau_good[0]->tlv()).M(),mcnlo_weight);         
02620                 }
02621                 transverse_mass_tb=
02622                     sqrt(2*presel_re_tau_good[0]->tlv().Pt()*cuts_missinget*
02623                             (1-cos(presel_re_tau_good[0]->tlv().DeltaPhi(v_missing_et))));
02624                 h_transverse_mass_tb[i]->Fill(transverse_mass_tb,mcnlo_weight);
02625             }
02626             if ((b_trigger_lep[i_trigger_menu] || b_trigger_tau[i_trigger_menu]) &&
02627                     i==m_cut_order_trigger) cut[m_cut_order_trigger]=true;
02628             if (presel_leptons.size()>0 &&
02629                     i==m_cut_order_lepton) cut[m_cut_order_lepton]=true;
02630             if (cuts_nb_jet>2 &&
02631                     i==m_cut_order_jet) cut[m_cut_order_jet]=true; 
02632             if (presel_re_tau_good.size()>0 &&
02633                     i==m_cut_order_tau) cut[m_cut_order_tau]=true; 
02634             if (presel_re_b.size()>=1 &&
02635                     i==m_cut_order_b) cut[m_cut_order_b]=true; 
02636             if (cuts_nb_tau>0 && (b_trigger_tau[i_trigger_menu] || (!b_trigger_tau[i_trigger_menu]
02637                             && b_trigger_and_offline_lep[i_trigger_menu])) &&
02638                     i==m_cut_order_taupt) 
02639                 cut[m_cut_order_taupt]=true;
02640             if (nb_charge_tau_plus_lepton_0>0 && 
02641                     i==m_cut_order_charge) cut[m_cut_order_charge]=true;
02642             if (cuts_missinget>m_cutvalue_etmiss &&
02643                     i==m_cut_order_etmiss) cut[m_cut_order_etmiss]=true;
02644             if (i==8 && cut[7]==true) {
02645                 h_weights->Fill(mcnlo_weight,1);
02646                 b_passed_event=true;
02647             }
02648             m_cutflow->Fill(i,mcnlo_weight);
02649         }
02650     }
02651     t_trigger_eff->Fill();
02652     if (b_passed_event) {
02653         d_tau_llh1=100;
02654         d_tau_llh2=100;
02655         d_tau_llh3=100;
02656         d_tau_pt1=10000;
02657         d_tau_pt2=10000;
02658         d_tau_pt3=10000;
02659         d_tau_charge1=0;
02660         d_tau_charge2=0;
02661         d_tau_charge3=0;
02662         d_lep_charge1=0;
02663         d_lep_charge2=0;
02664         d_lep_charge3=0;
02665         i_nb_lep=0;
02666         i_nb_tau=0;
02667 
02668         i_nb_lep=presel_leptons.size();
02669         i_nb_tau=presel_re_tau_good.size();
02670         if (presel_re_tau_good[0]!=NULL) {
02671             d_tau_llh1=(((MyTauJet*)presel_re_tau_good[0])->llh());
02672             d_tau_pt1=presel_re_tau_good[0]->tlv().Pt();
02673             d_tau_charge1=presel_re_tau_good[0]->charge();
02674         }
02675         if (presel_re_tau_good.size()>1) {
02676             d_tau_llh2=(((MyTauJet*)presel_re_tau_good[1])->llh());
02677             d_tau_pt2=presel_re_tau_good[1]->tlv().Pt();
02678             d_tau_charge2=presel_re_tau_good[1]->charge();
02679         }
02680         if (presel_re_tau_good.size()>2) {
02681             d_tau_llh3=(((MyTauJet*)presel_re_tau_good[2])->llh());
02682             d_tau_pt3=presel_re_tau_good[2]->tlv().Pt();
02683             d_tau_charge3=presel_re_tau_good[2]->charge();
02684         }
02685         if (presel_leptons.size()>0) {
02686             d_lep_charge1=presel_leptons[0]->charge();
02687         }
02688         if (presel_leptons.size()>1) {
02689             d_lep_charge2=presel_leptons[1]->charge();
02690         }
02691         if (presel_leptons.size()>2) {
02692             d_lep_charge3=presel_leptons[2]->charge();
02693         }
02694         t_tau_llh->Fill();
02695     }
02696     for (unsigned int i=0;i<v_garbage.size();i++) {
02697         delete v_garbage[i];
02698     }
02699     v_garbage.clear();
02700     return;
02701 }
02702 
02703 //*****************************************************************************
02704 
02705 //::::::::::::::::::::::::::::
02706 //:: METHOD end_of_analysis ::
02707 //::::::::::::::::::::::::::::
02708 
02709 void MyCHiggsAnalysis::end_of_analysis(void) {
02710 
02711 
02713     // HISTOGRAMS //
02715     h_bTag_pt->Scale(1/h_bTag_pt->Integral());
02716     h_bbarTag_pt->Scale(1/h_bbarTag_pt->Integral());
02717     m_truth_mass_lt->Scale(1/m_truth_mass_lt->Integral());
02718     m_truth_delta_phi_bt->Scale(1/m_truth_delta_phi_bt->Integral());
02719     m_truth_delta_phi_bbart->Scale(1/m_truth_delta_phi_bbart->Integral());
02720     m_truth_mass_bt->Scale(1/m_truth_mass_bt->Integral());
02721     m_truth_delta_phi_bl->Scale(1/m_truth_delta_phi_bl->Integral());
02722     m_truth_delta_phi_bbarl->Scale(1/m_truth_delta_phi_bbarl->Integral());
02723 
02724 
02725     //    for (unsigned int i=1; i<11; i++) {
02726     //      h_mass_tb[i]->Scale(1/h_mass_tb[i]->Integral());
02727     //    }
02728     cout <<"-----------------------------------------"<<endl;
02729     cout <<"MUONS"<<endl;
02730     cout <<"all truth muons                : "<<i_tr_mu_all<<endl;
02731     cout <<"truth muons (pt,eta cuts)      : "<<i_tr_mu<<endl;
02732     cout <<"all reco muons                 : "<<i_mu_all_nb<<endl;
02733     cout <<"ov.rem. reco muons             : "<<i_mu_ov_nb<<endl;
02734     cout <<"isol+flag reco muons           : "<<i_mu_iso_nb<<endl;
02735     cout <<"final reco muons               : "<<i_mu_nb<<endl<<endl;
02736 
02737     cout <<"ELECTRONS"<<endl;
02738     cout <<"all truth electrons            : "<<i_tr_ele_all<<endl;
02739     cout <<"truth electrons (pt,eta cuts)  : "<<i_tr_ele<<endl;
02740     cout <<"truth not isolated electrons   : "<<i_tr_ele_noisol<<endl;
02741     cout <<"all reco electrons             : "<<i_ele_all_nb<<endl;
02742     cout <<"mu.rem. reco electrons         : "<<i_ele_ov_nb<<endl;
02743     cout <<"id                             : "<<i_ele_isem_nb<<endl;
02744     cout <<"doubles deleted reco electrons : "<<i_ele_dd_nb<<endl;
02745     cout <<"isol+id reco electrons         : "<<i_ele_iso_nb<<endl;
02746     cout <<"final reco electrons           : "<<i_ele_nb<<endl;
02747     cout <<"matched not isolated electrons : "<<i_ele_match_noisol<<endl<<endl;
02748 
02749     cout <<"TAUJETS"<<endl;
02750     cout <<"all truth taujets              : "<<i_tr_tau_all_nb<<endl; 
02751     cout <<"all truth taujets(from Higgs/W): "<<i_tr_tau_id1_nb<<endl; 
02752     cout <<"all truth taujets (status)     : "<<i_tr_tau_id2_nb<<endl; 
02753     cout <<"truth taujets (pt,eta cuts)    : "<<i_tr_tau_nb<<endl; 
02754     cout <<"all reco taujets               : "<<i_tau_all_nb<<endl; 
02755     cout <<"ov.rem. reco taujets           : "<<i_tau_ov_nb<<endl; 
02756     cout <<"id. reco taujets               : "<<i_tau_id_nb<<endl; 
02757     cout <<"final reco taujets             : "<<i_tau_nb<<endl<<endl; 
02758 
02759     cout <<"JETS"<<endl;
02760     cout <<"all truth jets                 : "<<i_tr_jet_all_nb<<endl; 
02761     cout <<"ov.rem. truth jets             : "<<i_tr_jet_ov_nb<<endl; 
02762     cout <<"truth jets (pt,eta cuts)       : "<<i_tr_jet_nb<<endl; 
02763     cout <<"all reco jets                  : "<<i_jets_all_nb<<endl; 
02764     cout <<"ov.rem. reco jets              : "<<i_jets_ov_nb<<endl; 
02765     cout <<"final reco jets  (with tau)    : "<<i_jets_nb<<endl<<endl; 
02766 
02767     cout <<"B-JETS"<<endl;
02768     cout <<"all truth b-jets               : "<<i_tr_b_all_nb<<endl; 
02769     cout <<"all truth b-jets (from top)    : "<<i_tr_b_id1_nb<<endl; 
02770     cout <<"all truth b-jets (status)      : "<<i_tr_b_id2_nb<<endl; 
02771     cout <<"final reco b-jets              : "<<i_bjets_nb<<endl; 
02772     cout <<"matched b-jets                 : "<<i_bjets_matched<<endl;
02773 
02774     cout << "reconstructed particles: "<<endl;
02775     cout <<"mu="<<i_mu_nb<<" ele="<<i_ele_nb<<" taus="<<i_tau_nb<<" jets="<<i_jets_nb<<
02776         " bjets="<<i_bjets_nb<<endl<<endl;
02777     cout <<"b jets             : "<<i_b_all_nb<<endl;
02778     cout <<"b jets after tags  : "<<i_bjet_nb<<endl;;
02779     cout <<"light jets         : "<<i_light_all_nb<<endl;
02780     cout <<"b matches (no trig): "<<i_bMatch_nb<<endl;
02781     cout <<"matched (b or bbar): "<<i_MatchTrigger_nb<<endl;
02782     cout <<"matched to b       : "<<i_bMatchTrigger_nb<<endl;
02783     cout <<"matched to bbar    : "<<i_bbarMatchTrigger_nb<<endl;
02784     cout <<"bTag tries         : "<<i_tryBTag_nb<<endl;
02785     cout <<"bbarTag tries      : "<<i_tryBbarTag_nb<<endl;
02786     cout <<"b tags             : "<<i_bTagMatch_nb<<endl;
02787     cout <<"bbar tags          : "<<i_bbarTagMatch_nb<<endl;
02788     cout <<"b (m) tags wrong   : "<<i_bTagMatchWrong_nb<<endl;
02789     cout <<"bbar (m) tags wrong: "<<i_bbarTagMatchWrong_nb<<endl;
02790     cout <<"b faked            : "<<i_bTagWrong_nb<<endl;
02791     cout <<"bbar faked         : "<<i_bbarTagWrong_nb<<endl;
02792     cout <<"-----------------------------------------"<<endl;
02793     cout <<"b-tag eff          : "<<i_bTagMatch_nb/(double)i_bMatchTrigger_nb<<endl;
02794     cout <<"bbar-tag eff       : "<<i_bbarTagMatch_nb/(double)i_bbarMatchTrigger_nb<<endl;
02795     cout <<"b-tag purity incl. fake    : "<<1-(i_bTagMatchWrong_nb+i_bTagWrong_nb)/(double)i_tryBTag_nb<<endl;
02796     cout <<"bbar-tag purity incl. fake : "<<1-(i_bbarTagMatchWrong_nb+i_bbarTagWrong_nb)/(double)i_tryBbarTag_nb<<endl;
02797     cout <<"b-tag purity       : "
02798         <<1-i_bTagMatchWrong_nb/(double)(i_bTagMatch_nb+i_bTagMatchWrong_nb)<<endl;
02799     cout <<"bbar-tag purity    : "<<1-i_bbarTagMatchWrong_nb/(double)(i_bbarTagMatch_nb+i_bbarTagMatchWrong_nb)<<endl;
02800     cout <<"not tagged         : "<<i_noTag<<endl;
02801     cout<<"number of b-tags   : "<<i_btagvector<<endl;
02802 
02803     cout <<"Generator :"<<generator<<endl;
02804 
02805 
02806 
02808     // SAVE THE ROOT FILE //
02810 
02811     m_tfile->Write();
02812     delete m_systematics;
02813     return;
02814 
02815 
02816 }

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