SpatialFamilyPopulation.h

Go to the documentation of this file.
00001 
00011 #ifndef SPATIALFAMILYPOPULATION_H_
00012 #define SPATIALFAMILYPOPULATION_H_
00013 
00014 #include <vector>
00015 using std::vector;
00016 
00017 #include <boost/shared_ptr.hpp>
00018 using boost::shared_ptr;
00019 
00020 #include "SpatialSimObjectPopulation.h"
00021 #include "SpatialFamilyIDGenerator.h"
00022 
00024 
00043 class SpatialFamilyPopulation : public SpatialSimObjectPopulation {
00044 
00045     public:
00047         SpatialFamilyPopulation( SimNetwork & net,
00048                                  vector< SimObjectFactory* > const& families,
00049                                  SpatialFamilyIDGenerator const& fidgen,
00050                                  shared_ptr<Point3DSet> locs );
00051 
00053         SpatialFamilyPopulation( SimNetwork & net,
00054                                  vector< shared_ptr<SimObjectFactory> > const& families,
00055                                  SpatialFamilyIDGenerator const& fidgen,
00056                                  shared_ptr<Point3DSet> locs );
00057 
00059         SpatialFamilyPopulation( SimNetwork & net, SimObjectFactory * fam0, shared_ptr<Point3DSet> locs );
00060 
00062         SpatialFamilyPopulation( vector< shared_ptr<SpatialFamilyPopulation> >  const& pops );
00063 
00065         virtual ~SpatialFamilyPopulation();
00066 
00068         familyid_t getFamilyIdAt( Point3D<double> const& p );
00069 
00071         familyid_t getFamilyIdAt( double const& x, double const& y, double const& z);
00072 
00074         familyid_t getFamilyID( size_t index );
00075 
00077         void setFamilyID( familyid_t newID );
00078 
00080 
00084         virtual shared_ptr<SpatialFamilyPopulation> subPopulation( vector< familyid_t > const& families );
00085 
00087         virtual shared_ptr< vector< shared_ptr<SpatialFamilyPopulation> > > splitFamilies();
00088 
00089     protected:
00090 
00091         SpatialFamilyPopulation() {};
00092         SpatialFamilyPopulation( SimNetwork & net, shared_ptr<Point3DSet> locs);
00093 
00095         SpatialFamilyPopulation( SimNetwork *net,
00096                                  vector<SimObject::ID::Packed> const& objIDs,
00097                                  vector<familyid_t> const& famIDs,
00098                                  shared_ptr<Point3DSet> locs );
00099 
00101         virtual SpatialFamilyPopulation* new_subset( vector< size_t > const& indices ) const;
00102 
00104         shared_ptr< vector<familyid_t> > familyIDs;
00105 
00106     private:
00107 
00109         SimObject::ID::Vector populate( vector< SimObjectFactory* > const& families );
00110 
00111 };
00112 
00113 #endif

Generated on Wed Jul 9 16:34:37 2008 for PCSIM by  doxygen 1.5.5