StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
stage_2_tonko_202101.cxx
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <string.h>
4 
5 #include "fcs_trg_base.h"
6 #include "fcs_ecal_epd_mask.h"
7 
8 /*
9  Tonko's test code used in Feb+ 2021
10 
11 
12  Will be stage_version 0xFF210201
13 */
14 
15 // 20 ECAL links
16 // 8 HCAL link
17 // 6 FPRE links
18 // 2 output links
19 void fcs_trg_base::stage_2_tonko_202101(link_t ecal[], link_t hcal[], link_t pres[], geom_t geo, link_t output[])
20 {
21  u_short params ;
22 
23 
24  if(geo.ns==0) params = 0xBBAA ;
25  else params = 0xDDCC ;
26 
27 
28  int big_or = 0 ;
29 
30  for(int i=0;i<20;i++) { // 0..19
31  for(int j=0;j<8;j++) {
32 
33  if(s2_ch_mask[geo.ns] & (1ll<<i)) {
34  ecal[i].d[j] = 0 ;
35  continue ;
36  }
37 
38  if(ecal[i].d[j]) big_or |= 1 ;
39  }
40  }
41 
42  for(int i=0;i<8;i++) { // 20..27
43  for(int j=0;j<8;j++) {
44 
45  if(s2_ch_mask[geo.ns] & (1ll<<(20+i))) {
46  hcal[i].d[j] = 0 ;
47  continue ;
48  }
49 
50  if(hcal[i].d[j]) big_or |= 1 ;
51  }
52  }
53 
54  for(int i=0;i<6;i++) { // 28..33
55  for(int j=0;j<8;j++) {
56 
57  if(s2_ch_mask[geo.ns] & (1ll<<(28+i))) {
58  pres[i].d[j] = 0 ;
59  continue ;
60  }
61 
62  if(pres[i].d[j]) big_or |= 1 ;
63  }
64  }
65 
66 
67  output[0].d[0] = params&0xFF;
68  output[0].d[1] = pres[2].d[7] ; // 30
69  output[0].d[2] = pres[0].d[6] ; // 28
70  output[0].d[3] = hcal[6].d[5] ; // 26
71  output[0].d[4] = ecal[4].d[2] ;
72  output[0].d[5] = ecal[2].d[1] ;
73  output[0].d[6] = ecal[0].d[0] ;
74 // output[0].d[7] = 0xCD ;
75  output[0].d[7] = big_or?0xFD:0x7D ;
76 
77  output[1].d[0] = params>>8 ;
78  output[1].d[1] = pres[3].d[7] ; // 31
79  output[1].d[2] = pres[1].d[6] ; // 29
80  output[1].d[3] = hcal[7].d[5] ; // 27
81  output[1].d[4] = ecal[5].d[2] ;
82  output[1].d[5] = ecal[3].d[1] ;
83  output[1].d[6] = ecal[1].d[0] ;
84 // output[1].d[7] = big_or?0x8B:0x0B ;
85  output[1].d[7] = big_or?0x8C:0x0C ;
86 
87  return ;
88 }
89