AlcapDAQ
1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
evb
old_ebuser.cpp
Go to the documentation of this file.
1
/********************************************************************\
2
3
Name: ebuser.c
4
Created by: Pierre-Andre Amaudruz
5
6
Contents: User section for the Event builder
7
8
$Log: ebuser.cpp,v $
9
Revision 1.2 2004/05/31 14:26:34 mucap
10
Commented out compression. (Leftover uncommitted change from run7)
11
12
Revision 1.1 2003/07/17 18:52:54 fegray
13
Converted eventbuilder to C++.
14
15
Revision 1.3 2003/05/13 19:27:04 mucap
16
Fixes to allow a subset of the crates to participate in an event. Also,
17
this pulls in Pierre's CVS changes to the generic eventbuilder code.
18
19
Revision 1.2 2003/05/13 17:02:47 fegray
20
Changes to allow a subset of the crates to run.
21
22
Revision 1.1 2003/05/13 16:21:16 mucap
23
First commit of MIDAS (Ethernet-based) event-builder.
24
25
Revision 1.6 2002/09/28 00:49:08 pierre
26
Add EB_USER_ERROR example
27
28
Revision 1.5 2002/09/25 18:38:03 pierre
29
correct: header passing, user field, abort run
30
31
Revision 1.4 2002/07/13 05:46:10 pierre
32
added ybos comments
33
34
Revision 1.3 2002/06/14 04:59:46 pierre
35
revised for ybos
36
37
Revision 1.2 2002/01/17 23:34:29 pierre
38
doc++ format
39
40
Revision 1.1.1.1 2002/01/17 19:49:54 pierre
41
Initial Version
42
43
\********************************************************************/
44
45
#include <stdio.h>
46
#include "midas.h"
47
#include "
mevb.h
"
48
#include "ybos.h"
49
50
#include "
mucap_compress.h
"
51
52
#define NUMCRATES 5
53
54
INT
eb_begin_of_run
(INT,
char
*,
char
*);
55
INT
eb_end_of_run
(INT,
char
*);
56
INT
ebuser
(INT,
EBUILDER_CHANNEL
*, EVENT_HEADER *,
void
*, INT *);
57
58
/* Globals */
59
INT
lModulo
= 100;
60
61
/*--------------------------------------------------------------------*/
72
INT
eb_begin_of_run
(INT rn,
char
* UserField,
char
* error)
73
{
74
extern
EBUILDER_SETTINGS
ebset
;
75
extern
EBUILDER_CHANNEL
ebch
[
MAX_CHANNELS
];
76
extern
HNDLE
hDB
;
77
78
int
n;
79
int
mask = 0;
80
81
char
keyName[256];
82
BOOL
enabled
;
83
int
size
;
84
85
/*
86
* Determine which crates are enabled and set up the mask
87
* accordingly.
88
*/
89
for
(n = 1; n <=
NUMCRATES
; n++) {
90
sprintf
(keyName,
"/Equipment/Crate %d/Settings/Enabled"
, n);
91
size =
sizeof
(
enabled
);
92
db_get_value(hDB, 0, keyName, &enabled, &size, TID_BOOL,
FALSE
);
93
if
(size ==
sizeof
(enabled) && enabled) {
94
ebch[n-1].
trigger_mask
= (1 << (n-1));
95
mask |= ebch[n-1].
trigger_mask
;
96
}
else
{
97
ebch[n-1].
trigger_mask
= 0;
98
}
99
}
100
101
cm_msg(MINFO,
"eb_begin_of_run"
,
"Setting event mask to 0x%x"
, mask);
102
ebset.
trigger_mask
= mask;
103
104
// Initialize online compression
105
compress_load_all
();
106
107
return
EB_SUCCESS
;
108
}
109
110
/*--------------------------------------------------------------------*/
121
INT
eb_end_of_run
(INT rn,
char
* error)
122
{
123
return
EB_SUCCESS
;
124
}
125
126
/*--------------------------------------------------------------------*/
187
INT
eb_user
(INT nfrag
188
,
EBUILDER_CHANNEL
*
ebch
, EVENT_HEADER *pheader
189
,
void
*pevent, INT * dest_size)
190
{
191
// Initialize output event
192
bk_init32(pevent);
193
194
// Loop over the event fragments, performing compression into the output event
195
for
(
int
i
= 0;
i
< nfrag;
i
++) {
196
void
*fragment = ebch[
i
].
pfragment
;
197
198
if
(fragment != NULL) {
199
compress_event
(((EVENT_HEADER *) fragment) + 1, pevent);
200
pheader->serial_number =
201
((EVENT_HEADER *) ebch[
i
].pfragment)->serial_number;
202
}
203
}
204
205
// Set the size of the output event properly
206
pheader->data_size = *dest_size = bk_size(pevent);
207
208
printf
(
"Returning size %d\n"
, pheader->data_size);
209
210
return
EB_SUCCESS
;
211
}
212
Generated by
1.8.4