CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | 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>

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. More...
 

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().

94 {
95  // Split it at the equals sign.
96  string::size_type i = s.find ('=');
97  assert (i != string::npos);
98 
99  // And then build the two halves.
100  {
101  auto_ptr<Constraint_Intermed> ci =
102  make_constraint_intermed (s.substr (0, i));
103  _lhs = ci;
104  }
105  {
106  auto_ptr<Constraint_Intermed> ci =
107  make_constraint_intermed (s.substr (i+1));
108  _rhs = ci;
109  }
110 }
int i
Definition: DBlmapReader.cc:9
std::auto_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:161
std::auto_ptr< Constraint_Intermed > make_constraint_intermed(std::string s)
std::auto_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:156
uint16_t size_type
hitfit::Constraint::Constraint ( const Constraint c)

Copy constructor.

Parameters
cThe original object to be copied.

Definition at line 49 of file Constraint.cc.

56  : _lhs (c._lhs->clone ()),
57  _rhs (c._rhs->clone ())
58 {
59 }
std::auto_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:161
std::auto_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:156
hitfit::Constraint::~Constraint ( )
inline

Destructor.

Definition at line 107 of file Constraint.h.

107 {}

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.

127 {
128  if (_lhs->has_labels (ilabel, jlabel))
129  return 1;
130  else if (_rhs->has_labels (ilabel, jlabel))
131  return -1;
132  else
133  return 0;
134 }
std::auto_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:161
std::auto_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:156
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.

72 {
73  {
74  auto_ptr<Constraint_Intermed> ci = c._lhs->clone ();
75  _lhs = ci;
76  }
77  {
78  auto_ptr<Constraint_Intermed> ci = c._rhs->clone ();
79  _rhs = ci;
80  }
81 
82  return *this;
83 }
std::auto_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:161
std::auto_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:156
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.

148 {
149  return _lhs->sum_mass_terms (ev) - _rhs->sum_mass_terms (ev);
150 }
std::auto_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:161
std::auto_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:156

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.

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

Member Data Documentation

std::auto_ptr<Constraint_Intermed> hitfit::Constraint::_lhs
private

Left hand side of the constraint.

Definition at line 156 of file Constraint.h.

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

std::auto_ptr<Constraint_Intermed> hitfit::Constraint::_rhs
private

Right hand side of the constraint.

Definition at line 161 of file Constraint.h.

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