4 : verbose_(iConfig.getParameter<int>(
"verbose")), sector_(sector) {
6 for (
const auto wheel : wheels)
25 tracksM2.insert(tracksM2.end(), tmp.begin(), tmp.end());
27 tracksM1.insert(tracksM1.end(), tmp.begin(), tmp.end());
29 tracks0.insert(tracks0.end(), tmp.begin(), tmp.end());
31 tracksP1.insert(tracksP1.end(), tmp.begin(), tmp.end());
33 tracksP2.insert(tracksP2.end(), tmp.begin(), tmp.end());
100 if (!tracks.empty()) {
120 if (tracks.size() > 1) {
141 if (tracks.size() > 2) {
225 for (
const auto& track1 : coll1) {
245 for (
const auto& track2 : coll2) {
246 if (!track1.overlapTrack(track2))
249 if (track1.rank() < track2.rank())
252 if ((track1.rank() == track2.rank()) && (fabs(track1.stubs()[0]->whNum()) < fabs(track2.stubs()[0]->whNum())))
256 out.push_back(track1);
273 for (
const auto& track1 : coll1) {
278 for (
const auto& track2 : coll2) {
279 if (!track1.overlapTrack(track2))
282 if (track1.rank() < track2.rank())
285 if ((track1.rank() == track2.rank()) && (fabs(track1.stubs()[0]->whNum()) < fabs(track2.stubs()[0]->whNum())))
289 for (
const auto& track2 : coll3) {
290 if (!track1.overlapTrack(track2))
293 if (track1.rank() < track2.rank())
296 if ((track1.rank() == track2.rank()) && (fabs(track1.stubs()[0]->whNum()) < fabs(track2.stubs()[0]->whNum())))
301 out.push_back(track1);
314 double pt1 = info[
i];
315 double pt2 = info[
j];
321 if (pt1 != 0.0 && pt2 != 0.0) {
323 trackInfo[
i] = trackInfo[
j];
326 if (pt2 != 0.0 && pt1 == 0.0) {
327 trackInfo[
i] = trackInfo[
j];
345 std::map<uint, L1MuKBMTrack> trackInfo;
346 std::map<uint, double> ptInfo;
351 if (minus2.size() > 1) {
352 ptInfo[0] = minus2[0].pt();
353 trackInfo[0] = minus2[0];
354 ptInfo[1] = minus2[1].pt();
355 trackInfo[1] = minus2[1];
356 }
else if (minus2.size() == 1) {
357 if (minus2[0].stubs()[0]->tag()) {
358 ptInfo[1] = minus2[0].pt();
359 trackInfo[1] = minus2[0];
361 ptInfo[0] = minus2[0].pt();
362 trackInfo[0] = minus2[0];
366 if (minus1.size() > 1) {
367 ptInfo[2] = minus1[0].pt();
368 trackInfo[2] = minus1[0];
369 ptInfo[3] = minus1[1].pt();
370 trackInfo[3] = minus1[1];
371 }
else if (minus1.size() == 1) {
372 if (minus1[0].stubs()[0]->tag()) {
373 ptInfo[3] = minus1[0].pt();
374 trackInfo[3] = minus1[0];
376 ptInfo[2] = minus1[0].pt();
377 trackInfo[2] = minus1[0];
381 if (zero.size() > 1) {
382 ptInfo[4] = zero[0].pt();
383 trackInfo[4] = zero[0];
384 ptInfo[5] = zero[1].pt();
385 trackInfo[5] = zero[1];
386 }
else if (zero.size() == 1) {
387 if (zero[0].stubs()[0]->tag()) {
388 ptInfo[5] = zero[0].pt();
389 trackInfo[5] = zero[0];
391 ptInfo[4] = zero[0].pt();
392 trackInfo[4] = zero[0];
396 if (plus1.size() > 1) {
397 ptInfo[6] = plus1[0].pt();
398 trackInfo[6] = plus1[0];
399 ptInfo[7] = plus1[1].pt();
400 trackInfo[7] = plus1[1];
401 }
else if (plus1.size() == 1) {
402 if (plus1[0].stubs()[0]->tag()) {
403 ptInfo[7] = plus1[0].pt();
404 trackInfo[7] = plus1[0];
406 ptInfo[6] = plus1[0].pt();
407 trackInfo[6] = plus1[0];
411 if (plus2.size() > 1) {
412 ptInfo[8] = plus2[0].pt();
413 trackInfo[8] = plus2[0];
414 ptInfo[9] = plus2[1].pt();
415 trackInfo[9] = plus2[1];
416 }
else if (plus2.size() == 1) {
417 if (plus2[0].stubs()[0]->tag()) {
418 ptInfo[9] = plus2[0].pt();
419 trackInfo[9] = plus2[0];
421 ptInfo[8] = plus2[0].pt();
422 trackInfo[8] = plus2[0];
427 swap(ptInfo, trackInfo, 0, 5);
428 swap(ptInfo, trackInfo, 1, 6);
429 swap(ptInfo, trackInfo, 2, 7);
430 swap(ptInfo, trackInfo, 3, 8);
431 swap(ptInfo, trackInfo, 4, 9);
433 swap(ptInfo, trackInfo, 0, 3);
434 swap(ptInfo, trackInfo, 1, 4);
435 swap(ptInfo, trackInfo, 5, 8);
436 swap(ptInfo, trackInfo, 6, 9);
438 swap(ptInfo, trackInfo, 0, 2);
439 swap(ptInfo, trackInfo, 3, 6);
440 swap(ptInfo, trackInfo, 7, 9);
442 swap(ptInfo, trackInfo, 0, 1);
443 swap(ptInfo, trackInfo, 2, 4);
444 swap(ptInfo, trackInfo, 5, 7);
445 swap(ptInfo, trackInfo, 8, 9);
447 swap(ptInfo, trackInfo, 1, 2);
448 swap(ptInfo, trackInfo, 3, 5);
449 swap(ptInfo, trackInfo, 4, 6);
450 swap(ptInfo, trackInfo, 7, 8);
452 swap(ptInfo, trackInfo, 1, 3);
453 swap(ptInfo, trackInfo, 2, 5);
454 swap(ptInfo, trackInfo, 4, 7);
455 swap(ptInfo, trackInfo, 6, 8);
457 swap(ptInfo, trackInfo, 2, 3);
460 if (ptInfo[0] != 0.0)
461 out.push_back(trackInfo[0]);
462 if (ptInfo[1] != 0.0)
463 out.push_back(trackInfo[1]);
464 if (ptInfo[2] != 0.0)
465 out.push_back(trackInfo[2]);
l1t::RegionalMuonCand convertToBMTF(const L1MuKBMTrack &track)
std::vector< L1TMuonBarrelKalmanRegionModule > regions_
const int hwSignValid() const
Get charge sign valid bit (0 - not valid (high pT muon); 1 - valid)
const int hwDXY() const
Get compressed impact parameter (4 bits)
L1MuKBMTrackCollection cleanNeighbors(const L1MuKBMTrackCollection &, const L1MuKBMTrackCollection &, const L1MuKBMTrackCollection &)
auto const & tracks
cannot be loose
std::vector< edm::Ref< L1MuKBMTCombinedStubCollection > > L1MuKBMTCombinedStubRefVector
void swap(Association< C > &lhs, Association< C > &rhs)
void verbose(L1TMuonBarrelKalmanAlgo *, const L1MuKBMTrackCollection &)
void setPtEtaPhi(double, double, double)
const int hwQual() const
Get quality code.
const int hwHF() const
Get HF (halo / fine eta) bit (EMTF: halo -> 1; BMTF: fine eta -> 1)
const int hwEta() const
Get compressed eta (returned int * 0.010875 = eta)
bmtf_out makeWord(L1TMuonBarrelKalmanAlgo *, const L1MuKBMTrackCollection &)
const int hwPhi() const
Get compressed local phi (returned int * 2*pi/576 = local phi in rad)
L1MuKBMTrackCollection process(L1TMuonBarrelKalmanAlgo *, const L1MuKBMTCombinedStubRefVector &stubs, int bx)
T getParameter(std::string const &) const
L1MuKBMTrackCollection cleanNeighbor(const L1MuKBMTrackCollection &, const L1MuKBMTrackCollection &)
int trackSubAddress(bmtfAddress subAddress) const
Get part of track address (identifies track primitives used for reconstruction)
std::vector< L1MuKBMTrack > L1MuKBMTrackCollection
const int hwPt() const
Get compressed pT (returned int * 0.5 = pT (GeV))
const int hwSign() const
Get charge sign bit (charge = (-1)^(sign))
L1TMuonBarrelKalmanSectorProcessor(const edm::ParameterSet &, int sector)
L1MuKBMTrackCollection wedgeSort(const L1MuKBMTrackCollection &, const L1MuKBMTrackCollection &, const L1MuKBMTrackCollection &, const L1MuKBMTrackCollection &, const L1MuKBMTrackCollection &)
~L1TMuonBarrelKalmanSectorProcessor()
const int hwPtUnconstrained() const
Get second compressed pT (returned int * 1.0 = pT (GeV))