CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Macros | Functions | Variables
PatternRecognition.cc File Reference
#include "L1Trigger/L1TMuonEndCap/interface/PatternRecognition.h"

Go to the source code of this file.

Macros

#define PATTERN_SIZE   9
 

Functions

PatternOutput DetectPatterns (ZonesOutput Eout)
 
std::vector< PatternOutputPatterns (std::vector< ZonesOutput > Zones)
 
void PrintQuality (QualityOutput out)
 

Variables

PhiMemoryImage pattern1 (0x8000, 0, 0x8000, 0, 0x8000, 0, 0x8000, 0)
 
PhiMemoryImage pattern2 (0x10000, 0, 0x8000, 0, 0xc000, 0, 0xc000, 0)
 
PhiMemoryImage pattern3 (0x4000, 0, 0x8000, 0, 0x18000, 0, 0x18000, 0)
 
PhiMemoryImage pattern4 (0x60000, 0, 0x8000, 0, 0xe000, 0, 0xe000, 0)
 
PhiMemoryImage pattern5 (0x3000, 0, 0x8000, 0, 0x78000, 0, 0x78000, 0)
 
PhiMemoryImage pattern6 (0x780000, 0, 0x8000, 0, 0xff00, 0, 0xff00, 0)
 
PhiMemoryImage pattern7 (0xf00, 0, 0x8000, 0, 0x7f8000, 0, 0x7f8000, 0)
 
PhiMemoryImage pattern8 (0x7f800000, 0, 0x8000, 0, 0xff00, 0, 0xff00, 0)
 
PhiMemoryImage pattern9 (0xff, 0, 0x8000, 0, 0x7f8000, 0, 0x7f8000, 0)
 
PhiMemoryImage patterns [9] = {pattern8, pattern9, pattern6, pattern7, pattern4, pattern5, pattern2, pattern3, pattern1}
 

Macro Definition Documentation

#define PATTERN_SIZE   9

Definition at line 11 of file PatternRecognition.cc.

Referenced by DetectPatterns().

Function Documentation

PatternOutput DetectPatterns ( ZonesOutput  Eout)

variable declarations///

Definition at line 24 of file PatternRecognition.cc.

References a, b, PhiMemoryImage::BitShift(), ZonesOutput::convertedhits, PatternOutput::detected, PatternOutput::hits, i, relval_2017::k, QualityOutput::layer, convertSQLitetoXML_cfg::output, patt, PATTERN_SIZE, QualityOutput::rank, QualityOutput::straightness, tmp, detailsBasic3DVector::y, and ZonesOutput::zone.

Referenced by Patterns().

