Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
dd4abdb
Update L1T sum branches in downstream modules.
EmyrClement Jan 9, 2023
13e5204
Update L1T jets consumed by HLT modules from 9x9 to 9x9trimmed.
EmyrClement Jan 18, 2023
d671bb1
Merge pull request #1064 from EmyrClement/epalencia_l1t-1062_IB
epalencia Jan 26, 2023
0a9a5dd
Merge pull request #1063 from gpetruc/update_correlator_v1.14_rebased
cecilecaillol Feb 2, 2023
bb2ce17
Add CTL1 producers using extended tracks to task.
EmyrClement Feb 6, 2023
eb6a0b9
Fix name of extended tracks input.
EmyrClement Feb 6, 2023
bd396e7
Merge pull request #1067 from EmyrClement/l1t-1063-fix
epalencia Feb 9, 2023
a027118
Merged l1t-phase2-v55 from repository cms-l1t-offline with cms-merge-…
cerminar Mar 9, 2023
1270c84
Add Phase2 Correlator Layer2 e/g objects to the event content
cerminar Mar 10, 2023
1dd5b1f
Merged l1t-phase2-v55 from repository cms-l1t-offline with cms-merge-…
Mar 20, 2023
c7ed7e9
Merge pull request #1078 from cerminar/eg_l2eventcontent_125X_v0
epalencia Mar 23, 2023
4acc8e5
Add SC jets from extended tracks to event content.
EmyrClement Mar 30, 2023
a9b5a0d
Add ap_data type for GT interface
Mar 20, 2023
50aab00
Add back removed data version
aloeliger Apr 6, 2023
41cefa1
Merge pull request #1 from aloeliger/GT_ap
zhenbinwu Apr 6, 2023
bf2ba36
Merge pull request #1079 from zhenbinwu/GT_ap
aloeliger Apr 7, 2023
d6e23fd
Provide method to access GT and CT HW jet objects from l1t::PFJet, up…
thesps Mar 31, 2023
c4359db
Merged l1t-phase2-v57 from repository cms-l1t-offline with cms-merge-…
cerminar Apr 13, 2023
7b66861
fix isolation type for GT objects
cerminar Apr 13, 2023
d9e9d61
Merge pull request #1105 from cerminar/phase2-eggtformat_125X_fix_v0
aloeliger Apr 17, 2023
f13ae29
Merge pull request #1090 from EmyrClement/bTagNN_addExtSCJets
aloeliger May 4, 2023
5b20436
Merged l1t-phase2-v59 from repository cms-l1t-offline with cms-merge-…
epalencia May 9, 2023
49c8205
L1track jet emulator update (backport of PR40563)
gkaratha May 3, 2023
db7dce2
Merge pull request #1117 from epalencia/backport40563_v2
epalencia May 11, 2023
62a07dd
Merge pull request #1088 from thesps/p2-1252p1-scj2gt
epalencia May 12, 2023
9097cfd
Ensure cluster ecal_eta/phi are set when not running CombinedCaloLinker.
EmyrClement May 15, 2023
032ebd4
pftkegsorter_barrel emulator added
schhibra Sep 20, 2022
13744ec
Add track linking info in egamma debug printouts
gpetruc Mar 20, 2023
1562261
Merge pull request #1066 from p2l1pfp/update_to_125x-v1.16
aloeliger May 18, 2023
3aa9d3c
Improve implementation, integrate with CMSSW
gpetruc Mar 20, 2023
952496e
implement review comments
cerminar May 16, 2023
8d99b90
Merge pull request #1096 from cerminar/composite_eleid_125X_v0
aloeliger May 24, 2023
79a60e3
Merge pull request #1124 from EmyrClement/caloClusteringFix
aloeliger May 24, 2023
17743fc
Merge l1t-phase2-v64
gpetruc May 24, 2023
767dd7e
Merge remote-tracking branch 'l1ct/L1PF_12_5_X' into sync-l1t-offline…
gpetruc May 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions DataFormats/L1TCorrelator/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,8 @@
<class name="edm::Wrapper<std::vector<l1t::L1CaloTkTau> >"/>
<class name="edm::Ref<std::vector<l1t::L1CaloTkTau>,l1t::L1CaloTkTau,edm::refhelper::FindUsingAdvance<std::vector<l1t::L1CaloTkTau>,l1t::L1CaloTkTau> >"/>

