Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:21

0001 ///
0002 /// \class L1TMuonBarrelParams
0003 ///
0004 /// Description: Placeholder for BMTF parameters
0005 ///
0006 ///
0007 /// \author: Giannis Flouris
0008 ///
0009 
0010 #ifndef L1TBMTFParams_h
0011 #define L1TBMTFParams_h
0012 
0013 #include <memory>
0014 #include <iostream>
0015 #include <vector>
0016 
0017 #include "CondFormats/Serialization/interface/Serializable.h"
0018 #include "CondFormats/L1TObjects/interface/LUT.h"
0019 #include "CondFormats/L1TObjects/interface/L1MuDTTFParameters.h"
0020 #include "CondFormats/L1TObjects/interface/L1MuDTTFMasks.h"
0021 #include "CondFormats/L1TObjects/interface/L1MuDTEtaPattern.h"
0022 
0023 class L1TMuonBarrelParams {
0024 public:
0025   L1TMuonBarrelParams();
0026   enum { Version = 1 };
0027 
0028   class Node {
0029   public:
0030     std::string type_;
0031     unsigned version_;
0032     l1t::LUT LUT_;
0033     std::vector<double> dparams_;
0034     std::vector<unsigned> uparams_;
0035     std::vector<int> iparams_;
0036     std::vector<std::string> sparams_;
0037     Node() {
0038       type_ = "unspecified";
0039       version_ = 0;
0040     }
0041     COND_SERIALIZABLE;
0042   };
0043   enum { CONFIG = 0, NUM_BMTF_PARAM_NODES = 2 };
0044 
0045   enum {
0046     PT_Assignment_nbits_Phi,
0047     PT_Assignment_nbits_PhiB,
0048     PHI_Assignment_nbits_Phi,
0049     PHI_Assignment_nbits_PhiB,
0050     Extrapolation_nbits_Phi,
0051     Extrapolation_nbits_PhiB,
0052     BX_min,
0053     BX_max,
0054     Extrapolation_Filter,
0055     OutOfTime_Filter_Window,
0056     OutOfTime_Filter,
0057     Open_LUTs,
0058     EtaTrackFinder,
0059     Extrapolation_21,
0060     DisableNewAlgo,
0061     NUM_CONFIG_PARAMS
0062   };
0063 
0064   // after initial integration with downstream code, a small update will change:
0065   L1MuDTTFParameters l1mudttfparams;
0066   L1MuDTTFMasks l1mudttfmasks;
0067   // to this:
0068   //L1MuDTTFParameters & l1mudttfparams(){return l1mudttfparams_[0]; }
0069   //L1MuDTTFMasks &      l1mudttfmasks(){return l1mudttfmasks_[0]; }
0070 
0071   /// L1MuBMPtaLut
0072   typedef std::map<short, short, std::less<short> > LUT;
0073   ///Qual Pattern LUT
0074   typedef std::pair<short, short> LUTID;
0075   typedef std::pair<short, std::vector<short> > LUTCONT;
0076   typedef std::map<LUTID, LUTCONT> qpLUT;
0077   ///Eta Pattern LUT
0078   typedef std::map<short, L1MuDTEtaPattern, std::less<short> > etaLUT;
0079 
0080   class LUTParams {
0081   public:
0082     std::vector<LUT> pta_lut_;
0083     std::vector<LUT> phi_lut_;
0084     std::vector<int> pta_threshold_;
0085     qpLUT qp_lut_;
0086     etaLUT eta_lut_;
0087 
0088     // helper class for extrapolation look-up tables
0089     class extLUT {
0090     public:
0091       LUT low;
0092       LUT high;
0093       COND_SERIALIZABLE;
0094     };
0095     std::vector<extLUT> ext_lut_;
0096     LUTParams() : pta_lut_(0), phi_lut_(0), pta_threshold_(6), ext_lut_(0) {}
0097     COND_SERIALIZABLE;
0098   };
0099 
0100   ~L1TMuonBarrelParams() {}
0101 
0102 public:
0103   unsigned version_;
0104   unsigned fwVersion_;
0105 
0106   std::vector<Node> pnodes_;
0107   // std::vector here is just so we can use "blob" in DB and evade max size limitations...
0108   std::vector<L1MuDTTFParameters> l1mudttfparams_;
0109   std::vector<L1MuDTTFMasks> l1mudttfmasks_;
0110   LUTParams lutparams_;
0111 
0112   COND_SERIALIZABLE;
0113 };
0114 #endif