00001 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00002 // 13.12.2006, AUTHOR: MANFRED GROH 00003 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00004 00005 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00006 //:: IMPLEMENTATION OF METHODS DEFINED IN THE CLASS MyCollinearApproximation :: 00007 //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 00008 00009 //***************************************************************************** 00010 #include "NtupleReader/MyCollinearApproximation.h" 00011 00012 //::::::::::::::::: 00013 //:: METHOD init :: 00014 //::::::::::::::::: 00015 void MyCollinearApproximation::init(MyParticle* vis_particle_1, 00016 MyParticle* vis_particle_2, 00017 TLorentzVector missing_et 00018 ){ 00019 m_vis_particle_1 = vis_particle_1; 00020 m_vis_particle_2 = vis_particle_2; 00021 m_missing_et = missing_et; 00022 calculate_kinematics(); 00023 return; 00024 } 00025 //***************************************************************************** 00026 00027 00028 00029 //::::::::::::::::::: 00030 //:: METHOD get_x1 :: 00031 //::::::::::::::::::: 00032 double MyCollinearApproximation::get_x1(void){ 00033 return m_x1; 00034 } 00035 00036 //***************************************************************************** 00037 00038 00039 00040 //::::::::::::::::::: 00041 //:: METHOD get_x2 :: 00042 //::::::::::::::::::: 00043 double MyCollinearApproximation::get_x2(void){ 00044 return m_x2; 00045 } 00046 00047 //***************************************************************************** 00048 00049 00050 00051 //::::::::::::::::::: 00052 //:: METHOD get_M_ll :: 00053 //::::::::::::::::::: 00054 double MyCollinearApproximation::get_M_ll(void){ 00055 return m_M_ll; 00056 } 00057 00058 //***************************************************************************** 00059 00060 00061 00062 //:::::::::::::::::::::::::::: 00063 //:: METHOD get_M_comp_part :: 00064 //:::::::::::::::::::::::::::: 00065 double MyCollinearApproximation::get_M_comp_part(void){ 00066 return m_M_comp_part; 00067 } 00068 00069 //***************************************************************************** 00070 00071 00072 00073 //:::::::::::::::::::::::::::::: 00074 //:: METHOD get_tlv_comp_part :: 00075 //:::::::::::::::::::::::::::::: 00076 TLorentzVector MyCollinearApproximation::get_tlv_comp_part(void){ 00077 return tlv_comp_part; 00078 } 00079 00080 //***************************************************************************** 00081 00082 00083 00084 //:::::::::::::::::::::::::::::: 00085 //:: METHOD get_vis_particle1 :: 00086 //:::::::::::::::::::::::::::::: 00087 MyParticle* MyCollinearApproximation::get_vis_particle1(void){ 00088 return m_vis_particle_1; 00089 } 00090 00091 //***************************************************************************** 00092 00093 00094 00095 //:::::::::::::::::::::::::::::: 00096 //:: METHOD get_vis_particle2 :: 00097 //:::::::::::::::::::::::::::::: 00098 MyParticle* MyCollinearApproximation::get_vis_particle2(void){ 00099 return m_vis_particle_2; 00100 } 00101 00102 //***************************************************************************** 00103 00104 00105 00106 // //:::::::::::::::::::::::::: 00107 // //:: METHOD get_neutrino1 :: 00108 // //:::::::::::::::::::::::::: 00109 // MyParticle MyCollinearApproximation::get_neutrino_1(void){ 00110 // return m_neutrino_1; 00111 // } 00112 // 00113 // //***************************************************************************** 00114 // 00115 // 00116 // 00117 // //:::::::::::::::::::::::::: 00118 // //:: METHOD get_neutrino2 :: 00119 // //:::::::::::::::::::::::::: 00120 // MyParticle MyCollinearApproximation::get_neutrino_2(void){ 00121 // return m_neutrino_2; 00122 // } 00123 // 00124 // //***************************************************************************** 00125 // 00126 // 00127 // 00128 // //:::::::::::::::::::::::::: 00129 // //:: METHOD get_comp_part :: 00130 // //:::::::::::::::::::::::::: 00131 // MyParticle MyCollinearApproximation::get_comp_part(void){ 00132 // return m_comp_part; 00133 // } 00134 // 00135 // //***************************************************************************** 00136 00137 00138 00139 //::::::::::::::::::::::::::: 00140 //:: METHOD get_missing_et :: 00141 //::::::::::::::::::::::::::: 00142 TLorentzVector MyCollinearApproximation::get_missing_et(void){ 00143 return m_missing_et; 00144 } 00145 00146 //***************************************************************************** 00147 00148 00149 00150 //::::::::::::::::::::::::::::::::: 00151 //:: METHOD calculate_kinematics :: 00152 //::::::::::::::::::::::::::::::::: 00153 void MyCollinearApproximation::calculate_kinematics(void){ 00154 00155 //============================// 00156 // do collinear approximation // 00157 //============================// 00158 double p1x, p1y, p2x, p2y, MissingEx, MissingEy; 00159 p1x = m_vis_particle_1->tlv().Px(); 00160 p1y = m_vis_particle_1->tlv().Py(); 00161 p2x = m_vis_particle_2->tlv().Px(); 00162 p2y = m_vis_particle_2->tlv().Py(); 00163 MissingEx = m_missing_et.Px(); 00164 MissingEy = m_missing_et.Py(); 00165 //MissingEx = m_missing_et.missinget_x(); 00166 //MissingEy = m_missing_et.missinget_y(); 00167 //MissingEx = m_missing_et.truth_missinget_x_NonInt(); 00168 //MissingEy = m_missing_et.truth_missinget_y_NonInt(); 00169 // calculate fraction of momentum carried by the 00170 // reconstructed decay products 00171 m_x1 = (p1x*p2y-p1y*p2x)/ 00172 (p2y*(p1x+MissingEx)-p2x*(p1y+MissingEy)); 00173 m_x2 = (p1x*p2y-p1y*p2x)/ 00174 (p1x*(p2y+MissingEy)-p1y*(p2x+MissingEx)); 00175 00176 // calculate the invariant mass of the leptonpair 00177 m_M_ll=((m_vis_particle_1->tlv())+(m_vis_particle_2->tlv())).M(); 00178 // calculate the invariant mass of the Higgs 00179 m_M_comp_part=m_M_ll/(sqrt(m_x1*m_x2)); 00180 //std::cout<<"Higgs Mass: "<<m_M_comp_part<<std::endl; 00181 00182 TLorentzVector tlv1, tlv2; 00183 tlv1 = m_vis_particle_1->tlv(); 00184 tlv2 = m_vis_particle_2->tlv(); 00185 tlv1 *= 1./m_x1; 00186 tlv2 *= 1./m_x2; 00187 tlv_comp_part = tlv1+tlv2; 00188 00189 // if(TMath::Abs(m_M_comp_part-tlv_comp_part.M())>0.05 ){ 00190 // std::cout<<"Higgs Mass old: "<<m_M_comp_part<<std::endl; 00191 // std::cout<<"Higgs Mass new: "<< tlv_comp_part.M()<<std::endl; 00192 // std::cout<<"Numerical problem?!?"<<std::endl; 00193 // } 00194 00195 return; 00196 }