CMS 3D CMS Logo

Public Member Functions | Private Attributes

hitfit::Pair_Table Class Reference

A lookup table to speed up constraint evaluation using Fourvec_Constrainer. More...

#include <Pair_Table.h>

List of all members.

Public Member Functions

const Objpairget_pair (std::vector< Objpair >::size_type pairno) const
 Get one of the pairs from the table, index starts from 0.
int npairs () const
 Return the number of pairs in the table.
 Pair_Table (const std::vector< Constraint > &cv, const Fourvec_Event &ev)
 Constructor, give it the event and the list of constraints.

Private Attributes

std::vector< Objpair_pairs

Detailed Description

A lookup table to speed up constraint evaluation using Fourvec_Constrainer.

We have a set of constraints, which reference labels, like

\[ (1~~2) = 80.4 \]

\[ (1~~2) = (3~~4) \]

We also have a Fourvec_Event, which has a set of objects, each of which has a label. A label may correspond to multiple objects.

We'll be evaluating the mass constraints by considering each pair of objects $o_{1}$ and $o_{2}$ and finding its contribution to each constraint. We get pairs because the constraints are quadratic in the objects.

We build a Pair_Table by calling the constructor, giving it the event, and the set of constraints. We can then get back from it a list of Objpair's each representing a pair of objects that are used in some constraint. The Objpair will be able to tell us in which constraints the pair is used and on which side of the equation.

Definition at line 100 of file Pair_Table.h.


Constructor & Destructor Documentation

hitfit::Pair_Table::Pair_Table ( const std::vector< Constraint > &  cv,
const Fourvec_Event ev 
)

Constructor, give it the event and the list of constraints.

Parameters:
cvThe list of constraints for the problem.
evThe event.

Definition at line 49 of file Pair_Table.cc.

References _pairs, hitfit::Objpair::has_constraint(), i, j, gen::k, hitfit::FE_Obj::label, hitfit::Fourvec_Event::nobjs_all(), hitfit::Fourvec_Event::obj(), and AlCaHLTBitMon_ParallelJobs::p.

{
  // The number of objects in the event, including any neutrino.
  int nobjs = ev.nobjs_all();

  // Number of constraints.
  int nc = cv.size();

  // Loop over pairs of objects.
  for (int i=0; i < nobjs-1; i++)
    for (int j=i+1; j < nobjs; j++) {
      // Make an Objpair instance out of it.
      Objpair p (i, j, nc);

      // Loop over constraints.
      bool wanted = false;
      for (int k=0; k < nc; k++) {
        int val = cv[k].has_labels (ev.obj (i).label, ev.obj (j).label);
        if (val) {
          // This pair is used by this constraint.  Record it.
          p.has_constraint (k, val);
          wanted = true;
        }
      }

      // Was this pair used by any constraint?
      if (wanted)
        _pairs.push_back (p);
    }
}

Member Function Documentation

const Objpair & hitfit::Pair_Table::get_pair ( std::vector< Objpair >::size_type  pairno) const

Get one of the pairs from the table, index starts from 0.

Parameters:
pairnoThe index of the pair, index starts from 0.

Definition at line 101 of file Pair_Table.cc.

Referenced by hitfit::operator<<().

{
  assert (pairno < _pairs.size());
  return _pairs[pairno];
}
int hitfit::Pair_Table::npairs ( ) const

Return the number of pairs in the table.

Definition at line 89 of file Pair_Table.cc.

References _pairs.

Referenced by hitfit::operator<<().

{
  return _pairs.size();
}

Member Data Documentation

std::vector<Objpair> hitfit::Pair_Table::_pairs [private]

The list of pairs.

Definition at line 138 of file Pair_Table.h.

Referenced by npairs(), and Pair_Table().