File indexing completed on 2024-04-06 12:20:55
0001 #ifndef L1TMuonEndCap_PtAssignmentEngine_h
0002 #define L1TMuonEndCap_PtAssignmentEngine_h
0003
0004 #include <cstdint>
0005 #include <cstdlib>
0006 #include <cmath>
0007 #include <string>
0008 #include <vector>
0009 #include <array>
0010
0011 #include "L1Trigger/L1TMuonEndCap/interface/Common.h"
0012 #include "L1Trigger/L1TMuonEndCap/interface/PtAssignmentEngineAux.h"
0013 #include "L1Trigger/L1TMuonEndCap/interface/PtLUTReader.h"
0014 #include "L1Trigger/L1TMuonEndCap/interface/bdt/Forest.h"
0015
0016 class PtAssignmentEngine {
0017 public:
0018 explicit PtAssignmentEngine();
0019 virtual ~PtAssignmentEngine();
0020
0021 typedef uint64_t address_t;
0022
0023 void read(int pt_lut_version, const std::string& xml_dir);
0024 void load(int pt_lut_version, const L1TMuonEndCapForest* payload);
0025 const std::array<emtf::Forest, 16>& getForests(void) const { return forests_; }
0026 const std::vector<int>& getAllowedModes(void) const { return allowedModes_; }
0027
0028 int get_pt_lut_version() const { return ptLUTVersion_; }
0029
0030 void configure(
0031 int verbose, bool readPtLUTFile, bool fixMode15HighPt, bool bug9BitDPhi, bool bugMode7CLCT, bool bugNegPt);
0032
0033 void configure_details();
0034
0035 const PtAssignmentEngineAux& aux() const;
0036
0037 virtual float scale_pt(const float pt, const int mode = 15) const = 0;
0038 virtual float unscale_pt(const float pt, const int mode = 15) const = 0;
0039
0040 virtual address_t calculate_address(const EMTFTrack& track) const { return 0; }
0041
0042 virtual float calculate_pt(const address_t& address) const;
0043 virtual float calculate_pt(const EMTFTrack& track) const;
0044
0045 virtual float calculate_pt_lut(const address_t& address) const;
0046 virtual float calculate_pt_xml(const address_t& address) const { return 0.; }
0047 virtual float calculate_pt_xml(const EMTFTrack& track) const { return 0.; }
0048
0049 protected:
0050 std::vector<int> allowedModes_;
0051 std::array<emtf::Forest, 16> forests_;
0052 PtLUTReader ptlut_reader_;
0053
0054 int verbose_;
0055
0056 int ptLUTVersion_;
0057 bool readPtLUTFile_, fixMode15HighPt_;
0058 bool bug9BitDPhi_, bugMode7CLCT_, bugNegPt_;
0059 };
0060
0061 #endif