00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00032 #include <mtt/cluster.h>
00033
00034 Cluster::Cluster()
00035 {
00036 id=0;
00037 }
00038
00039 Cluster::~Cluster()
00040 {
00041
00042
00043
00044 }
00045
00046 bool Cluster::isEmpty()
00047 {
00048 if(assigned_hypotheses.size()==0)
00049 return true;
00050
00051 bool empty=true;
00052
00053 for(uint i=0;i<assigned_hypotheses.size();i++)
00054 if(assigned_hypotheses[i]->_status!=DEAD)
00055 empty=false;
00056
00057 if(empty)
00058 return true;
00059
00060 return false;
00061 }
00062
00063 ostream& operator<<(ostream& o, Cluster& c)
00064 {
00065 o<<"cluster: "<<c.id<<endl;
00066
00067 o<<"\tmeasurements: "<<endl;
00068
00069 if(c.assigned_measurements.size()==0)
00070 o<<"\t\t[]"<<endl;
00071
00072 for(uint i=0;i<c.assigned_measurements.size();++i)
00073 o<<"\t\t"<<*(c.assigned_measurements[i])<<endl;
00074
00075 o<<"\thypotheses: "<<endl;
00076
00077 if(c.assigned_hypotheses.size()==0)
00078 o<<"\t\t[]"<<endl;
00079
00080 for(uint i=0;i<c.assigned_hypotheses.size();++i)
00081 {
00082 HypothesisPtr hypothesis = c.assigned_hypotheses[i];
00083
00084 o<<"\t\t"<<hypothesis->_uid;
00085
00086 switch(hypothesis->_status)
00087 {
00088 case DEAD:
00089 o<<"D";
00090 break;
00091 case NORMAL:
00092 o<<"N";
00093 break;
00094 case PARENT:
00095 o<<"P";
00096 break;
00097 case FORCED_PARENT:
00098 o<<"FP";
00099 break;
00100 case DEAD_FORCED_PARENT:
00101 o<<"DFP";
00102 break;
00103 case ERROR:
00104 o<<"E";
00105 break;
00106 }
00107
00108 o<<" (";
00109
00110 for(uint t=0;t<hypothesis->_targets.size();t++)
00111 {
00112 o<<hypothesis->_targets[t]->_id;
00113 o<<" mi "<<hypothesis->_targets[t]->_missed_associations;
00114
00115 if(t<hypothesis->_targets.size()-1)
00116 o<<", ";
00117 }
00118
00119 o<<")"<<endl;
00120
00121
00122
00123 }
00124
00125 return o;
00126 }
00127
00128 bool compareClusters(ClusterPtr c1,ClusterPtr c2)
00129 {
00130 return c1->id<c2->id;
00131 }
00132
00133 ostream& operator<<(ostream& o,vector<ClusterPtr>& c)
00134 {
00135 for(uint i=0;i<c.size();i++)
00136 {
00137 o<<*c[i];
00138 }
00139 return o;
00140 }