5 This program connects to the DAQ data source passed as argument
6 and populates local "./result.txt" file with the ids of events received
9 The program exits when being asked to shut down (daqDA_checkshutdown)
12 Messages on stdout are exported to DAQ log system.
14 contact: alice-datesupport@cern.ch
26 // #include "AliRawReader.h"
27 // #include "AliRawReaderDate.h"
32 1- monitoring data source
34 int main(int argc, char **argv) {
39 printf("Wrong number of arguments\n");
43 // AliRawReader* rawReader = new AliRawReaderDate(argv[1]);
45 /* open result file */
47 fp=fopen("./result.txt","a");
49 printf("Failed to open file\n");
54 /* define data source : this is argument 1 */
55 status=monitorSetDataSource( argv[1] );
57 printf("monitorSetDataSource() failed : %s\n",monitorDecodeError(status));
62 /* declare monitoring program */
63 status=monitorDeclareMp( __FILE__ );
65 printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(status));
70 /* define wait event timeout - 1s max */
72 monitorSetNoWaitNetworkTimeout(1000);
75 /* log start of process */
76 printf("DA example case2 monitoring program started\n");
79 /* init some counters */
80 int nevents_physics=0;
84 /* main loop (infinite) */
86 struct eventHeaderStruct *event;
89 /* check shutdown condition */
90 if (daqDA_checkShutdown()) {break;}
92 /* get next event (blocking call until timeout) */
93 status=monitorGetEventDynamic((void **)&event);
94 if (status==MON_ERR_EOF) {
95 printf ("End of File detected\n");
96 break; /* end of monitoring file has been reached */
100 printf("monitorGetEventDynamic() failed : %s\n",monitorDecodeError(status));
104 /* retry if got no event */
110 /* use event - here, just write event id to result file */
111 eventT=event->eventType;
113 if (eventT==PHYSICS_EVENT) {
114 fprintf(fp,"Run #%lu, event size: %lu, BC:%u, Orbit:%u, Period:%u\n",
115 (unsigned long)event->eventRunNb,
116 (unsigned long)event->eventSize,
117 EVENT_ID_GET_BUNCH_CROSSING(event->eventId),
118 EVENT_ID_GET_ORBIT(event->eventId),
119 EVENT_ID_GET_PERIOD(event->eventId)
129 /* exit when last event received, no need to wait for TERM signal */
130 if (eventT==END_OF_RUN) {
131 printf("EOR event detected\n");
138 fprintf(fp,"Run #%s, received %d physics events out of %d\n",getenv("DATE_RUN_NUMBER"),nevents_physics,nevents_total);
140 /* close result file */