NtupleReader/src/MyCollinearApproximation.cxx

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 }

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