CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/TopQuarkAnalysis/TopHitFit/src/Lepjets_Event_Lep.cc

Go to the documentation of this file.
00001 //
00002 // $Id: Lepjets_Event_Lep.cc,v 1.1 2011/05/26 09:47:00 mseidel Exp $
00003 //
00004 // File: src/Lepjets_Event_Lep.cc
00005 // Purpose: Represent a `lepton' in a Lepjets_Event.
00006 // Created: Jul, 2000, sss, based on run 1 mass analysis code.
00007 //
00008 // CMSSW File      : src/Lepjets_Event_Lep.cc
00009 // Original Author : Scott Stuart Snyder <snyder@bnl.gov> for D0
00010 // Imported to CMSSW by Haryo Sumowidagdo <Suharyo.Sumowidagdo@cern.ch>
00011 //
00012 
00013 
00036 #include "TopQuarkAnalysis/TopHitFit/interface/Lepjets_Event_Lep.h"
00037 
00038 
00039 namespace hitfit {
00040 
00041 
00042 Lepjets_Event_Lep::Lepjets_Event_Lep (const Fourvec& p,
00043                                       int type,
00044                                       const Vector_Resolution& res)
00045 //
00046 // Purpose: Constructor.
00047 //
00048 // Inputs:
00049 //   p -           The 4-momentum.
00050 //   type -        The type code.
00051 //   res -         The resolution.
00052 //
00053   : _p (p),
00054     _type (type),
00055     _res (res)
00056 {
00057 }
00058 
00059 
00060 Fourvec& Lepjets_Event_Lep::p ()
00061 //
00062 // Purpose: Access the 4-momentum.
00063 //
00064 // Returns:
00065 //   The 4-momentum.
00066 //
00067 {
00068   return _p;
00069 }
00070 
00071 
00072 const Fourvec& Lepjets_Event_Lep::p () const
00073 //
00074 // Purpose: Access the 4-momentum.
00075 //
00076 // Returns:
00077 //   The 4-momentum.
00078 //
00079 {
00080   return _p;
00081 }
00082 
00083 
00084 int& Lepjets_Event_Lep::type ()
00085 //
00086 // Purpose: Access the type code.
00087 //
00088 // Returns:
00089 //   The type code.
00090 //
00091 {
00092   return _type;
00093 }
00094 
00095 
00096 int Lepjets_Event_Lep::type () const
00097 //
00098 // Purpose: Access the type code.
00099 //
00100 // Returns:
00101 //   The type code.
00102 //
00103 {
00104   return _type;
00105 }
00106 
00107 
00108 const Vector_Resolution& Lepjets_Event_Lep::res () const
00109 //
00110 // Purpose: Access the resolutions.
00111 //
00112 // Returns:
00113 //   The resolutions.
00114 //
00115 {
00116   return _res;
00117 }
00118 
00119 
00120 Vector_Resolution& Lepjets_Event_Lep::res ()
00121 //
00122 // Purpose: Access the resolutions.
00123 //
00124 // Returns:
00125 //   The resolutions.
00126 //
00127 {
00128   return _res;
00129 }
00130 
00131 
00132 double Lepjets_Event_Lep::p_sigma () const
00133 //
00134 // Purpose: Return the momentum (or 1/p) resolution for this object.
00135 //
00136 // Returns:
00137 //   The momentum (or 1/p) resolution for this object.
00138 //
00139 {
00140   return _res.p_sigma (_p);
00141 }
00142 
00143 
00144 double Lepjets_Event_Lep::eta_sigma () const
00145 //
00146 // Purpose: Return the eta resolution for this object.
00147 //
00148 // Returns:
00149 //   The eta resolution for this object.
00150 //
00151 {
00152   return _res.eta_sigma (_p);
00153 }
00154 
00155 
00156 double Lepjets_Event_Lep::phi_sigma () const
00157 //
00158 // Purpose: Return the phi resolution for this object.
00159 //
00160 // Returns:
00161 //   The phi resolution for this object.
00162 //
00163 {
00164   return _res.phi_sigma (_p);
00165 }
00166 
00167 
00168 void Lepjets_Event_Lep::smear (CLHEP::HepRandomEngine& engine,
00169                                bool smear_dir /*= false*/)
00170 //
00171 // Purpose: Smear this object according to its resolutions.
00172 //
00173 // Inputs:
00174 //   engine -      The underlying RNG.
00175 //   smear_dir -   If false, smear the momentum only.
00176 //
00177 {
00178   _res.smear (_p, engine, smear_dir);
00179 }
00180 
00181 
00182 std::ostream& Lepjets_Event_Lep::dump (std::ostream& s,
00183                                        bool full /*= false*/) const
00184 //
00185 // Purpose: Dump out this object.
00186 //
00187 // Inputs:
00188 //   s -           The stream to which to write.
00189 //   full -        If true, dump the resolutions too.
00190 //
00191 // Returns:
00192 //   The stream S.
00193 //
00194 {
00195     s << "[" << _type << "] " << _p << "; pt: " << _p.perp() << ", eta: " << _p.eta() << ", phi: " << _p.phi() ;
00196   if (full) {
00197     s << "\n    " << _res;
00198   }
00199   return s;
00200 }
00201 
00202 
00211 std::ostream& operator<< (std::ostream& s, const Lepjets_Event_Lep& l)
00212 //
00213 // Purpose: Dump out this object.
00214 //
00215 // Inputs:
00216 //   s -           The stream to which to write.
00217 //   l -           The object to dump.
00218 //
00219 // Returns:
00220 //   The stream S.
00221 //
00222 {
00223   return l.dump (s);
00224 }
00225 
00226 
00227 bool Lepjets_Event_Lep::operator< (const Lepjets_Event_Lep& x) const
00228 //
00229 // Purpose: Sort objects by pt.
00230 //
00231 // Retruns:
00232 //   True if this object's pt is less than that of x.
00233 {
00234   return p().perp2() < x.p().perp2();
00235 }
00236 
00237 
00238 } // namespace hitfit