CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes | Friends

hitfit::Vector_Resolution Class Reference

Calculate and represent resolution for a vector of $p$, pseudorapidity $\eta$, and azimuthal angle $\phi$. An instance of this class holds three Resolution objects, one each for $p$, $\eta$, and $\phi$. In addition, we have a flag to indicate if the momentum resolution is in $p_{T}$ or $p$. This flag is set by appending [/et] at the end of the string. More...

#include <Vector_Resolution.h>

List of all members.

Public Member Functions

const Resolutioneta_res () const
 Return a constant reference to the pseudorapidity resolution.
double eta_sigma (const Fourvec &v) const
 Calculate the pseudorapidity resolution of a four-momentum.
const Resolutionp_res () const
 Return a constant reference to the momentum resolution.
double p_sigma (const Fourvec &v) const
 Calculate the momentum resolution of a four-momentum.
const Resolutionphi_res () const
 Return a constant reference to the azimuthal angle resolution.
double phi_sigma (const Fourvec &v) const
 Calculate the azimuthal angle resolution of a four-momentum.
void smear (Fourvec &v, CLHEP::HepRandomEngine &engine, bool do_smear_dir=false) const
 Smear a four-momentum according to the resolutions.
bool use_et () const
 Return the use_et flag.
 Vector_Resolution (std::string s)
 Constructor, instantiate an instance of Vector_Resolution from a string using format as described in the class description.
 Vector_Resolution ()
 Constructor, instantiate an instance of Vector_Resolution with infinite precision.
 Vector_Resolution (const Resolution &p_res, const Resolution &eta_res, const Resolution &phi_res, bool use_et=false)
 Constructor, instantiate an instance of Vector_Resolution from three instances of Resolution objects.

Private Member Functions

void smear_dir (Fourvec &v, CLHEP::HepRandomEngine &engine) const
 Helper function to smear direction.

Private Attributes

Resolution _eta_res
Resolution _p_res
Resolution _phi_res
bool _use_et

Friends

std::ostream & operator<< (std::ostream &s, const Vector_Resolution &r)
 Output stream operator, print the content of this Vector_Resolution object to an output stream.

Detailed Description

Calculate and represent resolution for a vector of $p$, pseudorapidity $\eta$, and azimuthal angle $\phi$. An instance of this class holds three Resolution objects, one each for $p$, $\eta$, and $\phi$. In addition, we have a flag to indicate if the momentum resolution is in $p_{T}$ or $p$. This flag is set by appending [/et] at the end of the string.

This class is initialized from a string with format

<p-resolution>/<eta-resolution>/<phi-resolution>[/et]
    

where the resolution formats are given in the documentation for the Resolution class.

Addendum by Haryo Sumowidagdo: When using the inverse flag, only the inverse flag in p-resolution will be used by the fitter to set that flag which says the error in 'p' is really the error on '1/p'. The inverse flag for $\eta$ in eta-resolution and $\phi$ in phi-resolution are not used by the fitter. As usually the angular resolution is of the form

$ \sigma_{\eta,\phi} = \sqrt{\frac{C^{2}}{p^{2}} + \frac{R^{2}}{p} + N^2}$

where $ p $ can be the magnitude of the momentum ( $ p $) or or transverse momentum ( $ p_{T} $), one then can (and should!) use the inverse flag for $ \eta $ and $ \phi $ resolution.

Definition at line 94 of file Vector_Resolution.h.


Constructor & Destructor Documentation

hitfit::Vector_Resolution::Vector_Resolution ( )

Constructor, instantiate an instance of Vector_Resolution with infinite precision.

Definition at line 98 of file Vector_Resolution.cc.

  : _p_res   ("0,0,0"),
    _eta_res ("0,0,0"),
    _phi_res ("0,0,0"),
    _use_et  (false)

{
}
hitfit::Vector_Resolution::Vector_Resolution ( std::string  s)

Constructor, instantiate an instance of Vector_Resolution from a string using format as described in the class description.

Parameters:
sString enconding the resolution parameters.

Definition at line 112 of file Vector_Resolution.cc.

  : _p_res   (field (s, 0)),
    _eta_res (field (s, 1)),
    _phi_res (field (s, 2)),
    _use_et  (field (s, 3) == "et")
{
}
hitfit::Vector_Resolution::Vector_Resolution ( const Resolution p_res,
const Resolution eta_res,
const Resolution phi_res,
bool  use_et = false 
)

Constructor, instantiate an instance of Vector_Resolution from three instances of Resolution objects.

