9#ifndef __SLsimLib__causticdata__
10#define __SLsimLib__causticdata__
14#include "utilities_slsim.h"
15#include "simpleTree.h"
16#include "simpleTreeVec.h"
17#include "grid_maintenance.h"
63 double crit_radius[3];
69 Point_2d caustic_center;
71 double caustic_radius[3];
87 CausticDataStore(std::string filename,bool verbose = false);
89 CausticDataStore(std::vector<ImageFinding::CriticalCurve> &crticurve_vec);
90 CausticDataStore(const CausticDataStore &input);
95 void addcrits(std::vector<ImageFinding::CriticalCurve> &crticurve_vec);
97 double getTotalCritArea(){return totalcritarea;}
98 double getTotalCausticArea(){return totalcausticarea;}
101 void printfile(std::string filename,std::string paramfile,double fieldofview,double minscale);
104 void resize(size_t size){ data.resize(size);}
106 size_t numberOfCaustics(){return data.size();}
109 CausticSummary & operator[](size_t index){return data[index];}
112 CausticSummary & CritAreaOrder(size_t n){return data[crit_area_index[n]];}
114 CausticSummary & CausticAreaOrder(size_t n){return data[caus_area_index[n]];}
116 CausticSummary & CritRadiusOrder(size_t n){return data[caus_area_index[n]];}
119 size_t getNthIndexCritArea(size_t n){return crit_area_index[n];}
121 size_t getNthIndexCaustArea(size_t n){return caus_area_index[n];}
123 size_t getNthIndexCritRadius(size_t n){return crit_radius_index[n];}
127 //void SortByCritSize();
129 //void SortByCritArea();
131 //void SortByCausticArea();
134 size_t init_for_random(
135 short type /// select according to: (1) critical curve area, (2) caustic curve area
136 ,double limit = 0.0 /// minimum accepted area