Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00037 #include "TopQuarkAnalysis/TopHitFit/interface/Pair_Table.h"
00038 #include "TopQuarkAnalysis/TopHitFit/interface/Fourvec_Event.h"
00039 #include <ostream>
00040
00041
00042 using std::vector;
00043 using std::ostream;
00044
00045
00046 namespace hitfit {
00047
00048
00049 Pair_Table::Pair_Table (const std::vector<Constraint>& cv,
00050 const Fourvec_Event& ev)
00051
00052
00053
00054
00055
00056
00057
00058 {
00059
00060 int nobjs = ev.nobjs_all();
00061
00062
00063 int nc = cv.size();
00064
00065
00066 for (int i=0; i < nobjs-1; i++)
00067 for (int j=i+1; j < nobjs; j++) {
00068
00069 Objpair p (i, j, nc);
00070
00071
00072 bool wanted = false;
00073 for (int k=0; k < nc; k++) {
00074 int val = cv[k].has_labels (ev.obj (i).label, ev.obj (j).label);
00075 if (val) {
00076
00077 p.has_constraint (k, val);
00078 wanted = true;
00079 }
00080 }
00081
00082
00083 if (wanted)
00084 _pairs.push_back (p);
00085 }
00086 }
00087
00088
00089 int Pair_Table::npairs () const
00090
00091
00092
00093
00094
00095
00096 {
00097 return _pairs.size();
00098 }
00099
00100
00101 const Objpair& Pair_Table::get_pair (std::vector<Objpair>::size_type pairno) const
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111 {
00112 assert (pairno < _pairs.size());
00113 return _pairs[pairno];
00114 }
00115
00124 std::ostream& operator<< (std::ostream& s, const Pair_Table& p)
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 {
00136 for (int i=0; i < p.npairs(); i++)
00137 s << " " << p.get_pair (i) << "\n";
00138 return s;
00139 }
00140
00141
00142 }