| 968 | |
| 969 | return; |
| 970 | } |
| 971 | |
| 972 | void find_isoline_values( std::vector<double> &isoline_val, const double fmax, const double fmin, |
| 973 | const int NISOLINES, const KN<double>*const viso, const bool logscale ) |
| 974 | { |
| 975 | if( viso ){ |
| 976 | |
| 977 | for(int m = 0; m < viso->size(); m++) |
| 978 | isoline_val.push_back( (*viso)[m] ); |
| 979 | |
| 980 | } else if( logscale && (fmin > 0) ) { |
| 981 | |
| 982 | // fmin * step^N = fmax <=> step^N = fmax/fmin |
| 983 | // <=> N = log_{step}(fmax/fmin) = (log(fmax/fmin))/log(step) |
| 984 | // <=> log(step) = (1/N)(log(fmax/fmin)) |
| 985 | // <=> step = exp( (1/N)(log(fmax/fmin)) ) |
| 986 | const double df = exp( (static_cast<double>(1)/NISOLINES)*(log(fmax/fmin)) ); |
| 987 | |
| 988 | isoline_val.push_back( fmin*sqrt(df) ); |
| 989 | for(int m = 1; m < NISOLINES; m++) |
| 990 | isoline_val.push_back( isoline_val[m-1] * df ); |
| 991 | |
| 992 | } else { |
| 993 | |
| 994 | if( logscale ) |
| 995 | std::cout << "plotPDF(): logscale for non-positive values.\n"; |
| 996 | |
| 997 | #if 1 |
| 998 | const double df = (fmax - fmin) / NISOLINES; |
| 999 | for(int m = 0; m < NISOLINES; m++) |
| 1000 | isoline_val.push_back( fmin + df/2 + m*df ); |
| 1001 | #else |
| 1002 | const double df = (fmax - fmin) / (NISOLINES+1); |
| 1003 | for(int m = 0; m < NISOLINES; m++) |
| 1004 | isoline_val.push_back( fmin + (m+1)*df ); |
| 1005 | #endif |
| 1006 | } |
| 1007 | |
| 1008 | return; |
| 1009 | } |
| 1010 | |