Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-03-05 03:16:36

0001 #ifndef L1Trigger_L1TGEM_ME0StubAlgoMask_H
0002 #define L1Trigger_L1TGEM_ME0StubAlgoMask_H
0003 
0004 #include "L1Trigger/L1TGEM/interface/ME0StubAlgoSubfunction.h"
0005 
0006 namespace l1t {
0007   namespace me0 {
0008     std::vector<int> shiftCenter(const HiLo& layer, int maxSpan);
0009     uint64_t setHighBits(const std::vector<int>& loHiPair);
0010     Mask getLayerMask(const PatternDefinition& layerPattern, int maxSpan);
0011 
0012     /*
0013     createPatternLayer(low, high) returns a vector of HiLo objects with the given low and high values.
0014     low and high are relative distances from the center of the pattern (strip 18 for maxSpan=37).
0015 
0016     For example, createPatternLayer(0.2, 0.9) returns a vector of HiLo objects with the following values:
0017     { [ hi: 0, lo: -3 ], [ hi: 0, lo: -2 ], [ hi: 0, lo: -1 ], [ hi: 1, lo: 0 ], [ hi: 2, lo: 0 ], [ hi: 3, lo: 0 ]}
0018 
0019     PatternDefinition(id, layers) saves the pattern ID and the vector of HiLo objects for each layer.
0020     
0021     getLayerMask(PatternDefinition pattern, int maxSpan) returns a Mask object with the given pattern and maxSpan values.
0022     example:
0023 
0024     getLayerMask(patternLeft, 37) returns a Mask object with the following values:
0025     Pattern ID: 16
0026     {0b0000000000000000001111000000000000000,  // ly5 
0027      0b0000000000000000001110000000000000000,  // ly4 
0028      0b0000000000000000001100000000000000000,  // ly3 
0029      0b0000000000000000011000000000000000000,  // ly2 
0030      0b0000000000000000111000000000000000000,  // ly1 
0031      0b0000000000000001111000000000000000000}  // ly0 
0032     */
0033 
0034     const PatternDefinition kPatternStraight = PatternDefinition(17, createPatternLayer(-0.4, 0.4));
0035     const PatternDefinition kPatternLeft = PatternDefinition(16, createPatternLayer(0.2, 0.9));
0036     const PatternDefinition kPatternRight = mirrorPatternDefinition(kPatternLeft, kPatternLeft.id - 1);
0037     const PatternDefinition kPatternLeft2 = PatternDefinition(14, createPatternLayer(0.9, 1.7));
0038     const PatternDefinition kPatternRight2 = mirrorPatternDefinition(kPatternLeft2, kPatternLeft2.id - 1);
0039     const PatternDefinition kPatternLeft3 = PatternDefinition(12, createPatternLayer(1.4, 2.3));
0040     const PatternDefinition kPatternRight3 = mirrorPatternDefinition(kPatternLeft3, kPatternLeft3.id - 1);
0041     const PatternDefinition kPatternLeft4 = PatternDefinition(10, createPatternLayer(2.0, 3.0));
0042     const PatternDefinition kPatternRight4 = mirrorPatternDefinition(kPatternLeft4, kPatternLeft4.id - 1);
0043     const PatternDefinition kPatternLeft5 = PatternDefinition(8, createPatternLayer(2.7, 3.8));
0044     const PatternDefinition kPatternRight5 = mirrorPatternDefinition(kPatternLeft5, kPatternLeft5.id - 1);
0045     const PatternDefinition kPatternLeft6 = PatternDefinition(6, createPatternLayer(3.5, 4.7));
0046     const PatternDefinition kPatternRight6 = mirrorPatternDefinition(kPatternLeft6, kPatternLeft6.id - 1);
0047     const PatternDefinition kPatternLeft7 = PatternDefinition(4, createPatternLayer(4.3, 5.5));
0048     const PatternDefinition kPatternRight7 = mirrorPatternDefinition(kPatternLeft7, kPatternLeft7.id - 1);
0049     const PatternDefinition kPatternLeft8 = PatternDefinition(2, createPatternLayer(5.4, 7.0));
0050     const PatternDefinition kPatternRight8 = mirrorPatternDefinition(kPatternLeft8, kPatternLeft8.id - 1);
0051 
0052     const std::vector<Mask> kLayerMask{getLayerMask(kPatternStraight, 37),
0053                                        getLayerMask(kPatternLeft, 37),
0054                                        getLayerMask(kPatternRight, 37),
0055                                        getLayerMask(kPatternLeft2, 37),
0056                                        getLayerMask(kPatternRight2, 37),
0057                                        getLayerMask(kPatternLeft3, 37),
0058                                        getLayerMask(kPatternRight3, 37),
0059                                        getLayerMask(kPatternLeft4, 37),
0060                                        getLayerMask(kPatternRight4, 37),
0061                                        getLayerMask(kPatternLeft5, 37),
0062                                        getLayerMask(kPatternRight5, 37),
0063                                        getLayerMask(kPatternLeft6, 37),
0064                                        getLayerMask(kPatternRight6, 37),
0065                                        getLayerMask(kPatternLeft7, 37),
0066                                        getLayerMask(kPatternRight7, 37),
0067                                        getLayerMask(kPatternLeft8, 37),
0068                                        getLayerMask(kPatternRight8, 37)};
0069   }  // namespace me0
0070 }  // namespace l1t
0071 #endif
0072 
0073 /*
0074 patlist:
0075 Pattern ID: 17
0076 ly5 -----------------XXX-----------------
0077 
0078 ly4 -----------------XXX-----------------
0079 
0080 ly3 -----------------XXX-----------------
0081 
0082 ly2 -----------------XXX-----------------
0083 
0084 ly1 -----------------XXX-----------------
0085 
0086 ly0 -----------------XXX-----------------
0087 
0088 
0089 
0090 Pattern ID: 16
0091 ly5 ------------------XXXX---------------
0092 
0093 ly4 ------------------XXX----------------
0094 
0095 ly3 ------------------XX-----------------
0096 
0097 ly2 -----------------XX------------------
0098 
0099 ly1 ----------------XXX------------------
0100 
0101 ly0 ---------------XXXX------------------
0102 
0103 
0104 
0105 Pattern ID: 15
0106 ly5 ---------------XXXX------------------
0107 
0108 ly4 ----------------XXX------------------
0109 
0110 ly3 -----------------XX------------------
0111 
0112 ly2 ------------------XX-----------------
0113 
0114 ly1 ------------------XXX----------------
0115 
0116 ly0 ------------------XXXX---------------
0117 
0118 
0119 
0120 Pattern ID: 14
0121 ly5 --------------------XXXX-------------
0122 
0123 ly4 -------------------XXX---------------
0124 
0125 ly3 ------------------XX-----------------
0126 
0127 ly2 -----------------XX------------------
0128 
0129 ly1 ---------------XXX-------------------
0130 
0131 ly0 -------------XXXX--------------------
0132 
0133 
0134 
0135 Pattern ID: 13
0136 ly5 -------------XXXX--------------------
0137 
0138 ly4 ---------------XXX-------------------
0139 
0140 ly3 -----------------XX------------------
0141 
0142 ly2 ------------------XX-----------------
0143 
0144 ly1 -------------------XXX---------------
0145 
0146 ly0 --------------------XXXX-------------
0147 
0148 
0149 
0150 Pattern ID: 12
0151 ly5 ---------------------XXXX------------
0152 
0153 ly4 --------------------XXX--------------
0154 
0155 ly3 ------------------XXX----------------
0156 
0157 ly2 ----------------XXX------------------
0158 
0159 ly1 --------------XXX--------------------
0160 
0161 ly0 ------------XXXX---------------------
0162 
0163 
0164 
0165 Pattern ID: 11
0166 ly5 ------------XXXX---------------------
0167 
0168 ly4 --------------XXX--------------------
0169 
0170 ly3 ----------------XXX------------------
0171 
0172 ly2 ------------------XXX----------------
0173 
0174 ly1 --------------------XXX--------------
0175 
0176 ly0 ---------------------XXXX------------
0177 
0178 
0179 
0180 Pattern ID: 10
0181 ly5 -----------------------XXXX----------
0182 
0183 ly4 ---------------------XXX-------------
0184 
0185 ly3 -------------------XX----------------
0186 
0187 ly2 ----------------XX-------------------
0188 
0189 ly1 -------------XXX---------------------
0190 
0191 ly0 ----------XXXX-----------------------
0192 
0193 
0194 
0195 Pattern ID: 9
0196 ly5 ----------XXXX-----------------------
0197 
0198 ly4 -------------XXX---------------------
0199 
0200 ly3 ----------------XX-------------------
0201 
0202 ly2 -------------------XX----------------
0203 
0204 ly1 ---------------------XXX-------------
0205 
0206 ly0 -----------------------XXXX----------
0207 
0208 
0209 
0210 Pattern ID: 8
0211 ly5 ------------------------XXXXX--------
0212 
0213 ly4 ----------------------XXX------------
0214 
0215 ly3 -------------------XX----------------
0216 
0217 ly2 ----------------XX-------------------
0218 
0219 ly1 ------------XXX----------------------
0220 
0221 ly0 --------XXXXX------------------------
0222 
0223 
0224 
0225 Pattern ID: 7
0226 ly5 --------XXXXX------------------------
0227 
0228 ly4 ------------XXX----------------------
0229 
0230 ly3 ----------------XX-------------------
0231 
0232 ly2 -------------------XX----------------
0233 
0234 ly1 ----------------------XXX------------
0235 
0236 ly0 ------------------------XXXXX--------
0237 
0238 
0239 
0240 Pattern ID: 6
0241 ly5 --------------------------XXXXX------
0242 
0243 ly4 -----------------------XXXX----------
0244 
0245 ly3 -------------------XXX---------------
0246 
0247 ly2 ---------------XXX-------------------
0248 
0249 ly1 ----------XXXX-----------------------
0250 
0251 ly0 ------XXXXX--------------------------
0252 
0253 
0254 
0255 Pattern ID: 5
0256 ly5 ------XXXXX--------------------------
0257 
0258 ly4 ----------XXXX-----------------------
0259 
0260 ly3 ---------------XXX-------------------
0261 
0262 ly2 -------------------XXX---------------
0263 
0264 ly1 -----------------------XXXX----------
0265 
0266 ly0 --------------------------XXXXX------
0267 
0268 
0269 
0270 Pattern ID: 4
0271 ly5 ----------------------------XXXXX----
0272 
0273 ly4 ------------------------XXXX---------
0274 
0275 ly3 --------------------XX---------------
0276 
0277 ly2 ---------------XX--------------------
0278 
0279 ly1 ---------XXXX------------------------
0280 
0281 ly0 ----XXXXX----------------------------
0282 
0283 
0284 
0285 Pattern ID: 3
0286 ly5 ----XXXXX----------------------------
0287 
0288 ly4 ---------XXXX------------------------
0289 
0290 ly3 ---------------XX--------------------
0291 
0292 ly2 --------------------XX---------------
0293 
0294 ly1 ------------------------XXXX---------
0295 
0296 ly0 ----------------------------XXXXX----
0297 
0298 
0299 
0300 Pattern ID: 2
0301 ly5 -------------------------------XXXXXX
0302 
0303 ly4 --------------------------XXXX-------
0304 
0305 ly3 --------------------XXX--------------
0306 
0307 ly2 --------------XXX--------------------
0308 
0309 ly1 -------XXXX--------------------------
0310 
0311 ly0 XXXXXX-------------------------------
0312 
0313 
0314 
0315 Pattern ID: 1
0316 ly5 XXXXXX-------------------------------
0317 
0318 ly4 -------XXXX--------------------------
0319 
0320 ly3 --------------XXX--------------------
0321 
0322 ly2 --------------------XXX--------------
0323 
0324 ly1 --------------------------XXXX-------
0325 
0326 ly0 -------------------------------XXXXXX
0327 
0328 */