Low-Energy Muon (LEM) Experiment  0.5.2
decay_ana_module.cxx
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 --------------------------------------------------*/
92 INT decay_init(void)
93 {
94  extern char runname[256];
95  char title[256], name[256];
96  int nbin;
97  float xlow, xhigh;
98 
99  // decay histograms with external stimulus OFF, npp and ppc
100  for (int 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 (int 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 
141 INT decay_bor(INT run_number)
142 {
143  char title[256];
144  extern char runname[256];
145 
146  // decay histograms with external stimulus OFF
147  for (int i=0; i<2*N_DECAY_HISTS; i++){
148  sprintf(title, "%s, Ext. OFF, Run %s_%04d", decay_ana_param.histotitles.decaytitles.titles[i],
149  runname, runinfo.run_number);
150  hDecHist[i]->SetTitle(title);
151  }
152 
153  // decay histograms with external stimulus ON
154  for (int i=2*N_DECAY_HISTS; i<4*N_DECAY_HISTS; i++){
155  sprintf(title, "%s, Ext. ON, Run %s_%04d", decay_ana_param.histotitles.decaytitles.titles[i-2*N_DECAY_HISTS],
156  runname, runinfo.run_number);
157  hDecHist[i]->SetTitle(title);
158  }
159 
160  // get data window for post-pileup rejection from ODB
161  if ( trigger_settings.events.event_1_active)
163  else
165 
166  return SUCCESS;
167 }
168 
169 /*-- EOR routine ---------------------------------------------------*/
170 
171 INT decay_eor(INT run_number)
172 {
173  return SUCCESS;
174 }
175 
176 /*-- event routine -------------------------------------------------*/
183 INT decay_ana(EVENT_HEADER *pheader, void *pevent)
184 {
185  INT n, channel, counter[N_TDC_CHANNELS];
186  INT masterCH;
187  DWORD *ptdc, tdc_data[N_TDC_CHANNELS][DATA_N_HITS];
188  BOOL foundTD; /* flag indicating that we got a start signal */
189  BOOL foundMCP2;
190  DWORD posHit_flag; /* flag indicating which e+ detector were hit*/
191  LEM_DATA *lem_data;
192  INT difftime_last;
193 
194  /* look for TDC0 bank */
195  n = bk_locate(pevent, "TDC0", &ptdc);
196  if (n == 0 )
197  return 1;
198 
199  // return if we don't have the NEW_EVENT_FLAG present
200  if ( !(ptdc[0] & NEW_EVENT_MASK)) return 1;
201 
202  // return if not EVENT_0_TYPE (Muons on MCP1)
203  if ( ptdc[0] & (EVENT_0_TYPE<<16) ) return 1;
204 
205  masterCH = TD;
206  foundTD = FALSE;
207  foundMCP2 = FALSE;
208  posHit_flag = 0;
209  memset(&counter, 0x00, sizeof(counter));
210  memset(&tdc_data, 0x00, sizeof(tdc_data));
211 
212  for (int i=1; i<n; i++){ // i=0 is a control word, including the event length
213  lem_data = (LEM_DATA *) &ptdc[i];
214  channel = lem_data->channel;
215  if ( channel > N_TDC_CHANNELS-1 ) continue; //not understood how this can happen, but it can happen
216  //after a HV break at the moderator (all channel get "many" hits, like
217  //a "flash" in the detectors
218  tdc_data[channel][counter[channel]] = lem_data->data;
219  counter[channel]++;
220 
221  switch ( channel ){
222  case TD:
223  foundTD = TRUE;
224  break;
225 
226  case MCP2F:
227  foundMCP2 = TRUE;
228  break;
229 
230  case POSLDI: case POSLDO:
231  posHit_flag = posHit_flag | POS_FLAG_LD;
232  break;
233  case POSLUI: case POSLUO:
234  posHit_flag = posHit_flag | POS_FLAG_LU;
235  break;
236 
237  case POSTDI: case POSTDO:
238  posHit_flag = posHit_flag | POS_FLAG_TD;
239  break;
240  case POSTUI: case POSTUO:
241  posHit_flag = posHit_flag | POS_FLAG_TU;
242  break;
243 
244  case POSRDI: case POSRDO:
245  posHit_flag = posHit_flag | POS_FLAG_RD;
246  break;
247  case POSRUI: case POSRUO:
248  posHit_flag = posHit_flag | POS_FLAG_RU;
249  break;
250 
251  case POSBDI: case POSBDO:
252  posHit_flag = posHit_flag | POS_FLAG_BD;
253  break;
254  case POSBUI: case POSBUO:
255  posHit_flag = posHit_flag | POS_FLAG_BU;
256  break;
257 
258  default:
259  break;
260  }
261  }
262 
263  if ( !foundTD && !foundMCP2 ) return SUCCESS;
264  if ( !foundTD ) masterCH = MCP2F;
265 
266  // fill decay histograms without further cut; the "inner" detector
267  // determines the timing, "downstream/forward" detectors first
268  if ( tdc_data[POSLDI][0] > 0 && tdc_data[POSLDO][0] > 0 ) {
269  difftime_last = tdc_data[POSLDI][0] - tdc_data[masterCH][0];
270  if ( ptdc[0] & EXTOFF1_FLAG)
271  hDecHist[0]->Fill( (float) difftime_last + t0shift_param.delta_t0[0], 1.);
272  if ( ptdc[0] & EXTON1_FLAG)
273  hDecHist[16]->Fill( (float) difftime_last + t0shift_param.delta_t0[0], 1.);
274  }
275  if ( tdc_data[POSTDI][0] > 0 && tdc_data[POSTDO][0] > 0 ) {
276  difftime_last = tdc_data[POSTDI][0] - tdc_data[masterCH][0];
277  if ( ptdc[0] & EXTOFF1_FLAG)
278  hDecHist[1]->Fill( (float) difftime_last + t0shift_param.delta_t0[1], 1.);
279  if ( ptdc[0] & EXTON1_FLAG)
280  hDecHist[17]->Fill( (float) difftime_last + t0shift_param.delta_t0[1], 1.);
281  }
282  if ( tdc_data[POSRDI][0] > 0 && tdc_data[POSRDO][0] > 0 ) {
283  difftime_last = tdc_data[POSRDI][0] - tdc_data[masterCH][0];
284  if ( ptdc[0] & EXTOFF1_FLAG)
285  hDecHist[2]->Fill( (float) difftime_last + t0shift_param.delta_t0[2], 1.);
286  if ( ptdc[0] & EXTON1_FLAG)
287  hDecHist[18]->Fill( (float) difftime_last + t0shift_param.delta_t0[2], 1.);
288  }
289  if ( tdc_data[POSBDI][0] > 0 && tdc_data[POSBDO][0] > 0 ) {
290  difftime_last = tdc_data[POSBDI][0] - tdc_data[masterCH][0];
291  if ( ptdc[0] & EXTOFF1_FLAG)
292  hDecHist[3]->Fill( (float) difftime_last + t0shift_param.delta_t0[3], 1.);
293  if ( ptdc[0] & EXTON1_FLAG)
294  hDecHist[19]->Fill( (float) difftime_last + t0shift_param.delta_t0[3], 1.);
295  }
296  // fill decay histograms without further cut; the "inner" detector
297  // determines the timing, "upstream/backward" detectors
298  if ( tdc_data[POSLUI][0] > 0 && tdc_data[POSLUO][0] > 0 ) {
299  difftime_last = tdc_data[POSLUI][0] - tdc_data[masterCH][0];
300  if ( ptdc[0] & EXTOFF1_FLAG)
301  hDecHist[4]->Fill( (float) difftime_last + t0shift_param.delta_t0[4], 1.);
302  if ( ptdc[0] & EXTON1_FLAG)
303  hDecHist[20]->Fill( (float) difftime_last + t0shift_param.delta_t0[4], 1.);
304  }
305  if ( tdc_data[POSTUI][0] > 0 && tdc_data[POSTUO][0] > 0 ) {
306  difftime_last = tdc_data[POSTUI][0] - tdc_data[masterCH][0];
307  if ( ptdc[0] & EXTOFF1_FLAG)
308  hDecHist[5]->Fill( (float) difftime_last + t0shift_param.delta_t0[5], 1.);
309  if ( ptdc[0] & EXTON1_FLAG)
310  hDecHist[21]->Fill( (float) difftime_last + t0shift_param.delta_t0[5], 1.);
311  }
312  if ( tdc_data[POSRUI][0] > 0 && tdc_data[POSRUO][0] > 0 ) {
313  difftime_last = tdc_data[POSRUI][0] - tdc_data[masterCH][0];
314  if ( ptdc[0] & EXTOFF1_FLAG)
315  hDecHist[6]->Fill( (float) difftime_last + t0shift_param.delta_t0[6], 1.);
316  if ( ptdc[0] & EXTON1_FLAG)
317  hDecHist[22]->Fill( (float) difftime_last + t0shift_param.delta_t0[6], 1.);
318  }
319  if ( tdc_data[POSBUI][0] > 0 && tdc_data[POSBUO][0] > 0 ) {
320  difftime_last = tdc_data[POSBUI][0] - tdc_data[masterCH][0];
321  if ( ptdc[0] & EXTOFF1_FLAG)
322  hDecHist[7]->Fill( (float) difftime_last + t0shift_param.delta_t0[7], 1.);
323  if ( ptdc[0] & EXTON1_FLAG)
324  hDecHist[23]->Fill( (float) difftime_last + t0shift_param.delta_t0[7], 1.);
325  }
326 
327  // check for post-pileup in masterCH: if post-pileup, return
328  if ( tdc_data[masterCH][1] != 0 &&
329  (tdc_data[masterCH][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay) return SUCCESS;
330 
331  // check, if we had only 1 e+ detector fired, and that for this detector there was
332  // no 2nd e+ during data window
333 
334  // "Left" detectors
335  if ( posHit_flag == POS_FLAG_LD ){
336  if ( tdc_data[POSLDI][1] != 0 ){
337  if ( (tdc_data[POSLDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
338  abs(tdc_data[POSLDI][1]-tdc_data[POSLDO][1]) < 50 ) return SUCCESS; //2nd e+
339  }
340  if ( ptdc[0] & EXTOFF1_FLAG)
341  hDecHist[8]->Fill( (float)(tdc_data[POSLDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[0], 1.);
342  if ( ptdc[0] & EXTON1_FLAG)
343  hDecHist[24]->Fill( (float)(tdc_data[POSLDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[0], 1.);
344  return SUCCESS;
345  }
346  if ( posHit_flag == POS_FLAG_LU ){
347  if ( tdc_data[POSLUI][1] != 0 ){
348  if ( (tdc_data[POSLUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
349  abs(tdc_data[POSLUI][1]-tdc_data[POSLUO][1]) < 50 ) return SUCCESS; //2nd e+
350  }
351  if ( ptdc[0] & EXTOFF1_FLAG)
352  hDecHist[12]->Fill( (float)(tdc_data[POSLUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[4], 1.);
353  if ( ptdc[0] & EXTON1_FLAG)
354  hDecHist[28]->Fill( (float)(tdc_data[POSLUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[4], 1.);
355  return SUCCESS;
356  }
357 
358  // "Top" detectors
359  if ( posHit_flag == POS_FLAG_TD ){
360  if ( tdc_data[POSTDI][1] != 0 ){
361  if ( (tdc_data[POSTDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
362  abs(tdc_data[POSTDI][1]-tdc_data[POSTDO][1]) < 50) return SUCCESS; //2nd e+
363  }
364  if ( ptdc[0] & EXTOFF1_FLAG)
365  hDecHist[9]->Fill( (float)(tdc_data[POSTDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[1], 1.);
366  if ( ptdc[0] & EXTON1_FLAG)
367  hDecHist[25]->Fill( (float)(tdc_data[POSTDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[1], 1.);
368  return SUCCESS;
369  }
370  if ( posHit_flag == POS_FLAG_TU ){
371  if ( tdc_data[POSTUI][1] != 0 ){
372  if ( (tdc_data[POSTUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
373  abs(tdc_data[POSTUI][1]-tdc_data[POSTUO][1]) < 50) return SUCCESS; //2nd e+
374  }
375  if ( ptdc[0] & EXTOFF1_FLAG)
376  hDecHist[13]->Fill( (float)(tdc_data[POSTUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[5], 1.);
377  if ( ptdc[0] & EXTON1_FLAG)
378  hDecHist[29]->Fill( (float)(tdc_data[POSTUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[5], 1.);
379  return SUCCESS;
380  }
381 
382  // "Right" detectors
383  if ( posHit_flag == POS_FLAG_RD ){
384  if ( tdc_data[POSRDI][1] != 0 ){
385  if ( (tdc_data[POSRDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
386  abs(tdc_data[POSRDI][1]-tdc_data[POSRDO][1]) < 50) return SUCCESS; //2nd e+
387  }
388  if ( ptdc[0] & EXTOFF1_FLAG)
389  hDecHist[10]->Fill( (float)(tdc_data[POSRDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[2], 1.);
390  if ( ptdc[0] & EXTON1_FLAG)
391  hDecHist[26]->Fill( (float)(tdc_data[POSRDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[2], 1.);
392  return SUCCESS;
393  }
394  if ( posHit_flag == POS_FLAG_RU ){
395  if ( tdc_data[POSRUI][1] != 0 ){
396  if ( (tdc_data[POSRUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
397  abs(tdc_data[POSRUI][1]-tdc_data[POSRUO][1]) < 50) return SUCCESS; //2nd e+
398  }
399  if ( ptdc[0] & EXTOFF1_FLAG)
400  hDecHist[14]->Fill( (float)(tdc_data[POSRUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[6], 1.);
401  if ( ptdc[0] & EXTON1_FLAG)
402  hDecHist[30]->Fill( (float)(tdc_data[POSRUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[6], 1.);
403  return SUCCESS;
404  }
405 
406  // "Bottom" detectors
407  if ( posHit_flag == POS_FLAG_BD ){
408  if ( tdc_data[POSBDI][1] != 0 ){
409  if ( (tdc_data[POSBDI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
410  abs(tdc_data[POSBDI][1]-tdc_data[POSBDO][1]) < 50) return SUCCESS;
411  }
412  if ( ptdc[0] & EXTOFF1_FLAG)
413  hDecHist[11]->Fill( (float)(tdc_data[POSBDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[3], 1.);
414  if ( ptdc[0] & EXTON1_FLAG)
415  hDecHist[27]->Fill( (float)(tdc_data[POSBDI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[3], 1.);
416  return SUCCESS;
417  }
418  if ( posHit_flag == POS_FLAG_BU ){
419  if ( tdc_data[POSBUI][1] != 0 ){
420  if ( (tdc_data[POSBUI][1] - tdc_data[masterCH][0]) < dataWindowMuonDecay &&
421  abs(tdc_data[POSBUI][1]-tdc_data[POSBUO][1]) < 50) return SUCCESS;
422  }
423  if ( ptdc[0] & EXTOFF1_FLAG)
424  hDecHist[15]->Fill( (float)(tdc_data[POSBUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[7], 1.);
425  if ( ptdc[0] & EXTON1_FLAG)
426  hDecHist[31]->Fill( (float)(tdc_data[POSBUI][0] - tdc_data[masterCH][0]) + t0shift_param.delta_t0[7], 1.);
427  return SUCCESS;
428  }
429 
430  return SUCCESS;
431 }
432 /* ----------------------------------------------------------------------------*\
433  EOF decay_ana_module.c
434 \* ----------------------------------------------------------------------------*/
#define POS_FLAG_TD
#define POSRDI
Definition: nemu_experim.h:39
#define POSLUO
Definition: nemu_experim.h:32
WORD channel
Definition: nemu_experim.h:93
#define POS_FLAG_RD
struct DECAYANAMODULE_PARAM::@1::@3 decaybin
DECAYANAMODULE_PARAM decay_ana_param
#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
BOOL event_1_active
Definition: experim.h:660
#define POS_FLAG_TU
struct DECAYANAMODULE_PARAM::@0 histotitles
#define POS_FLAG_RU
#define EXTON1_FLAG
flag for &quot;red/green&quot;, &quot;on/off&quot; mode: ON
Definition: nemu_experim.h:68
char runname[256]
Definition: analyzer.cxx:79
struct DECAYANAMODULE_PARAM::@1 histobinning
struct DECAYANAMODULE_PARAM::@0::@2 decaytitles
#define POSTDI
Definition: nemu_experim.h:44
#define POS_FLAG_LU
float delta_t0[8]
Definition: experim.h:519
#define POSRUO
Definition: nemu_experim.h:42
TObjArray * gHistoFolderStack
TRIGGER_SETTINGS trigger_settings
Definition: analyzer.cxx:93
struct TRIGGER_SETTINGS::@17 events
static TH1F * hDecHist[4 *N_DECAY_HISTS]
struct TRIGGER_SETTINGS::@19 event_1_settings
DECAYANAMODULE_PARAM_STR(decay_ana_param_str)
RUNINFO runinfo
Definition: analyzer.cxx:83
#define POS_FLAG_BU
#define MCP2F
Definition: nemu_experim.h:49
UINT32 data_window
Definition: experim.h:666
#define DATA_N_HITS
max. of DATA_N_HITS in data file
Definition: nemu_experim.h:66
#define POSRUI
Definition: nemu_experim.h:41
#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
INT decay_eor(INT run_number)
TFolder * gManaHistosFolder
#define POSBDO
Definition: nemu_experim.h:35
#define NEW_EVENT_MASK
Definition: nemu_experim.h:67
INT decay_bor(INT run_number)
#define POSBUO
Definition: nemu_experim.h:37
#define N_TDC_CHANNELS
number of TDC channels
Definition: nemu_experim.h:64
INT decay_ana(EVENT_HEADER *, void *)
#define POSRDO
Definition: nemu_experim.h:40
#define POSTDO
Definition: nemu_experim.h:45
#define POSBDI
Definition: nemu_experim.h:34
#define POSTUO
Definition: nemu_experim.h:47
DWORD data
Definition: nemu_experim.h:92
static DWORD dataWindowMuonDecay
#define POSLDI
Definition: nemu_experim.h:29
#define POS_FLAG_BD
#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
#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 POS_FLAG_LD
T0SHIFT_PARAM t0shift_param
Definition: analyzer.cxx:99
ANA_MODULE decay_ana_module
#define EVENT_0_TYPE
EVENT type 0 = BC-MCP1-(e+)
Definition: nemu_experim.h:75
INT decay_init(void)