void MapBuilder<ImgType, ImgProviderType, ImgMatcherType>::writeToFile(string output_prefix,map<size_t,map<size_t,Rat>> &transformMatrix,
	map<size_t,vector<size_t>> &adjacency){

		string outadj = output_prefix+"_adjacency.txt";
		string outtrans = output_prefix+"_ROT.txt";

		cout << "Writing to " << outadj << " ...." << endl;

		ofstream outa(outadj);
		if(!outa.is_open()){
			cerr << "Failed to open " << outadj << " file aborting!" << endl;
			return;
		}
		outa << "n1,adjn_1,...,adjn_n" << endl;
		for(map<size_t,vector<size_t>>::iterator i = adjacency.begin(); i != adjacency.end(); ++i){
			outa << i->first;
			for(vector<size_t>::iterator j = i->second.begin(); j != i->second.end(); ++j){
				if(transformMatrix[i->first][*j].first.empty()) continue;
				outa << "," << *j;
			}
			outa << endl;
		}

		outa.close();

		cout << "Writing to " << outtrans << " ...." << endl;
		ofstream outt(outtrans);
		if(!outt.is_open()){
			cerr << "Failed to open file " << outtrans << endl;
			return;
		}
		outt << "n,adjn,r11,r12,r13,t1,r21,r22,r23,t2,r31,r32,r33,t3" << endl;
		for(map<size_t,map<size_t,Rat>>::iterator i = transformMatrix.begin(); i != transformMatrix.end(); ++i){
			for(map<size_t,Rat>::iterator j = i->second.begin(); j != i->second.end(); ++j){
				if (j == i->second.end()){
					cout << " here" << endl;
					break;
				}
				if(j->second.first.empty()) continue;
				outt << i->first << "," << j->first << ",";
				outt << j->second.first.at<double>(0,0) << "," << j->second.first.at<double>(0,1) << "," << j->second.first.at<double>(0,2) << "," << j->second.second.at<double>(0,0) << ",";
				outt << j->second.first.at<double>(1,0) << "," << j->second.first.at<double>(1,1) << "," << j->second.first.at<double>(1,2) << "," << j->second.second.at<double>(1,0) << ",";
				outt << j->second.first.at<double>(2,0) << "," << j->second.first.at<double>(2,1) << "," << j->second.first.at<double>(2,2) << "," << j->second.second.at<double>(2,0) << endl;
			}
		}
		outt.close();
}
Beispiel #2
0
//______________________________________________________________________________
void MainWindow::DoOutput()
{
    ui_OutputLabel->setText(QString::fromStdString("write files"));

    QFileDialog::Options options;
    QString selectedFilter;
    QString OutputName = QFileDialog::getSaveFileName(this,
                                tr("QFileDialog::getSaveFileName()"),
                                0,
                                tr("All Files (*);;Text Files (*.txt)"),
                                &selectedFilter,
                                options);

    if (OutputName.isEmpty()){return;}
    QString out = OutputName + "_strengthfunctions.txt";
    QFile Strength_output(out);
    Strength_output.open(QIODevice::WriteOnly);
    QTextStream outStream(&Strength_output);
    for (k = 0;k<=(int)((ui_EmaxSpinBox->value())/(ui_BinSizeSpinBox->value()));k++){
      outStream << k*(ui_BinSizeSpinBox->value()) << " "<< AnalysisWidget->E1Strength[k]<<" "<<AnalysisWidget->M1Strength[k]<< " "<<AnalysisWidget->E2Strength[k]<<endl;
    }
    Strength_output.close();

    QString out3 = OutputName + "_levels.txt";
    QFile widths_output(out3);
    widths_output.open(QIODevice::WriteOnly);
    QTextStream outStream3(&widths_output);
    for ( int i =0;i<(AnalysisWidget->scheme.size());i++){
        outStream3  << AnalysisWidget->scheme[i].energy << "\t "
                    << (AnalysisWidget->scheme[i].spin)*(AnalysisWidget->scheme[i].parity)<< "\t"
                    << AnalysisWidget->scheme[i].levelnumber << "\t"
                    << AnalysisWidget->scheme[i].totalwidth/100./(2*(AnalysisWidget->scheme[i].spin)+1)*AnalysisWidget->scheme[i].levelnumber << "\t" //change average width to total width
                    << AnalysisWidget->scheme[i].gswidth << "\t"
                    << AnalysisWidget->scheme[i].S << endl;
    }
    widths_output.close();


    QFile output(OutputName);
    output.open(QIODevice::WriteOnly);
    QTextStream outa(&output);
    outa << "### GammaDex2.0 by R.Massarczyk and G.Schramm"<<endl;
    outa << "### Status 2012/2013 , see also PHYSICAL REVIEW C 85, 014311"<<endl;
    outa << "### contact [email protected]"<<endl;
    output.close();


    DoSave(OutputName+"_parameter.txt");

    if(ui_ReactionComboBox->currentIndex()==0){

        QString out1 = OutputName + "_strengthfunctions_excitedstate.txt";
        QFile Strength_output1(out1);
        Strength_output1.open(QIODevice::WriteOnly);
        QTextStream outStream1(&Strength_output1);
        for (k = 0;k<=(int)((ui_EmaxSpinBox->value())/(ui_BinSizeSpinBox->value()));k++){
          outStream1 << k*(ui_BinSizeSpinBox->value()) << " "<< AnalysisWidget->E1Strength_ex[k]<<" "<<AnalysisWidget->M1Strength_ex[k]<< " "<<AnalysisWidget->E2Strength_ex[k]<<endl;
        }
        Strength_output1.close();


        QString out2 = OutputName + "_gammaspectra.txt";
        QFile Gamma_output(out2);
        Gamma_output.open(QIODevice::WriteOnly);
        QTextStream outStream2(&Gamma_output);
        int a  = (int)(AnalysisWidget->GetIndex(ui_EmaxSpinBox->value(),ui->SpinParitySpinBox_n1->value(),ui->SpinParitySpinBox_n2->value()));
        //cout <<"here"<< a <<endl;
        for (k = 0;k<=(int)((ui_EmaxSpinBox->value())/(ui_BinSizeSpinBox->value()));k++){
           outStream2 << k*(ui_BinSizeSpinBox->value()) << " "<< AnalysisWidget->scheme[a].spectrum[k] <<" "<<AnalysisWidget->scheme[a].spectrum_primary[k]<<endl;
        }
        Gamma_output.close();
    }

    if(ui_ReactionComboBox->currentIndex()==1){

        QString out1 = OutputName + "_branching.txt";
        QFile branch_output1(out1);
        branch_output1.open(QIODevice::WriteOnly);
        QTextStream outStream1(&branch_output1);
        for (k = 0;k<=(int)((ui_EmaxSpinBox->value())/(ui_BinSizeSpinBox->value()));k++){
          outStream1 << k*(ui_BinSizeSpinBox->value()) << " "<< AnalysisWidget->branching[k] <<endl;
        }
        branch_output1.close();

        QString out2 = OutputName + "_output.txt";
        QFile Gamma_output(out2);
        Gamma_output.open(QIODevice::WriteOnly);
        QTextStream outStream2(&Gamma_output);
        int a  = (int)(AnalysisWidget->GetIndex(ui_EmaxSpinBox->value(),ui->SpinParitySpinBox_n1->value(),ui->SpinParitySpinBox_n2->value()));
        //cout <<"here"<< a <<endl;
        for (k = 0;k<=(int)((ui_EmaxSpinBox->value())/(ui_BinSizeSpinBox->value()));k++){
           outStream2 << k*(ui_BinSizeSpinBox->value()) << " "<< AnalysisWidget->GammaSpectrum[k] <<" "<<AnalysisWidget->GammaSpectrum_new[k] <<endl;
        }
        Gamma_output.close();

    }
}