File indexing completed on 2024-07-16 02:43:03
0001 #ifndef PHASE2GMT_CONEVRTEDTTRACK
0002 #define PHASE2GMT_CONEVRTEDTTRACK
0003 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0004 #include "DataFormats/L1TMuonPhase2/interface/Constants.h"
0005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0006 #include <ap_int.h>
0007
0008 namespace Phase2L1GMT {
0009
0010 class ConvertedTTTrack {
0011 public:
0012 ConvertedTTTrack(const ap_uint<1>& charge,
0013 const ap_int<BITSTTCURV>& curvature,
0014 const ap_int<BITSETA - 1>& abseta,
0015 const ap_uint<BITSPT>& pt,
0016 const ap_int<BITSETA>& eta,
0017 const ap_int<BITSPHI>& phi,
0018 const ap_int<BITSZ0>& z0,
0019 const ap_int<BITSD0>& d0,
0020 const ap_uint<1>& quality,
0021 const ap_uint<96>& word)
0022 : charge_(charge),
0023 curvature_(curvature),
0024 abseta_(abseta),
0025 pt_(pt),
0026 eta_(eta),
0027 phi_(phi),
0028 z0_(z0),
0029 d0_(d0),
0030 quality_(quality),
0031 word_(word) {}
0032
0033 const ap_uint<1> charge() const { return charge_; }
0034
0035 const ap_int<BITSTTCURV> curvature() const { return curvature_; }
0036 const ap_uint<BITSETA - 1> abseta() const { return abseta_; }
0037
0038 const ap_uint<BITSPT> pt() const { return pt_; }
0039
0040 const ap_int<BITSETA> eta() const { return eta_; }
0041 const ap_int<BITSPHI> phi() const { return phi_; }
0042
0043 void setPhi(ap_int<BITSPHI> phi) { phi_ = phi; }
0044
0045 const ap_int<BITSZ0> z0() const { return z0_; }
0046 const ap_int<BITSD0> d0() const { return d0_; }
0047 const ap_uint<1> quality() const { return quality_; }
0048 const float offline_pt() const { return offline_pt_; }
0049 const float offline_eta() const { return offline_eta_; }
0050 const float offline_phi() const { return offline_phi_; }
0051
0052 const ap_uint<96>& word() const { return word_; }
0053 void setOfflineQuantities(float pt, float eta, float phi) {
0054 offline_pt_ = pt;
0055 offline_eta_ = eta;
0056 offline_phi_ = phi;
0057 }
0058
0059 void print() const {
0060 LogDebug("ConvertedTTTrack") << "converted track : charge=" << charge_ << " curvature=" << curvature_
0061 << " pt=" << offline_pt_ << "," << pt_ << " eta=" << offline_eta_ << "," << eta_
0062 << " phi=" << offline_phi_ << "," << phi_ << " z0=" << z0_ << " d0=" << d0_
0063 << " quality=" << quality_;
0064 }
0065
0066 void printWord() const {
0067 LogDebug("ConvertedTTTrack") << "converted track : word=" << std::setfill('0') << std::setw(8) << std::hex
0068 << (long long unsigned int)((word_ >> 64).to_uint64()) << std::setfill('0')
0069 << std::setw(16) << std::hex
0070 << (long long unsigned int)((word_ & 0xffffffffffffffff).to_uint64());
0071 }
0072
0073 void setTrkPtr(const edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_> >& trkPtr) { trkPtr_ = trkPtr; }
0074
0075 const edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_> > trkPtr() const { return trkPtr_; }
0076
0077 private:
0078 ap_uint<1> charge_;
0079 ap_int<BITSTTCURV> curvature_;
0080 ap_uint<BITSETA - 1> abseta_;
0081 ap_uint<BITSPT> pt_;
0082 ap_int<BITSETA> eta_;
0083 ap_int<BITSPHI> phi_;
0084 ap_int<BITSZ0> z0_;
0085 ap_int<BITSD0> d0_;
0086 ap_uint<1> quality_;
0087 float offline_pt_;
0088 float offline_eta_;
0089 float offline_phi_;
0090 ap_uint<96> word_;
0091
0092 edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_> > trkPtr_;
0093 };
0094 }
0095
0096 #endif