Exemple #1
0
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();
    }
}