00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <stdio.h>
00018 #include <string.h>
00019 #include <time.h>
00020
00021
00022 #include "midas.h"
00023 #include "experim.h"
00024 #include "analyzer.h"
00025
00026
00027
00028 INT scaler_accum(EVENT_HEADER *, void *);
00029 INT scaler_clear(INT run_number);
00030 INT scaler_eor(INT run_number);
00031
00032 ANA_MODULE scaler_accum_module = {
00033 "Scaler accumulation",
00034 "Stefan Ritt",
00035 scaler_accum,
00036 scaler_clear,
00037 scaler_eor,
00038 NULL,
00039 NULL,
00040 NULL,
00041 0,
00042 NULL,
00043 };
00044
00045
00046
00047 double scaler[32];
00048
00049
00050
00051 INT scaler_clear(INT run_number)
00052 {
00053 memset(scaler, 0, sizeof(scaler));
00054 return SUCCESS;
00055 }
00056
00057
00058
00059 INT scaler_eor(INT run_number)
00060 {
00061 return SUCCESS;
00062 }
00063
00064
00065
00066 INT scaler_accum(EVENT_HEADER * pheader, void *pevent)
00067 {
00068 INT n, i;
00069 DWORD *psclr;
00070 double *pacum;
00071
00072
00073 n = bk_locate(pevent, "SCLR", &psclr);
00074 if (n == 0)
00075 return 1;
00076
00077
00078 bk_create(pevent, "ACUM", TID_DOUBLE, &pacum);
00079
00080
00081 for (i = 0; i < n; i++) {
00082 scaler[i] += psclr[i];
00083 pacum[i] = scaler[i];
00084 }
00085
00086
00087 bk_close(pevent, pacum + n);
00088
00089 return SUCCESS;
00090 }