Go to the documentation of this file.00001 #include <DataFormats/L1CSCTrackFinder/interface/L1TrackId.h>
00002
00003 namespace csc
00004 {
00005 L1TrackId::L1TrackId()
00006 {}
00007
00008 L1TrackId::L1TrackId(const unsigned& side, const unsigned& sector)
00009 {
00011 id_ = CSCDetId(side, 2, 1,
00012 CSCTriggerNumbering::chamberFromTriggerLabels(sector, 0, 2, 1),
00013 0);
00014
00015 }
00016
00017 L1TrackId::L1TrackId(const csc::L1TrackId& id)
00018 {
00019 m_rank = id.m_rank;
00020 m_mode = id.m_mode;
00021 m_erase = id.m_erase;
00022 m_overlap = id.m_overlap;
00023 id_ = id.id_;
00024
00025 }
00026
00027 const csc::L1TrackId& L1TrackId::operator=(const csc::L1TrackId& rhs)
00028 {
00029 if(&rhs != this)
00030 {
00031 m_rank = rhs.m_rank;
00032 m_mode = rhs.m_mode;
00033 m_erase = rhs.m_erase;
00034 m_overlap = rhs.m_overlap;
00035 id_ = rhs.id_;
00036
00037 }
00038 return *this;
00039 }
00040
00041 bool L1TrackId::sharesHit(const csc::L1TrackId& a_id) const
00042 {
00043 return false;
00044 }
00045
00046 void L1TrackId::setOverlap(const unsigned& rank)
00047 {
00048 if ( (rank == 7) || (rank == 8) ||
00049 (rank == 9) || (rank == 12) || (rank == 15) ||
00050 (rank == 19) || (rank == 20) ||
00051 (rank == 24) || (rank == 25) ||
00052 (rank == 29) || (rank == 30) ||
00053 (rank == 32) || (rank == 34) || (rank == 36) ) {
00054 m_overlap = true;
00055 }
00056 else m_overlap = false;
00057 }
00058
00059 void L1TrackId::setRank(const unsigned& rank)
00060 {
00061 if (rank<(1<<kRankBitWidth))
00062 {
00063 m_rank = rank;
00064 setOverlap(rank);
00065 }
00066 else
00067 {
00068 m_rank = 0;
00069 }
00070 }
00071
00072
00073
00074
00075
00076
00077
00078 void L1TrackId::overlapMode(const unsigned& rank, int& mode, int& stnA, int& stnB)
00079 {
00080 switch (rank)
00081 {
00082 case 7:
00083 stnA = 2; stnB = 1;
00084 mode = 4;
00085 break;
00086 case 8:
00087 stnA = 3; stnB = 2;
00088 mode = 4;
00089 break;
00090 case 9:
00091 stnA = 2; stnB = 1;
00092 mode = 2;
00093 break;
00094 case 12:
00095 stnA = 2; stnB = 1;
00096 mode = 2;
00097 break;
00098 case 15:
00099 stnA = 2; stnB = 1;
00100 mode = 2;
00101 break;
00102 case 19:
00103 stnA = 3; stnB = 2;
00104 mode = 2;
00105 break;
00106 case 20:
00107 stnA = 2; stnB = 1;
00108 mode = 2;
00109 break;
00110 case 24:
00111 stnA = 3; stnB = 2;
00112 mode = 2;
00113 break;
00114 case 25:
00115 stnA = 2; stnB = 1;
00116 mode = 2;
00117 break;
00118 case 29:
00119 stnA = 3; stnB = 2;
00120 mode = 2;
00121 break;
00122 case 30:
00123 stnA = 2; stnB = 1;
00124 mode = 2;
00125 break;
00126 case 32:
00127 stnA = 3; stnB = 2;
00128 mode = 2;
00129 break;
00130 case 34:
00131 stnA = 3; stnB = 2;
00132 mode = 2;
00133 break;
00134 case 36:
00135 stnA = 3; stnB = 2;
00136 mode = 2;
00137 break;
00138 default:
00139
00140 stnA = 1; stnB = 2;
00141 mode = 0;
00142 }
00143 }
00144
00145 unsigned L1TrackId::encodeLUTMode(const unsigned& rank) const
00146 {
00147 int mode;
00148 switch (rank)
00149 {
00150 case 0:
00151 mode = 0;
00152 break;
00153 case 1:
00154 mode = 10;
00155 break;
00156 case 2:
00157 mode = 9;
00158 break;
00159 case 3:
00160 mode = 8;
00161 break;
00162 case 4:
00163 mode = 5;
00164 break;
00165 case 5:
00166 mode = 7;
00167 break;
00168 case 6:
00169 mode = 6;
00170 break;
00171 case 7:
00172 mode = 15;
00173 break;
00174 case 8:
00175 mode = 13;
00176 break;
00177 case 9:
00178 mode = 14;
00179 break;
00180 case 10:
00181 mode = 7;
00182 break;
00183 case 11:
00184 mode = 6;
00185 break;
00186 case 12:
00187 mode = 14;
00188 break;
00189 case 13:
00190 mode = 7;
00191 break;
00192 case 14:
00193 mode = 6;
00194 break;
00195 case 15:
00196 mode = 14;
00197 break;
00198 case 16:
00199 mode = 4;
00200 break;
00201 case 17:
00202 mode = 3;
00203 break;
00204 case 18:
00205 mode = 2;
00206 break;
00207 case 19:
00208 mode = 12;
00209 break;
00210 case 20:
00211 mode = 11;
00212 break;
00213 case 21:
00214 mode = 4;
00215 break;
00216 case 22:
00217 mode = 3;
00218 break;
00219 case 23:
00220 mode = 2;
00221 break;
00222 case 24:
00223 mode = 12;
00224 break;
00225 case 25:
00226 mode = 11;
00227 break;
00228 case 26:
00229 mode = 4;
00230 break;
00231 case 27:
00232 mode = 3;
00233 break;
00234 case 28:
00235 mode = 2;
00236 break;
00237 case 29:
00238 mode = 12;
00239 break;
00240 case 30:
00241 mode = 11;
00242 break;
00243 case 31:
00244 mode = 2;
00245 break;
00246 case 32:
00247 mode = 11;
00248 break;
00249 case 33:
00250 mode = 2;
00251 break;
00252 case 34:
00253 mode = 11;
00254 break;
00255 case 35:
00256 mode = 2;
00257 break;
00258 case 36:
00259 mode = 11;
00260 break;
00261 default:
00262 mode = 0;
00263 }
00264 return mode;
00265 }
00266
00267 bool L1TrackId::hasME1(const unsigned& rank) const
00268 {
00269 bool me = false;
00270 switch (rank)
00271 {
00272 case 5:
00273 case 6:
00274 case 10:
00275 case 11:
00276 case 12:
00277 case 13:
00278 case 14:
00279 case 16:
00280 case 17:
00281 case 18:
00282 case 21:
00283 case 22:
00284 case 23:
00285 case 26:
00286 case 27:
00287 case 28:
00288 case 31:
00289 case 33:
00290 case 35:
00291 me = true;
00292 break;
00293 default:
00294 me = false;
00295 }
00296 return me;
00297 }
00298
00299 bool L1TrackId::hasME2(const unsigned& rank) const
00300 {
00301 bool me = false;
00302 switch (rank)
00303 {
00304 case 2:
00305 case 3:
00306 case 4:
00307 case 6:
00308 case 7:
00309 case 8:
00310 case 9:
00311 case 11:
00312 case 12:
00313 case 14:
00314 case 15:
00315 case 17:
00316 case 18:
00317 case 19:
00318 case 20:
00319 case 22:
00320 case 23:
00321 case 24:
00322 case 25:
00323 case 27:
00324 case 28:
00325 case 29:
00326 case 30:
00327 case 31:
00328 case 32:
00329 case 33:
00330 case 34:
00331 case 35:
00332 case 36:
00333 me = true;
00334 break;
00335 default:
00336 me = false;
00337 }
00338 return me;
00339 }
00340
00341 bool L1TrackId::hasME3(const unsigned& rank) const
00342 {
00343 bool me = false;
00344 switch (rank)
00345 {
00346 case 1:
00347 case 3:
00348 case 4:
00349 case 5:
00350 case 10:
00351 case 13:
00352 case 16:
00353 case 18:
00354 case 21:
00355 case 23:
00356 case 26:
00357 case 28:
00358 case 31:
00359 case 33:
00360 case 35:
00361 me = true;
00362 break;
00363 default:
00364 me = false;
00365 }
00366 return me;
00367 }
00368
00369 bool L1TrackId::hasME4(const unsigned& rank) const
00370 {
00371 bool me = false;
00372 switch (rank)
00373 {
00374 case 1:
00375 case 2:
00376 case 4:
00377 case 16:
00378 case 17:
00379 case 21:
00380 case 22:
00381 case 26:
00382 case 27:
00383 case 31:
00384 case 33:
00385 case 35:
00386 me = true;
00387 break;
00388 default:
00389 me = false;
00390 }
00391 return me;
00392 }
00393
00394 bool L1TrackId::hasMB1(const unsigned& rank) const
00395 {
00396 bool mb = false;
00397 switch (rank)
00398 {
00399 case 9:
00400 case 12:
00401 case 15:
00402 case 19:
00403 case 20:
00404 case 24:
00405 case 25:
00406 case 29:
00407 case 30:
00408 case 32:
00409 case 34:
00410 case 36:
00411 mb = true;
00412 break;
00413 default:
00414 mb = false;
00415 }
00416 return mb;
00417 }
00418
00419 }