Ejemplo n.º 1
0
unsigned long cobalt_event_clear(cobalt_event_t *event,
				 unsigned long bits)
{
	struct cobalt_event_data *datp = get_event_data(event);

	return __sync_fetch_and_and(&datp->value, ~bits);
}
static int wait_event (int which, int maxfd, fd_set *in, 
        fd_set *out, fd_set *except, struct timeval *timeout)
{
    int retvalue = 0;
    XVFBEVENT *event_data;

    event_data = get_event_data (__mg_rtos_xvfb_event_buffer);
    if (event_data == NULL)
        return -1;

#ifdef _DEBUG
    fprintf (stderr, "got event: %d \n", event_data->event_type);
#endif

    if (which & IAL_MOUSEEVENT && event_data->event_type == 0) {
        /* If data is present on the mouse, service it: */
        mouse_pt.x = event_data->data.mouse.x;
        mouse_pt.y = event_data->data.mouse.y;
        mouse_buttons = event_data->data.mouse.button;
        retvalue |= IAL_MOUSEEVENT;
    }

    if (which & IAL_KEYEVENT && event_data->event_type == 1){
        /* If data is present on the keyboard, service it: */
        kbd_data = event_data->data.key;
        retvalue |= IAL_KEYEVENT;
    }

    return retvalue;

}
Ejemplo n.º 3
0
int cobalt_event_inquire(cobalt_event_t *event, unsigned long *bits_r)
{
	struct cobalt_event_data *datp = get_event_data(event);

	/*
	 * We don't guarantee clean readings, this service is
	 * primarily for debug purposes when the caller won't bet the
	 * house on the values returned.
	 */
	__sync_synchronize();
	*bits_r = datp->value;

	return datp->nwaiters;
}
Ejemplo n.º 4
0
int cobalt_event_post(cobalt_event_t *event, unsigned long bits)
{
	struct cobalt_event_data *datp = get_event_data(event);

	if (bits == 0)
		return 0;

	__sync_or_and_fetch(&datp->value, bits); /* full barrier. */

	if ((datp->flags & COBALT_EVENT_PENDED) == 0)
		return 0;

	return XENOMAI_SKINCALL1(__cobalt_muxid,
				 sc_cobalt_event_sync, event);
}
Ejemplo n.º 5
0
int cobalt_event_init(cobalt_event_t *event, unsigned long value,
		      int flags)
{
	struct cobalt_event_data *datp;
	int ret;

	ret = XENOMAI_SKINCALL3(__cobalt_muxid,
				sc_cobalt_event_init,
				event, value, flags);
	if (ret)
		return ret;

	if ((flags & COBALT_EVENT_SHARED) == 0) {
		datp = (void *)cobalt_sem_heap[0] + event->u.data_offset;
		event->u.data = datp;
	} else
		datp = get_event_data(event);

	__cobalt_prefault(datp);

	return 0;
}
Ejemplo n.º 6
0
int main(int argc, char *argv[]){
  
  if ( argc < 3 ){

    cout << "execute as ./rec_had_show <param file> <no. events>" <<endl;
    exit(1);

  }
  
  bool succ;
  double truP[3], recDir[3];
  
  string param_file = argv[1];

  int nEvent = atoi( argv[2] );
  
  bhep::gstore data_store;

  bhep::sreader reader(data_store);
  reader.file(param_file);
  reader.group("DATA"); reader.read();
  bhep::sreader reader2(data_store);
  reader2.file(param_file);
  reader2.group("ANA");reader2.read();
  
  //EventManager2 *eman = new EventManager2(data_store,bhep::MUTE);

  //eman->initialize();
  bhep::reader_root inDst;
  inDst.open( data_store.fetch_sstore("idst_file") );
  
  shower_rec* recon = new shower_rec();
  
  recon->initialize( data_store.fetch_dstore("tol"), data_store.fetch_dstore("res") );
  
  TFile *output = new TFile("test_out.root", "recreate");
  TTree *data = new TTree("t1","had. rec. info.");
  
  data->Branch("Success",&succ,"succ/B");
  data->Branch("TrueMom",&truP,"truP[3]/D");
  data->Branch("RecDirection",&recDir,"dir[3]/D");
  
  measurement_vector meas;
  EVector vert(3,0);
  
  for (int i = 0;i < nEvent;i++){
    
    //succ = eman->status();

    //if ( !succ ) return -1;
    //bhep::event& e = eman->read();
    bhep::event& e = inDst.read_event( i );
    std::cout << "...got event " << i <<std::endl;
    get_event_data( e, meas, vert, truP );
    
    if ( meas.size() != 0 ){

      shower *had_show = new shower( meas, vert );
      
      succ = recon->execute( *had_show );
      
      recDir[0] = had_show->get_direction()[0];
      recDir[1] = had_show->get_direction()[1];
      recDir[2] = had_show->get_direction()[2];
      
      data->Fill();
      
      delete had_show;
      stc_tools::destroy( meas );
    }
    
  }
  
  output->Write();
  output->Close();
  
  recon->finalize();
  
  //eman->finalize();
  inDst.close();
  
  return 0;
}