MdcSegPatterns Class Reference

#include <MdcSegPatterns.h>

List of all members.

Public Member Functions

 MdcSegPatterns (int useAllAmbig)
 ~MdcSegPatterns ()

Public Attributes

unsigned patt4 [8]
unsigned patt3 [20]
int npatt4 [256]
int npatt3 [256]
int * allowedPatt4 [256]
int * allowedPatt3 [256]
int ** ambigPatt4
int ** ambigPatt3


Detailed Description

Definition at line 36 of file MdcSegPatterns.h.


Constructor & Destructor Documentation

MdcSegPatterns::MdcSegPatterns ( int  useAllAmbig  ) 

Definition at line 17 of file MdcSegPatterns.cxx.

References allowedPatt3, allowedPatt4, ambigPatt3, ambigPatt4, countbits(), genRecEmupikp::i, ganga-rec::j, npatt3, npatt4, patt3, and patt4.

00017                                               {
00018   
00019   patt4[0] = 0225; 
00020   patt4[1] = 0125; 
00021   patt4[2] = 0115; 
00022   patt4[3] = 055; 
00023   patt4[4] = 0226; 
00024   patt4[5] = 0126; 
00025   patt4[6] = 0116; 
00026   patt4[7] = 056;
00027 
00028   patt3[0] = 0224; 
00029   patt3[1] = 0221; 
00030   patt3[2] = 0205; 
00031   patt3[3] = 025; 
00032   patt3[4] = 0124; 
00033   patt3[5] = 0121; 
00034   patt3[6] = 0105; 
00035   patt3[7] = 0114;                 
00036   patt3[8] = 0111; 
00037   patt3[9] = 015; 
00038   patt3[10] = 054; 
00039   patt3[11] = 051; 
00040   patt3[12] = 045; 
00041   patt3[13] = 0206; 
00042   patt3[14] = 026;                 
00043   patt3[15] = 0106; 
00044   patt3[16] = 0112; 
00045   patt3[17] = 016; 
00046   patt3[18] = 052; 
00047   patt3[19] = 046;
00048   ambigPatt4 = new int*[8];
00049   assert(ambigPatt4 != 0);
00050   int i;
00051   for (i = 0; i < 8; i++) {
00052     ambigPatt4[i] = new int[16];
00053     assert(ambigPatt4[i] != 0);
00054     if (useAllAmbig) {
00055       for (int j = 0; j < 16; j++) ambigPatt4[i][j] = 1;
00056     } else {
00057       for (int j = 0; j < 16; j++) ambigPatt4[i][j] = 0;
00058     }
00059   }
00060   ambigPatt3 = new int*[20];
00061   assert(ambigPatt3 != 0);
00062   for (i = 0; i < 20; i++) {
00063     ambigPatt3[i] = new int[8];
00064     assert(ambigPatt3[i] != 0);
00065     if (useAllAmbig) {
00066       for (int j = 0; j < 8; j++) ambigPatt3[i][j] = 1;
00067     } else {
00068       for (int j = 0; j < 8; j++) ambigPatt3[i][j] = 0;
00069     }
00070   }
00071 
00072   if (!useAllAmbig) {
00073     ambigPatt4[0][0] = ambigPatt4[0][1] = ambigPatt4[0][3] = 
00074       ambigPatt4[0][7] = ambigPatt4[0][8] = ambigPatt4[0][12] = 
00075       ambigPatt4[0][14] = ambigPatt4[0][15] = 1;
00076     ambigPatt4[1][8] = ambigPatt4[1][9] = ambigPatt4[1][11] = 1;
00077     ambigPatt4[2][4] = ambigPatt4[2][5] = ambigPatt4[2][12] = 
00078       ambigPatt4[2][13] = 1;
00079     ambigPatt4[3][1] = ambigPatt4[3][9] = ambigPatt4[3][13] = 1;
00080     ambigPatt4[4][2] = ambigPatt4[4][6] = ambigPatt4[4][14] = 1;
00081     ambigPatt4[5][2] = ambigPatt4[5][3] = ambigPatt4[5][10] = 
00082       ambigPatt4[5][11] = 1;
00083     ambigPatt4[6][4] = ambigPatt4[6][6] = ambigPatt4[6][7] = 1;
00084     ambigPatt4[7][0] = ambigPatt4[7][1] = ambigPatt4[7][3] = 
00085       ambigPatt4[7][7] = ambigPatt4[7][8] = ambigPatt4[7][12] = 
00086       ambigPatt4[7][14] = ambigPatt4[7][15] = 1;
00087     
00088     ambigPatt3[0][0] = ambigPatt3[0][1] = ambigPatt3[0][3] = 
00089       ambigPatt3[0][4] = ambigPatt3[0][6] = ambigPatt3[0][7] = 1;
00090     ambigPatt3[1][0] = ambigPatt3[1][1] = ambigPatt3[1][3] = 
00091       ambigPatt3[1][4] = ambigPatt3[1][6] = ambigPatt3[1][7] = 1;
00092     ambigPatt3[2][0] = ambigPatt3[2][1] = ambigPatt3[2][3] = 
00093       ambigPatt3[2][4] = ambigPatt3[2][6] = ambigPatt3[2][7] = 1;
00094     ambigPatt3[3][0] = ambigPatt3[3][1] = ambigPatt3[3][3] = 
00095       ambigPatt3[3][4] = ambigPatt3[3][6] = ambigPatt3[3][7] = 1;
00096     ambigPatt3[4][1] = ambigPatt3[4][4] = ambigPatt3[4][5] = 1;
00097     ambigPatt3[5][4] = ambigPatt3[5][5] = 1;
00098     ambigPatt3[6][0] = ambigPatt3[6][1] = ambigPatt3[6][4] = 
00099       ambigPatt3[6][5] = ambigPatt3[6][7] = 1;
00100     ambigPatt3[7][2] = ambigPatt3[7][3] = ambigPatt3[7][6] = 1;
00101     ambigPatt3[8][2] = ambigPatt3[8][3] = ambigPatt3[8][6] = 
00102       ambigPatt3[8][7] =    ambigPatt3[8][0] = 1;
00103     ambigPatt3[9][1] = ambigPatt3[9][4] = ambigPatt3[9][5] = 1;
00104     ambigPatt3[10][0] = ambigPatt3[10][1] = ambigPatt3[10][3] = 
00105       ambigPatt3[10][4] = ambigPatt3[10][6] = ambigPatt3[10][7] = 1;
00106     ambigPatt3[11][1] = ambigPatt3[11][5] = ambigPatt3[11][7] = 
00107       ambigPatt3[11][0] = ambigPatt3[11][4] = 1;
00108     ambigPatt3[12][4] = ambigPatt3[12][5] = 1;
00109     ambigPatt3[13][2] = ambigPatt3[13][6] = 1;
00110     ambigPatt3[14][2] = ambigPatt3[14][3] = ambigPatt3[14][6] = 1;
00111     ambigPatt3[15][0] = ambigPatt3[15][2] = ambigPatt3[15][3] = 
00112       ambigPatt3[15][6] = ambigPatt3[15][7] = 1;
00113     ambigPatt3[16][2] = ambigPatt3[16][3] = 1;
00114     ambigPatt3[17][0] = ambigPatt3[17][1] = ambigPatt3[17][3] = 
00115       ambigPatt3[17][4] = ambigPatt3[17][6] = ambigPatt3[17][7] = 1;
00116     ambigPatt3[18][0] = ambigPatt3[18][1] = ambigPatt3[18][3] = 
00117       ambigPatt3[18][4] = ambigPatt3[18][6] = ambigPatt3[18][7] = 1;
00118     ambigPatt3[19][0] = ambigPatt3[19][1] = ambigPatt3[19][3] = 
00119       ambigPatt3[19][4] = ambigPatt3[19][6] = ambigPatt3[19][7] = 1;
00120   }
00121 
00122   // For hit combos with allowed patterns; allocate space for list of 
00123   // patterns, fill list and record number in npattx[i]
00124   int j, nbit;
00125   unsigned match;
00126   for (i = 0; i < 256; i++) {
00127     npatt4[i] = 0;
00128     npatt3[i] = 0;
00129     // loop through the 8 patterns, seeing how many match
00130     for (j = 0; j < 8; j++) {
00131       match = i & patt4[j];
00132       nbit = countbits(match);
00133       if (nbit == 4) npatt4[i]++;
00134     }
00135     allowedPatt4[i] = new int [npatt4[i]];
00136     // Add the allowed patterns to the list for this hit combination
00137     int nstored = 0;
00138     for (j = 0; j < 8; j++) {
00139       match = i & patt4[j];
00140       nbit = countbits(match);
00141       if (nbit == 4) {
00142         allowedPatt4[i][nstored] = j;
00143         nstored++;
00144       }
00145     }
00146     
00147     // Repeat for 3-hit patterns
00148     
00149     for (j = 0; j < 20; j++) {
00150       match = i & patt3[j];
00151       nbit = countbits(match);
00152       if (nbit == 3) npatt3[i]++;
00153     }
00154     allowedPatt3[i] = new int [npatt3[i]];
00155     // Add the allowed patterns to the list for this hit combination
00156     nstored = 0;
00157     for (j = 0; j < 20; j++) {
00158       match = i & patt3[j];
00159       nbit = countbits(match);
00160       if (nbit == 3) {
00161         allowedPatt3[i][nstored] = j;
00162         nstored++;
00163       }
00164     }
00165   }
00166 
00167   return;
00168 }

