CMS 3D CMS Logo

Public Member Functions | Private Attributes | Friends

hitfit::Constraint Class Reference

Represent a mass constraint equation. Mass constraints come in two varieties, either saying that the sum of a set of labels should equal a constant:
More...

#include <Constraint.h>

List of all members.

Public Member Functions

 Constraint (std::string s)
 Constraint (const Constraint &c)
int has_labels (int ilabel, int jlabel) const
Constraintoperator= (const Constraint &c)
double sum_mass_terms (const Fourvec_Event &ev) const
 ~Constraint ()

Private Attributes

std::auto_ptr
< Constraint_Intermed
_lhs
std::auto_ptr
< Constraint_Intermed
_rhs

Friends

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

Detailed Description

Represent a mass constraint equation. Mass constraints come in two varieties, either saying that the sum of a set of labels should equal a constant:

$(1 + 2) = C$.

or that two such sums should be equal to each other:

$(1 + 2) = (3 + 4)$.

We represent such a constraint equation by two Constraint_Intermed instances, each of which represents one side of the equation.

Definition at line 80 of file Constraint.h.


Constructor & Destructor Documentation

hitfit::Constraint::Constraint ( std::string  s)

Constructor.

Parameters:
sThe string to parse describing the constraint.

Definition at line 86 of file Constraint.cc.

References _lhs, _rhs, i, and hitfit::make_constraint_intermed().

{
  // Split it at the equals sign.
  string::size_type i = s.find ('=');
  assert (i != string::npos);

  // And then build the two halves.
  {
    auto_ptr<Constraint_Intermed> ci =
      make_constraint_intermed (s.substr (0, i));
    _lhs = ci;
  }
  {
    auto_ptr<Constraint_Intermed> ci =
      make_constraint_intermed (s.substr (i+1));
    _rhs = ci;
  }
}
hitfit::Constraint::Constraint ( const Constraint c)

Copy constructor.

Parameters:
cThe original object to be copied.

Definition at line 49 of file Constraint.cc.

  : _lhs (c._lhs->clone ()),
    _rhs (c._rhs->clone ())
{
}
hitfit::Constraint::~Constraint ( ) [inline]

Destructor.

Definition at line 107 of file Constraint.h.

{}

Member Function Documentation

int hitfit::Constraint::has_labels ( int  ilabel,
int  jlabel 
) const

See if this guy references both labels ilabel and jlabel on a single single side of the constraint equation.

Parameters:
ilabelThe first label to test.
jlabelThe second label to test.
Return:
  • +1 if the LHS references both.
  • -1 if the RHS references both.
  • 0 if neither reference both.

Definition at line 113 of file Constraint.cc.

{
  if (_lhs->has_labels (ilabel, jlabel))
    return 1;
  else if (_rhs->has_labels (ilabel, jlabel))
    return -1;
  else
    return 0;
}
Constraint & hitfit::Constraint::operator= ( const Constraint c)

Assignment operator.

Parameters:
cThe original object to be copied.

Definition at line 62 of file Constraint.cc.

References _lhs, and _rhs.

{
  {
    auto_ptr<Constraint_Intermed> ci = c._lhs->clone ();
    _lhs = ci;
  }
  {
    auto_ptr<Constraint_Intermed> ci = c._rhs->clone ();
    _rhs = ci;
  }

  return *this;
}
double hitfit::Constraint::sum_mass_terms ( const Fourvec_Event ev) const

Evaluate the mass constraint, using the data in ev.

Parameters:
evThe event for which the constraint should be evaluated.
Return:
$ \frac{m(\rm{lhs})^{2}}{2} - \frac{m(\rm{rhs})^{2}}{2}$

Definition at line 137 of file Constraint.cc.

{
  return _lhs->sum_mass_terms (ev) - _rhs->sum_mass_terms (ev);
}

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  s,
const Constraint c 
) [friend]

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

Parameters:
sThe stream to which to write.
cThe instance of Constraint to be printed.

Definition at line 163 of file Constraint.cc.

{
  s << *c._lhs.get() << " = " << *c._rhs.get();
  return s;
}

Member Data Documentation

Left hand side of the constraint.

Definition at line 156 of file Constraint.h.

Referenced by Constraint(), hitfit::operator<<(), and operator=().

Right hand side of the constraint.

Definition at line 161 of file Constraint.h.

Referenced by Constraint(), hitfit::operator<<(), and operator=().