CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups 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::unique_ptr
< Constraint_Intermed
_lhs
 
std::unique_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 73 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 77 of file Constraint.cc.

References _lhs, _rhs, cms::cuda::assert(), mps_fire::i, hitfit::make_constraint_intermed(), and eostools::move().

85  {
86  // Split it at the equals sign.
87  string::size_type i = s.find('=');
88  assert(i != string::npos);
89 
90  // And then build the two halves.
91  {
92  unique_ptr<Constraint_Intermed> ci = make_constraint_intermed(s.substr(0, i));
93  _lhs = std::move(ci);
94  }
95  {
96  unique_ptr<Constraint_Intermed> ci = make_constraint_intermed(s.substr(i + 1));
97  _rhs = std::move(ci);
98  }
99  }
std::unique_ptr< Constraint_Intermed > make_constraint_intermed(std::string s)
assert(be >=bs)
uint16_t size_type
std::unique_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:152
def move
Definition: eostools.py:511
std::unique_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:147
hitfit::Constraint::Constraint ( const Constraint c)

Copy constructor.

Parameters
cThe original object to be copied.

Definition at line 45 of file Constraint.cc.

52  : _lhs(c._lhs->clone()), _rhs(c._rhs->clone()) {}
const edm::EventSetup & c
std::unique_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:152
std::unique_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:147
hitfit::Constraint::~Constraint ( )
inline

Destructor.

Definition at line 99 of file Constraint.h.

99 {}

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 101 of file Constraint.cc.

115  {
116  if (_lhs->has_labels(ilabel, jlabel))
117  return 1;
118  else if (_rhs->has_labels(ilabel, jlabel))
119  return -1;
120  else
121  return 0;
122  }
std::unique_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:152
std::unique_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:147
Constraint & hitfit::Constraint::operator= ( const Constraint c)

Assignment operator.

Parameters
cThe original object to be copied.

Definition at line 54 of file Constraint.cc.

References _lhs, _rhs, and eostools::move().

64  {
65  {
66  unique_ptr<Constraint_Intermed> ci = c._lhs->clone();
67  _lhs = std::move(ci);
68  }
69  {
70  unique_ptr<Constraint_Intermed> ci = c._rhs->clone();
71  _rhs = std::move(ci);
72  }
73 
74  return *this;
75  }
const edm::EventSetup & c
std::unique_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:152
def move
Definition: eostools.py:511
std::unique_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:147
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 124 of file Constraint.cc.

References ev.

135  {
136  return _lhs->sum_mass_terms(ev) - _rhs->sum_mass_terms(ev);
137  }
bool ev
std::unique_ptr< Constraint_Intermed > _rhs
Definition: Constraint.h:152
std::unique_ptr< Constraint_Intermed > _lhs
Definition: Constraint.h:147

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 149 of file Constraint.cc.

160  {
161  s << *c._lhs.get() << " = " << *c._rhs.get();
162  return s;
163  }
const edm::EventSetup & c
T get() const
Definition: EventSetup.h:88

Member Data Documentation

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

Left hand side of the constraint.

Definition at line 147 of file Constraint.h.

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

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

Right hand side of the constraint.

Definition at line 152 of file Constraint.h.

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