9 int ptLUTVersion,
bool readPtLUTFile,
bool fixMode15HighPt,
10 bool bug9BitDPhi,
bool bugMode7CLCT,
bool bugNegPt,
11 bool bugGMTPhi,
bool promoteMode7
13 if (not(pt_assign_engine !=
nullptr))
14 {
edm::LogError(
"L1T") <<
"pt_assign_engine == nullptr ";
return; }
25 ptLUTVersion, readPtLUTFile, fixMode15HighPt,
26 bug9BitDPhi, bugMode7CLCT, bugNegPt
38 EMTFTrackCollection::iterator best_tracks_it = best_tracks.begin();
39 EMTFTrackCollection::iterator best_tracks_end = best_tracks.end();
41 for (; best_tracks_it != best_tracks_end; ++best_tracks_it) {
60 bool use_ones_complem_gmt_eta =
true;
61 if (use_ones_complem_gmt_eta) {
62 gmt_eta = (gmt_eta < 0) ? ~(-gmt_eta) : gmt_eta;
66 address_t address = 0;
70 if (track.
Mode() != 1) {
76 {
edm::LogWarning(
"L1T") <<
"EMTF pT assignment mismatch: xmlpt = " << xmlpt
77 <<
", pt_assign_engine_->calculate_pt(track)) = " 80 pt = (xmlpt < 0.) ? 1. : xmlpt;
86 gmt_pt = 10 - (
abs(gmt_eta) / 32);
89 pt = (gmt_pt <= 0) ? 0 : (gmt_pt-1) * 0.5;
92 if (track.
Mode() != 1) {
96 gmt_quality = track.
Hits().front().Pattern() / 4;
99 std::pair<int, int> gmt_charge = std::make_pair(0, 0);
100 if (track.
Mode() != 1) {
101 std::vector<int> phidiffs;
104 phidiffs.push_back(phidiff);
109 int CLCT = track.
Hits().front().Pattern();
112 gmt_charge = std::make_pair( (CLCT % 2) == 0 ? 0 : 1, 1);
114 gmt_charge = std::make_pair( (CLCT % 2) == 0 ? 1 : 0, 1);
127 track.
set_charge ( (gmt_charge.second == 1) ? ((gmt_charge.first == 1) ? -1 : +1) : 0 );
138 for (
const auto&
track: best_tracks) {
140 <<
" GMT pt: " <<
track.GMT_pt() <<
" pt: " <<
track.Pt() <<
" mode: " <<
track.Mode()
141 <<
" GMT charge: " <<
track.GMT_charge() <<
" quality: " <<
track.GMT_quality()
142 <<
" eta: " <<
track.GMT_eta() <<
" phi: " <<
track.GMT_phi()
virtual address_t calculate_address(const EMTFTrack &track) const
void set_gmt_eta(int bits)
virtual float calculate_pt(const address_t &address) const
const PtAssignmentEngineAux & aux() const
int getGMTPhiV2(int phi) const
void set_charge(int bits)
int getGMTEta(int theta, int endcap) const
void configure(int verbose, int ptLUTVersion, bool readPtLUTFile, bool fixMode15HighPt, bool bug9BitDPhi, bool bugMode7CLCT, bool bugNegPt)
double phidiff(double phi)
Normalized difference in azimuthal angles to a range between .
void set_PtLUT(EMTFPtLUT bits)
const PtAssignmentEngineAux & aux() const
l1t::EMTFTrackCollection EMTFTrackCollection
void set_gmt_phi(int bits)
void set_gmt_quality(int bits)
Abs< T >::type abs(const T &t)
PtAssignmentEngine * pt_assign_engine_
virtual float scale_pt(const float pt, const int mode=15) const
std::pair< int, int > getGMTCharge(int mode, const std::vector< int > &phidiffs) const
void set_gmt_charge(int bits)
EMTFHitCollection Hits() const
void process(EMTFTrackCollection &best_tracks)
void set_pt_XML(float val)
int getGMTQuality(int mode, int theta, bool promoteMode7) const
int getGMTPhi(int phi) const
void set_gmt_charge_valid(int bits)
int getGMTPt(float pt) const
void set_gmt_pt(int bits)
void configure(const PtAssignmentEngine *pt_assign_engine, int verbose, int endcap, int sector, int bx, int ptLUTVersion, bool readPtLUTFile, bool fixMode15HighPt, bool bug9BitDPhi, bool bugMode7CLCT, bool bugNegPt, bool bugGMTPhi, bool promoteMode7)