<class name="l1t::TkElectron" ClassVersion="7">
<version ClassVersion="7" checksum="3899336964"/>
<version ClassVersion="6" checksum="1759715068"/>
<class name="l1t::TkElectron" ClassVersion="6">
<version ClassVersion="6" checksum="3899336964"/>
<version ClassVersion="5" checksum="965807884"/>
<version ClassVersion="4" checksum="3922083203"/>
<version ClassVersion="3" checksum="3970647299"/>
Expand Down
46 changes: 38 additions & 8 deletions DataFormats/L1TMuonPhase2/interface/Constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,22 +54,32 @@ namespace Phase2L1GMT {
// Bitwidth for standalone muons to CL1 and GT
const int BITSSAZ0 = 5;
const int BITSSAD0 = 7;
const int BITSSAQUALITY = 4;
const int BITSSAQUAL = 4;

// Bitwidth for dataformat to GT
const int BITSGTPT = 16;
const int BITSGTPHI = 13;
const int BITSGTETA = 14;
const int BITSGTZ0 = 10;
const int BITSGTD0 = 10;
const int BITSGTQUALITY = 8;
const int BITSGTQUAL = 8;
const int BITSGTISO = 4;
const int BITSGTBETA = 4;

// Bitwidth for Tau->3mu object
const int BITSTMPT = 8;
const int BITSTMPHI = 8;
const int BITSTMETA = 8;
const int BITSTMMASS2 = 8;
const int BITSTMTYPE = 6;
const int BITSTMIDX = 4;
const int BITSTMQUAL = 4;

const float maxCurv_ = 0.00855; // 2 GeV pT Rinv is in cm
const float maxPhi_ = 1.026; // relative to the center of the sector
const float maxTanl_ = 8.0;
const float maxZ0_ = 30.;
const float maxD0_ = 15.4;
const float maxZ0_ = 25.6;
const float maxD0_ = 15.36;
// Updated barrelLimit according to Karol, https://indico.cern.ch/event/1113802/#1-phase2-gmt-performance-and-i
const int barrelLimit0_ = 1.4 / 0.00076699039 / 8;
const int barrelLimit1_ = 1.1 / 0.00076699039 / 8;
Expand All @@ -81,12 +91,32 @@ namespace Phase2L1GMT {
const float LSBpt = 0.03125;
const float LSBphi = 2. * M_PI / pow(2, BITSPHI);
const float LSBeta = 2. * M_PI / pow(2, BITSETA);
const float LSBGTz0 = 2. * maxZ0_ / pow(2, BITSZ0);
const float LSBGTd0 = 2. * maxD0_ / pow(2, BITSD0);
const float LSBSAz0 = 1.875;
const float LSBSAd0 = 3.85;
const float LSBGTz0 = 0.05; // 0.5mm, in sync with GTT and Correlator
const float LSBGTd0 = 0.03; // from GT interface doc
const float LSBSAz0 = 1.6; // 0.05 * 32 cm, with range +- 25.6
const float LSBSAd0 = 3.84; // 0.03 * 128 cm, with range +- 245.76

typedef ap_uint<64> wordtype;
typedef ap_uint<1> valid_gt_t; //valid
typedef ap_uint<1> q_gt_t; //charge
typedef ap_uint<BITSGTPT> pt_gt_t; //pt of tracker muon
typedef ap_int<BITSGTPHI> phi_gt_t; //phi of tracker muon
typedef ap_int<BITSGTETA> eta_gt_t; //eta of tracker muon
typedef ap_int<BITSGTZ0> z0_gt_t; //z0 of tracker muon
typedef ap_int<BITSGTD0> d0_gt_t; //d0 of tracker muon
typedef ap_uint<BITSGTISO> iso_gt_t; //isolation of tracker muon
typedef ap_uint<BITSGTBETA> beta_gt_t; //beta of tracker muon
typedef ap_uint<BITSGTQUAL> qual_gt_t; //quality of tracker muon

//Standalone muon datatype
typedef ap_uint<1> valid_sa_t; //valid
typedef ap_uint<BITSGTPT> pt_sa_t; //pt of standalone muon
typedef ap_int<BITSGTPHI> phi_sa_t; //phi of standalone muon
typedef ap_int<BITSGTETA> eta_sa_t; //eta of standalone muon
typedef ap_int<BITSSAZ0> z0_sa_t; //z0 of standalone muon
typedef ap_int<BITSSAD0> d0_sa_t; //d0 of standalone muon
typedef ap_uint<1> q_sa_t; //charge of standalone muon
typedef ap_uint<BITSSAQUAL> qual_sa_t; //quality of standalone muon

inline uint64_t twos_complement(long long int v, uint bits) {
uint64_t mask = (1 << bits) - 1;
Expand Down
10 changes: 10 additions & 0 deletions DataFormats/L1TMuonPhase2/interface/SAMuon.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ namespace l1t {
const uint hwBeta() const { return hwBeta_; }
void setBeta(uint beta) { hwBeta_ = beta; }

// For GT, returning ap_ type
const Phase2L1GMT::valid_sa_t apValid() const { return Phase2L1GMT::valid_sa_t(hwPt() > 0); };
const Phase2L1GMT::pt_sa_t apPt() const { return Phase2L1GMT::pt_sa_t(hwPt()); };
const Phase2L1GMT::phi_sa_t apPhi() const { return Phase2L1GMT::phi_sa_t(hwPhi()); };
const Phase2L1GMT::eta_sa_t apEta() const { return Phase2L1GMT::eta_sa_t(hwEta()); };
const Phase2L1GMT::z0_sa_t apZ0() const { return Phase2L1GMT::z0_sa_t(hwZ0()); };
const Phase2L1GMT::d0_sa_t apD0() const { return Phase2L1GMT::d0_sa_t(hwD0()); };
const Phase2L1GMT::q_sa_t apCharge() const { return Phase2L1GMT::q_sa_t(hwCharge()); };
const Phase2L1GMT::qual_sa_t apQual() const { return Phase2L1GMT::qual_sa_t(hwQual()); };

// For HLT
const double phZ0() const { return Phase2L1GMT::LSBSAz0 * hwZ0(); }
const double phD0() const { return Phase2L1GMT::LSBSAd0 * hwD0(); }
Expand Down
18 changes: 15 additions & 3 deletions DataFormats/L1TMuonPhase2/interface/TrackerMuon.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace l1t {
~TrackerMuon() override;

const edm::Ptr<L1TTTrackType>& trkPtr() const { return trkPtr_; }
const edm::Ref<l1t::RegionalMuonCandBxCollection>& muonRef() const { return muRef_; }
const std::vector<l1t::RegionalMuonCandRef>& muonRef() const { return muRef_; }

const bool hwCharge() const { return hwCharge_; }
const int hwZ0() const { return hwZ0_; }
Expand All @@ -41,10 +41,22 @@ namespace l1t {
const int hwIsoSumAp() const { return hwIsoSumAp_; }
const uint hwBeta() const { return hwBeta_; }
void setBeta(uint beta) { hwBeta_ = beta; }
void setMuonRef(const edm::Ref<l1t::RegionalMuonCandBxCollection>& p) { muRef_ = p; }
void setMuonRef(const std::vector<l1t::RegionalMuonCandRef>& p) { muRef_ = p; }
void setHwIsoSum(int isoSum) { hwIsoSum_ = isoSum; }
void setHwIsoSumAp(int isoSum) { hwIsoSumAp_ = isoSum; }

// For GT, returning ap_ type
const Phase2L1GMT::valid_gt_t apValid() const { return Phase2L1GMT::valid_gt_t(hwPt() > 0); };
const Phase2L1GMT::pt_gt_t apPt() const { return Phase2L1GMT::pt_gt_t(hwPt()); };
const Phase2L1GMT::phi_gt_t apPhi() const { return Phase2L1GMT::phi_gt_t(hwPhi()); };
const Phase2L1GMT::eta_gt_t apEta() const { return Phase2L1GMT::eta_gt_t(hwEta()); };
const Phase2L1GMT::z0_gt_t apZ0() const { return Phase2L1GMT::z0_gt_t(hwZ0()); };
const Phase2L1GMT::d0_gt_t apD0() const { return Phase2L1GMT::d0_gt_t(hwD0()); };
const Phase2L1GMT::q_gt_t apCharge() const { return Phase2L1GMT::q_gt_t(hwCharge()); };
const Phase2L1GMT::qual_gt_t apQual() const { return Phase2L1GMT::qual_gt_t(hwQual()); };
const Phase2L1GMT::iso_gt_t apIso() const { return Phase2L1GMT::iso_gt_t(hwIso()); };
const Phase2L1GMT::beta_gt_t apBeta() const { return Phase2L1GMT::beta_gt_t(hwBeta()); };

// For HLT
const double phZ0() const { return Phase2L1GMT::LSBGTz0 * hwZ0(); }
const double phD0() const { return Phase2L1GMT::LSBGTd0 * hwD0(); }
Expand Down Expand Up @@ -76,7 +88,7 @@ namespace l1t {
//Store the eneryg sum for isolation with ap_type
int hwIsoSumAp_;

edm::Ref<l1t::RegionalMuonCandBxCollection> muRef_;
std::vector<l1t::RegionalMuonCandRef> muRef_;
MuonStubRefVector stubs_;
};
} // namespace l1t
Expand Down
3 changes: 2 additions & 1 deletion DataFormats/L1TMuonPhase2/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
<class name="edm::Wrapper<std::vector<l1t::MuonStub > >"/>
<class name="edm::Ref<l1t::MuonStubCollection>" splitLevel="0"/>

<class name="l1t::TrackerMuon" ClassVersion="3">
<class name="l1t::TrackerMuon" ClassVersion="4">
<version ClassVersion="4" checksum="3437073036"/>
<version ClassVersion="3" checksum="2397458791"/>
</class>
<class name="std::vector<l1t::TrackerMuon>"/>
Expand Down
19 changes: 16 additions & 3 deletions DataFormats/L1TParticleFlow/interface/PFJet.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#include "DataFormats/L1Trigger/interface/L1Candidate.h"
#include "DataFormats/L1TParticleFlow/interface/PFCandidate.h"
#include "DataFormats/Common/interface/Ptr.h"
#include "DataFormats/L1TParticleFlow/interface/jets.h"
#include "DataFormats/L1TParticleFlow/interface/gt_datatypes.h"

namespace l1t {

Expand Down Expand Up @@ -38,13 +40,24 @@ namespace l1t {
edm::Ptr<l1t::PFCandidate> daughterPtr(size_type i) const { return constituents_[i]; }

// Get and set the encodedJet_ bits. The Jet is encoded in 128 bits as a 2-element array of uint64_t
std::array<uint64_t, 2> encodedJet() { return encodedJet_; }
void setEncodedJet(std::array<uint64_t, 2> jet) { encodedJet_ = jet; }
// We store encodings both for Correlator internal usage and for Global Trigger
enum class HWEncoding { CT, GT };
typedef std::array<uint64_t, 2> PackedJet;
const PackedJet& encodedJet(const HWEncoding encoding = HWEncoding::GT) const {
return encodedJet_[static_cast<int>(encoding)];
}
void setEncodedJet(const HWEncoding encoding, const PackedJet jet) {
encodedJet_[static_cast<int>(encoding)] = jet;
}

// Accessors to HW objects with ap_* types from encoded words
l1gt::Jet getHWJetGT() const { return l1gt::Jet::unpack(encodedJet(HWEncoding::GT)); }
l1ct::Jet getHWJetCT() const { return l1ct::Jet::unpack(encodedJet(HWEncoding::CT)); }

private:
float rawPt_;
Constituents constituents_;
std::array<uint64_t, 2> encodedJet_ = {{0, 0}};
std::array<PackedJet, 2> encodedJet_ = {{{{0, 0}}, {{0, 0}}}};
};

typedef std::vector<l1t::PFJet> PFJetCollection;
Expand Down
2 changes: 1 addition & 1 deletion DataFormats/L1TParticleFlow/interface/gt_datatypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ namespace l1gt {
typedef ap_uint<1> valid_t;

// E/gamma fields
typedef ap_fixed<11, 9> iso_t;
typedef ap_ufixed<11, 9> iso_t;
typedef ap_uint<4> egquality_t;

// tau fields
Expand Down
2 changes: 1 addition & 1 deletion DataFormats/L1TParticleFlow/interface/sums.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ namespace l1ct {
sum.valid = (hwPt != 0) || (hwSumPt != 0);
sum.vector_pt = CTtoGT_pt(hwPt);
sum.vector_phi = CTtoGT_phi(hwPhi);
sum.scalar_pt = CTtoGT_phi(hwSumPt);
sum.scalar_pt = CTtoGT_pt(hwSumPt);
return sum;
}
};
Expand Down
3 changes: 2 additions & 1 deletion DataFormats/L1TParticleFlow/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
<class name="l1t::RegionalOutput<l1t::PFCandidateCollection>" />
<class name="edm::Wrapper<l1t::RegionalOutput<l1t::PFCandidateCollection>>" />

<class name="l1t::PFJet" ClassVersion="5">
<class name="l1t::PFJet" ClassVersion="6">
<version ClassVersion="6" checksum="2599349078"/>
<version ClassVersion="5" checksum="2270932343"/>
<version ClassVersion="4" checksum="1424452548"/>
<version ClassVersion="3" checksum="133342988"/>
Expand Down
77 changes: 56 additions & 21 deletions DataFormats/L1Trigger/interface/TkJetWord.h
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@

#ifndef FIRMWARE_TkJetWord_h
#define FIRMWARE_TkJetWord_h

// Class to store the 96-bit TkJet word for L1 Track Trigger.
// Class to store the 128-bit TkJet word for L1 Track Trigger.
// Author: Emily MacDonald, updated by Benjamin Radburn-Smith (September 2022)
// 2nd update: George Karathanasis (Oct 2022)

#include <vector>
#include <ap_int.h>
#include <cassert>
#include <cmath>
#include <bitset>
#include <string>
#include "DataFormats/L1TrackTrigger/interface/TTTrack_TrackWord.h"

namespace l1t {

class TkJetWord {
public:
// ----------constants, enums and typedefs ---------
int INTPHI_PI = 720;
int INTPHI_TWOPI = 2 * INTPHI_PI;
float INTPT_LSB = 1 >> 5;
float ETAPHI_LSB = M_PI / (1 << 12);
float Z0_LSB = 0.05;
static constexpr double MAX_Z0 = 30.;
static constexpr double MAX_ETA = 8.;

enum TkJetBitWidths {
kPtSize = 16,
Expand All @@ -30,41 +30,53 @@ namespace l1t {
kZ0Size = 10,
kNtSize = 5,
kXtSize = 4,
kUnassignedSize = 8,
kTkJetWordSize = kPtSize + kGlbEtaSize + kGlbPhiSize + kZ0Size + kNtSize + kXtSize + kUnassignedSize,
kDispFlagSize = 1,
kUnassignedSize = 65,
kTkJetWordSize =
kPtSize + kGlbEtaSize + kGlbPhiSize + kZ0Size + kNtSize + kXtSize + kDispFlagSize + kUnassignedSize,
};

enum TkJetBitLocations {
kPtLSB = 0,
kPtMSB = kPtLSB + TkJetBitWidths::kPtSize - 1,
kGlbEtaLSB = kPtMSB + 1,
kGlbEtaMSB = kGlbEtaLSB + TkJetBitWidths::kGlbEtaSize - 1,
kGlbPhiLSB = kGlbEtaMSB + 1,
kGlbPhiLSB = kPtMSB + 1,
kGlbPhiMSB = kGlbPhiLSB + TkJetBitWidths::kGlbPhiSize - 1,
kZ0LSB = kGlbPhiMSB + 1,
kGlbEtaLSB = kGlbPhiMSB + 1,
kGlbEtaMSB = kGlbEtaLSB + TkJetBitWidths::kGlbEtaSize - 1,
kZ0LSB = kGlbEtaMSB + 1,
kZ0MSB = kZ0LSB + TkJetBitWidths::kZ0Size - 1,
kNtLSB = kZ0MSB + 1,
kNtMSB = kNtLSB + TkJetBitWidths::kNtSize - 1,
kXtLSB = kNtMSB + 1,
kXtMSB = kXtLSB + TkJetBitWidths::kXtSize - 1,
kUnassignedLSB = kXtMSB + 1,
kDispFlagLSB = kXtMSB + 1,
kDispFlagMSB = kDispFlagLSB + TkJetBitWidths::kDispFlagSize - 1,
kUnassignedLSB = kDispFlagMSB + 1,
kUnassignedMSB = kUnassignedLSB + TkJetBitWidths::kUnassignedSize - 1,
};

typedef ap_ufixed<kPtSize, kPtMagSize, AP_TRN, AP_SAT> pt_t;
typedef ap_int<kGlbEtaSize> glbeta_t;
typedef ap_int<kGlbPhiSize> glbphi_t;
typedef ap_int<kZ0Size> z0_t; // 40cm / 0.1
typedef ap_uint<kNtSize> nt_t; //number of tracks
typedef ap_uint<kXtSize> nx_t; //number of tracks with xbit = 1
typedef ap_int<kZ0Size> z0_t; // 40cm / 0.1
typedef ap_uint<kNtSize> nt_t; //number of tracks
typedef ap_uint<kXtSize> nx_t; //number of tracks with xbit = 1
typedef ap_uint<kDispFlagSize> dispflag_t;
typedef ap_uint<TkJetBitWidths::kUnassignedSize> tkjetunassigned_t; // Unassigned bits
typedef std::bitset<TkJetBitWidths::kTkJetWordSize> tkjetword_bs_t;
typedef ap_uint<TkJetBitWidths::kTkJetWordSize> tkjetword_t;

public:
// ----------Constructors --------------------------
TkJetWord() {}
TkJetWord(pt_t pt, glbeta_t eta, glbphi_t phi, z0_t z0, nt_t nt, nx_t nx, tkjetunassigned_t unassigned);
TkJetWord(pt_t pt,
glbeta_t eta,
glbphi_t phi,
z0_t z0,
nt_t nt,
nx_t nx,
dispflag_t dispflag,
tkjetunassigned_t unassigned);

~TkJetWord() {}

Expand Down Expand Up @@ -109,6 +121,12 @@ namespace l1t {
ret.V = tkJetWord()(TkJetBitLocations::kXtMSB, TkJetBitLocations::kXtLSB);
return ret;
}
dispflag_t dispFlagWord() const {
dispflag_t ret;
ret.V = tkJetWord()(TkJetBitLocations::kDispFlagMSB, TkJetBitLocations::kDispFlagLSB);
return ret;
}

tkjetunassigned_t unassignedWord() const {
return tkJetWord()(TkJetBitLocations::kUnassignedMSB, TkJetBitLocations::kUnassignedLSB);
}
Expand All @@ -122,20 +140,37 @@ namespace l1t {
unsigned int z0Bits() const { return z0Word().to_uint(); }
unsigned int ntBits() const { return ntWord().to_uint(); }
unsigned int xtBits() const { return xtWord().to_uint(); }
unsigned int dispFlagBits() const { return dispFlagWord().to_uint(); }
unsigned int unassignedBits() const { return unassignedWord().to_uint(); }

// These functions return the unpacked and converted values
// These functions return real numbers converted from the digitized quantities by unpacking the 64-bit vertex word
float pt() const { return ptWord().to_float(); }
float glbeta() const { return glbEtaWord().to_float() * ETAPHI_LSB; }
float glbphi() const { return glbPhiWord().to_float() * ETAPHI_LSB; }
float z0() const { return z0Word().to_float() * Z0_LSB; }
float glbeta() const {
return unpackSignedValue(
glbEtaWord(), TkJetBitWidths::kGlbEtaSize, (MAX_ETA) / (1 << TkJetBitWidths::kGlbEtaSize));
}
float glbphi() const {
return unpackSignedValue(
glbPhiWord(), TkJetBitWidths::kGlbPhiSize, (2. * std::abs(M_PI)) / (1 << TkJetBitWidths::kGlbPhiSize));
}
float z0() const {
return unpackSignedValue(z0Word(), TkJetBitWidths::kZ0Size, MAX_Z0 / (1 << TkJetBitWidths::kZ0Size));
}
int nt() const { return (ap_ufixed<kNtSize + 2, kNtSize>(ntWord())).to_int(); }
int xt() const { return (ap_ufixed<kXtSize + 2, kXtSize>(xtWord())).to_int(); }
int dispflag() const { return (ap_ufixed<kDispFlagSize + 2, kDispFlagSize>(dispFlagWord())).to_int(); }
unsigned int unassigned() const { return unassignedWord().to_uint(); }

// ----------member functions (setters) ------------
void setTkJetWord(pt_t pt, glbeta_t eta, glbphi_t phi, z0_t z0, nt_t nt, nx_t nx, tkjetunassigned_t unassigned);
void setTkJetWord(pt_t pt,
glbeta_t eta,
glbphi_t phi,
z0_t z0,
nt_t nt,
nx_t nx,
dispflag_t dispflag,
tkjetunassigned_t unassigned);

private:
// ----------private member functions --------------
Expand Down
Loading