00001 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00002 // 02.08.2007, AUTHOR: OLIVER KORTNER 00003 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00004 00005 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00006 //:: IMPLEMENTATION OF METHODS DEFINED IN THE CLASS MyPileUpExtractedEvent :: 00007 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00008 00009 //:::::::::::::::::: 00010 //:: HEADER FILES :: 00011 //:::::::::::::::::: 00012 00013 #include "NtupleReader/MyPileUpExtractedEvent.h" 00014 00015 //:::::::::::::::::::::::: 00016 //:: NAMESPACE SETTINGS :: 00017 //:::::::::::::::::::::::: 00018 00019 using namespace std; 00020 00021 //***************************************************************************** 00022 00023 //::::::::::::::::: 00024 //:: CONSTRUCTOR :: 00025 //::::::::::::::::: 00026 00027 MyPileUpExtractedEvent::MyPileUpExtractedEvent(const MyEvent & event) { 00028 00029 //--------------- 00030 //-- VARIABLES -- 00031 //--------------- 00032 00033 int vertex(0); // index of the vertex with highest total 00034 // transverse track energy 00035 double Et_vert; // transverse vertex energy 00036 00037 //-------------------------------------------------------------------- 00038 //-- LOOK FOR THE VERTEX WITH HIGHEST TOTAL TRANSVERSE TRACK ENERGY -- 00039 //-------------------------------------------------------------------- 00040 00041 // no primary vertex has been reconstructed // 00042 if (event.primary_vertices()->size()==0) { 00043 vertex = -1; 00044 m_vertex = NULL; 00045 } 00046 00047 // if there is a primary vertex, find the right one // 00048 if (vertex!=-1) { 00049 00050 Et_vert = (*(event.primary_vertices()))[0]->Et(); 00051 00052 for (unsigned int k=1; k<event.primary_vertices()->size(); k++) { 00053 if (Et_vert<(*(event.primary_vertices()))[k]->Et()) { 00054 Et_vert=(*(event.primary_vertices()))[k]->Et(); 00055 vertex = k; 00056 } 00057 } 00058 00059 m_vertex = (*(event.primary_vertices()))[vertex]; 00060 } 00061 00062 int truth_vertex(0); 00063 Et_vert=0; 00064 00065 if (event.truth_vertices()->size()==0) { 00066 truth_vertex = -1; 00067 m_truth_vertex = NULL; 00068 } 00069 00070 // if there is a truth vertex, find the right one // 00071 if (truth_vertex!=-1) { 00072 00073 Et_vert = (*(event.truth_vertices()))[0]->Et(); 00074 00075 for (unsigned int k=1; k<event.truth_vertices()->size(); k++) { 00076 if (Et_vert<(*(event.truth_vertices()))[k]->Et()) { 00077 Et_vert=(*(event.truth_vertices()))[k]->Et(); 00078 truth_vertex = k; 00079 } 00080 } 00081 00082 m_truth_vertex = (*(event.truth_vertices()))[truth_vertex]; 00083 } 00084 00085 00086 //--------------------------------------------------- 00087 //-- COLLECT ELECTRONS AND PHOTON FROM THAT VERTEX -- 00088 //--------------------------------------------------- 00089 00090 // electrons // 00091 m_rec_electron.clear(); 00092 for (unsigned int k=0; k<(event.reco_electrons()).size(); k++) { 00093 00094 if ((event.reco_electrons())[k]->vertexIndex()==vertex) { 00095 00096 m_rec_electron.push_back((event.reco_electrons())[k]); 00097 } 00098 } 00099 00100 // muons // 00101 m_rec_muon.clear(); 00102 std::vector<MyParticle*> muons = event.reco_muons("all"); 00103 00104 for (unsigned int k=0; k<muons.size(); k++) { 00105 00106 if ( muons[k]->vertexIndex() == vertex ){ 00107 m_rec_muon.push_back(muons[k]); 00108 } 00109 } 00110 00111 00112 //----------------------------------- 00113 //-- COPY THE OTHER EVENT CONTENTS -- 00114 //----------------------------------- 00115 00116 m_rec_jet = event.reco_jets(); 00117 m_truth_jet = event.truth_jets(); 00118 m_track_jet = event.track_jets(); 00119 m_track_jet = event.truth_track_jets(); 00120 m_rec_taujet = event.reco_taujets(); 00121 m_met_manager = event.met_manager(); 00122 m_trigger = event.trigger(); 00123 m_truth_particle = event.truth_particles(); 00124 00125 m_dataset_info = &MyDatasetInfo::Instance(); 00126 00127 }