MdcSegPatterns::~MdcSegPatterns (  ) 

Definition at line 170 of file MdcSegPatterns.cxx.

References allowedPatt3, allowedPatt4, ambigPatt3, ambigPatt4, and genRecEmupikp::i.

00170                                 { 
00171   int i;
00172   for (i = 0; i < 256; i++) {
00173     delete [] allowedPatt4[i];
00174     delete [] allowedPatt3[i];
00175   }
00176   for (i = 0; i < 8; i++) delete [] ambigPatt4[i];
00177   for (i = 0; i < 20; i++) delete [] ambigPatt3[i];
00178   delete [] ambigPatt4;
00179   delete [] ambigPatt3;
00180 }


Member Data Documentation

int* MdcSegPatterns::allowedPatt3[256]

Definition at line 43 of file MdcSegPatterns.h.

Referenced by MdcSegFinder::createSegs(), MdcSegPatterns(), and ~MdcSegPatterns().

int* MdcSegPatterns::allowedPatt4[256]

Definition at line 42 of file MdcSegPatterns.h.

Referenced by MdcSegFinder::createSegs(), MdcSegPatterns(), and ~MdcSegPatterns().

int** MdcSegPatterns::ambigPatt3

Definition at line 45 of file MdcSegPatterns.h.

Referenced by MdcSegPatterns(), MdcSegFinder::tryPatterns(), and ~MdcSegPatterns().

int** MdcSegPatterns::ambigPatt4

Definition at line 44 of file MdcSegPatterns.h.

Referenced by MdcSegPatterns(), MdcSegFinder::tryPatterns(), and ~MdcSegPatterns().

int MdcSegPatterns::npatt3[256]

Definition at line 41 of file MdcSegPatterns.h.

Referenced by MdcSegFinder::createSegs(), main(), and MdcSegPatterns().

int MdcSegPatterns::npatt4[256]

Definition at line 40 of file MdcSegPatterns.h.

Referenced by MdcSegFinder::createSegs(), main(), and MdcSegPatterns().

unsigned MdcSegPatterns::patt3[20]

Definition at line 39 of file MdcSegPatterns.h.

Referenced by main(), MdcSegPatterns(), and MdcSegFinder::tryPatterns().

unsigned MdcSegPatterns::patt4[8]

Definition at line 38 of file MdcSegPatterns.h.

Referenced by MdcSegPatterns(), and MdcSegFinder::tryPatterns().


Generated on Tue Nov 29 23:20:17 2016 for BOSS_7.0.2 by  doxygen 1.4.7