示例#1
0
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);
}
示例#2
0
 /*
 * 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;

 }