Low-Energy Muon (LEM) Experiment  0.5.2
tof_ana_module.cxx
Go to the documentation of this file.
1 /********************************************************************\
2 
3  Name: tof_ana_module.c
4  Created by: Thomas Prokscha
5  Date: 01-Apr-2007
6 
7  Contents: Ana module to create time-of-flight and beam spot
8  histograms for LEM experiment
9 
10  December 2020: Fill only BCR3/BCR4 channels in TOF histograms, which are two Lyman alpha MCPs of the Mu-MASS/Lambshift experiment.
11  Channels BCL1-BCR2 are six BGO detectors.
12 
13 
14 \********************************************************************/
15 
16 /*-- Include files -------------------------------------------------*/
17 
18 /* standard includes */
19 #include <stdio.h>
20 #include <time.h>
21 #include <string.h>
22 #include <math.h>
23 
24 /* midas includes */
25 #include "midas.h"
26 #include "rmidas.h"
27 #include "v1190.h"
28 #include "experim.h"
29 #include "nemu_experim.h"
30 
31 #ifdef HAVE_HBOOK
32 #include <cfortran.h>
33 #include <hbook.h>
34 #else
35 /* root includes */
36 #include <TH1F.h>
37 #include <TH2F.h>
38 #include <TTree.h>
39 #endif
40 
41 /*-- ODB Parameters ------------------------------------------------*/
42 //extern RUNINFO runinfo;
43 //extern EXP_PARAM exp_param;
44 extern RUNINFO runinfo;
47 TOFANAMODULE_PARAM_STR(tof_ana_param_str);
48 
50 
51 /*-- Module declaration --------------------------------------------*/
52 INT tof_init(void);
53 INT tof_ana(EVENT_HEADER*,void*);
54 INT tof_bor(INT run_number);
55 INT tof_eor(INT run_number);
56 
57 ANA_MODULE tof_ana_module = {
58  "TOFAnaModule", /* module name */
59  "Thomas Prokscha", /* author */
60  tof_ana, /* event routine */
61  tof_bor, /* BOR routine */
62  tof_eor, /* EOR routine */
63  tof_init, /* init routine */
64  NULL, /* exit routine */
65  &tof_ana_param, /* parameter structure */
66  sizeof(tof_ana_param), /* structure size */
67  (const char **)tof_ana_param_str, /* initial parameters */
68 };
69 
70 /*-- other global variables ----------------------------------------*/
71 #define N_TOFHIST 17
72 #define N_POSHIST 8
73 #ifndef HAVE_HBOOK
74 static TH1F* hTOFHist[2*N_TOFHIST]; // double number of histograms for Ext. stimulus ON/OFF
75 static TH1F* hProjHist[2*2]; // double number of histograms for Ext. stimulus ON/OFF
76 static TH2F* hPosHist[2*N_POSHIST]; // double number of histograms for Ext. stimulus ON/OFF
77 //the following objects are from mana.c
78 extern TFolder *gManaHistosFolder;
79 extern TObjArray *gHistoFolderStack;
80 #endif
81 
82 // rotation cosine and sine
83 static float rotCos, rotSin;
84 
85 /*-- INIT routine --------------------------------------------------*/
86 INT tof_init(void)
87 {
88  HNDLE hDB;
89  POSI_BANK_STR(posi_bank_str);
90  extern char runname[256];
91  char title[256], name[256];
92  int nbin, i;
93  float xlow, xhigh;
94 
95  cm_get_experiment_database(&hDB, NULL);
96  db_create_record(hDB, 0, "/Equipment/Trigger/Variables/POSI", strcomb(posi_bank_str));
97 
98  // histograms with external stimulus OFF
99  for (i=0; i<N_TOFHIST; i++) {
100  sprintf(name, "hTOF%02d", i);
101  sprintf(title, "%s, Ext. OFF, Run %s_%04d", tof_ana_param.histotitles.toftitles.titles[i],
102  runname, runinfo.run_number);
103  nbin = tof_ana_param.histobinning.tofbin.histonbin[i];
104  xlow = tof_ana_param.histobinning.tofbin.histoxlow[i];
105  xhigh = tof_ana_param.histobinning.tofbin.histoxup[i];
106  hTOFHist[i] = H1_BOOK(name, title, nbin, xlow, xhigh);
107  }
108 
109  // histograms with external stimulus ON
110  for (i=N_TOFHIST; i<2*N_TOFHIST; i++) {
111  sprintf(name, "hTOF%02d", i+N_OFFSET_ONOFF_HISTOGRAMS-N_TOFHIST);
112  sprintf(title, "%s, Ext. ON, Run %s_%04d", tof_ana_param.histotitles.toftitles.titles[i-N_TOFHIST],
113  runname, runinfo.run_number);
114  nbin = tof_ana_param.histobinning.tofbin.histonbin[i-N_TOFHIST];
115  xlow = tof_ana_param.histobinning.tofbin.histoxlow[i-N_TOFHIST];
116  xhigh = tof_ana_param.histobinning.tofbin.histoxup[i-N_TOFHIST];
117  hTOFHist[i] = H1_BOOK(name, title, nbin, xlow, xhigh);
118  }
119 
120  // histograms with external stimulus OFF
121  for (i=0; i<2; i++) {
122  sprintf(name, "hProj%02d", i);
123  sprintf(title, "%s, Ext. OFF, Run %s_%04d", tof_ana_param.histotitles.projtitles.titles[i],
124  runname, runinfo.run_number);
125  nbin = tof_ana_param.histobinning.projbin.histonbin[i];
126  xlow = tof_ana_param.histobinning.projbin.histoxlow[i];
127  xhigh = tof_ana_param.histobinning.projbin.histoxup[i];
128  hProjHist[i] = H1_BOOK(name, title, nbin, xlow, xhigh);
129  }
130 
131  // histograms with external stimulus ON
132  for (i=2; i<4; i++) {
133  sprintf(name, "hProj%02d", i+N_OFFSET_ONOFF_HISTOGRAMS-2);
134  sprintf(title, "%s, Ext. ON, Run %s_%04d", tof_ana_param.histotitles.projtitles.titles[i-2],
135  runname, runinfo.run_number);
136  nbin = tof_ana_param.histobinning.projbin.histonbin[i-2];
137  xlow = tof_ana_param.histobinning.projbin.histoxlow[i-2];
138  xhigh = tof_ana_param.histobinning.projbin.histoxup[i-2];
139  hProjHist[i] = H1_BOOK(name, title, nbin, xlow, xhigh);
140  }
141 
142  // histograms with external stimulus OFF
143  for (i=0; i<N_POSHIST; i++) {
144  sprintf(name, "hPos%02d", i);
145  sprintf(title, "%s, EXT. OFF, Run %s_%04d", tof_ana_param.histotitles.positiontitles.titles[i],
146  runname, runinfo.run_number);
147  nbin = tof_ana_param.histobinning.positionbin.histonbin[i];
148  xlow = tof_ana_param.histobinning.positionbin.histoxlow[i];
149  xhigh = tof_ana_param.histobinning.positionbin.histoxup[i];
150  hPosHist[i] = H2_BOOK(name, title, nbin, xlow, xhigh, nbin, xlow, xhigh);
151  }
152 
153  // histograms with external stimulus ON
154  for (i=N_POSHIST; i<2*N_POSHIST; i++) {
155  sprintf(name, "hPos%02d", i+N_OFFSET_ONOFF_HISTOGRAMS-N_POSHIST);
156  sprintf(title, "%s, EXT. ON, Run %s_%04d", tof_ana_param.histotitles.positiontitles.titles[i-N_POSHIST],
157  runname, runinfo.run_number);
158  nbin = tof_ana_param.histobinning.positionbin.histonbin[i-N_POSHIST];
159  xlow = tof_ana_param.histobinning.positionbin.histoxlow[i-N_POSHIST];
160  xhigh = tof_ana_param.histobinning.positionbin.histoxup[i-N_POSHIST];
161  hPosHist[i] = H2_BOOK(name, title, nbin, xlow, xhigh, nbin, xlow, xhigh);
162  }
163 
164  rotCos = rotSin = 0.;
165 
166  return SUCCESS;
167 }
168 
169 /*-- BOR routine ---------------------------------------------------*/
170 
171 INT tof_bor(INT run_number)
172 {
173  int i;
174  char title[256];
175  extern char runname[256];
176 
177  // histograms with external stimulus OFF
178  for (i=0; i<N_TOFHIST; i++) {
179  sprintf(title, "%s, Ext. OFF, Run %s_%04d", tof_ana_param.histotitles.toftitles.titles[i],
180  runname, runinfo.run_number);
181  hTOFHist[i]->SetTitle(title);
182  }
183 
184  // histograms with external stimulus ON
185  for (i=N_TOFHIST; i<2*N_TOFHIST; i++) {
186  sprintf(title, "%s, Ext. ON, Run %s_%04d", tof_ana_param.histotitles.toftitles.titles[i-N_TOFHIST],
187  runname, runinfo.run_number);
188  hTOFHist[i]->SetTitle(title);
189  }
190 
191  // histograms with external stimulus OFF
192  for (i=0; i<2; i++) {
193  sprintf(title, "%s, Ext. OFF, Run %s_%04d", tof_ana_param.histotitles.projtitles.titles[i],
194  runname, runinfo.run_number);
195  hProjHist[i]->SetTitle(title);
196  }
197 
198  // histograms with external stimulus ON
199  for (i=2; i<4; i++) {
200  sprintf(title, "%s, Ext. ON, Run %s_%04d", tof_ana_param.histotitles.projtitles.titles[i-2],
201  runname, runinfo.run_number);
202  hProjHist[i]->SetTitle(title);
203  }
204 
205  // histograms with external stimulus OFF
206  for (i=0; i<N_POSHIST; i++) {
207  if ( (i == 2) || (i == 3) )
208  sprintf(title, "%s, Ext. OFF, %d - %d Run %s_%04d",
209  tof_ana_param.histotitles.positiontitles.titles[i],
210  (int) tof_ana_param.tofm2fmin,
211  (int) tof_ana_param.tofm2fmax,
212  runname, runinfo.run_number);
213  else
214  sprintf(title, "%s, Ext. OFF, Run %s_%04d", tof_ana_param.histotitles.positiontitles.titles[i],
215  runname, runinfo.run_number);
216 
217  hPosHist[i]->SetTitle(title);
218  }
219 
220  // histograms with external stimulus ON
221  for (i=N_POSHIST; i<2*N_POSHIST; i++) {
222  if ( (i == 2+N_POSHIST) || (i == 3+N_POSHIST) )
223  sprintf(title, "%s, Ext. ON, %d - %d Run %s_%04d",
224  tof_ana_param.histotitles.positiontitles.titles[i-N_POSHIST],
225  (int) tof_ana_param.tofm2fmin,
226  (int) tof_ana_param.tofm2fmax,
227  runname, runinfo.run_number);
228  else
229  sprintf(title, "%s, Ext. ON, Run %s_%04d", tof_ana_param.histotitles.positiontitles.titles[i-N_POSHIST],
230  runname, runinfo.run_number);
231 
232  hPosHist[i]->SetTitle(title);
233  }
234 
235  if ( trigger_settings.event_1_settings.td_master )
236  masterChannel = TD;
237  else
239 
240  rotCos = cos(tof_ana_param.rotationangle/180.*3.14);
241  rotSin = sin(tof_ana_param.rotationangle/180.*3.14);
242 
243  return SUCCESS;
244 }
245 
246 /*-- EOR routine ---------------------------------------------------*/
247 
248 INT tof_eor(INT run_number)
249 {
250 
251  return SUCCESS;
252 }
253 
254 /*-- event routine -------------------------------------------------*/
261 INT tof_ana(EVENT_HEADER *pheader, void *pevent)
262 {
263  INT n, i, j, channel, counter[N_TDC_CHANNELS];
264  DWORD *ptdc, tdc_data[N_TDC_CHANNELS][DATA_N_HITS];
265  float tof_TD_M2F, tof_TD_M2R;
266  float x, y, x1, x2, y1, y2, timesum;
267  float rotX, rotY; //for beam spot rotation
268  POSI_BANK *pposi;
269  BOOL TIMEcut, SUMcut, TOFcut, foundTD, foundM2, foundBC; /* flag for time cuts on x,y position */
270  LEM_DATA *lem_data;
271  INT difftime_last, difftime_now;
272 
273  /* look for TDC0 bank */
274  n = bk_locate(pevent, "TDC0", &ptdc);
275  if (n == 0 )
276  return 1;
277 
278  // return if we don't have the NEW_EVENT_FLAG present
279  if ( !(ptdc[0] & NEW_EVENT_MASK)) return 1;
280 
281  // return if EVENT_0_TYPE (Muons on MCP1)
282  if ( ptdc[0] & (EVENT_0_TYPE<<16) ) return 1;
283 
284  TIMEcut = SUMcut = TOFcut = foundM2 = foundTD = foundBC = FALSE;
285  memset(&counter, 0x00, sizeof(counter));
286  memset(&tdc_data, 0x00, sizeof(tdc_data));
287 
288  for (i = 1; i < n; i++) { // i=0 is a control word, including the event length
289  lem_data = (LEM_DATA *) &ptdc[i];
290  channel = lem_data->channel;
291  if ( channel > N_TDC_CHANNELS-1 ) continue; //not understood how this can happen, but it can happen
292  //after a HV break at the moderator (all channel get "many" hits, like
293  //a "flash" in the detectors
294  tdc_data[channel][counter[channel]] = lem_data->data;
295  counter[channel]++;
296 
297  switch (channel){
298  case TD:
299  foundTD = TRUE;
300  break;
301 
302  case MCP2F:
303  foundM2 = TRUE;
304  break;
305 
306  case BCL1: case BCL2: case BCL3: case BCL4: case BCR1: case BCR2: case BCR3: case BCR4:
307  foundBC = TRUE;
308  break;
309 
310  default:
311  break;
312  }
313  }
314 
315  if ( foundM2 ) {
316  // don't consider pileup counts here
317  if (foundTD) {
318  tof_TD_M2F = (float) (tdc_data[MCP2F][0] - tdc_data[TD][0]);
319  tof_TD_M2R = (float) (tdc_data[MCP2R][0] - tdc_data[TD][0]);
320  }
321  x1 = (float) (tdc_data[MCP2X1][0] - tdc_data[MCP2F][0]);
322  x2 = (float) (tdc_data[MCP2X2][0] - tdc_data[MCP2F][0]);
323  y1 = (float) (tdc_data[MCP2Y1][0] - tdc_data[MCP2F][0]);
324  y2 = (float) (tdc_data[MCP2Y2][0] - tdc_data[MCP2F][0]);
325  timesum = x1 + x2 + y1 + y2;
326  if ( ptdc[0] & EXTOFF1_FLAG) {
327  if (foundTD) {
328  hTOFHist[0]->Fill(tof_TD_M2F, 1.);
329  hTOFHist[1]->Fill(tof_TD_M2R, 1.);
330  }
331  hTOFHist[2]->Fill(x1, 1.);
332  hTOFHist[3]->Fill(x2, 1.);
333  hTOFHist[4]->Fill(y1, 1.);
334  hTOFHist[5]->Fill(y2, 1.);
335  hTOFHist[6]->Fill(timesum, 1.);
336  }
337  if ( ptdc[0] & EXTON1_FLAG) {
338  if (foundTD) {
339  hTOFHist[0+N_TOFHIST]->Fill(tof_TD_M2F, 1.);
340  hTOFHist[1+N_TOFHIST]->Fill(tof_TD_M2R, 1.);
341  }
342  hTOFHist[2+N_TOFHIST]->Fill(x1, 1.);
343  hTOFHist[3+N_TOFHIST]->Fill(x2, 1.);
344  hTOFHist[4+N_TOFHIST]->Fill(y1, 1.);
345  hTOFHist[5+N_TOFHIST]->Fill(y2, 1.);
346  hTOFHist[6+N_TOFHIST]->Fill(timesum, 1.);
347  }
348 
349  x = (x1 - x2) * tof_ana_param.scalefactor + tof_ana_param.xoffset_mm_; // scale to mm and add offset in mm
350  y = (y1 - y2) * tof_ana_param.scalefactor + tof_ana_param.yoffset_mm_; // scale to mm and add offset in mm
351  rotX = rotCos*x - rotSin*y;
352  rotY = rotSin*x + rotCos*y;
353 
354  bk_create(pevent, "POSI", TID_STRUCT, (void**)&pposi);
355  pposi->x = rotX;
356  pposi->y = rotY;
357  bk_close(pevent, pposi+1);
358 
359  if ((tof_ana_param.timemin <= x1 && x1 <= tof_ana_param.timemax) &&
360  (tof_ana_param.timemin <= x2 && x2 <= tof_ana_param.timemax) &&
361  (tof_ana_param.timemin <= y1 && y1 <= tof_ana_param.timemax) &&
362  (tof_ana_param.timemin <= y2 && y2 <= tof_ana_param.timemax) )
363  TIMEcut = TRUE;
364  else
365  TIMEcut = FALSE;
366 
367  if ( tof_ana_param.timesummin <= timesum && timesum <= tof_ana_param.timesummax)
368  SUMcut = TRUE;
369  else
370  SUMcut = FALSE;
371 
372  if ( tof_ana_param.tofm2fmin <= tof_TD_M2F && tof_TD_M2F <= tof_ana_param.tofm2fmax)
373  TOFcut = TRUE;
374  else
375  TOFcut = FALSE;
376 
377  if ( TIMEcut && SUMcut ) {
378  if ( ptdc[0] & EXTOFF1_FLAG) {
379  hPosHist[0]->Fill(pposi->x, pposi->y, 1.); // "fine" binning
380  hPosHist[1]->Fill(pposi->x, pposi->y, 1.); // "course" binning
381  hPosHist[4]->Fill(x1+x2, x1-x2, 1.); // control histogram
382  hPosHist[5]->Fill(y1+y2, y1-y2, 1.); // control histogram
383  hPosHist[6]->Fill(x1, x2, 1.); // control histogram
384  hPosHist[7]->Fill(y1, y2, 1.); // control histogram
385  }
386  if ( ptdc[0] & EXTON1_FLAG) {
387  hPosHist[0+N_POSHIST]->Fill(pposi->x, pposi->y, 1.); // "fine" binning
388  hPosHist[1+N_POSHIST]->Fill(pposi->x, pposi->y, 1.); // "course" binning
389  hPosHist[4+N_POSHIST]->Fill(x1+x2, x1-x2, 1.); // control histogram
390  hPosHist[5+N_POSHIST]->Fill(y1+y2, y1-y2, 1.); // control histogram
391  hPosHist[6+N_POSHIST]->Fill(x1, x2, 1.); // control histogram
392  hPosHist[7+N_POSHIST]->Fill(y1, y2, 1.); // control histogram
393  }
394  }
395  if ( TIMEcut && SUMcut && TOFcut ) {
396  if ( ptdc[0] & EXTOFF1_FLAG ) {
397  hPosHist[2]->Fill(pposi->x, pposi->y, 1.); // "course" binning
398  hPosHist[3]->Fill(pposi->x, pposi->y, 1.);
399  hProjHist[0]->Fill(pposi->x, 1.);
400  hProjHist[1]->Fill(pposi->y, 1.);
401  }
402  if ( ptdc[0] & EXTON1_FLAG ) {
403  hPosHist[2+N_POSHIST]->Fill(pposi->x, pposi->y, 1.); // "course" binning
404  hPosHist[3+N_POSHIST]->Fill(pposi->x, pposi->y, 1.);
405  hProjHist[0+2]->Fill(pposi->x, 1.);
406  hProjHist[1+2]->Fill(pposi->y, 1.);
407  }
408  }
409  }
410 
411  if ( foundBC ) {
412  // find the next most distant BC hit with respect to TD and fill it in the TOF histogram
413 /*
414  difftime_now = difftime_last = 0;
415  if ( foundTD ){
416  for ( i=BCL1; i<=BCR4; i++){
417  if ( counter[i] == 0 ) continue;
418  for (j = 0; j<counter[i]; j++){
419  difftime_now = tdc_data[TD][0] - tdc_data[i][j];
420  if ( (difftime_now > 0) &&
421  (difftime_now < trigger_settings.tof_bc_window) &&
422  (difftime_now > difftime_last))
423  difftime_last = difftime_now;
424  }
425  }
426  hTOFHist[7]->Fill( (float) difftime_last, 1.);
427 */
428  // this is for forward timing, when "BC" signal occurs after TD
429  difftime_now = difftime_last = 0.;
430  if ( foundTD ) {
431  for ( i=BCR3; i<=BCR4; i++ ) {
432  if ( counter[i] == 0 ) continue;
433  if ( counter[i] > 0) {
434  for (j = 0; j<counter[i]; j++) {
435  difftime_last = tdc_data[i][j] - tdc_data[TD][0];
436 
437  if ( ptdc[0] & EXTOFF1_FLAG ) {
438  hTOFHist[7]->Fill( (float) difftime_last, 1.);
439  switch (i) {
440  case BCR3:
441  hTOFHist[9]->Fill( (float) difftime_last, 1.);
442  break;
443 
444  case BCR4:
445  hTOFHist[10]->Fill( (float) difftime_last, 1.);
446  break;
447 
448  default:
449  break;
450  }
451  }
452 
453  hTOFHist[7+N_TOFHIST]->Fill( (float) difftime_last, 1.);
454  }
455  }
456  }
457  }
458 
459  if ( foundM2 ) {
460  for ( i=BCR3; i<=BCR4; i++) {
461  if ( counter[i] == 0 ) continue;
462  if (counter[i] > 0) {
463  for (j = 0; j<counter[i]; j++) {
464  //difftime_last = tdc_data[MCP2F][0] - tdc_data[i][j];
465  difftime_last = tdc_data[i][j]-tdc_data[MCP2F][0]; //changed to check for MCP delay
466 
467  if ( ptdc[0] & EXTOFF1_FLAG ) {
468  hTOFHist[8]->Fill( (float) difftime_last, 1.);
469  switch (i) {
470  case BCR3:
471  hTOFHist[13]->Fill( (float) difftime_last, 1.);
472  break;
473 
474  case BCR4:
475  hTOFHist[14]->Fill( (float) difftime_last, 1.);
476  break;
477 
478  default:
479  break;
480  }
481  }
482  if ( ptdc[0] & EXTON1_FLAG )
483  hTOFHist[8+N_TOFHIST]->Fill( (float) difftime_last, 1.);
484  }
485  }
486  }
487  }
488  }
489 
490  //added by Gianluca
491  if (foundM2) {
492  float difftime_TDBack = 0;
493 
494  for(int l=0; l<counter[MCP2F]; l++) {
495  difftime_TDBack = (float)(tdc_data[MCP2F][l] - tdc_data[TD][0]);
496 
497  if (difftime_TDBack < 1800 && difftime_TDBack > 800) {
498  hTOFHist[11]->Fill(difftime_TDBack, 1.);
499 
500  for (i=BCR3; i<=BCR4; i++) {
501  float difftime_TDLya = 0;
502  float difftime_MCP2Lya = 0;
503 
504  for (j=0; j<counter[i]; j++) {
505  difftime_TDLya = (float)(tdc_data[i][j]-tdc_data[TD][0])-66560;
506  difftime_MCP2Lya = 66560-(float)(tdc_data[i][j]-tdc_data[MCP2F][l]);
507 
508  if (difftime_TDLya > 700 && difftime_TDLya < 900) {
509  if (difftime_MCP2Lya > 400 && difftime_MCP2Lya < 800) {
510 
511  if ( ptdc[0] & EXTOFF1_FLAG ) {
512  hTOFHist[12]->Fill(difftime_TDBack, 1.);
513  }
514  }
515  }
516  }
517  }
518  }
519  }
520  }
521 
522  return SUCCESS;
523 }
524 /* ----------------------------------------------------------------------------*\
525  EOF tof_ana_module.c
526 \* ----------------------------------------------------------------------------*/
static TH1F * hProjHist[2 *2]
#define BCR1
Definition: nemu_experim.h:22
WORD channel
Definition: nemu_experim.h:93
INT tof_ana(EVENT_HEADER *, void *)
#define MCP2R
Definition: nemu_experim.h:50
ANA_MODULE tof_ana_module
#define BCR4
Definition: nemu_experim.h:25
#define MCP2X2
Definition: nemu_experim.h:52
INT tof_init(void)
#define BCL4
Definition: nemu_experim.h:21
static TH2F * hPosHist[2 *N_POSHIST]
struct TOFANAMODULE_PARAM::@4::@8 positiontitles
#define MCP2Y2
Definition: nemu_experim.h:54
float rotationangle
Definition: experim.h:176
INT tof_eor(INT run_number)
struct TOFANAMODULE_PARAM::@5::@10 projbin
static float rotSin
struct TOFANAMODULE_PARAM::@5::@11 positionbin
#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
float x
Definition: experim.h:595
#define MCP2Y1
Definition: nemu_experim.h:53
#define BCL1
Definition: nemu_experim.h:18
#define BCL3
Definition: nemu_experim.h:20
TObjArray * gHistoFolderStack
TRIGGER_SETTINGS trigger_settings
Definition: analyzer.cxx:93
TOFANAMODULE_PARAM_STR(tof_ana_param_str)
static float rotCos
struct TRIGGER_SETTINGS::@19 event_1_settings
RUNINFO runinfo
Definition: analyzer.cxx:83
#define BCR2
Definition: nemu_experim.h:23
#define MCP2F
Definition: nemu_experim.h:49
#define DATA_N_HITS
max. of DATA_N_HITS in data file
Definition: nemu_experim.h:66
#define N_TOFHIST
struct TOFANAMODULE_PARAM::@5::@9 tofbin
#define EXTOFF1_FLAG
flag for &quot;red/green&quot;, &quot;on/off&quot; mode: OFF
Definition: nemu_experim.h:69
struct TOFANAMODULE_PARAM::@4::@6 toftitles
TFolder * gManaHistosFolder
#define BCR3
Definition: nemu_experim.h:24
#define NEW_EVENT_MASK
Definition: nemu_experim.h:67
struct TOFANAMODULE_PARAM::@4 histotitles
#define N_TDC_CHANNELS
number of TDC channels
Definition: nemu_experim.h:64
#define N_POSHIST
#define BCL2
Definition: nemu_experim.h:19
struct TOFANAMODULE_PARAM::@4::@7 projtitles
DWORD data
Definition: nemu_experim.h:92
static TH1F * hTOFHist[2 *N_TOFHIST]
#define MCP2X1
Definition: nemu_experim.h:51
HNDLE hDB
INT tof_bor(INT run_number)
#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 TD
Definition: nemu_experim.h:17
float y
Definition: experim.h:596
TOFANAMODULE_PARAM tof_ana_param
POSI_BANK_STR(posi_bank_str)
#define EVENT_0_TYPE
EVENT type 0 = BC-MCP1-(e+)
Definition: nemu_experim.h:75
INT masterChannel
struct TOFANAMODULE_PARAM::@5 histobinning