void TimesliceBuilderZeromq::operator()() { run_begin(); while (ts_index_ < max_timeslice_number_ && *signal_status_ == 0) { run_cycle(); scheduler_.timer(); } run_end(); }
void i860_cpu_device::run() { while(handle_msgs()) { /* Sleep a bit if halted */ if(is_halted()) { host_sleep_ms(100); continue; } /* Run some i860 cycles before re-checking messages*/ for(int i = 16; --i >= 0;) run_cycle(); } }
/** Execute the algorithm. Currently just calls SaveISISNexusProcessed but could * call write other formats if support added * * @throw runtime_error Thrown if algorithm cannot execute */ void SaveISISNexus::exec() { // Retrieve the filename from the properties inputFilename = getPropertyValue("InputFileName"); m_isisRaw = new ISISRAW2; rawFile = fopen(inputFilename.c_str(), "rb"); if (rawFile == nullptr) { throw Exception::FileError("Cannot open file ", inputFilename); } m_isisRaw->ioRAW(rawFile, true); nper = m_isisRaw->t_nper; // number of periods nsp = m_isisRaw->t_nsp1; // number of spectra ntc = m_isisRaw->t_ntc1; // number of time channels nmon = m_isisRaw->i_mon; // number of monitors ndet = m_isisRaw->i_det; // number of detectors std::string outputFilename = getPropertyValue("OutputFileName"); NXstatus status; float flt; status = NXopen(outputFilename.c_str(), NXACC_CREATE5, &handle); if (status != NX_OK) { throw std::runtime_error("Cannot open file " + outputFilename + " for writing."); } NXmakegroup(handle, "raw_data_1", "NXentry"); NXopengroup(handle, "raw_data_1", "NXentry"); write_isis_vms_compat(); saveString("beamline", " "); flt = static_cast<float>(m_isisRaw->rpb.r_dur); // could be wrong saveFloatOpen("collection_time", &flt, 1); putAttr("units", "second"); close(); saveStringOpen("definition", "TOFRAW"); putAttr("version", "1.0"); putAttr("url", "http://definition.nexusformat.org/instruments/TOFRAW/?version=1.0"); close(); saveStringOpen("definition_local", "ISISTOFRAW"); putAttr("version", "1.0"); putAttr("url", "http://svn.isis.rl.ac.uk/instruments/ISISTOFRAW/?version=1.0"); close(); flt = static_cast<float>(m_isisRaw->rpb.r_dur); saveFloatOpen("duration", &flt, 1); putAttr("units", "second"); close(); start_time_str.assign(m_isisRaw->hdr.hd_date, m_isisRaw->hdr.hd_date + 12); toISO8601(start_time_str); start_time_str += 'T'; start_time_str += std::string(m_isisRaw->hdr.hd_time, m_isisRaw->hdr.hd_time + 8); saveCharOpen("start_time", &start_time_str[0], 19); putAttr("units", "ISO8601"); close(); std::string str; str.assign(m_isisRaw->rpb.r_enddate, m_isisRaw->rpb.r_enddate + 12); toISO8601(str); str += 'T'; str += std::string(m_isisRaw->rpb.r_endtime, m_isisRaw->rpb.r_endtime + 8); saveCharOpen("end_time", &str[0], 19); putAttr("units", "ISO8601"); close(); saveChar("title", m_isisRaw->r_title, 80); saveInt("good_frames", &m_isisRaw->rpb.r_goodfrm); std::string experiment_identifier = std::to_string(m_isisRaw->rpb.r_prop); saveChar("experiment_identifier", &experiment_identifier[0], static_cast<int>(experiment_identifier.size())); int tmp_int(0); saveInt("measurement_first_run", &tmp_int); saveString("measurement_id", " "); saveString("measurement_label", " "); saveString("measurement_subid", " "); saveString("measurement_type", " "); saveCharOpen("name", &m_isisRaw->i_inst, 8); putAttr("short_name", m_isisRaw->hdr.inst_abrv, 3); close(); logNotes(); saveString("program_name", "isisicp"); saveFloatOpen("proton_charge", &m_isisRaw->rpb.r_gd_prtn_chrg, 1); putAttr("units", "uamp.hour"); close(); saveFloatOpen("proton_charge_raw", &m_isisRaw->rpb.r_tot_prtn_chrg, 1); putAttr("units", "uamp.hour"); close(); saveInt("raw_frames", &m_isisRaw->rpb.r_rawfrm); run_cycle(); saveInt("run_number", &m_isisRaw->r_number); // script_name // seci_config instrument(); make_detector_1_link(); write_monitors(); user(); sample(); runlog(); selog(); NXclosegroup(handle); // raw_data_1 status = NXclose(&handle); delete m_isisRaw; }