void before_printing_d(t_data *data, t_specify *spec, long long n) { char pad_field; int sign_printed; sign_printed = 0; if (spec->positive_sign == true || spec->space == true || n < 0) spec->sign = 1; calculate_fields(spec, spec->nb_len, &spec->n_dot, &spec->n_field); if (spec->negative_sign == false) { pad_field = ' '; if (spec->dot == false && spec->zero_pad == true) { pad_field = '0'; sign_printed = put_sign(data, spec, n); } while (--spec->n_field >= 0) data->ret += write(1, &pad_field, 1); } if (!sign_printed) put_sign(data, spec, n); while (--spec->n_dot >= 0) data->ret += write(1, "0", 1); }
/* * MULTITHREADING *A loop through all three parameters * "v": voltage, "z": z-axis, "y": y-axis * example: TRACSsim->loop_on("x","v","y"); * */ void TRACSInterface::loop_on(int tid) { params[0] = 0; //zPos params[1] = 0; //yPos; params[2] = 0; //vPos; n_par0 = (int) z_shifts_array[tid].size()-1; //n_par0 = n_zSteps_array; n_par1 = n_ySteps; n_par2 = n_vSteps; //loop for (params[2] = 0; params[2] < n_par2 + 1; params[2]++) { detector->set_voltages(voltages[params[2]], vDepletion); calculate_fields(); for (params[1] = 0; params[1] < n_par1 + 1; params[1]++) { set_yPos(y_shifts[params[1]]); for (params[0] = 0; params[0] < n_par0 + 1; params[0]++) { std::cout << "Height " << z_shifts_array[tid][params[0]] << " of " << z_shifts.back() << " || Y Position " << y_shifts[params[1]] << " of " << y_shifts.back() << " || Voltage " << voltages[params[2]] << " of " << voltages.back() << std::endl; set_zPos(z_shifts_array[tid][params[0]]); simulate_ramo_current(); i_ramo = GetItRamo(); i_ramo_array[tid][params[0]] = i_ramo; // for output i_ramo = NULL; i_rc = GetItRc(); i_rc_array[tid][params[0]] = i_rc; // for output mtx2.lock(); i_conv = GetItConv(); i_conv_array[tid][params[0]] = i_conv; // for output mtx2.unlock(); //write to file //mtx2.lock(); //utilities::write_to_file_row(hetct_conv_filename, i_conv, detector->get_temperature(), y_shifts[params[1]], z_shifts_array[tid][params[0]], voltages[params[2]]); //utilities::write_to_file_row(hetct_noconv_filename, i_ramo, detector->get_temperature(), y_shifts[params[1]], z_shifts_array[tid][params[0]], voltages[params[2]]); //mtx2.unlock(); } } //std::string root_filename = start+"_dt"+dtime+"ps_"+cap+"pF_t"+trap+"ns_"+voltage+"V_"+neigh+"nns_"+scanType+".root"; // std::string hetct_filename = start+"_dt"+dtime+"ps_"+cap+"pF_t"+trap+"ns_dz"+stepZ+"um_dy"+stepY+"dV"+stepV+"V_"+neigh+"nns_"+scanType+".hetct"; // Open a ROOT file to save result //TFile *tfile = new TFile(root_filename.c_str(), "RECREATE" ); //i_ramo->Write(); //i_rc->Write(); //tfile->Close(); } /*if(error) { std::cout<<"Error in loop_on(str1, str2, str3), invalid input arguments! Use (\"z\", \"y\", \"v\")!" << std::endl; } */ n_par0 = 0; n_par1 = 0; n_par2 = 0; }