BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcSegPatterns.cxx
Go to the documentation of this file.
1// MdcSegPatterns.cxx
2//
3
4// Interface Dependencies ----------------------------------------------
5
6#include "MdcTrkRecon/MdcSegPatterns.h"
7
8// Implementation Dependencies -----------------------------------------
9
10#include "MdcTrkRecon/countBits.h"
11#include <assert.h>
12#include <iostream>
13#include <stdlib.h>
14
15// End Implementation Dependencies -------------------------------------
16
18
19 patt4[0] = 0225;
20 patt4[1] = 0125;
21 patt4[2] = 0115;
22 patt4[3] = 055;
23 patt4[4] = 0226;
24 patt4[5] = 0126;
25 patt4[6] = 0116;
26 patt4[7] = 056;
27
28 patt3[0] = 0224;
29 patt3[1] = 0221;
30 patt3[2] = 0205;
31 patt3[3] = 025;
32 patt3[4] = 0124;
33 patt3[5] = 0121;
34 patt3[6] = 0105;
35 patt3[7] = 0114;
36 patt3[8] = 0111;
37 patt3[9] = 015;
38 patt3[10] = 054;
39 patt3[11] = 051;
40 patt3[12] = 045;
41 patt3[13] = 0206;
42 patt3[14] = 026;
43 patt3[15] = 0106;
44 patt3[16] = 0112;
45 patt3[17] = 016;
46 patt3[18] = 052;
47 patt3[19] = 046;
48 ambigPatt4 = new int*[8];
49 assert( ambigPatt4 != 0 );
50 int i;
51 for ( i = 0; i < 8; i++ )
52 {
53 ambigPatt4[i] = new int[16];
54 assert( ambigPatt4[i] != 0 );
55 if ( useAllAmbig )
56 {
57 for ( int j = 0; j < 16; j++ ) ambigPatt4[i][j] = 1;
58 }
59 else
60 {
61 for ( int j = 0; j < 16; j++ ) ambigPatt4[i][j] = 0;
62 }
63 }
64 ambigPatt3 = new int*[20];
65 assert( ambigPatt3 != 0 );
66 for ( i = 0; i < 20; i++ )
67 {
68 ambigPatt3[i] = new int[8];
69 assert( ambigPatt3[i] != 0 );
70 if ( useAllAmbig )
71 {
72 for ( int j = 0; j < 8; j++ ) ambigPatt3[i][j] = 1;
73 }
74 else
75 {
76 for ( int j = 0; j < 8; j++ ) ambigPatt3[i][j] = 0;
77 }
78 }
79
80 if ( !useAllAmbig )
81 {
82 ambigPatt4[0][0] = ambigPatt4[0][1] = ambigPatt4[0][3] = ambigPatt4[0][7] =
83 ambigPatt4[0][8] = ambigPatt4[0][12] = ambigPatt4[0][14] = ambigPatt4[0][15] = 1;
84 ambigPatt4[1][8] = ambigPatt4[1][9] = ambigPatt4[1][11] = 1;
85 ambigPatt4[2][4] = ambigPatt4[2][5] = ambigPatt4[2][12] = ambigPatt4[2][13] = 1;
86 ambigPatt4[3][1] = ambigPatt4[3][9] = ambigPatt4[3][13] = 1;
87 ambigPatt4[4][2] = ambigPatt4[4][6] = ambigPatt4[4][14] = 1;
88 ambigPatt4[5][2] = ambigPatt4[5][3] = ambigPatt4[5][10] = ambigPatt4[5][11] = 1;
89 ambigPatt4[6][4] = ambigPatt4[6][6] = ambigPatt4[6][7] = 1;
90 ambigPatt4[7][0] = ambigPatt4[7][1] = ambigPatt4[7][3] = ambigPatt4[7][7] =
91 ambigPatt4[7][8] = ambigPatt4[7][12] = ambigPatt4[7][14] = ambigPatt4[7][15] = 1;
92
93 ambigPatt3[0][0] = ambigPatt3[0][1] = ambigPatt3[0][3] = ambigPatt3[0][4] =
94 ambigPatt3[0][6] = ambigPatt3[0][7] = 1;
95 ambigPatt3[1][0] = ambigPatt3[1][1] = ambigPatt3[1][3] = ambigPatt3[1][4] =
96 ambigPatt3[1][6] = ambigPatt3[1][7] = 1;
97 ambigPatt3[2][0] = ambigPatt3[2][1] = ambigPatt3[2][3] = ambigPatt3[2][4] =
98 ambigPatt3[2][6] = ambigPatt3[2][7] = 1;
99 ambigPatt3[3][0] = ambigPatt3[3][1] = ambigPatt3[3][3] = ambigPatt3[3][4] =
100 ambigPatt3[3][6] = ambigPatt3[3][7] = 1;
101 ambigPatt3[4][1] = ambigPatt3[4][4] = ambigPatt3[4][5] = 1;
102 ambigPatt3[5][4] = ambigPatt3[5][5] = 1;
103 ambigPatt3[6][0] = ambigPatt3[6][1] = ambigPatt3[6][4] = ambigPatt3[6][5] =
104 ambigPatt3[6][7] = 1;
105 ambigPatt3[7][2] = ambigPatt3[7][3] = ambigPatt3[7][6] = 1;
106 ambigPatt3[8][2] = ambigPatt3[8][3] = ambigPatt3[8][6] = ambigPatt3[8][7] =
107 ambigPatt3[8][0] = 1;
108 ambigPatt3[9][1] = ambigPatt3[9][4] = ambigPatt3[9][5] = 1;
109 ambigPatt3[10][0] = ambigPatt3[10][1] = ambigPatt3[10][3] = ambigPatt3[10][4] =
110 ambigPatt3[10][6] = ambigPatt3[10][7] = 1;
111 ambigPatt3[11][1] = ambigPatt3[11][5] = ambigPatt3[11][7] = ambigPatt3[11][0] =
112 ambigPatt3[11][4] = 1;
113 ambigPatt3[12][4] = ambigPatt3[12][5] = 1;
114 ambigPatt3[13][2] = ambigPatt3[13][6] = 1;
115 ambigPatt3[14][2] = ambigPatt3[14][3] = ambigPatt3[14][6] = 1;
116 ambigPatt3[15][0] = ambigPatt3[15][2] = ambigPatt3[15][3] = ambigPatt3[15][6] =
117 ambigPatt3[15][7] = 1;
118 ambigPatt3[16][2] = ambigPatt3[16][3] = 1;
119 ambigPatt3[17][0] = ambigPatt3[17][1] = ambigPatt3[17][3] = ambigPatt3[17][4] =
120 ambigPatt3[17][6] = ambigPatt3[17][7] = 1;
121 ambigPatt3[18][0] = ambigPatt3[18][1] = ambigPatt3[18][3] = ambigPatt3[18][4] =
122 ambigPatt3[18][6] = ambigPatt3[18][7] = 1;
123 ambigPatt3[19][0] = ambigPatt3[19][1] = ambigPatt3[19][3] = ambigPatt3[19][4] =
124 ambigPatt3[19][6] = ambigPatt3[19][7] = 1;
125 }
126
127 // For hit combos with allowed patterns; allocate space for list of
128 // patterns, fill list and record number in npattx[i]
129 int j, nbit;
130 unsigned match;
131 for ( i = 0; i < 256; i++ )
132 {
133 npatt4[i] = 0;
134 npatt3[i] = 0;
135 // loop through the 8 patterns, seeing how many match
136 for ( j = 0; j < 8; j++ )
137 {
138 match = i & patt4[j];
139 nbit = countbits( match );
140 if ( nbit == 4 ) npatt4[i]++;
141 }
142 allowedPatt4[i] = new int[npatt4[i]];
143 // Add the allowed patterns to the list for this hit combination
144 int nstored = 0;
145 for ( j = 0; j < 8; j++ )
146 {
147 match = i & patt4[j];
148 nbit = countbits( match );
149 if ( nbit == 4 )
150 {
151 allowedPatt4[i][nstored] = j;
152 nstored++;
153 }
154 }
155
156 // Repeat for 3-hit patterns
157
158 for ( j = 0; j < 20; j++ )
159 {
160 match = i & patt3[j];
161 nbit = countbits( match );
162 if ( nbit == 3 ) npatt3[i]++;
163 }
164 allowedPatt3[i] = new int[npatt3[i]];
165 // Add the allowed patterns to the list for this hit combination
166 nstored = 0;
167 for ( j = 0; j < 20; j++ )
168 {
169 match = i & patt3[j];
170 nbit = countbits( match );
171 if ( nbit == 3 )
172 {
173 allowedPatt3[i][nstored] = j;
174 nstored++;
175 }
176 }
177 }
178
179 return;
180}
181
183 int i;
184 for ( i = 0; i < 256; i++ )
185 {
186 delete[] allowedPatt4[i];
187 delete[] allowedPatt3[i];
188 }
189 for ( i = 0; i < 8; i++ ) delete[] ambigPatt4[i];
190 for ( i = 0; i < 20; i++ ) delete[] ambigPatt3[i];
191 delete[] ambigPatt4;
192 delete[] ambigPatt3;
193}
MdcSegPatterns(int useAllAmbig)