CMS 3D CMS Logo

L1MuGMTScales.h
Go to the documentation of this file.
1 //-------------------------------------------------
2 //
3 // \class L1MuGMTScales
4 //
10 //
11 // $Date: 2007/03/23 15:22:01 $
12 // $Revision: 1.1 $
13 //
14 //
15 // Original Author :
16 // Hannes Sakulin HEPHY / Vienna
17 //
18 // Migrated to CMSSW:
19 // I. Mikulec
20 //
21 //--------------------------------------------------
22 #ifndef CondFormatsL1TObjects_L1MuGMTScales_h
23 #define CondFormatsL1TObjects_L1MuGMTScales_h
24 
26 
27 #include <cmath>
28 #include <iostream>
29 
31 
33 
35 public:
38 
40  int nbinsReducedEta,
41  const std::vector<double>& scaleReducedEtaDT,
42  const std::vector<double>& scaleReducedEtaBrlRPC,
43  const std::vector<double>& scaleReducedEtaCSC,
44  const std::vector<double>& scaleReducedEtaFwdRPC,
45 
48  int nbinsDeltaEta,
49  float minDeltaEta,
50  float maxDeltaEta,
51  int offsetDeltaEta,
52 
55  int nbinsDeltaPhi,
56  float minDeltaPhi,
57  float maxDeltaPhi,
58  int offsetDeltaPhi,
59 
61  int nbinsOvlEtaDT,
62  float minOvlEtaDT,
63  float maxOvlEtaDT,
64 
66  int nbinsOvlEtaCSC,
67  float minOvlEtaCSC,
68  float maxOvlEtaCSC,
69 
70  const std::vector<double>& scaleOvlEtaRPC,
75 
76  ) {
77  // used as a Singleton, the constructor is run when the GMT is first used.
78  //
79 
80  /* const float reducedetabins[4][9] = { */
81  /* { 0.00, 0.22, 0.27, 0.58, 0.77, 0.87, 0.92, 1.24, 1.3 }, // DT */
82  /* { 0.00, 0.06, 0.25, 0.41, 0.54, 0.70, 0.83, 0.93, 1.04}, // bRPC */
83  /* { 0.9, 1.06, 1.26, 1.46, 1.66, 1.86, 2.06, 2.26, 2.5 }, // CSC */
84  /* { 1.04, 1.24, 1.36, 1.48, 1.61, 1.73, 1.85, 1.97, 2.10} // fRPC */
85  /* }; */
86 
87  /* for (int i=0; i<4; i++) */
88  /* m_ReducedEtaScale[i] = L1MuSymmetricBinnedScale(4, 8, reducedetabins[i]); */
89 
90  m_ReducedEtaScale[0] = L1MuSymmetricBinnedScale(nbitPackingReducedEta, nbinsReducedEta, scaleReducedEtaDT);
91  m_ReducedEtaScale[1] = L1MuSymmetricBinnedScale(nbitPackingReducedEta, nbinsReducedEta, scaleReducedEtaBrlRPC);
92  m_ReducedEtaScale[2] = L1MuSymmetricBinnedScale(nbitPackingReducedEta, nbinsReducedEta, scaleReducedEtaCSC);
93  m_ReducedEtaScale[3] = L1MuSymmetricBinnedScale(nbitPackingReducedEta, nbinsReducedEta, scaleReducedEtaFwdRPC);
94 
95  //
96  // Scales used in Matching Units
97  //
98  /* float deta_unit = 0.04; */
99  /* float deta_min = -7.5 * deta_unit; */
100  /* float deta_max = 7.5 * deta_unit; */
101  /* m_DeltaEtaScale[0] = L1MuBinnedScale (4, true, 15, deta_min, deta_max, 7); // DT-RPC */
102  /* m_DeltaEtaScale[1] = L1MuBinnedScale (4, true, 15, deta_min, deta_max, 7); // CSC-RPC */
103  /* m_DeltaEtaScale[2] = L1MuBinnedScale (4, true, 15, deta_min, deta_max, 7); // DT-CSC */
104  /* m_DeltaEtaScale[3] = L1MuBinnedScale (4, true, 15, deta_min, deta_max, 7); // CSC-DT */
105  /* m_DeltaEtaScale[4] = L1MuBinnedScale (4, true, 15, deta_min, deta_max, 7); // CSC-bRPC */
106  /* m_DeltaEtaScale[5] = L1MuBinnedScale (4, true, 15, deta_min, deta_max, 7); // DT-fRPC */
107 
108  for (int i = 0; i < 6; ++i)
110  nbitPackingDeltaEta, signedPackingDeltaEta, nbinsDeltaEta, minDeltaEta, maxDeltaEta, offsetDeltaEta);
111 
112  // delta phi scale
113  // m_DeltaPhiScale = L1MuBinnedScale (3, true, 8, -11.25 * M_PI/180., 8.75 * M_PI/180.0, 4);
115  nbitPackingDeltaPhi, signedPackingDeltaPhi, nbinsDeltaPhi, minDeltaPhi, maxDeltaPhi, offsetDeltaPhi);
116 
117  //
118  // reduced eta scale for matching in the overlap region
119  //
120  // reserve highest code for Out Of Range
121  //
122  /* const float RpcOvlEtaBins[8] = { */
123  /* 0.72, 0.83, 0.93, 1.04, 1.14, 1.24, 1.36, 1.48 }; */
124 
125  /* m_OvlEtaScale[0] = L1MuSymmetricBinnedScale (4, 7, 1.3 * 18./32. , 1.3); // DT */
126  /* // FIXME **** dt scale: two original bins in one new bin */
127  /* // one-to-one mapping should be possible with new eta scale */
128 
129  /* m_OvlEtaScale[1] = L1MuSymmetricBinnedScale (4, 7, RpcOvlEtaBins) ; // bRPC */
130  /* m_OvlEtaScale[2] = L1MuSymmetricBinnedScale (4, 7, 0.9, 1.25); // CSC */
131  /* m_OvlEtaScale[3] = L1MuSymmetricBinnedScale (4, 7, RpcOvlEtaBins) ; // fRPC */
132 
133  m_OvlEtaScale[0] = L1MuSymmetricBinnedScale(nbitPackingOvlEtaDT, nbinsOvlEtaDT, minOvlEtaDT,
134  maxOvlEtaDT); // DT
135  // FIXME **** dt scale: two original bins in one new bin
136  // one-to-one mapping should be possible with new eta scale
137 
138  m_OvlEtaScale[1] = L1MuSymmetricBinnedScale(nbitPackingOvlEtaBrlRPC, nbinsOvlEtaBrlRPC,
139  scaleOvlEtaRPC); // bRPC
140  m_OvlEtaScale[2] = L1MuSymmetricBinnedScale(nbitPackingOvlEtaCSC,
141  nbinsOvlEtaCSC,
142  minOvlEtaCSC,
143  maxOvlEtaCSC); // CSC
144  m_OvlEtaScale[3] = L1MuSymmetricBinnedScale(nbitPackingOvlEtaFwdRPC, nbinsOvlEtaFwdRPC,
145  scaleOvlEtaRPC); // fRPC
146 
147  //
148  /* float caloEtaBounds[15] = { */
149  /* -3.000, -2.172, -1.740, -1.392, -1.044, -0.696, -0.348, 0., */
150  /* 0.348, 0.696, 1.044, 1.392, 1.740, 2.172, 3.000 }; */
151 
152  /* std::vector<double> caloEtaBounds ; */
153  /* caloEtaBounds.push_back(-3.000) ; */
154  /* caloEtaBounds.push_back(-2.172) ; */
155  /* caloEtaBounds.push_back(-1.740) ; */
156  /* caloEtaBounds.push_back(-1.392) ; */
157  /* caloEtaBounds.push_back(-1.044) ; */
158  /* caloEtaBounds.push_back(-0.696) ; */
159  /* caloEtaBounds.push_back(-0.348) ; */
160  /* caloEtaBounds.push_back(0.) ; */
161  /* caloEtaBounds.push_back(0.348) ; */
162  /* caloEtaBounds.push_back(0.696) ; */
163  /* caloEtaBounds.push_back(1.044) ; */
164  /* caloEtaBounds.push_back(1.392) ; */
165  /* caloEtaBounds.push_back(1.740) ; */
166  /* caloEtaBounds.push_back(2.172) ; */
167  /* caloEtaBounds.push_back(3.000) ; */
168 
169  /* m_CaloEtaScale = L1MuBinnedScale (4, false, 14, caloEtaBounds); */
170  };
171 
173  virtual ~L1MuGMTScales(){
174  // for (int i=0; i<4; i++) {
175  // delete m_ReducedEtaScale[i];
176  // delete m_OvlEtaScale[i];
177  // }
178  // for (int i=0; i<6; i++) {
179  // delete m_DeltaEtaScale[i];
180  // }
181 
182  // delete m_DeltaPhiScale;
183  // delete m_CaloEtaScale;
184  };
185 
187  const L1MuScale* getReducedEtaScale(int isys) const {
188  if (isys < 0 || isys > 3)
189  edm::LogWarning("GMTScaleRangeViolation") << "Error in L1MuGMTScales:: isys out of range: " << isys;
190  return &(m_ReducedEtaScale[isys]);
191  };
192 
194  const L1MuScale* getDeltaEtaScale(int idx) const {
195  if (idx < 0 || idx > 5)
196  edm::LogWarning("GMTScaleRangeViolation") << "Error in L1MuGMTScales:: isys out of range: " << idx;
197  return &(m_DeltaEtaScale[idx]);
198  };
199 
201  const L1MuScale* getDeltaPhiScale() const { return &m_DeltaPhiScale; };
202 
204  const L1MuScale* getOvlEtaScale(int isys) const {
205  if (isys < 0 || isys > 3)
206  edm::LogWarning("GMTScaleRangeViolation") << "Error in L1MuGMTScales:: isys out of range: " << isys;
207  return &(m_OvlEtaScale[isys]);
208  };
209 
210  /* /// get the calorimeter eta scale */
211  /* const L1MuScale *getCaloEtaScale() const { return &m_CaloEtaScale;}; */
212 
213 private:
218  /* L1MuBinnedScale m_CaloEtaScale; */
219 
221 };
222 
223 #endif
L1MuSymmetricBinnedScale m_ReducedEtaScale[4]
L1MuSymmetricBinnedScale m_OvlEtaScale[4]
L1MuGMTScales()
constructor
Definition: L1MuGMTScales.h:37
L1MuBinnedScale m_DeltaEtaScale[6]
const L1MuScale * getReducedEtaScale(int isys) const
get the recuced eta scale for matching in the overlap region (4 bit); isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC)
L1MuBinnedScale m_DeltaPhiScale
const L1MuScale * getDeltaPhiScale() const
get the delta phi scale ( 3 bits)
L1MuGMTScales(int nbitPackingReducedEta, int nbinsReducedEta, const std::vector< double > &scaleReducedEtaDT, const std::vector< double > &scaleReducedEtaBrlRPC, const std::vector< double > &scaleReducedEtaCSC, const std::vector< double > &scaleReducedEtaFwdRPC, int nbitPackingDeltaEta, bool signedPackingDeltaEta, int nbinsDeltaEta, float minDeltaEta, float maxDeltaEta, int offsetDeltaEta, int nbitPackingDeltaPhi, bool signedPackingDeltaPhi, int nbinsDeltaPhi, float minDeltaPhi, float maxDeltaPhi, int offsetDeltaPhi, int nbitPackingOvlEtaDT, int nbinsOvlEtaDT, float minOvlEtaDT, float maxOvlEtaDT, int nbitPackingOvlEtaCSC, int nbinsOvlEtaCSC, float minOvlEtaCSC, float maxOvlEtaCSC, const std::vector< double > &scaleOvlEtaRPC, int nbitPackingOvlEtaBrlRPC, int nbinsOvlEtaBrlRPC, int nbitPackingOvlEtaFwdRPC, int nbinsOvlEtaFwdRPC)
Definition: L1MuGMTScales.h:39
#define COND_SERIALIZABLE
Definition: Serializable.h:38
virtual ~L1MuGMTScales()
destructor
const L1MuScale * getDeltaEtaScale(int idx) const
get the delta eta scale; idx = 0(DT=RPC), 1(CSC-RPC), 2(DT-CSC), 3(CSC-DT), 4(bRPC-CSC), 5(fRPC-DT)
const L1MuScale * getOvlEtaScale(int isys) const
get the overlap eta scale (4 bits); isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC)