MIDAS
Loading...
Searching...
No Matches
adcsum.cxx
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: adcsum.c
4 Created by: Stefan Ritt
5
6 Contents: Example analyzer module for ADC summing. This module
7 looks for a bank named CADC and produces an ASUM
8 bank which contains the sum of all ADC values. The
9 ASUM bank is a "structured" bank. It has been defined
10 in the ODB and transferred to experim.h.
11
12 $Id:$
13
14\********************************************************************/
15
16/*-- Include files -------------------------------------------------*/
17
18/* standard includes */
19#include <stdio.h>
20#include <math.h>
21
22#define DEFINE_TESTS // must be defined prior to midas.h
23
24/* midas includes */
25#include "midas.h"
26#include "rmidas.h"
27#include "experim.h"
28#include "analyzer.h"
29
30/* root includes */
31#include <TH1D.h>
32
33#ifndef PI
34#define PI 3.14159265359
35#endif
36
37/*-- Parameters ----------------------------------------------------*/
38
40
41/*-- Tests ---------------------------------------------------------*/
42
45
46/*-- Module declaration --------------------------------------------*/
47
51
53
55 "ADC summing", /* module name */
56 "Stefan Ritt", /* author */
57 adc_summing, /* event routine */
58 NULL, /* BOR routine */
59 NULL, /* EOR routine */
60 adc_summing_init, /* init routine */
61 NULL, /* exit routine */
62 &adc_summing_param, /* parameter structure */
63 sizeof(adc_summing_param), /* structure size */
64 adc_summing_param_str, /* initial parameters */
65};
66
67/*-- Module-local variables-----------------------------------------*/
68
70
71/*-- init routine --------------------------------------------------*/
72
74{
75 /* book ADC sum histo */
76 hAdcSum = h1_book<TH1D>("ADCSUM", "ADC sum", 500, 0, 10000);
77
78 /* book ADC average in separate subfolder */
79 open_subfolder("Average");
80 hAdcAvg = h1_book<TH1D>("ADCAVG", "ADC average", 500000, 0, 10000);
82
83 return SUCCESS;
84}
85
86/*-- event routine -------------------------------------------------*/
87
88INT adc_summing(EVENT_HEADER * pheader, void *pevent)
89{
90 INT i, j, n_adc;
91 float *cadc;
93
94 /* look for CADC bank, return if not present */
95 n_adc = bk_locate(pevent, "CADC", &cadc);
96 if (n_adc == 0)
97 return 1;
98
99 /* create ADC sum bank */
100 bk_create(pevent, "ASUM", TID_STRUCT, (void**)&asum);
101
102 /* sum all channels above threashold */
103 asum->sum = 0.f;
104 for (i = j = 0; i < n_adc; i++)
106 asum->sum += cadc[i];
107 j++;
108 }
109
110 /* calculate ADC average */
111 asum->average = j > 0 ? asum->sum / j : 0;
112
113 /* evaluate tests */
114 SET_TEST(low_sum, asum->sum < 1000);
115 SET_TEST(high_sum, asum->sum > 1000);
116
117 /* fill sum histo */
118 hAdcSum->Fill(asum->sum, 1);
119
120 /* fill average histo */
121 hAdcAvg->Fill(asum->average);
122
123 /* close calculated bank */
124 bk_close(pevent, asum + 1);
125
126 return SUCCESS;
127}
ADC_SUMMING_PARAM adc_summing_param
Definition adcsum.cxx:39
INT adc_summing_init(void)
Definition adcsum.cxx:73
ANA_MODULE adc_summing_module
Definition adcsum.cxx:54
static TH1D * hAdcAvg
Definition adcsum.cxx:69
static TH1D * hAdcSum
Definition adcsum.cxx:69
INT adc_summing_bor(INT run_number)
INT adc_summing(EVENT_HEADER *, void *)
Definition adcsum.cxx:88
#define ADC_SUMMING_PARAM_STR(_name)
Definition experim.h:80
INT bk_close(void *event, void *pdata)
Definition midas.cxx:16780
INT bk_locate(const void *event, const char *name, void *pdata)
Definition midas.cxx:16889
void bk_create(void *event, const char *name, WORD type, void **pdata)
Definition midas.cxx:16561
#define SUCCESS
Definition mcstd.h:54
#define TID_STRUCT
Definition midas.h:348
INT run_number[2]
Definition mana.cxx:246
INT i
Definition mdump.cxx:32
#define SET_TEST(t, v)
Definition midas.h:1346
void EXPRT close_subfolder(void)
int INT
Definition midas.h:129
void EXPRT open_subfolder(const char *name)
#define DEF_TEST(t)
Definition midas.h:1352
INT j
Definition odbhist.cxx:40
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
float adc_threshold
Definition experim.h:77