42 bool beamcounter =
false;
43 bool RC_signal =
false;
44 bool scintillatorA =
false;
45 bool scintillatorB =
false;
46 bool master_trigger =
false;
47 bool blacklisted =
false;
50 int channel_offset = 0;
55 station = (
channel < 96) ? 1 : 2;
56 module = (channel / 48) % 2;
62 station = (
channel < 80) ? 2 : 4;
63 channel_offset = (
channel < 80) ? 112 : 1;
72 channel_offset = -119;
73 module = (channel / 48) % 3 + 1;
79 station = (
channel < 32) ? 4 : 3;
80 channel_offset = (
channel < 32) ? 1 : 33;
81 module = ((channel + 16) / 48 + 3) % 4;
90 module = (channel / 48) % 2 + 2;
91 channel_offset = (
channel < 48) * 33;
98 }
else if (master_trigger) {
100 }
else if (beamcounter || RC_signal) {
102 }
else if (scintillatorA) {
104 }
else if (scintillatorB) {
106 }
else if(blacklisted) {
109 bool reverse_x = !(station == 2 || (
TDC == 4 &&
channel >= 48));
110 int _channel =
channel + channel_offset;
111 _channel += (_channel < 0) * 0x80;
112 _channel = reverse_x ? (0x80 - _channel % 0x80) % 0x80 : _channel;
114 _channel += _channel ? 63 : 191;
116 _channel += (
channel < 32) ? 24 : 32;
119 module = (_channel / 48) % 2;
122 int view = (station == 1 || station == 2) * module % 2;
123 int plane = (
TDC == 2) ? ((_channel % 48) / 24 + 1) % 2
124 : (station == 3 &&
TDC == 4) ? 1 - (
channel % 48) / 24 : (_channel % 48) / 24;
125 if (station == 4 &&
TDC == 3) {
128 int layer = (
TDC == 4) ? 1 - (
channel % 24) / 12 : (_channel % 24) / 12;
129 int straw = _channel % 12 + ((station == 3 || station == 4) ? 1 + (3 - module) * 12 : 1);
130 return station * 10000000 + view * 1000000 + plane * 100000 + layer * 10000 + 2000 + straw;
134 bool trigger =
false;
135 bool beamcounter =
false;
136 bool RC_signal =
false;
137 bool master_trigger =
false;
140 int module_channel = 0;
145 master_trigger =
channel == 123;
147 module = (channel < 96) ? 2 + (channel / 48) % 2 : 0;
150 if(module == 3) module_channel = 12*(module_channel/12)+(11-module_channel%12);
155 station = (
channel < 80) ? 3 : 4;
156 module = (channel >= 32 && channel < 80) ? 1 : 0;
157 module_channel = (
channel + 16) % 48;
159 if(module==1) module_channel += ( module_channel < 16 ) ? 16 : ( module_channel < 32 ) ? -16 : 0;
164 module = (channel / 48) + 1 ;
169 station = (channel < 32 || channel >= 80) ? 4 : 3;
170 module = (channel < 32 ) ? 3 : 4;
171 module_channel = (
channel + 16) % 48;
176 }
else if (master_trigger) {
178 }
else if (beamcounter || RC_signal) {
182 int plane = 1 - (module_channel / 24);
183 int layer = 1 - (module_channel % 24) / 12;
184 int straw = (
module >= 4 ? module : 3 - module) * 12 + (11 - (module_channel % 12)) + 1;
186 return station * 10000000 + plane * 100000 + layer * 10000 + 2000 + straw;