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