45 EMTFTrackCollection::iterator best_tracks_it = best_tracks.begin();
46 EMTFTrackCollection::iterator best_tracks_end = best_tracks.end();
48 for (; best_tracks_it != best_tracks_end; ++best_tracks_it) {
67 bool use_ones_complem_gmt_eta =
true;
68 if (use_ones_complem_gmt_eta) {
69 gmt_eta = (gmt_eta < 0) ? ~(-gmt_eta) : gmt_eta;
73 address_t address = 0;
83 if (track.
Mode() != 1) {
90 edm::LogError(
"L1T") <<
"EMTF pT assignment mismatch: xmlpt = " << xmlpt
91 <<
", pt_assign_engine_->calculate_pt(track)) = "
95 pt = (xmlpt < 0.) ? 1. : xmlpt;
102 gmt_pt = 10 - (
abs(gmt_eta) / 32);
105 pt = (gmt_pt <= 0) ? 0 : (gmt_pt - 1) * 0.5;
116 pt_dxy =
std::abs(1.0 / prediction.at(0));
117 dxy = prediction.at(1);
125 if (track.
Mode() != 1) {
128 gmt_quality = track.
Hits().front().Pattern() / 4;
131 std::pair<int, int> gmt_charge = std::make_pair(0, 0);
132 if (track.
Mode() != 1) {
133 std::vector<int> phidiffs;
136 phidiffs.push_back(phidiff);
140 int CLCT = track.
Hits().front().Pattern();
143 gmt_charge = std::make_pair((CLCT % 2) == 0 ? 0 : 1, 1);
145 gmt_charge = std::make_pair((CLCT % 2) == 0 ? 1 : 0, 1);
160 track.
set_charge((gmt_charge.second == 1) ? ((gmt_charge.first == 1) ? -1 : +1) : 0);
173 bool disable_worst_track_in_same_bank =
true;
174 if (disable_worst_track_in_same_bank) {
181 unsigned rhs_addr = rhs.PtLUT().address;
182 unsigned lhs_addr_1 = (lhs_addr >> 26) & 0xF;
183 unsigned rhs_addr_1 = (rhs_addr >> 26) & 0xF;
184 unsigned lhs_addr_2 = (lhs_addr >> 2) & 0xF;
185 unsigned rhs_addr_2 = (rhs_addr >> 2) & 0xF;
186 return (lhs_addr_1 == rhs_addr_1) && (lhs_addr_2 == rhs_addr_2);
190 if (best_tracks.size() == 3) {
191 bool same_bank = is_in_same_bank(best_tracks.at(0), best_tracks.at(2)) ||
192 is_in_same_bank(best_tracks.at(1), best_tracks.at(2));
195 best_tracks.at(2).set_pt(0);
196 best_tracks.at(2).set_gmt_pt(0);
202 for (
const auto&
track : best_tracks) {
204 <<
" GMT pt: " <<
track.GMT_pt() <<
" pt: " <<
track.Pt() <<
" mode: " <<
track.Mode()
205 <<
" GMT charge: " <<
track.GMT_charge() <<
" quality: " <<
track.GMT_quality()
206 <<
" eta: " <<
track.GMT_eta() <<
" phi: " <<
track.GMT_phi() << std::endl;
virtual address_t calculate_address(const EMTFTrack &track) const
l1t::EMTFTrackCollection EMTFTrackCollection
constexpr int NUM_STATION_PAIRS
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 configure(int verbose, bool readPtLUTFile, bool fixMode15HighPt, bool bug9BitDPhi, bool bugMode7CLCT, bool bugNegPt)
void set_charge(int bits)
int getGMTEta(int theta, int endcap) const
int getGMTPtDxy(float pt) const
double phidiff(double phi)
Normalized difference in azimuthal angles to a range between .
Log< level::Error, false > LogError
void set_PtLUT(EMTFPtLUT bits)
const PtAssignmentEngineAux & aux() const
void configure(int verbose, const std::string pbFileNameDxy)
std::array< float, NUM_PREDICTIONS > Prediction
void set_gmt_phi(int bits)
void set_gmt_pt_dxy(int bits)
static constexpr int verbose
virtual float scale_pt(const float pt, const int mode=15) const =0
void set_gmt_quality(int bits)
PtAssignmentEngineDxy * pt_assign_engine_dxy_
Abs< T >::type abs(const T &t)
PtAssignmentEngine * pt_assign_engine_
std::pair< int, int > getGMTCharge(int mode, const std::vector< int > &phidiffs) const
void set_gmt_dxy(int bits)
int getGMTDxy(float dxy) const
void set_gmt_charge(int bits)
EMTFHitCollection Hits() const
int get_pt_lut_version() const
void process(EMTFTrackCollection &best_tracks)
void set_pt_XML(float val)
float getPtFromGMTPtDxy(int gmt_pt_dxy) const
void configure(PtAssignmentEngine *pt_assign_engine, PtAssignmentEngineDxy *pt_assign_engine_dxy, int verbose, int endcap, int sector, int bx, bool readPtLUTFile, bool fixMode15HighPt, bool bug9BitDPhi, bool bugMode7CLCT, bool bugNegPt, bool bugGMTPhi, bool promoteMode7, int modeQualVer, std::string pbFileName)
int getGMTPhi(int phi) const
std::array< float, NUM_FEATURES > Feature
void set_gmt_charge_valid(int bits)
int getGMTPt(float pt) const
void set_gmt_pt(int bits)
virtual void calculate_pt_dxy(const EMTFTrack &track, emtf::Feature &feature, emtf::Prediction &prediction) const
int getGMTQuality(int mode, int theta, bool promoteMode7, int version) const
void set_pt_dxy(float val)