24  {
25 
27  //bool verbose = false;
28  std::vector<int> tmp (128, 0);
29  std::vector<std::vector<int>> lya (4, tmp), stra (4, tmp), ranka_t (4, tmp), ranka (4, tmp);
30  std::vector<PhiMemoryImage> Merged = Eout.zone;
32 
33  for(int zone=0;zone<4;zone++){
34 
35 
36 
37  for(int b=0;b<128;b++){//loop over stips of detector zones
38 
39  int ly[PATTERN_SIZE] = {0}, srt[PATTERN_SIZE] = {0}, qu[PATTERN_SIZE] = {0};
41  for (int i=0; i<PATTERN_SIZE; i++) patt[i] = patterns[i];
42  for(int y=0;y != PATTERN_SIZE;y++){//loop over patterns
43 
44  bool zona[8] = {false}; //Clear out station presence
45 
46  if((b-15) < 63){
47  patt[y].BitShift(b-15);
48  }
49  else{
50  patt[y].BitShift(63);patt[y].BitShift(b-78);
51  }
52 
53 
54  for(int yy=0;yy != 8;yy++){//loop over 8 long integers of each pattern
55 
56  zona[yy] = patt[y][yy] & Merged[zone][yy];
57  }
58 
59 
60 
61  if(zona[0] || zona[1]){ly[y] += 4;}//if station 1 is present
62  if(zona[2] || zona[3]){ly[y] += 2;}//if station 2 is present
63  if(zona[4] || zona[5] || zona[6] || zona[7]){ly[y] += 1;}//if station 3 or 4 is present
64  srt[y] = y/2;//straightness code::pattern specific
65 
66  if( (ly[y] != 0) && (ly[y] != 1) && (ly[y] != 2) && (ly[y] != 4) ){//Removes single and ME34 hit combinations//
67 
68 
69  //creates quality code by interleving straightness and layer bit words///
70  if((srt[y] & 1) != 0){qu[y] += 2;}
71  if((srt[y] & 2) != 0){qu[y] += 8;}
72  if((srt[y] & 4) != 0){qu[y] += 32;}
73  if((ly[y] & 1) != 0){qu[y] += 1;}
74  if((ly[y] & 2) != 0){qu[y] += 4;}
75  if((ly[y] & 4) != 0){qu[y] += 16;}
77 
78  }
79 
80  }//pattern loop
81 
82  for(int a=0;a<PATTERN_SIZE;a++)
83  {
84  if(qu[a] > ranka_t[zone][b]){//take highest quality from all patterns at given key strip
85 
86  ranka_t[zone][b] = qu[a];
87  lya[zone][b] = ly[a];
88  stra[zone][b] = srt[a];
89  }
90  }//pattern loop to assign quality
91 
92 
93 
94 
95 
96  }//strip loop
97  }//zone loop
98 
99 
103 
104 
105  for(int zone=0;zone<4;zone++){
106 
107  for(int k=0;k<128;k++){
108 
109  int qr = (k==0) ? qr=0 : ranka_t[zone][k-1];
110  int ql = (k==127) ? ql=0 :ranka_t[zone][k+1];
111  int qc = ranka_t[zone][k];
112 
113  if((qc <= ql) || (qc < qr)){qc = 0;}
114 
115  ranka[zone][k] = qc;
116  }
117  }
118 
119 
120 
121 
122  QualityOutput qout;
123  qout.rank = ranka;
124  qout.layer = lya;
125  qout.straightness = stra;
126 
128  output.detected = qout;
129  output.hits = Eout.convertedhits;
130 
131 
132  return output;
133 
134  }
int i
Definition: DBlmapReader.cc:9
PhiMemoryImage patterns[9]
std::vector< PhiMemoryImage > zone
std::vector< ConvertedHit > convertedhits
#define PATTERN_SIZE
void BitShift(int nBits)
double b
Definition: hdecay.h:120
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
double a
Definition: hdecay.h:121
QualityOutput detected
std::vector< ConvertedHit > hits
float patt[4][130000]
Definition: HijingWrapper.h:38
std::vector<PatternOutput> Patterns ( std::vector< ZonesOutput Zones)

Definition at line 137 of file PatternRecognition.cc.

References DetectPatterns(), i, convertSQLitetoXML_cfg::output, and tmp.

Referenced by L1TMuonEndCapTrackProducer::produce().

137  {
138 
140  std::vector<PatternOutput> output (3,tmp);
141 
142  for(int i=0;i<3;i++)
144 
145 
146  return output;
147 
148  }
int i
Definition: DBlmapReader.cc:9
PatternOutput DetectPatterns(ZonesOutput Eout)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
std::vector< ZonesOutput > Zones(std::vector< std::vector< ConvertedHit >> Hits)
Definition: ZoneCreation.h:39
void PrintQuality ( QualityOutput  out)

Print Quality for comparison ///

Definition at line 151 of file PatternRecognition.cc.

References detailsBasic3DVector::z.

151  {
152 
153 
157  for(int zz=0;zz<4;zz++){
158  for(int z = 0;z<128;z++){
159 
160  //if((out.rank)[zz][z]){std::cout<<"Zone: "<<zz<<"::new "<<(z+1)<<": "<<(out.layer)[zz][z]<<", "<<(out.straightness)[zz][z]<<", "<<(out.rank)[zz][z]<<" ";std::cout<<"\n\n";}//changing zones to Merged
161 
162  }
163  }
164  }
float float float z

Variable Documentation

PhiMemoryImage pattern1(0x8000, 0, 0x8000, 0, 0x8000, 0, 0x8000, 0)

Referenced by CSCCLCTDigi::operator>().

PhiMemoryImage pattern2(0x10000, 0, 0x8000, 0, 0xc000, 0, 0xc000, 0)

Referenced by CSCCLCTDigi::operator>().

PhiMemoryImage pattern3(0x4000, 0, 0x8000, 0, 0x18000, 0, 0x18000, 0)
PhiMemoryImage pattern4(0x60000, 0, 0x8000, 0, 0xe000, 0, 0xe000, 0)
PhiMemoryImage pattern5(0x3000, 0, 0x8000, 0, 0x78000, 0, 0x78000, 0)
PhiMemoryImage pattern6(0x780000, 0, 0x8000, 0, 0xff00, 0, 0xff00, 0)
PhiMemoryImage pattern7(0xf00, 0, 0x8000, 0, 0x7f8000, 0, 0x7f8000, 0)
PhiMemoryImage pattern8(0x7f800000, 0, 0x8000, 0, 0xff00, 0, 0xff00, 0)
PhiMemoryImage pattern9(0xff, 0, 0x8000, 0, 0x7f8000, 0, 0x7f8000, 0)