void ForecastMachine::set_indices_from_range(std::vector<bool>& indices, const std::vector<time_range>& range, int start_shift, int end_shift, bool check_target) { size_t start_of_range, end_of_range; indices.assign(num_vectors, false); // initialize indices for(auto& range_iter: range) { if(start_shift < 0) // check beginning of range { LOG_WARNING("adjustment to beginning of ts was < 0; corrected"); start_shift = 0; } start_of_range = range_iter.first + start_shift; end_of_range = range_iter.second + end_shift; if(end_of_range >= num_vectors) // check end of range { std::ostringstream temp; temp << "end_of_range = "; temp << end_of_range; temp << ", but num_vectors = "; temp << num_vectors; std::string temp_str = temp.str(); LOG_WARNING(temp_str.c_str()); LOG_WARNING("end of time_range was greater than the number of vectors; corrected"); end_of_range = num_vectors-1; } for(size_t j = start_of_range; j <= end_of_range; ++j) { if(is_vec_valid(j) && (!check_target || is_target_valid(j))) indices[j] = true; } } return; }
void ExperimentConditionsDialog::on_main_buttons_accepted() { QMap<Element, double> target; for(unsigned int row = 0, total = ui->target_composition_table->rowCount(); row != total; ++row) { Element element = {ui->target_composition_table->item(row, 0)->text().toUInt(), ui->target_composition_table->item(row, 1)->text().toUInt()}; target[element] += ui->target_composition_table->item(row, 2)->text().toDouble() / 100; } read_energies_from_file(ui->projectile_energy_file_name->text()); if(is_target_valid() && is_energy_valid() && is_number_of_nuclei_valid()) { emit target_changed(target); emit energies_changed(energies); emit energies_file_changed(ui->projectile_energy_file_name->text()); emit spectrum_type_changed(ui->discrete_spectrum_checkbox->isChecked()); emit number_of_nuclei_changed(boost::multiprecision::floor(boost::multiprecision::cpp_dec_float_50(ui->number_of_nuclei_input->text().toStdString())).convert_to<boost::multiprecision::cpp_int>()); emit flux_changed(ui->flux_input->value()); emit t1_changed(ui->t1_input->value()); emit t2_changed(ui->t2_input->value()); emit t3_changed(ui->t3_input->value()); emit accepted(); close(); } }