StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
trgUtil.h
1 #ifndef TRGUTIL_H
2 #define TRGUTIL_H
3 
4 inline unsigned int swapI(unsigned int var)
5 {
6  volatile unsigned int x = var ;
7 
8 return
9  (x&0xff000000) >> 24 |
10  (x&0x00ff0000) >> 8 |
11  (x&0x0000ff00) << 8 |
12  (x&0x000000ff) << 24;
13 }
14 
15 inline unsigned int swapSCC(unsigned int var)
16 {
17  volatile unsigned int x = var ;
18 
19 return
20  (x&0x0000ff00) >> 8 |
21  (x&0x000000ff) << 8 |
22  (x&0xffff0000);
23 }
24 
25 inline unsigned int swapSS(unsigned int var)
26 {
27  volatile unsigned int x = var ;
28 
29 return
30  (x&0xff000000) >> 8 |
31  (x&0x00ff0000) << 8 |
32  (x&0x0000ff00) >> 8 |
33  (x&0x000000ff) << 8;
34 }
35 
36 inline float swapF(float *var)
37 {
38  unsigned char *cs, tmp;
39  cs = (unsigned char *)var;
40  tmp = cs[0];
41  cs[0] = cs[3];
42  cs[3] = tmp;
43  tmp = cs[1];
44  cs[1] = cs[2];
45  cs[2] = tmp;
46  return(*var);
47 }
48 
49 inline TrgDataType *swapDescSum( TrgDataType *trgD )
50 {
51  int ii;
52  volatile unsigned int *x;
53 
54  x = (volatile unsigned int*)&trgD->EvtDesc.TCUdataBytes;
55 
56 // event descriptor
57 
58  *x++ = swapSCC(*x);
59  *x++ = swapI(*x);
60  *x++ = swapI(*x);
61  *x++ = swapSCC(*x);
62  for (ii=0; ii<6; ii++) {
63  *x++ = swapSS(*x);
64  }
65 
66 // trig summary
67 
68  *x++ = swapSS(*x);
69  for (ii=0; ii<4; ii++ ) {
70  *x++ = swapI(*x);
71  }
72  *x++ = swapSS(*x);
73  for (ii=0; ii<48; ii++) {
74  *x++ = swapSS(*x);
75  }
76  *x++ = swapSS(*x);
77  for (ii=0; ii<32; ii++) {
78  *x++ = swapI(*x);
79  }
80  *x++ = swapSS(*x);
81  for (ii=0; ii<32; ii++) {
82  *x++ = swapI(*x);
83  }
84  return(trgD);
85 }
86 
87 inline TrgDataType *swapTrg( TrgDataType *trgD, int pre, int post )
88 {
89  int ii, jj;
90  volatile unsigned int *x;
91 
92  x = (volatile unsigned int*)&trgD->EvtDesc.TCUdataBytes;
93 
94 // event descriptor
95 
96  *x++ = swapSCC(*x);
97  *x++ = swapI(*x);
98  *x++ = swapI(*x);
99  *x++ = swapSCC(*x);
100  for (ii=0; ii<6; ii++) {
101  *x++ = swapSS(*x);
102  }
103  pre = trgD->EvtDesc.npre;
104  post = trgD->EvtDesc.npost;
105 
106 // trig summary
107 
108  *x++ = swapSS(*x);
109  for (ii=0; ii<4; ii++ ) {
110  *x++ = swapI(*x);
111  }
112  *x++ = swapSS(*x);
113  for (ii=0; ii<48; ii++) {
114  *x++ = swapSS(*x);
115  }
116  *x++ = swapSS(*x);
117  for (ii=0; ii<32; ii++) {
118  *x++ = swapI(*x);
119  }
120  *x++ = swapSS(*x);
121  for (ii=0; ii<32; ii++) {
122  *x++ = swapI(*x);
123  }
124 // raw data
125  for ( jj = 0; jj < (pre+post+1); jj++ ) {
126  *x++ = swapSCC(*x);
127  *x++ = swapSCC(*x);
128  for (ii=0; ii<64; ii++) *x++; //ctb
129  *x++ = swapSCC(*x);
130  *x++ = swapI(*x);
131  for (ii=0; ii<32; ii++) *x++; //mwc
132  *x++ = swapSCC(*x);
133  *x++ = swapI(*x);
134  for (ii=0; ii<120; ii++) *x++; //bemc
135  for (ii=0; ii<24; ii++) { //bc1
136  *x++ = swapSS(*x);
137  }
138  *x++ = swapSCC(*x);
139  *x++ = swapI(*x);
140  for (ii=0; ii<8; ii++) { //eec layer1
141  *x++ = swapSS(*x);
142  }
143  for (ii=0; ii<36; ii++) *x++; //eec
144  *x++ = swapSCC(*x);
145  *x++ = swapI(*x);
146  for (ii=0; ii<28; ii++) *x++; //fpe ns0
147  for (ii=0; ii<4; ii++) { //fpe ns1
148  *x++ = swapSS(*x);
149  }
150  for (ii=0; ii<16; ii++) *x++; //fpe tb0
151  for (ii=0; ii<4; ii++) { //fpe tb1
152  *x++ = swapSS(*x);
153  }
154  for (ii=0; ii<28; ii++) *x++; //fpw ns0
155  for (ii=0; ii<4; ii++) { //fpw ns1
156  *x++ = swapSS(*x);
157  }
158  for (ii=0; ii<16; ii++) *x++; //fpw tb0
159  for (ii=0; ii<4; ii++) { //fpw tb1
160  *x++ = swapSS(*x);
161  }
162  *x++ = swapSCC(*x);
163  *x++ = swapI(*x);
164  for (ii=0; ii<24; ii++) *x++; //bbc0
165  for (ii=0; ii<8; ii++) { //bbc1
166  *x++ = swapSS(*x);
167  }
168  for (ii=0; ii<8; ii++) *x++; //zdc-SMD
169  for (ii=0; ii<4; ii++) *x++; //zdc0
170  for (ii=0; ii<4; ii++) { //zdc1
171  *x++ = swapSS(*x);
172  }
173  }
174  return (trgD);
175 }
176 
177 
178 
179 #endif
180