Skip to content

Commit

Permalink
Merge pull request cms-sw#88 from thomreis/l1t-muon-CMSSW_7_6_0_pre5_…
Browse files Browse the repository at this point in the history
…bmtf_trackaddress_unpacking

merged
  • Loading branch information
thomreis committed Nov 9, 2015
2 parents 1992dcc + 3a04522 commit 703bb3a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 10 deletions.
2 changes: 2 additions & 0 deletions L1Trigger/L1TMuon/interface/RegionalMuonRawDigiTranslator.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ namespace l1t {
static const unsigned trackAddressMask_ = 0x1FFFFFFF;
static const unsigned trackAddressShift_ = 2;
// relative shifts within track address
static const unsigned bmtfTrAddrSegSelMask_ = 0xF;
static const unsigned bmtfTrAddrSegSelShift_ = 21;
static const unsigned bmtfTrAddrDetSideShift_ = 20;
static const unsigned bmtfTrAddrWheelMask_ = 0x3;
static const unsigned bmtfTrAddrWheelShift_ = 18;
Expand Down
37 changes: 27 additions & 10 deletions L1Trigger/L1TMuon/src/RegionalMuonRawDigiTranslator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,17 @@ l1t::RegionalMuonRawDigiTranslator::fillRegionalMuonCand(RegionalMuonCand& mu, u
// set track address with subaddresses
int rawTrackAddress = (raw_data_32_63 >> trackAddressShift_) & trackAddressMask_;
if (tf == bmtf) {
int segSel = (rawTrackAddress >> bmtfTrAddrSegSelShift_) & bmtfTrAddrSegSelMask_;
int detSide = (rawTrackAddress >> bmtfTrAddrDetSideShift_) & 0x1;
int wheel = (1 - 2*detSide) * ((rawTrackAddress >> bmtfTrAddrWheelShift_) & bmtfTrAddrWheelMask_);
int statAddr1 = (rawTrackAddress >> bmtfTrAddrStat1Shift_) & bmtfTrAddrStat1Mask_;
int statAddr2 = (rawTrackAddress >> bmtfTrAddrStat2Shift_) & bmtfTrAddrStat2Mask_;
int statAddr3 = (rawTrackAddress >> bmtfTrAddrStat3Shift_) & bmtfTrAddrStat3Mask_;
int statAddr4 = (rawTrackAddress >> bmtfTrAddrStat4Shift_) & bmtfTrAddrStat4Mask_;
int statAddr1 = ((rawTrackAddress >> bmtfTrAddrStat1Shift_) & bmtfTrAddrStat1Mask_)
| ((segSel & 0x1) << 2);
int statAddr2 = ((rawTrackAddress >> bmtfTrAddrStat2Shift_) & bmtfTrAddrStat2Mask_)
| ((segSel & 0x2) << 3);
int statAddr3 = ((rawTrackAddress >> bmtfTrAddrStat3Shift_) & bmtfTrAddrStat3Mask_)
| ((segSel & 0x4) << 2);
int statAddr4 = ((rawTrackAddress >> bmtfTrAddrStat4Shift_) & bmtfTrAddrStat4Mask_)
| ((segSel & 0x8) << 1);
mu.setTrackSubAddress(RegionalMuonCand::kWheel, wheel);
mu.setTrackSubAddress(RegionalMuonCand::kStat1, statAddr1);
mu.setTrackSubAddress(RegionalMuonCand::kStat2, statAddr2);
Expand Down Expand Up @@ -74,12 +79,24 @@ l1t::RegionalMuonRawDigiTranslator::generatePackedDataWords(const RegionalMuonCa
int tf = mu.trackFinderType();
int rawTrkAddr = 0;
if (tf == bmtf) {
rawTrkAddr = (mu.trackSubAddress(RegionalMuonCand::kWheel) < 0) << bmtfTrAddrDetSideShift_
| (abs(mu.trackSubAddress(RegionalMuonCand::kWheel)) & bmtfTrAddrWheelMask_) << bmtfTrAddrWheelShift_
| (mu.trackSubAddress(RegionalMuonCand::kStat1) & bmtfTrAddrStat1Mask_) << bmtfTrAddrStat1Shift_
| (mu.trackSubAddress(RegionalMuonCand::kStat2) & bmtfTrAddrStat2Mask_) << bmtfTrAddrStat2Shift_
| (mu.trackSubAddress(RegionalMuonCand::kStat3) & bmtfTrAddrStat3Mask_) << bmtfTrAddrStat3Shift_
| (mu.trackSubAddress(RegionalMuonCand::kStat4) & bmtfTrAddrStat4Mask_) << bmtfTrAddrStat4Shift_;
int wheel = mu.trackSubAddress(RegionalMuonCand::kWheel);
int stat1 = mu.trackSubAddress(RegionalMuonCand::kStat1);
int stat2 = mu.trackSubAddress(RegionalMuonCand::kStat2);
int stat3 = mu.trackSubAddress(RegionalMuonCand::kStat3);
int stat4 = mu.trackSubAddress(RegionalMuonCand::kStat4);

int segSel = (stat1 & 0x4) >> 2
| (stat2 & 0x10) >> 3
| (stat3 & 0x10) >> 2
| (stat4 & 0x10) >> 1;

rawTrkAddr = (segSel & bmtfTrAddrSegSelMask_) << bmtfTrAddrSegSelShift_
| (wheel < 0) << bmtfTrAddrDetSideShift_
| (abs(wheel) & bmtfTrAddrWheelMask_) << bmtfTrAddrWheelShift_
| (stat1 & bmtfTrAddrStat1Mask_) << bmtfTrAddrStat1Shift_
| (stat2 & bmtfTrAddrStat2Mask_) << bmtfTrAddrStat2Shift_
| (stat3 & bmtfTrAddrStat3Mask_) << bmtfTrAddrStat3Shift_
| (stat4 & bmtfTrAddrStat4Mask_) << bmtfTrAddrStat4Shift_;
} else if (tf == emtf_neg || tf == emtf_pos) {
rawTrkAddr = (mu.trackSubAddress(RegionalMuonCand::kME12) & emtfTrAddrMe12Mask_) << emtfTrAddrMe12Shift_
| (mu.trackSubAddress(RegionalMuonCand::kME22) & emtfTrAddrMe22Mask_) << emtfTrAddrMe22Shift_;
Expand Down

0 comments on commit 703bb3a

Please sign in to comment.