Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:56

0001 //-------------------------------------------------
0002 //
0003 //   Class: L1MuGMTEtaLUT
0004 //
0005 //   Description: Look-up table for GMT Eta Projection Unit
0006 //
0007 //
0008 //
0009 //   Author :
0010 //   H. Sakulin                CERN EP
0011 //
0012 //   Migrated to CMSSW:
0013 //   I. Mikulec
0014 //
0015 //--------------------------------------------------
0016 
0017 //-----------------------
0018 // This Class's Header --
0019 //-----------------------
0020 
0021 #include "L1Trigger/GlobalMuonTrigger/src/L1MuGMTEtaLUT.h"
0022 
0023 //---------------
0024 // C++ Headers --
0025 //---------------
0026 
0027 #include <iostream>
0028 #include <vector>
0029 #include <cmath>
0030 
0031 //-------------------------------
0032 // Collaborating Class Headers --
0033 //-------------------------------
0034 
0035 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0036 
0037 // --------------------------------
0038 //       class L1MuGMTEtaLUT
0039 //---------------------------------
0040 
0041 //----------------
0042 // Constructors --
0043 //----------------
0044 L1MuGMTEtaLUT::L1MuGMTEtaLUT() {}
0045 
0046 //--------------
0047 // Destructor --
0048 //--------------
0049 L1MuGMTEtaLUT::~L1MuGMTEtaLUT() {}
0050 
0051 //--------------
0052 // Operations --
0053 //--------------
0054 
0055 int L1MuGMTEtaLUT::etabin(float eta, int isys) {
0056   int i;
0057   for (i = 0; i < (int)NETA; i++)
0058     if (eta >= etabins[isys][i] && eta < etabins[isys][i + 1])
0059       break;
0060   if (i >= (int)NETA)
0061     edm::LogWarning("LUTProblem") << "L1MuGMTEtaLUT::etabin(): could not assign eta bin ";
0062   return i;
0063 }
0064 
0065 //
0066 // project muon eta to calo/vertex
0067 //
0068 float L1MuGMTEtaLUT::eta(int isys, int isISO, int icharge, float eta, float pt) {
0069   int ieta = etabin((float)fabs(eta), isys);
0070 
0071   if ((isys == DT || isys == bRPC) && pt < 4.)
0072     pt = 4.;  // cut off
0073   if ((isys == CSC || isys == fRPC) && pt < 3.)
0074     pt = 3.;
0075 
0076   float a = fitparams_eta[isISO][isys][ieta][0];
0077   float b = fitparams_eta[isISO][isys][ieta][1];
0078   float c = fitparams_eta[isISO][isys][ieta][2];
0079 
0080   float deta = a + b / pt + c / (pt * pt);
0081 
0082   float neweta;
0083   if (eta > 0)
0084     neweta = eta - deta;
0085   else
0086     neweta = eta + deta;
0087 
0088   return neweta;
0089 }
0090 
0091 //
0092 // static parameters of LUTs
0093 //
0094 
0095 // 06/2003 changed a few end-of scale values
0096 // in order to get less errors when generating LUTs
0097 
0098 float L1MuGMTEtaLUT::etabins[L1MuGMTEtaLUT::NSYS][L1MuGMTEtaLUT::NETA + 1] = {
0099     {0.00, 0.22, 0.27, 0.58, 0.77, 0.87, 0.92, 1.24, 1.35 /*1.24*/},    // DT
0100     {0.00, 1.06, 1.26, 1.46, 1.66, 1.86, 2.06, 2.26, 2.46},             // CSC
0101     {0.00, 0.06, 0.25, 0.41, 0.54, 0.70, 0.83, 0.93, 2.10 /* 1.04 */},  // bRPC
0102     {0.00 /*1.04*/, 1.24, 1.36, 1.48, 1.61, 1.73, 1.85, 1.97, 2.10}     // fRPC
0103 };
0104 
0105 float L1MuGMTEtaLUT::fitparams_eta[L1MuGMTEtaLUT::NRP][L1MuGMTEtaLUT::NSYS][L1MuGMTEtaLUT::NETA][3] = {
0106     {// projection to HCAL derived from HCAL positions retrieved in ORCA
0107      // calo eta projection parametrization for DT, projection to HCAL in (for MIP)
0108      {{0.000622, -0.041158, 0.173116},
0109       {0.006699, 0.033410, 0.100972},
0110       {-0.013232, 0.067651, -0.601139},
0111       {-0.014180, 0.021067, 0.523313},
0112       {0.016339, -0.088452, 0.760254},
0113       {-0.036318, -0.191343, 2.020133},
0114       {0.034405, -0.085665, 1.199408},
0115       {0.000000, 0.000000, 0.000000}},
0116      // calo eta projection parametrization for CSC, projection to HCAL in (for MIP)
0117      {{-0.015401, -0.058141, 1.558118},
0118       {-0.004330, -0.070188, 1.284233},
0119       {-0.006400, -0.087547, 1.504680},
0120       {-0.012328, -0.017183, 0.740447},
0121       {-0.008242, 0.065439, 0.103247},
0122       {-0.007771, 0.064422, 0.032815},
0123       {-0.013519, 0.061566, -0.012504},
0124       {-0.019427, 0.058284, -0.137946}},
0125      // calo eta projection parametrization for bRPC, projection to HCAL in (for MIP)
0126      {{-0.007561, -0.042023, 0.352816},
0127       {-0.009209, 0.040731, 0.302872},
0128       {-0.009222, 0.187243, -0.778960},
0129       {0.005989, 0.166652, -0.389902},
0130       {0.002763, 0.015457, 0.659074},
0131       {0.003961, 0.024581, 0.356591},
0132       {0.007231, -0.006835, 0.780842},
0133       {0.009003, -0.096096, 1.400512}},
0134      // calo eta projection parametrization for fRPC, projection to HCAL in (for MIP)
0135      {{0.001764, -0.005724, 0.996918},
0136       {-0.001087, -0.006683, 1.025424},
0137       {0.006963, -0.070388, 1.071490},
0138       {-0.010473, -0.009773, 0.757894},
0139       {-0.003982, 0.044828, 0.188175},
0140       {-0.004707, 0.090827, 0.075001},
0141       {-0.008527, 0.093006, -0.030012},
0142       {-0.002392, 0.070246, 0.021308}}},
0143     {// calo eta projection parametrization for DT, projection to vertex (for ISO)
0144      {{-0.000091, -0.017684, 0.055423},
0145       {-0.001020, -0.043767, 0.895337},
0146       {-0.012845, 0.042033, -0.260102},
0147       {-0.013225, 0.023254, 0.711623},
0148       {0.019014, -0.106147, 1.048216},
0149       {-0.037251, -0.186894, 2.284707},
0150       {0.032260, -0.064396, 1.457979},
0151       {0.000000, 0.000000, 0.000000}},
0152      // calo eta projection parametrization for CSC, projection to vertex (for ISO)
0153      {{-0.005587, -0.055360, 1.573220},
0154       {-0.005393, -0.048236, 1.591642},
0155       {-0.006649, -0.091712, 1.716567},
0156       {-0.007636, -0.061966, 1.065366},
0157       {-0.000338, -0.020505, 0.578064},
0158       {-0.001077, -0.015956, 0.384573},
0159       {-0.001851, -0.029931, 0.310996},
0160       {-0.001878, -0.012289, 0.168514}},
0161      // calo eta projection parametrization for bRPC, projection to vertex (for ISO)
0162      {{-0.010030, 0.027686, -0.147926},
0163       {-0.008563, 0.041026, 0.356772},
0164       {-0.010788, 0.166841, -0.458204},
0165       {0.009806, 0.109100, 0.080603},
0166       {0.000945, 0.028016, 0.798682},
0167       {0.006432, 0.007630, 0.704437},
0168       {0.007685, -0.004569, 1.044223},
0169       {0.005465, -0.063151, 1.631665}},
0170      // calo eta projection parametrization for fRPC, projection to vertex (for ISO)
0171      {{0.003319, -0.027350, 1.453144},
0172       {0.002237, -0.038884, 1.527818},
0173       {0.003157, -0.092544, 1.479619},
0174       {-0.002126, -0.074455, 1.120056},
0175       {-0.002724, -0.011819, 0.628300},
0176       {0.002581, -0.017028, 0.607589},
0177       {0.002323, 0.025784, 0.253405},
0178       {0.006582, 0.008247, 0.258189}}}};