CMS 3D CMS Logo

Public Member Functions | Private Attributes | Friends

hitfit::Resolution Class Reference

Calculate and represent resolution for a physical quantity. More...

#include <Resolution.h>

List of all members.

Public Member Functions

double C () const
 Return the C term (constant term)
bool inverse () const
 Return the setting of the inverse flag.
double m () const
 Return the exponent factor in the resolution term.
double N () const
 Return the N term (noise term)
double pick (double x, double p, CLHEP::HepRandomEngine &engine) const
 Generate random value from a Gaussian distribution described by this resolution. Given a value $x$, measured for an object with momentum $p$, pick a new value from a Gaussian distribution described by this resolution: with mean $x$ and width $\sigma(p)$.
double R () const
 Return the R term (resolution term)
 Resolution (double C, double R, double m, double N, bool inverse=false)
 Constructor to initialize with four values for C, R, m, N, and the boolean for inverse.
 Resolution (std::string s="")
 Constructor, initialize from a string.
 Resolution (double res, bool inverse=false)
 Constructor to initialize a constant resolution.
double sigma (double p) const
 Return the uncertainty for a variable with magnitude p.

Private Attributes

double _constant_sigma
bool _inverse
double _noise_sigma
double _resolution_exponent
double _resolution_sigma

Friends

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

Detailed Description

Calculate and represent resolution for a physical quantity.

This class calculate resolutions for some quantity. In general we have three parameters:

Given a physical quantitiy $p$, we calculate the uncertainty in quantity $x$ as:

\[ \sigma(x) = \sqrt{C^{2}p^{2} + R^{2}p + N^{2}} \]

In addition, we also have an inverse flag. If the flag is set, we take the inverse of $p$ before doing the calculations. Therefore $\sigma(x)$ is regarded as actually $\sigma(1/x)$.

We encode he resolution parameters into a string, from which these objects get initialized. The format is

[-]C[,R[,N]]
    

where parameters within the brackets are optional. If the leading minus is present, the inverse flag is turned on. Omitted parameters are set to 0.

Definition at line 103 of file Resolution.h.


Constructor & Destructor Documentation

hitfit::Resolution::Resolution ( std::string  s = "")

Constructor, initialize from a string.

Parameters:
sA string encoding the resolution parameters, as described in the class description.

Definition at line 91 of file Resolution.cc.

References _constant_sigma, _inverse, _noise_sigma, _resolution_sigma, i, and x.

        :_resolution_exponent(0)
{
  _inverse = false;
  _constant_sigma = 0;
  _resolution_sigma = 0;
  _noise_sigma = 0;

  // Skip spaces.
  double x;
  string::size_type i = 0;
  while (i < s.size() && isspace (s[i]))
    ++i;

  // Check for the inverse flag.
  if (s[i] == '-') {
    _inverse = true;
    ++i;
  }
  else if (s[i] == '+') {
    ++i;
  }

  // Get the constant term.
  if (get_field (s, i, x)) _constant_sigma = x;
  i = s.find (',', i);

  // Look for a resolution term.
  if (i != string::npos) {
    ++i;
    if (get_field (s, i, x)) _resolution_sigma = x;

    // Look for a noise term.
    i = s.find (',', i);
    if (i != string::npos) {
      if (get_field (s, i+1, x)) _noise_sigma = x;
    }
  }
}
hitfit::Resolution::Resolution ( double  C,
double  R,
double  m,
double  N,
bool  inverse = false 
)

Constructor to initialize with four values for C, R, m, N, and the boolean for inverse.

Parameters:
CThe constant term
RThe resolution term
mThe exponent factor term
NThe noise term
inverseThe inverse flag.

Definition at line 139 of file Resolution.cc.

hitfit::Resolution::Resolution ( double  res,
bool  inverse = false 
)

Constructor to initialize a constant resolution.

Parameters:
resThe resolution value.
inverseThe inverse flag.

Definition at line 153 of file Resolution.cc.


Member Function Documentation

double hitfit::Resolution::C ( ) const

Return the C term (constant term)

Definition at line 184 of file Resolution.cc.

References _constant_sigma.

{
    return _constant_sigma;
}
bool hitfit::Resolution::inverse ( ) const

Return the setting of the inverse flag.

Definition at line 172 of file Resolution.cc.

References _inverse.

{
  return _inverse;
}
double hitfit::Resolution::m ( ) const

Return the exponent factor in the resolution term.

Definition at line 196 of file Resolution.cc.

References _resolution_exponent.

double hitfit::Resolution::N ( ) const

Return the N term (noise term)

Definition at line 202 of file Resolution.cc.

References _noise_sigma.

{
    return _noise_sigma;
}
double hitfit::Resolution::pick ( double  x,
double  p,
CLHEP::HepRandomEngine &  engine 
) const

Generate random value from a Gaussian distribution described by this resolution. Given a value $x$, measured for an object with momentum $p$, pick a new value from a Gaussian distribution described by this resolution: with mean $x$ and width $\sigma(p)$.

Parameters:
xThe quantity value (distributed mean).
pThe momentum, for calculating the width.
engineThe underlying random number generator.

Definition at line 228 of file Resolution.cc.

References cmsDownloadME::gen, and AlCaHLTBitMon_ParallelJobs::p.

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

{
  CLHEP::RandGauss gen (engine);
  if (_inverse)
    return 1 / gen.fire (1 / x, sigma (p));
  else
    return gen.fire (x, sigma (p));
}
double hitfit::Resolution::R ( ) const

Return the R term (resolution term)

Definition at line 190 of file Resolution.cc.

References _resolution_sigma.

{
    return _resolution_sigma;
}
double hitfit::Resolution::sigma ( double  p) const

Return the uncertainty for a variable with magnitude p.

Parameters:
pThe momentum.

Definition at line 208 of file Resolution.cc.

References AlCaHLTBitMon_ParallelJobs::p, and mathSSE::sqrt().


Friends And Related Function Documentation

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

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

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

Definition at line 259 of file Resolution.cc.

{
  if (r._inverse) s << "-";
  s << r._constant_sigma << ","
    << r._resolution_sigma << ","
    << r._noise_sigma;
  return s;
}

Member Data Documentation

The constant term.

Definition at line 212 of file Resolution.h.

Referenced by C(), hitfit::operator<<(), and Resolution().

The inverse flag.

Definition at line 232 of file Resolution.h.

Referenced by inverse(), hitfit::operator<<(), and Resolution().

The noise term.

Definition at line 227 of file Resolution.h.

Referenced by N(), hitfit::operator<<(), and Resolution().

The m exponential factor in the resolution term.

Definition at line 222 of file Resolution.h.

Referenced by m().

The resolution term.

Definition at line 217 of file Resolution.h.

Referenced by hitfit::operator<<(), R(), and Resolution().