A lookup table to speed up constraint evaluation using Fourvec_Constrainer. More...
#include <Pair_Table.h>
Public Member Functions | |
const Objpair & | get_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 |
A lookup table to speed up constraint evaluation using Fourvec_Constrainer.
We have a set of constraints, which reference labels, like
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 and 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.
hitfit::Pair_Table::Pair_Table | ( | const std::vector< Constraint > & | cv, |
const Fourvec_Event & | ev | ||
) |
Constructor, give it the event and the list of constraints.
cv | The list of constraints for the problem. |
ev | The 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); } }
Get one of the pairs from the table, index starts from 0.
pairno | The index of the pair, index starts from 0. |
Definition at line 101 of file Pair_Table.cc.
Referenced by hitfit::operator<<().
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(); }
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().