1 |
#ifndef l2tofcore_h |
2 |
#define l2tofcore_h |
3 |
#include <TSystem.h> |
4 |
#include <TSQLServer.h> |
5 |
|
6 |
|
7 |
/** |
8 |
* \brief Variables needed for ToF calculations: Raw data, calibration constants, etc... |
9 |
*/ |
10 |
|
11 |
struct ToFInput { |
12 |
//! The alpha vector from the track fit |
13 |
Double_t al_pp[5]; |
14 |
//! The dEdx from the tracker |
15 |
Double_t trkmip; |
16 |
//! The 24 k1 constants for S11-S31 for Z=1,Z=2,Z>2 |
17 |
Float_t k_s11s31[24][3]; |
18 |
//! The 24 k1 constants for S11-S32 for Z=1,Z=2,Z>2 |
19 |
Float_t k_s11s32[24][3]; |
20 |
//! The 18 k1 constants for S12-S31 for Z=1,Z=2,Z>2 |
21 |
Float_t k_s12s31[18][3]; |
22 |
//! The 18 k1 constants for S12-S32 for Z=1,Z=2,Z>2 |
23 |
Float_t k_s12s32[18][3]; |
24 |
//! The 6 k1 constants for S21-S31 for Z=1,Z=2,Z>2 |
25 |
Float_t k_S21S31[6][3]; |
26 |
//! The 6 k1 constants for S21-S32 for Z=1,Z=2,Z>2 |
27 |
Float_t k_S21S32[6][3]; |
28 |
//! The 6 k1 constants for S22-S31 for Z=1,Z=2,Z>2 |
29 |
Float_t k_S22S31[6][3]; |
30 |
//! The 6 k1 constants for S22-S32 for Z=1,Z=2,Z>2 |
31 |
Float_t k_S22S32[6][3]; |
32 |
//! The 16 k1 constants for S11-S21 for Z=1,Z=2,Z>2 |
33 |
Float_t k_s11s21[16][3]; |
34 |
//! The 16 k1 k2 constants for S11-S22 for Z=1,Z=2,Z>2 |
35 |
Float_t k_s11s22[16][3]; |
36 |
//! The 12 k1 k2 constants for S12-S21 for Z=1,Z=2,Z>2 |
37 |
Float_t k_s12s21[12][3]; |
38 |
//! The 12 k1 k2 constants for S12-S22 for Z=1,Z=2,Z>2 |
39 |
Float_t k_s12s22[12][3]; |
40 |
//! parameters for the attenuation fit for S11 |
41 |
Float_t adcx11[4][8][2]; |
42 |
//! parameters for the attenuation fit for S12 |
43 |
Float_t adcx12[4][6][2]; |
44 |
//! parameters for the attenuation fit for S21 |
45 |
Float_t adcx21[4][2][2]; |
46 |
//! parameters for the attenuation fit for S22 |
47 |
Float_t adcx22[4][2][2]; |
48 |
//! parameters for the attenuation fit for S31 |
49 |
Float_t adcx31[4][3][2]; |
50 |
//! parameters for the attenuation fit for S32 |
51 |
Float_t adcx32[4][3][2]; |
52 |
//! constants for the time-walk for S11 |
53 |
Float_t tw11[8][2]; |
54 |
//! constants for the time-walk for S12 |
55 |
Float_t tw12[6][2]; |
56 |
//! constants for the time-walk for S21 |
57 |
Float_t tw21[2][2]; |
58 |
//! constants for the time-walk for S22 |
59 |
Float_t tw22[2][2]; |
60 |
//! constants for the time-walk for S31 |
61 |
Float_t tw31[3][2]; |
62 |
//! constants for the time-walk for S32 |
63 |
Float_t tw32[3][2]; |
64 |
//! constants to get the position from the timing for S11 |
65 |
Float_t y_coor_lin11[8][2]; |
66 |
//! constants to get the position from the timing for S12 |
67 |
Float_t x_coor_lin12[6][2]; |
68 |
//! constants to get the position from the timing for S21 |
69 |
Float_t x_coor_lin21[2][2]; |
70 |
//! constants to get the position from the timing for S22 |
71 |
Float_t y_coor_lin22[2][2]; |
72 |
//! constants to get the position from the timing for S31 |
73 |
Float_t y_coor_lin31[3][2]; |
74 |
//! constants to get the position from the timing for S32 |
75 |
Float_t x_coor_lin32[3][2]; |
76 |
//! raw ADC matrix 4x12 : 12 half-boards @ 4 channels |
77 |
Int_t adc[12][4]; |
78 |
//! raw TDC matrix 4x12 : 12 half-boards @ 4 channels |
79 |
Int_t tdc[12][4]; |
80 |
//! patterntrig contains trigger information |
81 |
Int_t patterntrig[6]; |
82 |
Int_t ntrk; |
83 |
}; |
84 |
|
85 |
/** |
86 |
* \brief Internal output variables from ToF calculations: beta, etc... |
87 |
* |
88 |
* Look at ToFLevel2 class for the real Level2 ToF output |
89 |
*/ |
90 |
|
91 |
struct ToFOutput { |
92 |
//! beta track dependend, 12 measurements for the 12 combinations, beta[13] is weighted mean |
93 |
Float_t beta_a[13]; |
94 |
//! internal variable: beta ToF standalone, 12 measurements for the 12 combinations, beta[13] is weighted mean |
95 |
Float_t betatof_a[13]; |
96 |
//! x-measurement using the TDC values and the calibration |
97 |
Float_t xtofpos[3]; |
98 |
//! y-measurement using the TDC values and the calibration |
99 |
Float_t ytofpos[3]; |
100 |
//! x-measurement at the ToF layers from tracker |
101 |
Float_t xtr_tof[6]; |
102 |
//! y-measurement at the ToF layers from tracker |
103 |
Float_t ytr_tof[6]; |
104 |
//! matrix 4x12 which contains the dEdx value for each PMT |
105 |
Float_t adc_c[12][4]; |
106 |
//! internal variable: ToF standalone: matrix 4x12 which contains the dEdx value for each PMT |
107 |
Float_t adctof_c[12][4]; |
108 |
//! matrix 4x12 which contains the time-walk corrected TDC value for each PMT |
109 |
Float_t tdc_c[12][4]; |
110 |
//! internal variable: matrix is filled if beta is calculated |
111 |
Int_t tofmask[12][4]; |
112 |
//! internal variable: number of the hitted paddle for each ToF layer from ToF standalone |
113 |
Int_t tof_i_flag[6]; |
114 |
//! number of hitted paddle(s) from ToF standalone for each ToF layer: flag = flag + 2**(paddlenumber-1) |
115 |
Int_t tof_j_flag[6]; |
116 |
//! internal variable: array flagging the artificial ToF standalone ADCs, "0" if normal ADC value |
117 |
Int_t adcflagtof[12][4]; |
118 |
//! internal variable: array is always "0" since there are no artificial TDC values with ToF standalone |
119 |
Int_t tdcflagtof[12][4]; |
120 |
//! array flagging the artificial track dependend ADCs, "0" if normal ADC value |
121 |
Int_t adcflag[12][4]; |
122 |
//! array flagging the artificial track dependend TDCs, "0" if normal TDC value |
123 |
Int_t tdcflag[12][4]; |
124 |
}; |
125 |
|
126 |
extern int ToFCore(UInt_t run, TFile *file, GL_TABLES *glt, Int_t ToFargc, char *ToFargv[]); |
127 |
|
128 |
#endif |