Low-Energy Muon (LEM) Experiment  0.5.1
decay_ana_module.c
Go to the documentation of this file.
1 /********************************************************************\
2 
3  Name: decay_ana_module.c
4  Created by: Thomas Prokscha
5  Date: 01-Apr-2007
6 
7  Contents: Analyzer module for LE-muSR decayhistograms
8 
9 \********************************************************************/
10 
11 /*-- Include files -------------------------------------------------*/
12 
13 /* standard includes */
14 #include <stdio.h>
15 #include <stdlib.h>
16 #include <time.h>
17 #include <string.h>
18 #include <math.h>
19 
20 /* midas includes */
21 #include "midas.h"
22 #include "rmidas.h"
23 #include "v1190.h"
24 #include "experim.h"
25 #include "nemu_experim.h"
26 
27 #ifdef HAVE_HBOOK
28 #include <cfortran.h>
29 #include <hbook.h>
30 #else
31 /* root includes */
32 #include <TFolder.h>
33 #include <TH1F.h>
34 #include <TH2F.h>
35 #include <TTree.h>
36 #endif
37 
38 /*-- ODB Parameters ------------------------------------------------*/
39 //extern RUNINFO runinfo;
40 //extern EXP_PARAM exp_param;
41 extern RUNINFO runinfo;
45 DECAYANAMODULE_PARAM_STR(decay_ana_param_str);
46 
47 /*-- Module declaration --------------------------------------------*/
48 INT decay_init(void);
49 INT decay_ana(EVENT_HEADER*,void*);
50 INT decay_bor(INT run_number);
51 INT decay_eor(INT run_number);
52 
53 ANA_MODULE decay_ana_module = {
54  "DecayAnaModule", /* module name */
55  "Thomas Prokscha", /* author */
56  decay_ana, /* event routine */
57  decay_bor, /* BOR routine */
58  decay_eor, /* EOR routine */
59  decay_init, /* init routine */
60  NULL, /* exit routine */
61  &decay_ana_param, /* parameter structure */
62  sizeof(decay_ana_param), /* structure size */
63  (const char **)decay_ana_param_str, /* initial parameters */
64 };
65 
66 /*-- other global variables ----------------------------------------*/
67 #ifndef HAVE_HBOOK
68 static TH1F* hDecHist[4*N_DECAY_HISTS];
69 //the following objects are from mana.c
70 extern TFolder *gManaHistosFolder;
71 extern TObjArray *gHistoFolderStack;
72 #endif
73 
74 #define POS_FLAG_LD (1<<0)
75 #define POS_FLAG_TD (1<<1)
76 #define POS_FLAG_RD (1<<2)
77 #define POS_FLAG_BD (1<<3)
78 #define POS_FLAG_LU (1<<4)
79 #define POS_FLAG_TU (1<<5)
80 #define POS_FLAG_RU (1<<6)
81 #define POS_FLAG_BU (1<<7)
82 
83 static DWORD dataWindowMuonDecay; //needed for post-pileup rejection
84 
85 /*-- INIT routine --------------------------------------------------*/
86 INT decay_init(void)
93 {
94 extern char runname[256];
95 char title[256], name[256];
96 int nbin, i;
97 float xlow, xhigh;
98 
99  // decay histograms with external stimulus OFF, npp and ppc
100  for (i=0; i<2*N_DECAY_HISTS; i++){
101  if ( i > N_DECAY_HISTS-1)
102  sprintf(name, "hDecay%03d", i+1+N_OFFSET_PPC_HISTOGRAMS-N_DECAY_HISTS); //histograms with post-pileup correction: offset 20 in name
103  else
104  sprintf(name, "hDecay%03d", i+1);
105  sprintf(title, "%s, Ext. OFF, Run %s_%04d", decay_ana_param.histotitles.decaytitles.titles[i],
106  runname, runinfo.run_number);
107  nbin = decay_ana_param.histobinning.decaybin.histonbin[i];
108  xlow = decay_ana_param.histobinning.decaybin.histoxlow[i];
109  xhigh = decay_ana_param.histobinning.decaybin.histoxup[i];
110  hDecHist[i] = H1_BOOK(name, title, nbin, xlow, xhigh);
111  }
112 
113  // decay histograms with external stimulus ON, npp and ppc
114  for (i=2*N_DECAY_HISTS; i<4*N_DECAY_HISTS; i++){
115  if ( i > 3*N_DECAY_HISTS-1)
116  sprintf(name, "hDecay%03d", i+1+N_OFFSET_PPC_HISTOGRAMS+N_OFFSET_ONOFF_HISTOGRAMS-3*N_DECAY_HISTS); //histograms with post-pileup correction: offset 20 in name
117  else
118  sprintf(name, "hDecay%03d", i+1+N_OFFSET_ONOFF_HISTOGRAMS-2*N_DECAY_HISTS);
119  sprintf(title, "%s, Ext. ON, Run %s_%04d", decay_ana_param.histotitles.decaytitles.titles[i],
120  runname, runinfo.run_number);
121  nbin = decay_ana_param.histobinning.decaybin.histonbin[i-2*N_DECAY_HISTS];
122  xlow = decay_ana_param.histobinning.decaybin.histoxlow[i-2*N_DECAY_HISTS];
123  xhigh = decay_ana_param.histobinning.decaybin.histoxup[i-2*N_DECAY_HISTS];
124  hDecHist[i] = H1_BOOK(name, title, nbin, xlow, xhigh);
125  }
126 
128 
129  return SUCCESS;
130 }
131 
132 /*-- BOR routine ---------------------------------------------------*/
133 
134 INT decay_bor(INT run_number)
142 {
143 int i;
144 char title[256];
145 extern char runname[256];
146 
147  // decay histograms with external stimulus OFF
148  for (i=0; i<2*N_DECAY_HISTS; i++){
149  sprintf(title, "%s, Ext. OFF, Run %s_%04d", decay_ana_param.histotitles.decaytitles.titles[i],
150  runname, runinfo.run_number);
151  hDecHist[i]->SetTitle(title);
152  }
153 
154  // decay histograms with external stimulus ON
155  for (i=2*N_DECAY_HISTS; i<4*N_DECAY_HISTS; i++){
156  sprintf(title, "%s, Ext. ON, Run %s_%04d", decay_ana_param.histotitles.decaytitles.titles[i-2*N_DECAY_HISTS],
157  runname, runinfo.run_number);
158  hDecHist[i]->SetTitle(title);
159  }
160 
161  // get data window for post-pileup rejection from ODB
162  if ( trigger_settings.events.event_1_active)
164  else
166 
167  return SUCCESS;
168 }
169 
170 /*-- EOR routine ---------------------------------------------------*/
171 
172 INT decay_eor(INT run_number)
173 {
174 
175  return SUCCESS;
176 }
177 
178 /*-- event routine -------------------------------------------------*/
185 INT decay_ana(EVENT_HEADER *pheader, void *pevent)
186 {
187 INT n, i, j, channel, counter[N_TDC_CHANNELS];
188 INT masterCH;
189 DWORD *ptdc, tdc_data[N_TDC_CHANNELS][DATA_N_HITS];
190 BOOL foundTD; /* flag indicating that we got a start signal */
191 BOOL foundMCP2;
192 DWORD posHit_flag; /* flag indicating which e+ detector were hit*/
193 LEM_DATA *lem_data;
194 INT difftime_last;
195 
196  /* look for TDC0 bank */
197  n = bk_locate(pevent, "TDC0", &ptdc);
198  if (n == 0 )
199  return 1;
200 
201  // return if we don't have the NEW_EVENT_FLAG present
202  if ( !(ptdc[0] & NEW_EVENT_MASK)) return 1;
203 
204  // return if not EVENT_0_TYPE (Muons on MCP1)
205  if ( ptdc[0] & (EVENT_0_TYPE<<16) ) return 1;
206 
207  masterCH = TD;
208  foundTD = FALSE;
209  foundMCP2 = FALSE;
210  posHit_flag = 0;
211  memset(&counter, 0x00, sizeof(counter));
212  memset(&tdc_data, 0x00, sizeof(tdc_data));
213 
214  for (i = 1; i < n; i++){ // i=0 is a control word, including the event length
215  lem_data = (LEM_DATA *) &ptdc[i];
216  channel = lem_data->channel;
217  if ( channel > N_TDC_CHANNELS-1 ) continue; //not understood how this can happen, but it can happen
218  //after a HV break at the moderator (all channel get "many" hits, like
219  //a "flash" in the detectors
220  tdc_data[channel][counter[channel]] = lem_data->data;
221  counter[channel]++;
222 
223  switch ( channel ){
224  case TD:
225  foundTD = TRUE;
226  break;
227 
228  case MCP2F:
229  foundMCP2 = TRUE;
230  break;
231 
232  case POSLDI: case POSLDO:
233  posHit_flag = posHit_flag | POS_FLAG_LD;
234  break;
235  case POSLUI: case POSLUO:
236  posHit_flag = posHit_flag | POS_FLAG_LU;
237  break;
238 
239  case POSTDI: case POSTDO:
240  posHit_flag = posHit_flag | POS_FLAG_TD;
241  break;
242  case POSTUI: case POSTUO:
243  posHit_flag = posHit_flag | POS_FLAG_TU;
244  break;
245 
246  case POSRDI: case POSRDO:
247  posHit_flag = posHit_flag | POS_FLAG_RD;
248  break;
249  case POSRUI: case POSRUO:
250  posHit_flag = posHit_flag | POS_FLAG_RU;
251  break;
252 
253  case POSBDI: case POSBDO:
254  posHit_flag = posHit_flag | POS_FLAG_BD;
255  break;
256  case POSBUI: case POSBUO:
257  posHit_flag = posHit_flag | POS_FLAG_BU;
258  break;
259 
260  default:
261  break;
262  }
263  }
264 
265  if ( !foundTD && !foundMCP2 ) return SUCCESS;
266  if ( !foundTD ) masterCH = MCP2F;
267 
268  // fill decay histograms without further cut; the "inner" detector
269  // determines the timing, "downstream/forward" detectors first
270  if ( tdc_data[POSLDI][0] > 0 && tdc_data[POSLDO][0] > 0 ) {
271  difftime_last = tdc_data[POSLDI][0] - tdc_data[masterCH][0];
272  if ( ptdc[0] & EXTOFF1_FLAG)
273  hDecHist[0]->Fill( (float) difftime_last + t0shift_param.delta_t0[0], 1.);
274  if ( ptdc[0] & EXTON1_FLAG)
275  hDecHist[16]->Fill( (float) difftime_last + t0shift_param.delta_t0[0], 1.);
276  }
277  if ( tdc_data[POSTDI][0] > 0 && tdc_data[POSTDO][0] > 0 ) {
278  difftime_last = tdc_data[POSTDI][0] - tdc_data[masterCH][0];
279  if ( ptdc[0] & EXTOFF1_FLAG)
280  hDecHist[1]->Fill( (float) difftime_last + t0shift_param.delta_t0[1], 1.);
281  if ( ptdc[0] & EXTON1_FLAG)
282  hDecHist[17]->Fill( (float) difftime_last + t0shift_param.delta_t0[1], 1.);
283  }
284  if ( tdc_data[POSRDI][0] > 0 && tdc_data[POSRDO][0] > 0 ) {
285  difftime_last = tdc_data[POSRDI][0] - tdc_data[masterCH][0];
286  if ( ptdc[0] & EXTOFF1_FLAG)
287  hDecHist[2]->Fill( (float) difftime_last + t0shift_param.delta_t0[2], 1.);
288  if ( ptdc[0] & EXTON1_FLAG)
289  hDecHist[18]->Fill( (float) difftime_last + t0shift_param.delta_t0[2], 1.);
290  }
291  if ( tdc_data[POSBDI][0] > 0 && tdc_data[POSBDO][0] > 0 ) {
292  difftime_last = tdc_data[POSBDI][0] - tdc_data[masterCH][0];
293  if ( ptdc[0] & EXTOFF1_FLAG)
294  hDecHist[3]->Fill( (float) difftime_last + t0shift_param.delta_t0[3], 1.);
295  if ( ptdc[0] & EXTON1_FLAG)
296  hDecHist[19]->Fill( (float) difftime_last + t0shift_param.delta_t0[3], 1.);
297  }
298  // fill decay histograms without further cut; the "inner" detector
299  // determines the timing, "upstream/backward" detectors
300  if ( tdc_data[POSLUI][0] > 0 && tdc_data[POSLUO][0] > 0 ) {
301  difftime_last = tdc_data[POSLUI][0] - tdc_data[masterCH][0];
302  if ( ptdc[0] & EXTOFF1_FLAG)
303  hDecHist[4]->Fill( (float) difftime_last + t0shift_param.delta_t0[4], 1.);
304  if ( ptdc[0] & EXTON1_FLAG)
305  hDecHist[20]->Fill( (float) difftime_last + t0shift_param.delta_t0[4], 1.);
306  }
307  if ( tdc_data[POSTUI][0] > 0 && tdc_data[POSTUO][0] > 0 ) {
308  difftime_last = tdc_data[POSTUI][0] - tdc_data[masterCH][0];
309  if ( ptdc[0] & EXTOFF1_FLAG)
310  hDecHist[5]->Fill( (float) difftime_last + t0shift_param.delta_t0[5], 1.);
311  if ( ptdc[0] & EXTON1_FLAG)
312  hDecHist[21]->Fill( (float) difftime_last + t0shift_param.delta_t0[5], 1.);
313  }
314  if ( tdc_data[POSRUI][0] > 0 && tdc_data[POSRUO][0] > 0 ) {
315  difftime_last = tdc_data[POSRUI][0] - tdc_data[masterCH][0];
316  if ( ptdc[0] & EXTOFF1_FLAG)
317  hDecHist[6]->Fill( (float) difftime_last + t0shift_param.delta_t0[6], 1.);
318  if ( ptdc[0] & EXTON1_FLAG)
319  hDecHist[22]->Fill( (float) difftime_last + t0shift_param.delta_t0[6], 1.);
320  }
321  if ( tdc_data[POSBUI][0] > 0 && tdc_data[POSBUO][0] > 0 ) {
322  difftime_last = tdc_data[POSBUI][0] - tdc_data[masterCH][0];
323  if ( ptdc[0] & EXTOFF1_FLAG)
324  hDecHist[7]->Fill( (float) difftime_last + t0shift_param.delta_t0[7], 1.);
325  if ( ptdc[0] & EXTON1_FLAG)
326  hDecHist[23]->Fill( (float) difftime_last + t0shift_param.delta_t0[7], 1.);
327  }
328 
329  // check for post-pileup in masterCH: if post-pileup, return
330  if ( tdc_data[masterCH][1] != 0 &&
331  (tdc_data[masterCH][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay) return SUCCESS;
332 
333  // check, if we had only 1 e+ detector fired, and that for this detector there was
334  // no 2nd e+ during data window
335 
336  // "Left" detectors
337  if ( posHit_flag == POS_FLAG_LD ){
338  if ( tdc_data[POSLDI][1] != 0 ){
339  if ( (tdc_data[POSLDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
340  abs(tdc_data[POSLDI][1]-tdc_data[POSLDO][1]) < 50 ) return SUCCESS; //2nd e+
341  }
342  if ( ptdc[0] & EXTOFF1_FLAG)
343  hDecHist[8]->Fill( (float)(tdc_data[POSLDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[0], 1.);
344  if ( ptdc[0] & EXTON1_FLAG)
345  hDecHist[24]->Fill( (float)(tdc_data[POSLDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[0], 1.);
346  return SUCCESS;
347  }
348  if ( posHit_flag == POS_FLAG_LU ){
349  if ( tdc_data[POSLUI][1] != 0 ){
350  if ( (tdc_data[POSLUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
351  abs(tdc_data[POSLUI][1]-tdc_data[POSLUO][1]) < 50 ) return SUCCESS; //2nd e+
352  }
353  if ( ptdc[0] & EXTOFF1_FLAG)
354  hDecHist[12]->Fill( (float)(tdc_data[POSLUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[4], 1.);
355  if ( ptdc[0] & EXTON1_FLAG)
356  hDecHist[28]->Fill( (float)(tdc_data[POSLUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[4], 1.);
357  return SUCCESS;
358  }
359 
360  // "Top" detectors
361  if ( posHit_flag == POS_FLAG_TD ){
362  if ( tdc_data[POSTDI][1] != 0 ){
363  if ( (tdc_data[POSTDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
364  abs(tdc_data[POSTDI][1]-tdc_data[POSTDO][1]) < 50) return SUCCESS; //2nd e+
365  }
366  if ( ptdc[0] & EXTOFF1_FLAG)
367  hDecHist[9]->Fill( (float)(tdc_data[POSTDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[1], 1.);
368  if ( ptdc[0] & EXTON1_FLAG)
369  hDecHist[25]->Fill( (float)(tdc_data[POSTDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[1], 1.);
370  return SUCCESS;
371  }
372  if ( posHit_flag == POS_FLAG_TU ){
373  if ( tdc_data[POSTUI][1] != 0 ){
374  if ( (tdc_data[POSTUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
375  abs(tdc_data[POSTUI][1]-tdc_data[POSTUO][1]) < 50) return SUCCESS; //2nd e+
376  }
377  if ( ptdc[0] & EXTOFF1_FLAG)
378  hDecHist[13]->Fill( (float)(tdc_data[POSTUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[5], 1.);
379  if ( ptdc[0] & EXTON1_FLAG)
380  hDecHist[29]->Fill( (float)(tdc_data[POSTUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[5], 1.);
381  return SUCCESS;
382  }
383 
384  // "Right" detectors
385  if ( posHit_flag == POS_FLAG_RD ){
386  if ( tdc_data[POSRDI][1] != 0 ){
387  if ( (tdc_data[POSRDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
388  abs(tdc_data[POSRDI][1]-tdc_data[POSRDO][1]) < 50) return SUCCESS; //2nd e+
389  }
390  if ( ptdc[0] & EXTOFF1_FLAG)
391  hDecHist[10]->Fill( (float)(tdc_data[POSRDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[2], 1.);
392  if ( ptdc[0] & EXTON1_FLAG)
393  hDecHist[26]->Fill( (float)(tdc_data[POSRDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[2], 1.);
394  return SUCCESS;
395  }
396  if ( posHit_flag == POS_FLAG_RU ){
397  if ( tdc_data[POSRUI][1] != 0 ){
398  if ( (tdc_data[POSRUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
399  abs(tdc_data[POSRUI][1]-tdc_data[POSRUO][1]) < 50) return SUCCESS; //2nd e+
400  }
401  if ( ptdc[0] & EXTOFF1_FLAG)
402  hDecHist[14]->Fill( (float)(tdc_data[POSRUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[6], 1.);
403  if ( ptdc[0] & EXTON1_FLAG)
404  hDecHist[30]->Fill( (float)(tdc_data[POSRUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[6], 1.);
405  return SUCCESS;
406  }
407 
408  // "Bottom" detectors
409  if ( posHit_flag == POS_FLAG_BD ){
410  if ( tdc_data[POSBDI][1] != 0 ){
411  if ( (tdc_data[POSBDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
412  abs(tdc_data[POSBDI][1]-tdc_data[POSBDO][1]) < 50) return SUCCESS;
413  }
414  if ( ptdc[0] & EXTOFF1_FLAG)
415  hDecHist[11]->Fill( (float)(tdc_data[POSBDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[3], 1.);
416  if ( ptdc[0] & EXTON1_FLAG)
417  hDecHist[27]->Fill( (float)(tdc_data[POSBDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[3], 1.);
418  return SUCCESS;
419  }
420  if ( posHit_flag == POS_FLAG_BU ){
421  if ( tdc_data[POSBUI][1] != 0 ){
422  if ( (tdc_data[POSBUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
423  abs(tdc_data[POSBUI][1]-tdc_data[POSBUO][1]) < 50) return SUCCESS;
424  }
425  if ( ptdc[0] & EXTOFF1_FLAG)
426  hDecHist[15]->Fill( (float)(tdc_data[POSBUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[7], 1.);
427  if ( ptdc[0] & EXTON1_FLAG)
428  hDecHist[31]->Fill( (float)(tdc_data[POSBUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[7], 1.);
429  return SUCCESS;
430  }
431 
432  return SUCCESS;
433 }
434 /* ----------------------------------------------------------------------------*\
435  EOF decay_ana_module.c
436 \* ----------------------------------------------------------------------------*/
#define POSRDI
Definition: nemu_experim.h:39
#define POSLUO
Definition: nemu_experim.h:32
WORD channel
Definition: nemu_experim.h:93
#define POS_FLAG_TU
struct DECAYANAMODULE_PARAM::@1::@3 decaybin
static DWORD dataWindowMuonDecay
#define POSBUI
Definition: nemu_experim.h:36
struct TRIGGER_SETTINGS::@20 event_2_settings
#define N_OFFSET_PPC_HISTOGRAMS
ID offset of postpileup-rejected histograms.
Definition: nemu_experim.h:72
#define POS_FLAG_RU
BOOL event_1_active
Definition: experim.h:658
DECAYANAMODULE_PARAM decay_ana_param
struct DECAYANAMODULE_PARAM::@0 histotitles
T0SHIFT_PARAM t0shift_param
Definition: analyzer.c:111
#define POS_FLAG_BD
#define EXTON1_FLAG
flag for &quot;red/green&quot;, &quot;on/off&quot; mode: ON
Definition: nemu_experim.h:68
#define POS_FLAG_LU
DECAYANAMODULE_PARAM_STR(decay_ana_param_str)
char runname[256]
Definition: analyzer.c:92
struct DECAYANAMODULE_PARAM::@1 histobinning
RUNINFO runinfo
/Runinfo ODB key, defined in from midas.h
Definition: vme_fe.c:193
struct DECAYANAMODULE_PARAM::@0::@2 decaytitles
#define POSTDI
Definition: nemu_experim.h:44
INT decay_eor(INT run_number)
#define POS_FLAG_TD
float delta_t0[8]
Definition: experim.h:519
#define POSRUO
Definition: nemu_experim.h:42
struct TRIGGER_SETTINGS::@17 events
static TH1F * hDecHist[4 *N_DECAY_HISTS]
struct TRIGGER_SETTINGS::@19 event_1_settings
#define MCP2F
Definition: nemu_experim.h:49
#define POS_FLAG_BU
#define DATA_N_HITS
max. of DATA_N_HITS in data file
Definition: nemu_experim.h:66
#define POSRUI
Definition: nemu_experim.h:41
TObjArray * gHistoFolderStack
#define EXTOFF1_FLAG
flag for &quot;red/green&quot;, &quot;on/off&quot; mode: OFF
Definition: nemu_experim.h:69
#define POSLDO
Definition: nemu_experim.h:30
#define POSBDO
Definition: nemu_experim.h:35
ANA_MODULE decay_ana_module
#define NEW_EVENT_MASK
Definition: nemu_experim.h:67
#define POSBUO
Definition: nemu_experim.h:37
TRIGGER_SETTINGS trigger_settings
/Equipment/Trigger/Settings
Definition: vme_fe.c:188
#define N_TDC_CHANNELS
number of TDC channels
Definition: nemu_experim.h:64
#define POS_FLAG_RD
#define POSRDO
Definition: nemu_experim.h:40
#define POSTDO
Definition: nemu_experim.h:45
DWORD data_window
Definition: experim.h:664
#define POSBDI
Definition: nemu_experim.h:34
#define POSTUO
Definition: nemu_experim.h:47
INT decay_bor(INT run_number)
DWORD data
Definition: nemu_experim.h:92
#define POS_FLAG_LD
#define POSLDI
Definition: nemu_experim.h:29
#define N_OFFSET_ONOFF_HISTOGRAMS
ID offset for &quot;on/off&quot;, &quot;red/green&quot; histograms: no offset means &quot;off&quot;.
Definition: nemu_experim.h:73
INT decay_init(void)
#define POSTUI
Definition: nemu_experim.h:46
#define N_DECAY_HISTS
number of LE-uSR npp decay histograms
Definition: nemu_experim.h:71
#define POSLUI
Definition: nemu_experim.h:31
#define TD
Definition: nemu_experim.h:17
#define EVENT_0_TYPE
EVENT type 0 = BC-MCP1-(e+)
Definition: nemu_experim.h:75
INT decay_ana(EVENT_HEADER *, void *)
TFolder * gManaHistosFolder