Parameters:
p_resThe momentum resolution.
eta_resThe pseudorapidity resolution.
phi_resThe azimuthal angle resolution.
use_etIf TRUE then use $p_{T}$ instead of $p$ for momentum resolution.

Definition at line 128 of file Vector_Resolution.cc.


Member Function Documentation

const Resolution & hitfit::Vector_Resolution::eta_res ( ) const

Return a constant reference to the pseudorapidity resolution.

Definition at line 161 of file Vector_Resolution.cc.

References _eta_res.

{
  return _eta_res;
}
double hitfit::Vector_Resolution::eta_sigma ( const Fourvec v) const

Calculate the pseudorapidity resolution of a four-momentum.

Parameters:
vThe four-momentum.

Definition at line 255 of file Vector_Resolution.cc.

Referenced by hitfit::Lepjets_Event_Lep::eta_sigma().

{
  return find_sigma (v, _eta_res, _use_et);
}
const Resolution & hitfit::Vector_Resolution::p_res ( ) const

Return a constant reference to the momentum resolution.

Definition at line 149 of file Vector_Resolution.cc.

References _p_res.

{
  return _p_res;
}
double hitfit::Vector_Resolution::p_sigma ( const Fourvec v) const

Calculate the momentum resolution of a four-momentum.

Parameters:
vThe four-momentum.

Definition at line 232 of file Vector_Resolution.cc.

Referenced by hitfit::Lepjets_Event_Lep::p_sigma().

{
  double sig = find_sigma (v, _p_res, _use_et);
  if (_use_et) {
    if(_p_res.inverse()){
      sig *= v.perp() / v.e();
    }else{
      sig *= v.e() / v.perp();
    }
  }
  return sig;
}
const Resolution & hitfit::Vector_Resolution::phi_res ( ) const

Return a constant reference to the azimuthal angle resolution.

Definition at line 173 of file Vector_Resolution.cc.

References _phi_res.

{
  return _phi_res;
}
double hitfit::Vector_Resolution::phi_sigma ( const Fourvec v) const

Calculate the azimuthal angle resolution of a four-momentum.

Parameters:
vThe four-momentum.

Definition at line 270 of file Vector_Resolution.cc.

Referenced by hitfit::Lepjets_Event_Lep::phi_sigma().

{
  return find_sigma (v, _phi_res, _use_et);
}
void hitfit::Vector_Resolution::smear ( Fourvec v,
CLHEP::HepRandomEngine &  engine,
bool  do_smear_dir = false 
) const

Smear a four-momentum according to the resolutions.

Parameters:
vThe four-momentum to smear.
engineThe underlying random number generator.
do_smear_dirIf FALSE, only smear the energy. If TRUE, also smear the direction.

Definition at line 354 of file Vector_Resolution.cc.

Referenced by hitfit::Lepjets_Event_Lep::smear().

{
  double ee = _use_et ? v.perp() : v.e(); // ??? is perp() correct?
  v *= _p_res.pick (ee, ee, engine) / ee;

  if (do_smear_dir) {
    smear_eta (v, ee, _eta_res, engine);
    smear_phi (v, ee, _phi_res, engine);
  }
}
void hitfit::Vector_Resolution::smear_dir ( Fourvec v,
CLHEP::HepRandomEngine &  engine 
) const [private]

Helper function to smear direction.

Parameters:
vThe four-momentum to smear.
engineThe underlying random number generator.
bool hitfit::Vector_Resolution::use_et ( ) const

Return the use_et flag.

Definition at line 185 of file Vector_Resolution.cc.

References _use_et.

{
  return _use_et;
}

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  s,
const Vector_Resolution r 
) [friend]

Output stream operator, print the content of this Vector_Resolution object to an output stream.

Parameters:
sThe stream to which to write.
rThe instance of Vector_Resolution to be printed.

Definition at line 387 of file Vector_Resolution.cc.

{
  s << r._p_res << "/ " << r._eta_res << "/ " << r._phi_res;
  if (r._use_et)
    s << "/et";
  s << "\n";
  return s;
}

Member Data Documentation

The pseudorapidity resolution.

Definition at line 209 of file Vector_Resolution.h.

Referenced by eta_res(), and hitfit::operator<<().

The momentum resolution.

Definition at line 204 of file Vector_Resolution.h.

Referenced by hitfit::operator<<(), and p_res().

The phi resolution.

Definition at line 214 of file Vector_Resolution.h.

Referenced by hitfit::operator<<(), and phi_res().

The momentum resolution.

Definition at line 219 of file Vector_Resolution.h.

Referenced by hitfit::operator<<(), and use_et().