00001
00017
00018 #include "L1Trigger/GlobalTrigger/interface/L1GtEtaPhiConversions.h"
00019
00020
00021 #include <iostream>
00022 #include <iomanip>
00023
00024
00025
00026
00027
00028
00029 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerObjectMapFwd.h"
00030
00031 #include "CondFormats/L1TObjects/interface/L1MuTriggerScales.h"
00032 #include "CondFormats/L1TObjects/interface/L1CaloGeometry.h"
00033
00034 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00035 #include "FWCore/MessageLogger/interface/MessageDrop.h"
00036
00037 #include "FWCore/Utilities/interface/Exception.h"
00038
00039
00040 L1GtEtaPhiConversions::L1GtEtaPhiConversions() :
00041 m_nrBinsPhiMu(0), m_nrBinsPhiJetEg(0), m_nrBinsPhiEtm(0),
00042 m_nrBinsPhiHtm(0), m_nrBinsEtaCommon(0), m_verbosity(0),
00043 m_isDebugEnabled(edm::isDebugEnabled()) {
00044
00045
00046
00047
00048
00049
00050 std::pair < L1GtObject, L1GtObject > gtObjPair;
00051 m_gtObjectPairVec.reserve(56);
00052 m_pairConvertPhiFirstGtObject.reserve(56);
00053 m_pairNrPhiBinsVec.reserve(56);
00054 m_pairPhiConvVec.reserve(56);
00055
00056
00057
00058
00059 gtObjPair = std::make_pair(Mu, CenJet);
00060 m_gtObjectPairVec.push_back(gtObjPair);
00061 m_pairConvertPhiFirstGtObject.push_back(true);
00062 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00063 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00064
00065 gtObjPair = std::make_pair(CenJet, Mu);
00066 m_gtObjectPairVec.push_back(gtObjPair);
00067 m_pairConvertPhiFirstGtObject.push_back(false);
00068 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00069 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00070
00071
00072 gtObjPair = std::make_pair(Mu, ForJet);
00073 m_gtObjectPairVec.push_back(gtObjPair);
00074 m_pairConvertPhiFirstGtObject.push_back(true);
00075 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00076 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00077
00078 gtObjPair = std::make_pair(ForJet, Mu);
00079 m_gtObjectPairVec.push_back(gtObjPair);
00080 m_pairConvertPhiFirstGtObject.push_back(false);
00081 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00082 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00083
00084
00085 gtObjPair = std::make_pair(Mu, TauJet);
00086 m_gtObjectPairVec.push_back(gtObjPair);
00087 m_pairConvertPhiFirstGtObject.push_back(true);
00088 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00089 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00090
00091 gtObjPair = std::make_pair(TauJet, Mu);
00092 m_gtObjectPairVec.push_back(gtObjPair);
00093 m_pairConvertPhiFirstGtObject.push_back(false);
00094 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00095 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00096
00097
00098 gtObjPair = std::make_pair(Mu, NoIsoEG);
00099 m_gtObjectPairVec.push_back(gtObjPair);
00100 m_pairConvertPhiFirstGtObject.push_back(true);
00101 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00102 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00103
00104 gtObjPair = std::make_pair(NoIsoEG, Mu);
00105 m_gtObjectPairVec.push_back(gtObjPair);
00106 m_pairConvertPhiFirstGtObject.push_back(false);
00107 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00108 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00109
00110
00111 gtObjPair = std::make_pair(Mu, IsoEG);
00112 m_gtObjectPairVec.push_back(gtObjPair);
00113 m_pairConvertPhiFirstGtObject.push_back(true);
00114 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00115 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00116
00117 gtObjPair = std::make_pair(IsoEG, Mu);
00118 m_gtObjectPairVec.push_back(gtObjPair);
00119 m_pairConvertPhiFirstGtObject.push_back(false);
00120 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00121 m_pairPhiConvVec.push_back(&m_lutPhiMuToJetEg);
00122
00123
00124 gtObjPair = std::make_pair(Mu, ETM);
00125 m_gtObjectPairVec.push_back(gtObjPair);
00126 m_pairConvertPhiFirstGtObject.push_back(true);
00127 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiEtm);
00128 m_pairPhiConvVec.push_back(&m_lutPhiMuToEtm);
00129
00130 gtObjPair = std::make_pair(ETM, Mu);
00131 m_gtObjectPairVec.push_back(gtObjPair);
00132 m_pairConvertPhiFirstGtObject.push_back(false);
00133 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiEtm);
00134 m_pairPhiConvVec.push_back(&m_lutPhiMuToEtm);
00135
00136
00137 gtObjPair = std::make_pair(Mu, HTM);
00138 m_gtObjectPairVec.push_back(gtObjPair);
00139 m_pairConvertPhiFirstGtObject.push_back(true);
00140 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiHtm);
00141 m_pairPhiConvVec.push_back(&m_lutPhiMuToHtm);
00142
00143 gtObjPair = std::make_pair(HTM, Mu);
00144 m_gtObjectPairVec.push_back(gtObjPair);
00145 m_pairConvertPhiFirstGtObject.push_back(false);
00146 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiHtm);
00147 m_pairPhiConvVec.push_back(&m_lutPhiMuToHtm);
00148
00149
00150
00151 gtObjPair = std::make_pair(ETM, CenJet);
00152 m_gtObjectPairVec.push_back(gtObjPair);
00153 m_pairConvertPhiFirstGtObject.push_back(true);
00154 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00155 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00156
00157 gtObjPair = std::make_pair(CenJet, ETM);
00158 m_gtObjectPairVec.push_back(gtObjPair);
00159 m_pairConvertPhiFirstGtObject.push_back(false);
00160 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00161 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00162
00163
00164 gtObjPair = std::make_pair(ETM, ForJet);
00165 m_gtObjectPairVec.push_back(gtObjPair);
00166 m_pairConvertPhiFirstGtObject.push_back(true);
00167 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00168 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00169
00170 gtObjPair = std::make_pair(ForJet, ETM);
00171 m_gtObjectPairVec.push_back(gtObjPair);
00172 m_pairConvertPhiFirstGtObject.push_back(false);
00173 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00174 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00175
00176
00177 gtObjPair = std::make_pair(ETM, TauJet);
00178 m_gtObjectPairVec.push_back(gtObjPair);
00179 m_pairConvertPhiFirstGtObject.push_back(true);
00180 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00181 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00182
00183 gtObjPair = std::make_pair(TauJet, ETM);
00184 m_gtObjectPairVec.push_back(gtObjPair);
00185 m_pairConvertPhiFirstGtObject.push_back(false);
00186 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00187 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00188
00189
00190 gtObjPair = std::make_pair(ETM, NoIsoEG);
00191 m_gtObjectPairVec.push_back(gtObjPair);
00192 m_pairConvertPhiFirstGtObject.push_back(true);
00193 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00194 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00195
00196 gtObjPair = std::make_pair(NoIsoEG, ETM);
00197 m_gtObjectPairVec.push_back(gtObjPair);
00198 m_pairConvertPhiFirstGtObject.push_back(false);
00199 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00200 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00201
00202
00203 gtObjPair = std::make_pair(ETM, IsoEG);
00204 m_gtObjectPairVec.push_back(gtObjPair);
00205 m_pairConvertPhiFirstGtObject.push_back(true);
00206 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00207 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00208
00209 gtObjPair = std::make_pair(IsoEG, ETM);
00210 m_gtObjectPairVec.push_back(gtObjPair);
00211 m_pairConvertPhiFirstGtObject.push_back(false);
00212 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00213 m_pairPhiConvVec.push_back(&m_lutPhiEtmToJetEg);
00214
00215
00216
00217 gtObjPair = std::make_pair(HTM, CenJet);
00218 m_gtObjectPairVec.push_back(gtObjPair);
00219 m_pairConvertPhiFirstGtObject.push_back(true);
00220 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00221 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00222
00223 gtObjPair = std::make_pair(CenJet, HTM);
00224 m_gtObjectPairVec.push_back(gtObjPair);
00225 m_pairConvertPhiFirstGtObject.push_back(false);
00226 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00227 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00228
00229
00230 gtObjPair = std::make_pair(HTM, ForJet);
00231 m_gtObjectPairVec.push_back(gtObjPair);
00232 m_pairConvertPhiFirstGtObject.push_back(true);
00233 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00234 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00235
00236 gtObjPair = std::make_pair(ForJet, HTM);
00237 m_gtObjectPairVec.push_back(gtObjPair);
00238 m_pairConvertPhiFirstGtObject.push_back(false);
00239 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00240 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00241
00242
00243 gtObjPair = std::make_pair(HTM, TauJet);
00244 m_gtObjectPairVec.push_back(gtObjPair);
00245 m_pairConvertPhiFirstGtObject.push_back(true);
00246 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00247 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00248
00249 gtObjPair = std::make_pair(TauJet, HTM);
00250 m_gtObjectPairVec.push_back(gtObjPair);
00251 m_pairConvertPhiFirstGtObject.push_back(false);
00252 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00253 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00254
00255
00256 gtObjPair = std::make_pair(HTM, NoIsoEG);
00257 m_gtObjectPairVec.push_back(gtObjPair);
00258 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00259 m_pairConvertPhiFirstGtObject.push_back(true);
00260 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00261
00262 gtObjPair = std::make_pair(NoIsoEG, HTM);
00263 m_gtObjectPairVec.push_back(gtObjPair);
00264 m_pairConvertPhiFirstGtObject.push_back(false);
00265 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00266 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00267
00268
00269 gtObjPair = std::make_pair(HTM, IsoEG);
00270 m_gtObjectPairVec.push_back(gtObjPair);
00271 m_pairConvertPhiFirstGtObject.push_back(true);
00272 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00273 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00274
00275 gtObjPair = std::make_pair(IsoEG, HTM);
00276 m_gtObjectPairVec.push_back(gtObjPair);
00277 m_pairConvertPhiFirstGtObject.push_back(false);
00278 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00279 m_pairPhiConvVec.push_back(&m_lutPhiHtmToJetEg);
00280
00281
00282
00283
00284 gtObjPair = std::make_pair(ETM, HTM);
00285 m_gtObjectPairVec.push_back(gtObjPair);
00286 m_pairConvertPhiFirstGtObject.push_back(true);
00287 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiHtm);
00288 m_pairPhiConvVec.push_back(&m_lutPhiEtmToHtm);
00289
00290 gtObjPair = std::make_pair(HTM, ETM);
00291 m_gtObjectPairVec.push_back(gtObjPair);
00292 m_pairConvertPhiFirstGtObject.push_back(false);
00293 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiHtm);
00294 m_pairPhiConvVec.push_back(&m_lutPhiEtmToHtm);
00295
00296
00297
00298
00299 gtObjPair = std::make_pair(CenJet, ForJet);
00300 m_gtObjectPairVec.push_back(gtObjPair);
00301 m_pairConvertPhiFirstGtObject.push_back(true);
00302 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00303 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00304
00305 gtObjPair = std::make_pair(ForJet, CenJet);
00306 m_gtObjectPairVec.push_back(gtObjPair);
00307 m_pairConvertPhiFirstGtObject.push_back(false);
00308 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00309 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00310
00311
00312 gtObjPair = std::make_pair(CenJet, TauJet);
00313 m_gtObjectPairVec.push_back(gtObjPair);
00314 m_pairConvertPhiFirstGtObject.push_back(true);
00315 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00316 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00317
00318 gtObjPair = std::make_pair(TauJet, CenJet);
00319 m_gtObjectPairVec.push_back(gtObjPair);
00320 m_pairConvertPhiFirstGtObject.push_back(false);
00321 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00322 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00323
00324
00325 gtObjPair = std::make_pair(CenJet, NoIsoEG);
00326 m_gtObjectPairVec.push_back(gtObjPair);
00327 m_pairConvertPhiFirstGtObject.push_back(true);
00328 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00329 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00330
00331 gtObjPair = std::make_pair(NoIsoEG, CenJet);
00332 m_gtObjectPairVec.push_back(gtObjPair);
00333 m_pairConvertPhiFirstGtObject.push_back(false);
00334 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00335 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00336
00337
00338 gtObjPair = std::make_pair(CenJet, IsoEG);
00339 m_gtObjectPairVec.push_back(gtObjPair);
00340 m_pairConvertPhiFirstGtObject.push_back(true);
00341 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00342 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00343
00344 gtObjPair = std::make_pair(IsoEG, CenJet);
00345 m_gtObjectPairVec.push_back(gtObjPair);
00346 m_pairConvertPhiFirstGtObject.push_back(false);
00347 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00348 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00349
00350
00351 gtObjPair = std::make_pair(ForJet, TauJet);
00352 m_gtObjectPairVec.push_back(gtObjPair);
00353 m_pairConvertPhiFirstGtObject.push_back(true);
00354 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00355 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00356
00357 gtObjPair = std::make_pair(TauJet, ForJet);
00358 m_gtObjectPairVec.push_back(gtObjPair);
00359 m_pairConvertPhiFirstGtObject.push_back(false);
00360 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00361 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00362
00363
00364 gtObjPair = std::make_pair(ForJet, NoIsoEG);
00365 m_gtObjectPairVec.push_back(gtObjPair);
00366 m_pairConvertPhiFirstGtObject.push_back(true);
00367 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00368 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00369
00370 gtObjPair = std::make_pair(NoIsoEG, ForJet);
00371 m_gtObjectPairVec.push_back(gtObjPair);
00372 m_pairConvertPhiFirstGtObject.push_back(false);
00373 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00374 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00375
00376
00377 gtObjPair = std::make_pair(ForJet, IsoEG);
00378 m_gtObjectPairVec.push_back(gtObjPair);
00379 m_pairConvertPhiFirstGtObject.push_back(true);
00380 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00381 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00382
00383 gtObjPair = std::make_pair(IsoEG, ForJet);
00384 m_gtObjectPairVec.push_back(gtObjPair);
00385 m_pairConvertPhiFirstGtObject.push_back(false);
00386 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00387 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00388
00389
00390 gtObjPair = std::make_pair(TauJet, NoIsoEG);
00391 m_gtObjectPairVec.push_back(gtObjPair);
00392 m_pairConvertPhiFirstGtObject.push_back(true);
00393 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00394 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00395
00396 gtObjPair = std::make_pair(NoIsoEG, TauJet);
00397 m_gtObjectPairVec.push_back(gtObjPair);
00398 m_pairConvertPhiFirstGtObject.push_back(false);
00399 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00400 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00401
00402
00403 gtObjPair = std::make_pair(TauJet, IsoEG);
00404 m_gtObjectPairVec.push_back(gtObjPair);
00405 m_pairConvertPhiFirstGtObject.push_back(true);
00406 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00407 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00408
00409 gtObjPair = std::make_pair(IsoEG, TauJet);
00410 m_gtObjectPairVec.push_back(gtObjPair);
00411 m_pairConvertPhiFirstGtObject.push_back(false);
00412 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00413 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00414
00415
00416 gtObjPair = std::make_pair(NoIsoEG, IsoEG);
00417 m_gtObjectPairVec.push_back(gtObjPair);
00418 m_pairConvertPhiFirstGtObject.push_back(true);
00419 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00420 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00421
00422 gtObjPair = std::make_pair(IsoEG, NoIsoEG);
00423 m_gtObjectPairVec.push_back(gtObjPair);
00424 m_pairConvertPhiFirstGtObject.push_back(false);
00425 m_pairNrPhiBinsVec.push_back(&m_nrBinsPhiJetEg);
00426 m_pairPhiConvVec.push_back(&m_lutPhiJetEgToJetEg);
00427
00428
00429
00430 if (m_isDebugEnabled) {
00431 LogTrace("L1GlobalTrigger") << "\nm_gtObjectPairVec size: "
00432 << (m_gtObjectPairVec.size()) << std::endl;
00433
00434 unsigned int iPair = 0;
00435
00436 for (std::vector<std::pair<L1GtObject, L1GtObject> >::const_iterator
00437 cIter = m_gtObjectPairVec.begin();
00438 cIter != m_gtObjectPairVec.end(); ++cIter) {
00439 LogTrace("L1GlobalTrigger") << "m_gtObjectPairVec vector element ["
00440 << l1GtObjectEnumToString((*cIter).first) << ", "
00441 << l1GtObjectEnumToString((*cIter).second)
00442 << "], \t\tpair index = " << iPair << std::endl;
00443
00444 iPair++;
00445
00446 }
00447 }
00448
00449 }
00450
00451
00452 L1GtEtaPhiConversions::~L1GtEtaPhiConversions() {
00453
00454
00455
00456 }
00457
00458
00459
00460 const unsigned int L1GtEtaPhiConversions::gtObjectPairIndex(
00461 const L1GtObject& obj0, const L1GtObject& obj1) const {
00462
00463 std::pair < L1GtObject, L1GtObject > gtObjPair;
00464 gtObjPair = std::make_pair(obj0, obj1);
00465
00466
00467
00468
00469
00470 unsigned int iPair = 0;
00471 for (std::vector<std::pair<L1GtObject, L1GtObject> >::const_iterator cIter =
00472 m_gtObjectPairVec.begin(); cIter != m_gtObjectPairVec.end(); ++cIter) {
00473
00474 if (*cIter == gtObjPair) {
00475 LogTrace("L1GlobalTrigger") << "\n Index for pair ["
00476 << l1GtObjectEnumToString(obj0) << ", "
00477 << l1GtObjectEnumToString(obj1) << "] = "
00478 << iPair << std::endl;
00479
00480 return iPair;
00481 }
00482
00483 iPair++;
00484 }
00485
00486
00487
00488
00489
00490 return m_gtObjectPairVec.size();
00491 }
00492
00493 const bool L1GtEtaPhiConversions::convertPhiIndex(const unsigned int pairIndex,
00494 const unsigned int positionPair, const unsigned int initialIndex,
00495 unsigned int& convertedIndex) const {
00496
00497 unsigned int newIndex = badIndex;
00498 bool conversionStatus = false;
00499
00500
00501
00502
00503 if (initialIndex >= (*(m_pairPhiConvVec.at(pairIndex))).size()) {
00504
00505 conversionStatus = false;
00506
00507 if (m_verbosity && m_isDebugEnabled) {
00508 LogTrace("L1GlobalTrigger") << (positionPair ? " Second"
00509 : "\n First") << " object from pair " << pairIndex
00510 << ": initial phi index " << initialIndex << " >= "
00511 << ((*(m_pairPhiConvVec.at(pairIndex))).size())
00512 << " Conversion failed." << std::endl;
00513 }
00514 } else {
00515 if (m_verbosity && m_isDebugEnabled) {
00516 LogTrace("L1GlobalTrigger") << (positionPair ? " Second"
00517 : "\n First") << " object from pair " << pairIndex
00518 << ": initial phi index " << initialIndex
00519 << " within scale size " <<
00520 ((*(m_pairPhiConvVec.at(pairIndex))).size())
00521 << std::endl;
00522 }
00523
00524 }
00525
00526
00527 switch (positionPair) {
00528 case 0: {
00529 if (m_pairConvertPhiFirstGtObject.at(pairIndex)) {
00530
00531 newIndex = (*(m_pairPhiConvVec.at(pairIndex))).at(initialIndex);
00532
00533 if (newIndex != badIndex) {
00534
00535 conversionStatus = true;
00536
00537 if (m_verbosity && m_isDebugEnabled) {
00538 LogTrace("L1GlobalTrigger")
00539 << (positionPair ? " Second" : "\n First")
00540 << " object from pair " << pairIndex
00541 << ": initial phi index " << initialIndex
00542 << " converted to " << newIndex << std::endl;
00543 }
00544
00545 } else {
00546
00547 conversionStatus = false;
00548
00549 if (m_verbosity && m_isDebugEnabled) {
00550 LogTrace("L1GlobalTrigger")
00551 << (positionPair ? " Second" : "\n First")
00552 << " object from pair " << pairIndex
00553 << ": converted phi index " << newIndex
00554 << "is equal to badIndex " << badIndex
00555 << " Conversion failed." << std::endl;
00556 }
00557 }
00558
00559 } else {
00560 newIndex = initialIndex;
00561 conversionStatus = true;
00562
00563 if (m_verbosity && m_isDebugEnabled) {
00564 LogTrace("L1GlobalTrigger") << (positionPair ? " Second"
00565 : "\n First") << " object from pair " << pairIndex
00566 << ": initial phi index " << initialIndex
00567 << " not requested to be converted, return index "
00568 << newIndex << std::endl;
00569 }
00570 }
00571 }
00572
00573 break;
00574 case 1: {
00575 if (m_pairConvertPhiFirstGtObject.at(pairIndex)) {
00576
00577 newIndex = initialIndex;
00578 conversionStatus = true;
00579
00580 if (m_verbosity && m_isDebugEnabled) {
00581 LogTrace("L1GlobalTrigger") << (positionPair ? " Second"
00582 : "\n First") << " object from pair " << pairIndex
00583 << ": initial phi index " << initialIndex
00584 << " not requested to be converted, return index, return index "
00585 << newIndex << std::endl;
00586 }
00587 } else {
00588
00589 newIndex = (*(m_pairPhiConvVec.at(pairIndex))).at(initialIndex);
00590
00591 if (newIndex != badIndex) {
00592
00593 conversionStatus = true;
00594
00595 if (m_verbosity && m_isDebugEnabled) {
00596 LogTrace("L1GlobalTrigger")
00597 << (positionPair ? " Second" : "\n First")
00598 << " object from pair " << pairIndex
00599 << ": initial phi index " << initialIndex
00600 << " converted to " << newIndex << std::endl;
00601 }
00602
00603 } else {
00604
00605 conversionStatus = false;
00606
00607 if (m_verbosity && m_isDebugEnabled) {
00608 LogTrace("L1GlobalTrigger")
00609 << (positionPair ? " Second" : "\n First")
00610 << " object from pair " << pairIndex
00611 << ": converted phi index " << newIndex
00612 << "is equal to badIndex " << badIndex
00613 << " Conversion failed." << std::endl;
00614 }
00615 }
00616
00617 }
00618
00619 }
00620
00621 break;
00622 default: {
00623
00624
00625 throw cms::Exception("FailModule")
00626 << "\n Wrong position in the object pair " << positionPair
00627 << "\n Programming error - position must be either 0 or 1..."
00628 << std::endl;
00629
00630 }
00631 break;
00632 }
00633
00634
00635 convertedIndex = newIndex;
00636 return conversionStatus;
00637
00638 }
00639
00640 const bool L1GtEtaPhiConversions::convertEtaIndex(const L1GtObject& gtObject,
00641 const unsigned int initialIndex, unsigned int& convertedIndex) const {
00642
00643 unsigned int newIndex = badIndex;
00644 bool conversionStatus = false;
00645
00646 switch (gtObject) {
00647
00648 case Mu: {
00649
00650
00651
00652
00653 if (initialIndex >= m_lutEtaMuToCommonCalo.size()) {
00654
00655 conversionStatus = false;
00656
00657 if (m_verbosity && m_isDebugEnabled) {
00658 LogTrace("L1GlobalTrigger") << " L1 GT object "
00659 << (l1GtObjectEnumToString(gtObject))
00660 << " has initial eta index " << initialIndex
00661 << " >= " << (m_lutEtaMuToCommonCalo.size())
00662 << " scale size. Conversion failed." << std::endl;
00663 }
00664 } else {
00665
00666
00667 newIndex = m_lutEtaMuToCommonCalo[initialIndex];
00668
00669 if (newIndex != badIndex) {
00670
00671 conversionStatus = true;
00672
00673 if (m_verbosity && m_isDebugEnabled) {
00674 LogTrace("L1GlobalTrigger") << " L1 GT object "
00675 << (l1GtObjectEnumToString(gtObject))
00676 << " initial eta index " << initialIndex
00677 << " (within scale size "
00678 << (m_lutEtaMuToCommonCalo.size())
00679 << ") converted to " << newIndex << std::endl;
00680 }
00681
00682 } else {
00683
00684 conversionStatus = false;
00685
00686 if (m_verbosity && m_isDebugEnabled) {
00687 LogTrace("L1GlobalTrigger") << " L1 GT object "
00688 << (l1GtObjectEnumToString(gtObject))
00689 << " initial eta index " << initialIndex
00690 << " (within scale size "
00691 << (m_lutEtaMuToCommonCalo.size())
00692 << ") converted to badIndex" << newIndex
00693 << " Conversion failed." << std::endl;
00694 }
00695 }
00696
00697 }
00698
00699 }
00700 break;
00701
00702 case NoIsoEG:
00703 case IsoEG:
00704 case CenJet:
00705 case TauJet: {
00706
00707
00708
00709
00710 if (initialIndex >= m_lutEtaCentralToCommonCalo.size()) {
00711
00712 conversionStatus = false;
00713
00714 if (m_verbosity && m_isDebugEnabled) {
00715 LogTrace("L1GlobalTrigger") << " L1 GT object "
00716 << (l1GtObjectEnumToString(gtObject))
00717 << " has initial eta index " << initialIndex
00718 << " >= " << (m_lutEtaCentralToCommonCalo.size())
00719 << " scale size. Conversion failed." << std::endl;
00720 }
00721 } else {
00722
00723
00724 newIndex = m_lutEtaCentralToCommonCalo[initialIndex];
00725
00726 if (newIndex != badIndex) {
00727
00728 conversionStatus = true;
00729
00730 if (m_verbosity && m_isDebugEnabled) {
00731 LogTrace("L1GlobalTrigger") << " L1 GT object "
00732 << (l1GtObjectEnumToString(gtObject))
00733 << " initial eta index " << initialIndex
00734 << " (within scale size "
00735 << (m_lutEtaMuToCommonCalo.size())
00736 << ") converted to " << newIndex << std::endl;
00737 }
00738
00739 } else {
00740
00741 conversionStatus = false;
00742
00743 if (m_verbosity && m_isDebugEnabled) {
00744 LogTrace("L1GlobalTrigger") << " L1 GT object "
00745 << (l1GtObjectEnumToString(gtObject))
00746 << " initial eta index " << initialIndex
00747 << " (within scale size "
00748 << (m_lutEtaCentralToCommonCalo.size())
00749 << ") converted to badIndex" << newIndex
00750 << " Conversion failed." << std::endl;
00751 }
00752 }
00753
00754 }
00755
00756 }
00757 break;
00758
00759 case ForJet: {
00760
00761
00762
00763
00764 if (initialIndex >= m_lutEtaForJetToCommonCalo.size()) {
00765
00766 conversionStatus = false;
00767
00768 if (m_verbosity && m_isDebugEnabled) {
00769 LogTrace("L1GlobalTrigger") << " L1 GT object "
00770 << (l1GtObjectEnumToString(gtObject))
00771 << " has initial eta index " << initialIndex
00772 << " >= " << (m_lutEtaForJetToCommonCalo.size())
00773 << " scale size. Conversion failed." << std::endl;
00774 }
00775 } else {
00776
00777
00778 newIndex = m_lutEtaForJetToCommonCalo[initialIndex];
00779
00780 if (newIndex != badIndex) {
00781
00782 conversionStatus = true;
00783
00784 if (m_verbosity && m_isDebugEnabled) {
00785 LogTrace("L1GlobalTrigger") << " L1 GT object "
00786 << (l1GtObjectEnumToString(gtObject))
00787 << " initial eta index " << initialIndex
00788 << " (within scale size "
00789 << (m_lutEtaMuToCommonCalo.size())
00790 << ") converted to " << newIndex << std::endl;
00791 }
00792
00793 } else {
00794
00795 conversionStatus = false;
00796
00797 if (m_verbosity && m_isDebugEnabled) {
00798 LogTrace("L1GlobalTrigger") << " L1 GT object "
00799 << (l1GtObjectEnumToString(gtObject))
00800 << " initial eta index " << initialIndex
00801 << " (within scale size "
00802 << (m_lutEtaForJetToCommonCalo.size())
00803 << ") converted to badIndex" << newIndex
00804 << " Conversion failed." << std::endl;
00805 }
00806 }
00807
00808 }
00809 }
00810 break;
00811
00812 case ETM:
00813 case ETT:
00814 case HTT:
00815 case HTM:
00816 case JetCounts:
00817 case HfBitCounts:
00818 case HfRingEtSums:
00819 case TechTrig:
00820 case Castor:
00821 case BPTX:
00822 case GtExternal:
00823 case ObjNull: {
00824
00825
00826 conversionStatus = false;
00827 }
00828 break;
00829
00830 default: {
00831 edm::LogInfo("L1GtObject") << "\n '" << (l1GtObjectEnumToString(
00832 gtObject)) << "' is not a recognized L1GtObject. "
00833 << "\n Conversion failed. " << std::endl;
00834 conversionStatus = false;
00835 }
00836 break;
00837 }
00838
00839
00840 convertedIndex = newIndex;
00841
00842 return conversionStatus;
00843
00844 }
00845
00846 const unsigned int L1GtEtaPhiConversions::gtObjectNrBinsPhi(
00847 const L1GtObject& gtObject) const {
00848
00849 switch (gtObject) {
00850
00851 case Mu: {
00852 return m_nrBinsPhiMu;
00853 }
00854 break;
00855
00856 case NoIsoEG:
00857 case IsoEG:
00858 case CenJet:
00859 case ForJet:
00860 case TauJet: {
00861 return m_nrBinsPhiJetEg;
00862 }
00863 break;
00864
00865 case ETM: {
00866 return m_nrBinsPhiEtm;
00867 }
00868 break;
00869
00870 case ETT:
00871 case HTT: {
00872 return 0;
00873 }
00874 break;
00875
00876 case HTM: {
00877 return m_nrBinsPhiHtm;
00878 }
00879 break;
00880
00881 case JetCounts:
00882 case HfBitCounts:
00883 case HfRingEtSums:
00884 case TechTrig:
00885 case Castor:
00886 case BPTX:
00887 case GtExternal:
00888 case ObjNull: {
00889 return 0;
00890 }
00891 break;
00892
00893 default: {
00894 edm::LogInfo("L1GtObject") << "\n '"
00895 << (l1GtObjectEnumToString(gtObject))
00896 << "' is not a recognized L1GtObject. "
00897 << "\n Return 0 bins.";
00898 return 0;
00899 }
00900 break;
00901 }
00902
00903 }
00904
00905 const unsigned int L1GtEtaPhiConversions::gtObjectNrBinsPhi(
00906 const L1GtObject& obj0, const L1GtObject& obj1) const {
00907
00908 std::pair < L1GtObject, L1GtObject > gtObjPair;
00909 gtObjPair = std::make_pair(obj0, obj1);
00910
00911
00912
00913
00914
00915 int iPair = 0;
00916 for (std::vector<std::pair<L1GtObject, L1GtObject> >::const_iterator cIter =
00917 m_gtObjectPairVec.begin(); cIter != m_gtObjectPairVec.end(); ++cIter) {
00918
00919 if (*cIter == gtObjPair) {
00920 LogTrace("L1GlobalTrigger") << "\n gtObjectNrBinsPhi ["
00921 << l1GtObjectEnumToString(obj0) << ", "
00922 << l1GtObjectEnumToString(obj1) << "] = "
00923 << (*(m_pairNrPhiBinsVec.at(iPair))) << std::endl;
00924
00925 return *(m_pairNrPhiBinsVec.at(iPair));
00926 }
00927
00928 iPair++;
00929 }
00930
00931 return 0;
00932 }
00933
00934 const unsigned int L1GtEtaPhiConversions::gtObjectNrBinsPhi(
00935 const unsigned int pairIndex) const {
00936
00937 if (m_verbosity && m_isDebugEnabled) {
00938 LogTrace("L1GlobalTrigger")
00939 << "\n gtObjectNrBinsPhi for L1 GT object pair index "
00940 << pairIndex << " = " << (*(m_pairNrPhiBinsVec.at(pairIndex)))
00941 << std::endl;
00942 }
00943
00944 return *(m_pairNrPhiBinsVec.at(pairIndex));
00945 }
00946
00947
00948
00949
00950 void L1GtEtaPhiConversions::convertL1Scales(
00951 const L1CaloGeometry* l1CaloGeometry,
00952 const L1MuTriggerScales* l1MuTriggerScales,
00953 const int ifCaloEtaNumberBits, const int ifMuEtaNumberBits) {
00954
00955
00956
00957
00958
00959 m_l1CaloGeometry = l1CaloGeometry;
00960 m_l1MuTriggerScales = l1MuTriggerScales;
00961
00962
00963
00964 m_nrBinsPhiMu = 144;
00965
00966
00967 m_nrBinsPhiJetEg = m_l1CaloGeometry->numberGctEmJetPhiBins();
00968 m_nrBinsPhiEtm = m_l1CaloGeometry->numberGctEtSumPhiBins();
00969 m_nrBinsPhiHtm = m_l1CaloGeometry->numberGctHtSumPhiBins();
00970
00971
00972
00973
00974
00975 m_lutPhiMuToJetEg.clear();
00976 m_lutPhiMuToJetEg.resize(m_nrBinsPhiMu, badIndex);
00977
00978 m_lutPhiMuToEtm.clear();
00979 m_lutPhiMuToEtm.resize(m_nrBinsPhiMu, badIndex);
00980
00981 m_lutPhiMuToHtm.clear();
00982 m_lutPhiMuToHtm.resize(m_nrBinsPhiMu, badIndex);
00983
00984 for (unsigned int phiMuInd = 0; phiMuInd < m_nrBinsPhiMu; ++phiMuInd) {
00985
00986 double phiMuLowEdge = m_l1MuTriggerScales->getPhiScale()->getLowEdge(
00987 phiMuInd);
00988 double phiMuHighEdge = m_l1MuTriggerScales->getPhiScale()->getHighEdge(
00989 phiMuInd);
00990
00991
00992 double phiMuLowEdgeSmallShiftRight = phiMuLowEdge + (phiMuHighEdge
00993 - phiMuLowEdge) / 100.;
00994
00995
00996
00997 unsigned int nrBins = m_nrBinsPhiJetEg;
00998
00999 for (unsigned int iBin = nrBins;; --iBin) {
01000
01001 double phiLowEdge = m_l1CaloGeometry->emJetPhiBinLowEdge(iBin);
01002 double phiHighEdge = m_l1CaloGeometry->emJetPhiBinHighEdge(iBin);
01003
01004 if (phiMuLowEdgeSmallShiftRight >= phiLowEdge) {
01005 m_lutPhiMuToJetEg[phiMuInd] = iBin % nrBins;
01006
01007 LogTrace("L1GlobalTrigger") << " phiMuIndex \t" << phiMuInd
01008 << " [ " << phiMuLowEdge << " \t, "
01009 << phiMuHighEdge << "] \t==>\t phiMuJetEG \t"
01010 << m_lutPhiMuToJetEg[phiMuInd] << " [ "
01011 << phiLowEdge << "\t, " << phiHighEdge << " ]"
01012 << std::endl;
01013
01014 break;
01015 }
01016 }
01017
01018
01019
01020 nrBins = m_nrBinsPhiEtm;
01021
01022 for (unsigned int iBin = nrBins;; --iBin) {
01023
01024 double phiLowEdge = m_l1CaloGeometry->etSumPhiBinLowEdge(iBin);
01025 double phiHighEdge = m_l1CaloGeometry->etSumPhiBinHighEdge(iBin);
01026
01027 if (phiMuLowEdgeSmallShiftRight >= phiLowEdge) {
01028 m_lutPhiMuToEtm[phiMuInd] = iBin % nrBins;
01029
01030 LogTrace("L1GlobalTrigger") << " phiMuIndex \t" << phiMuInd
01031 << " [ " << phiMuLowEdge << " \t, "
01032 << phiMuHighEdge << "] \t==>\t phiMuToEtm \t"
01033 << m_lutPhiMuToEtm[phiMuInd] << " [ " << phiLowEdge
01034 << "\t, " << phiHighEdge << " ]" << std::endl;
01035
01036 break;
01037 }
01038 }
01039
01040
01041
01042 nrBins = m_nrBinsPhiHtm;
01043
01044 for (unsigned int iBin = nrBins;; --iBin) {
01045
01046 double phiLowEdge = m_l1CaloGeometry->htSumPhiBinLowEdge(iBin);
01047 double phiHighEdge = m_l1CaloGeometry->htSumPhiBinHighEdge(iBin);
01048
01049 if (phiMuLowEdgeSmallShiftRight >= phiLowEdge) {
01050 m_lutPhiMuToHtm[phiMuInd] = iBin % nrBins;
01051
01052 LogTrace("L1GlobalTrigger") << " phiMuIndex \t" << phiMuInd
01053 << " [ " << phiMuLowEdge << " \t, "
01054 << phiMuHighEdge << "] \t==>\t phiMuToHtm \t"
01055 << m_lutPhiMuToHtm[phiMuInd] << " [ " << phiLowEdge
01056 << "\t, " << phiHighEdge << " ]" << std::endl;
01057
01058 break;
01059 }
01060 }
01061
01062 LogTrace("L1GlobalTrigger") << std::endl;
01063
01064 }
01065
01066 if (m_verbosity && m_isDebugEnabled) {
01067 LogTrace("L1GlobalTrigger") << "Mu phi conversions" << std::endl;
01068 for (unsigned int iBin = 0; iBin < m_nrBinsPhiMu; ++iBin) {
01069 LogTrace("L1GlobalTrigger") << " Mu phiIndex \t" << iBin
01070 << "\t converted to index:"
01071 << "\t Jet-EG \t" << m_lutPhiMuToJetEg.at(iBin)
01072 << "\t ETM \t" << m_lutPhiMuToEtm.at(iBin)
01073 << "\t HTM \t" << m_lutPhiMuToHtm.at(iBin)
01074 << std::endl;
01075
01076 }
01077 LogTrace("L1GlobalTrigger") << std::endl;
01078 }
01079
01080
01081
01082
01083
01084 m_lutPhiEtmToJetEg.clear();
01085 m_lutPhiEtmToJetEg.resize(m_nrBinsPhiEtm, badIndex);
01086
01087 m_lutPhiEtmToHtm.clear();
01088 m_lutPhiEtmToHtm.resize(m_nrBinsPhiEtm, badIndex);
01089
01090
01091 for (unsigned int phiEtmInd = 0; phiEtmInd < m_nrBinsPhiEtm; ++phiEtmInd) {
01092
01093 double phiEtmLowEdge = m_l1CaloGeometry->etSumPhiBinLowEdge(phiEtmInd);
01094 double phiEtmHighEdge = m_l1CaloGeometry->etSumPhiBinHighEdge(phiEtmInd);
01095
01096
01097 double phiEtmLowEdgeSmallShiftRight = phiEtmLowEdge + (phiEtmHighEdge
01098 - phiEtmLowEdge) / 100.;
01099
01100
01101
01102 unsigned int nrBins = m_nrBinsPhiJetEg;
01103
01104 for (unsigned int iBin = nrBins;; --iBin) {
01105
01106 double phiLowEdge = m_l1CaloGeometry->emJetPhiBinLowEdge(iBin);
01107 double phiHighEdge = m_l1CaloGeometry->emJetPhiBinHighEdge(iBin);
01108
01109 if (phiEtmLowEdgeSmallShiftRight >= phiLowEdge) {
01110 m_lutPhiEtmToJetEg[phiEtmInd] = iBin % nrBins;
01111
01112 LogTrace("L1GlobalTrigger") << " phiEtmIndex \t" << phiEtmInd
01113 << " [ " << phiEtmLowEdge << " \t, "
01114 << phiEtmHighEdge << "] \t==>\t phiEtmJetEG \t"
01115 << m_lutPhiEtmToJetEg[phiEtmInd] << " [ "
01116 << phiLowEdge << "\t, " << phiHighEdge << " ]"
01117 << std::endl;
01118
01119 break;
01120 }
01121 }
01122
01123
01124
01125 nrBins = m_nrBinsPhiHtm;
01126
01127 for (unsigned int iBin = nrBins;; --iBin) {
01128
01129 double phiLowEdge = m_l1CaloGeometry->htSumPhiBinLowEdge(iBin);
01130 double phiHighEdge = m_l1CaloGeometry->htSumPhiBinHighEdge(iBin);
01131
01132 if (phiEtmLowEdgeSmallShiftRight >= phiLowEdge) {
01133 m_lutPhiEtmToHtm[phiEtmInd] = iBin % nrBins;
01134
01135 LogTrace("L1GlobalTrigger") << " phiEtmIndex \t" << phiEtmInd
01136 << " [ " << phiEtmLowEdge << " \t, "
01137 << phiEtmHighEdge << "] \t==>\t phiEtmToHtm \t"
01138 << m_lutPhiEtmToHtm[phiEtmInd] << " [ " << phiLowEdge
01139 << "\t, " << phiHighEdge << " ]" << std::endl;
01140
01141 break;
01142 }
01143 }
01144
01145 LogTrace("L1GlobalTrigger") << std::endl;
01146
01147 }
01148
01149
01150
01151
01152
01153 m_lutPhiHtmToJetEg.clear();
01154 m_lutPhiHtmToJetEg.resize(m_nrBinsPhiHtm, badIndex);
01155
01156
01157 for (unsigned int phiHtmInd = 0; phiHtmInd < m_nrBinsPhiHtm; ++phiHtmInd) {
01158
01159 double phiHtmLowEdge = m_l1CaloGeometry->htSumPhiBinLowEdge(phiHtmInd);
01160 double phiHtmHighEdge = m_l1CaloGeometry->htSumPhiBinHighEdge(phiHtmInd);
01161
01162
01163 double phiHtmLowEdgeSmallShiftRight = phiHtmLowEdge + (phiHtmHighEdge
01164 - phiHtmLowEdge) / 100.;
01165
01166 unsigned int nrBins = m_nrBinsPhiJetEg;
01167
01168 for (unsigned int iBin = nrBins;; --iBin) {
01169
01170 double phiLowEdge = m_l1CaloGeometry->emJetPhiBinLowEdge(iBin);
01171 double phiHighEdge = m_l1CaloGeometry->emJetPhiBinHighEdge(iBin);
01172
01173 if (phiHtmLowEdgeSmallShiftRight >= phiLowEdge) {
01174 m_lutPhiHtmToJetEg[phiHtmInd] = iBin % nrBins;
01175
01176 LogTrace("L1GlobalTrigger") << " phiHtmIndex \t" << phiHtmInd
01177 << " [ " << phiHtmLowEdge << " \t, "
01178 << phiHtmHighEdge << "] \t==>\t phiHtmJetEG \t"
01179 << m_lutPhiHtmToJetEg[phiHtmInd] << " [ "
01180 << phiLowEdge << "\t, " << phiHighEdge << " ]"
01181 << std::endl;
01182
01183 break;
01184 }
01185 }
01186
01187 }
01188
01189
01190
01191
01192
01193
01194 m_lutPhiJetEgToJetEg.clear();
01195 m_lutPhiJetEgToJetEg.resize(m_nrBinsPhiJetEg, badIndex);
01196
01197 for (unsigned int phiInd = 0; phiInd < m_nrBinsPhiJetEg; ++phiInd) {
01198 m_lutPhiJetEgToJetEg[phiInd] = phiInd;
01199 }
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214 unsigned int nrGctCentralEtaBinsPerHalf =
01215 m_l1CaloGeometry->numberGctCentralEtaBinsPerHalf();
01216
01217 unsigned int nrGctForwardEtaBinsPerHalf =
01218 m_l1CaloGeometry->numberGctForwardEtaBinsPerHalf();
01219
01220 unsigned int nrGctTotalEtaBinsPerHalf = nrGctCentralEtaBinsPerHalf
01221 + nrGctForwardEtaBinsPerHalf;
01222
01223 m_nrBinsEtaCommon = 2*nrGctTotalEtaBinsPerHalf;
01224
01225
01226
01227
01228
01229
01230
01231 LogTrace("L1GlobalTrigger")
01232 << " \nEta conversion: CenJet/TauJet & IsoEG/NoIsoEG to a common calorimeter scale\n"
01233 << std::endl;
01234
01235 m_lutEtaCentralToCommonCalo.clear();
01236 m_lutEtaCentralToCommonCalo.resize(
01237 (nrGctCentralEtaBinsPerHalf | (1 << (ifCaloEtaNumberBits - 1))),
01238 badIndex);
01239
01240 for (unsigned int etaInd = 0; etaInd < nrGctCentralEtaBinsPerHalf; ++etaInd) {
01241
01242
01243 unsigned int globalIndex = m_l1CaloGeometry->globalEtaIndex(
01244 m_l1CaloGeometry->etaBinCenter(etaInd, true));
01245 m_lutEtaCentralToCommonCalo[etaInd] = globalIndex;
01246
01247 LogTrace("L1GlobalTrigger") << " etaIndex " << etaInd << "\t [hex: "
01248 << std::hex << etaInd << "] " << std::dec
01249 << " ==> etaIndexGlobal " << globalIndex << std::endl;
01250
01251
01252 unsigned int etaIndNeg = etaInd | (1 << (ifCaloEtaNumberBits - 1));
01253 globalIndex = m_l1CaloGeometry->globalEtaIndex(
01254 m_l1CaloGeometry->etaBinCenter(etaIndNeg, true));
01255 m_lutEtaCentralToCommonCalo[etaIndNeg] = globalIndex;
01256
01257 LogTrace("L1GlobalTrigger") << " etaIndex " << etaIndNeg
01258 << "\t [hex: " << std::hex << etaIndNeg << "] " << std::dec
01259 << " ==> etaIndexGlobal " << globalIndex << std::endl;
01260
01261 }
01262
01263
01264
01265
01266
01267
01268 LogTrace("L1GlobalTrigger")
01269 << " \nEta conversion: ForJet to a common calorimeter scale\n"
01270 << std::endl;
01271
01272 m_lutEtaForJetToCommonCalo.clear();
01273 m_lutEtaForJetToCommonCalo.resize(
01274 (nrGctForwardEtaBinsPerHalf | (1 << (ifCaloEtaNumberBits - 1))),
01275 badIndex);
01276
01277 for (unsigned int etaInd = 0; etaInd < nrGctForwardEtaBinsPerHalf; ++etaInd) {
01278
01279
01280 unsigned int globalIndex = m_l1CaloGeometry->globalEtaIndex(
01281 m_l1CaloGeometry->etaBinCenter(etaInd, false));
01282 m_lutEtaForJetToCommonCalo[etaInd] = globalIndex;
01283
01284 LogTrace("L1GlobalTrigger") << " etaIndex " << etaInd << "\t [hex: "
01285 << std::hex << etaInd << "] " << std::dec
01286 << " ==> etaIndexGlobal " << globalIndex << std::endl;
01287
01288
01289 unsigned int etaIndNeg = etaInd | (1 << (ifCaloEtaNumberBits - 1));
01290 globalIndex = m_l1CaloGeometry->globalEtaIndex(
01291 m_l1CaloGeometry->etaBinCenter(etaIndNeg, false));
01292 m_lutEtaForJetToCommonCalo[etaIndNeg] = globalIndex;
01293
01294 LogTrace("L1GlobalTrigger") << " etaIndex " << etaIndNeg << "\t [hex: "
01295 << std::hex << etaIndNeg << "] " << std::dec
01296 << " ==> etaIndexGlobal " << globalIndex << std::endl;
01297
01298 }
01299
01300
01301
01302
01303
01304
01305 LogDebug("L1GlobalTrigger")
01306 << " \nEta conversion: Mu to a common calorimeter scale\n"
01307 << std::endl;
01308
01309
01310 unsigned int nrBinsEtaMuPerHalf =
01311 m_l1MuTriggerScales->getGMTEtaScale()->getNBins();
01312 LogTrace("L1GlobalTrigger") << " \nnrBinsEtaMuPerHalf = "
01313 << nrBinsEtaMuPerHalf << "\n" << std::endl;
01314
01315 m_lutEtaMuToCommonCalo.clear();
01316 m_lutEtaMuToCommonCalo.resize(
01317 (nrBinsEtaMuPerHalf | (1 << (ifMuEtaNumberBits - 1))), badIndex);
01318
01319 for (unsigned int etaMuInd = 0; etaMuInd < nrBinsEtaMuPerHalf; ++etaMuInd) {
01320
01321 double etaMuLowEdge = m_l1MuTriggerScales->getGMTEtaScale()->getValue(
01322 etaMuInd);
01323 double etaMuHighEdge = m_l1MuTriggerScales->getGMTEtaScale()->getValue(
01324 etaMuInd + 1);
01325
01326
01327 double etaMuLowEdgeSmallShiftRight = etaMuLowEdge + (etaMuHighEdge
01328 - etaMuLowEdge) / 100.;
01329
01330
01331 for (unsigned int iBin = m_nrBinsEtaCommon;; --iBin) {
01332
01333 double etaLowEdge = m_l1CaloGeometry->globalEtaBinLowEdge(iBin);
01334
01335 double etaHighEdge = 0.0;
01336 if (iBin == m_nrBinsEtaCommon) {
01337 etaHighEdge = etaLowEdge;
01338 } else {
01339 etaHighEdge = m_l1CaloGeometry->globalEtaBinLowEdge(iBin + 1);
01340 }
01341
01342 if (etaMuLowEdgeSmallShiftRight >= etaLowEdge) {
01343 m_lutEtaMuToCommonCalo[etaMuInd] = iBin % m_nrBinsEtaCommon;
01344
01345 LogTrace("L1GlobalTrigger") << " etaMuIndex \t" << etaMuInd
01346 << "\t [ " << etaMuLowEdge << ", \t" << etaMuHighEdge
01347 << "] ==> etaMuJetEG \t"
01348 << m_lutEtaMuToCommonCalo[etaMuInd] << "\t [ "
01349 << etaLowEdge << ", \t" << etaHighEdge << " ]"
01350 << std::endl;
01351
01352 break;
01353 }
01354 }
01355
01356
01357 unsigned int etaMuIndNeg = etaMuInd | (1 << (ifMuEtaNumberBits - 1));
01358 m_lutEtaMuToCommonCalo[etaMuIndNeg] = m_lutEtaMuToCommonCalo[0]
01359 - (m_lutEtaMuToCommonCalo[etaMuInd] - m_lutEtaMuToCommonCalo[0]
01360 + 1);
01361
01362 LogTrace("L1GlobalTrigger") << " etaMuIndexNeg \t" << etaMuIndNeg
01363 << "\t [ " << (-1.0 * etaMuLowEdge) << ", \t" << (-1.0
01364 * etaMuHighEdge) << "] ==> etaMuJetEG \t"
01365 << m_lutEtaMuToCommonCalo[etaMuIndNeg] << "\t [ "
01366 << m_l1CaloGeometry->globalEtaBinLowEdge(
01367 m_lutEtaMuToCommonCalo[etaMuIndNeg]) << ", \t"
01368 << m_l1CaloGeometry->globalEtaBinLowEdge(
01369 m_lutEtaMuToCommonCalo[etaMuIndNeg] + 1) << " ]"
01370 << std::endl;
01371
01372 }
01373
01374 if (m_verbosity && m_isDebugEnabled) {
01375 LogTrace("L1GlobalTrigger") << std::endl;
01376 LogTrace("L1GlobalTrigger") << std::endl;
01377 }
01378
01379 }
01380
01381
01382 void L1GtEtaPhiConversions::print(std::ostream& myCout) const {
01383
01384
01385 myCout << "<p style=\"page-break-before: always\"> </p>";
01386
01387 myCout
01388 << "\n---++Conversion tables for phi and eta variables of the trigger objects used in correlation conditions \n"
01389 << std::endl;
01390
01391
01392
01393
01394
01395
01396
01397 myCout
01398 << "\n---+++Phi conversion for muons to jets and e-gamma common phi scale \n"
01399 << std::endl;
01400
01401 size_t lutPhiMuToJetEgSize = m_lutPhiMuToJetEg.size();
01402 myCout << "Size of look-up table = " << lutPhiMuToJetEgSize << "\n"
01403 << std::endl;
01404
01405 myCout << "| *Initial Phi Hardware Index* "
01406 << "|| *Initial Phi Range* ||"
01407 << " *Converted Phi Hardware Index* "
01408 << "|| *Converted Phi Range* ||" << "\n"
01409 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01410 << std::endl;
01411
01412 for (unsigned int indexToConv = 0; indexToConv < lutPhiMuToJetEgSize; ++indexToConv) {
01413
01414 double lowEdgeToConv = m_l1MuTriggerScales->getPhiScale()->getLowEdge(
01415 indexToConv);
01416 double highEdgeToConv =
01417 m_l1MuTriggerScales->getPhiScale()->getHighEdge(indexToConv);
01418
01419 unsigned int convIndex = m_lutPhiMuToJetEg[indexToConv];
01420
01421 double convLowEdge = 0.;
01422 double convHighEdge = 0.;
01423
01424 if (convIndex != badIndex) {
01425 convLowEdge = m_l1CaloGeometry->emJetPhiBinLowEdge(convIndex);
01426 convHighEdge = m_l1CaloGeometry->emJetPhiBinHighEdge(convIndex);
01427 } else {
01428
01429 lowEdgeToConv = 0.;
01430 highEdgeToConv = 0.;
01431 }
01432
01433 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01434 << indexToConv << " | " << std::dec << std::setw(3)
01435 << std::left << indexToConv << " |[ " << std::setw(10)
01436 << std::left << (rad2deg(lowEdgeToConv)) << ", |"
01437 << std::setw(10) << std::left << (rad2deg(highEdgeToConv))
01438 << " ) | 0x" << std::setw(6) << std::hex << std::left
01439 << convIndex << " | " << std::dec << std::setw(6) << convIndex
01440 << " |[ " << std::setw(10) << std::left << (rad2deg(
01441 convLowEdge)) << ", |" << std::setw(10) << std::left
01442 << (rad2deg(convHighEdge)) << " ) |" << std::right
01443 << std::endl;
01444
01445 }
01446
01447
01448
01449
01450 myCout << "<p style=\"page-break-before: always\"> </p>";
01451
01452 myCout << "\n---+++Phi conversion for muons to ETM phi scale \n"
01453 << std::endl;
01454
01455 size_t lutPhiMuToEtmSize = m_lutPhiMuToEtm.size();
01456 myCout << "Size of look-up table = " << lutPhiMuToEtmSize << "\n"
01457 << std::endl;
01458
01459 myCout << "| *Initial Phi Hardware Index* "
01460 << "|| *Initial Phi Range* ||"
01461 << " *Converted Phi Hardware Index* "
01462 << "|| *Converted Phi Range* ||" << "\n"
01463 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01464 << std::endl;
01465
01466 for (unsigned int indexToConv = 0; indexToConv < lutPhiMuToEtmSize; ++indexToConv) {
01467
01468 double lowEdgeToConv = m_l1MuTriggerScales->getPhiScale()->getLowEdge(
01469 indexToConv);
01470 double highEdgeToConv =
01471 m_l1MuTriggerScales->getPhiScale()->getHighEdge(indexToConv);
01472
01473 unsigned int convIndex = m_lutPhiMuToEtm[indexToConv];
01474
01475 double convLowEdge = 0.;
01476 double convHighEdge = 0.;
01477
01478 if (convIndex != badIndex) {
01479 convLowEdge = m_l1CaloGeometry->etSumPhiBinLowEdge(convIndex);
01480 convHighEdge = m_l1CaloGeometry->etSumPhiBinHighEdge(convIndex);
01481 } else {
01482
01483 lowEdgeToConv = 0.;
01484 highEdgeToConv = 0.;
01485 }
01486
01487 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01488 << indexToConv << " | " << std::dec << std::setw(3)
01489 << std::left << indexToConv << " |[ " << std::setw(10)
01490 << std::left << (rad2deg(lowEdgeToConv)) << ", |"
01491 << std::setw(10) << std::left << (rad2deg(highEdgeToConv))
01492 << " ) | 0x" << std::setw(6) << std::hex << std::left
01493 << convIndex << " | " << std::dec << std::setw(6) << convIndex
01494 << " |[ " << std::setw(10) << std::left << (rad2deg(
01495 convLowEdge)) << ", |" << std::setw(10) << std::left
01496 << (rad2deg(convHighEdge)) << " ) |" << std::right
01497 << std::endl;
01498
01499 }
01500
01501
01502
01503
01504 myCout << "<p style=\"page-break-before: always\"> </p>";
01505
01506 myCout << "\n---+++Phi conversion for muons to HTM phi scale \n"
01507 << std::endl;
01508
01509 size_t lutPhiMuToHtmSize = m_lutPhiMuToHtm.size();
01510 myCout << "Size of look-up table = " << lutPhiMuToHtmSize << "\n"
01511 << std::endl;
01512
01513 myCout << "| *Initial Phi Hardware Index* "
01514 << "|| *Initial Phi Range* ||"
01515 << " *Converted Phi Hardware Index* "
01516 << "|| *Converted Phi Range* ||" << "\n"
01517 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01518 << std::endl;
01519
01520 for (unsigned int indexToConv = 0; indexToConv < lutPhiMuToHtmSize; ++indexToConv) {
01521
01522 double lowEdgeToConv = m_l1MuTriggerScales->getPhiScale()->getLowEdge(
01523 indexToConv);
01524 double highEdgeToConv =
01525 m_l1MuTriggerScales->getPhiScale()->getHighEdge(indexToConv);
01526
01527 unsigned int convIndex = m_lutPhiMuToHtm[indexToConv];
01528
01529 double convLowEdge = 0.;
01530 double convHighEdge = 0.;
01531
01532 if (convIndex != badIndex) {
01533 convLowEdge = m_l1CaloGeometry->htSumPhiBinLowEdge(convIndex);
01534 convHighEdge = m_l1CaloGeometry->htSumPhiBinHighEdge(convIndex);
01535 } else {
01536
01537 lowEdgeToConv = 0.;
01538 highEdgeToConv = 0.;
01539 }
01540
01541 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01542 << indexToConv << " | " << std::dec << std::setw(3)
01543 << std::left << indexToConv << " |[ " << std::setw(10)
01544 << std::left << (rad2deg(lowEdgeToConv)) << ", |"
01545 << std::setw(10) << std::left << (rad2deg(highEdgeToConv))
01546 << " ) | 0x" << std::setw(6) << std::hex << std::left
01547 << convIndex << " | " << std::dec << std::setw(6) << convIndex
01548 << " |[ " << std::setw(10) << std::left << (rad2deg(
01549 convLowEdge)) << ", |" << std::setw(10) << std::left
01550 << (rad2deg(convHighEdge)) << " ) |" << std::right
01551 << std::endl;
01552
01553 }
01554
01555
01556
01557
01558 myCout << "<p style=\"page-break-before: always\"> </p>";
01559
01560 myCout
01561 << "\n---+++Phi conversion for ETM to jets and e-gamma scale common phi scale \n"
01562 << std::endl;
01563
01564 size_t lutPhiEtmToJetEgSize = m_lutPhiEtmToJetEg.size();
01565 myCout << "Size of look-up table = " << lutPhiEtmToJetEgSize << "\n"
01566 << std::endl;
01567
01568 myCout << "| *Initial Phi Hardware Index* "
01569 << "|| *Initial Phi Range* ||"
01570 << " *Converted Phi Hardware Index* "
01571 << "|| *Converted Phi Range* ||" << "\n"
01572 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01573 << std::endl;
01574
01575 for (unsigned int indexToConv = 0; indexToConv < lutPhiEtmToJetEgSize; ++indexToConv) {
01576
01577 double lowEdgeToConv =
01578 m_l1CaloGeometry->etSumPhiBinLowEdge(indexToConv);
01579 double highEdgeToConv = m_l1CaloGeometry->etSumPhiBinHighEdge(
01580 indexToConv);
01581
01582 unsigned int convIndex = m_lutPhiEtmToJetEg[indexToConv];
01583
01584 double convLowEdge = 0.;
01585 double convHighEdge = 0.;
01586
01587 if (convIndex != badIndex) {
01588 convLowEdge = m_l1CaloGeometry->emJetPhiBinLowEdge(convIndex);
01589 convHighEdge = m_l1CaloGeometry->emJetPhiBinHighEdge(convIndex);
01590 } else {
01591
01592 lowEdgeToConv = 0.;
01593 highEdgeToConv = 0.;
01594 }
01595
01596 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01597 << indexToConv << " | " << std::dec << std::setw(3)
01598 << std::left << indexToConv << " |[ " << std::setw(10)
01599 << std::left << (rad2deg(lowEdgeToConv)) << ", |"
01600 << std::setw(10) << std::left << (rad2deg(highEdgeToConv))
01601 << " ) | 0x" << std::setw(6) << std::hex << std::left
01602 << convIndex << " | " << std::dec << std::setw(6) << convIndex
01603 << " |[ " << std::setw(10) << std::left << (rad2deg(
01604 convLowEdge)) << ", |" << std::setw(10) << std::left
01605 << (rad2deg(convHighEdge)) << " ) |" << std::right
01606 << std::endl;
01607
01608 }
01609
01610
01611
01612
01613 myCout << "<p style=\"page-break-before: always\"> </p>";
01614
01615 myCout << "\n---+++Phi conversion for ETM to HTM phi scale \n" << std::endl;
01616
01617 size_t lutPhiEtmToHtmSize = m_lutPhiEtmToHtm.size();
01618 myCout << "Size of look-up table = " << lutPhiEtmToHtmSize << "\n"
01619 << std::endl;
01620
01621 myCout << "| *Initial Phi Hardware Index* "
01622 << "|| *Initial Phi Range* ||"
01623 << " *Converted Phi Hardware Index* "
01624 << "|| *Converted Phi Range* ||" << "\n"
01625 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01626 << std::endl;
01627
01628 for (unsigned int indexToConv = 0; indexToConv < lutPhiEtmToHtmSize; ++indexToConv) {
01629
01630 double lowEdgeToConv =
01631 m_l1CaloGeometry->etSumPhiBinLowEdge(indexToConv);
01632 double highEdgeToConv = m_l1CaloGeometry->etSumPhiBinHighEdge(
01633 indexToConv);
01634
01635 unsigned int convIndex = m_lutPhiEtmToHtm[indexToConv];
01636
01637 double convLowEdge = 0.;
01638 double convHighEdge = 0.;
01639
01640 if (convIndex != badIndex) {
01641 convLowEdge = m_l1CaloGeometry->htSumPhiBinLowEdge(convIndex);
01642 convHighEdge = m_l1CaloGeometry->htSumPhiBinHighEdge(convIndex);
01643 } else {
01644
01645 lowEdgeToConv = 0.;
01646 highEdgeToConv = 0.;
01647 }
01648
01649 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01650 << indexToConv << " | " << std::dec << std::setw(3)
01651 << std::left << indexToConv << " |[ " << std::setw(10)
01652 << std::left << (rad2deg(lowEdgeToConv)) << ", |"
01653 << std::setw(10) << std::left << (rad2deg(highEdgeToConv))
01654 << " ) | 0x" << std::setw(6) << std::hex << std::left
01655 << convIndex << " | " << std::dec << std::setw(6) << convIndex
01656 << " |[ " << std::setw(10) << std::left << (rad2deg(
01657 convLowEdge)) << ", |" << std::setw(10) << std::left
01658 << (rad2deg(convHighEdge)) << " ) |" << std::right
01659 << std::endl;
01660
01661 }
01662
01663
01664
01665
01666
01667 myCout << "<p style=\"page-break-before: always\"> </p>";
01668
01669 myCout
01670 << "\n---+++Phi conversion for HTM to jets and e-gamma scale common phi scale \n"
01671 << std::endl;
01672
01673 size_t lutPhiHtmToJetEgSize = m_lutPhiHtmToJetEg.size();
01674 myCout << "Size of look-up table = " << lutPhiHtmToJetEgSize << "\n"
01675 << std::endl;
01676
01677 myCout << "| *Initial Phi Hardware Index* "
01678 << "|| *Initial Phi Range* ||"
01679 << " *Converted Phi Hardware Index* "
01680 << "|| *Converted Phi Range* ||" << "\n"
01681 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01682 << std::endl;
01683
01684 for (unsigned int indexToConv = 0; indexToConv < lutPhiHtmToJetEgSize; ++indexToConv) {
01685
01686 double lowEdgeToConv =
01687 m_l1CaloGeometry->htSumPhiBinLowEdge(indexToConv);
01688 double highEdgeToConv = m_l1CaloGeometry->htSumPhiBinHighEdge(
01689 indexToConv);
01690
01691 unsigned int convIndex = m_lutPhiHtmToJetEg[indexToConv];
01692
01693 double convLowEdge = 0.;
01694 double convHighEdge = 0.;
01695
01696 if (convIndex != badIndex) {
01697 convLowEdge = m_l1CaloGeometry->emJetPhiBinLowEdge(convIndex);
01698 convHighEdge = m_l1CaloGeometry->emJetPhiBinHighEdge(convIndex);
01699 } else {
01700
01701 lowEdgeToConv = 0.;
01702 highEdgeToConv = 0.;
01703 }
01704
01705 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01706 << indexToConv << " | " << std::dec << std::setw(3)
01707 << std::left << indexToConv << " |[ " << std::setw(10)
01708 << std::left << (rad2deg(lowEdgeToConv)) << ", |"
01709 << std::setw(10) << std::left << (rad2deg(highEdgeToConv))
01710 << " ) | 0x" << std::setw(6) << std::hex << std::left
01711 << convIndex << " | " << std::dec << std::setw(6) << convIndex
01712 << " |[ " << std::setw(10) << std::left << (rad2deg(
01713 convLowEdge)) << ", |" << std::setw(10) << std::left
01714 << (rad2deg(convHighEdge)) << " ) |" << std::right
01715 << std::endl;
01716
01717 }
01718
01719
01720
01721
01722
01723
01724
01725
01726
01727
01728 myCout << "<p style=\"page-break-before: always\"> </p>";
01729
01730 myCout
01731 << "\n---+++Eta conversion for central and tau jets and e-gamma objects to a common central and forward calorimeter eta scale \n"
01732 << std::endl;
01733
01734 size_t lutEtaCentralToCommonCaloSize = m_lutEtaCentralToCommonCalo.size();
01735 myCout << "Size of look-up table = " << lutEtaCentralToCommonCaloSize
01736 << "\n" << std::endl;
01737
01738 myCout << "| *Initial Eta Hardware Index* "
01739 << "|| *Initial Eta Range* ||"
01740 << " *Converted Eta Hardware Index* "
01741 << "|| *Converted Eta Range* ||" << "\n"
01742 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01743 << std::endl;
01744
01745 for (unsigned int indexToConv = 0; indexToConv
01746 < lutEtaCentralToCommonCaloSize; ++indexToConv) {
01747
01748 double lowEdgeToConv = m_l1CaloGeometry->globalEtaBinLowEdge(
01749 m_l1CaloGeometry->globalEtaIndex(
01750 m_l1CaloGeometry->etaBinCenter(indexToConv, true)));
01751 double highEdgeToConv = m_l1CaloGeometry->globalEtaBinLowEdge(
01752 m_l1CaloGeometry->globalEtaIndex(
01753 m_l1CaloGeometry->etaBinCenter(indexToConv, true)) + 1);
01754
01755 unsigned int convIndex = m_lutEtaCentralToCommonCalo[indexToConv];
01756
01757 double convLowEdge = 0.;
01758 double convHighEdge = 0.;
01759
01760 if (convIndex != badIndex) {
01761 convLowEdge = m_l1CaloGeometry->globalEtaBinLowEdge(convIndex);
01762 convHighEdge = m_l1CaloGeometry->globalEtaBinLowEdge(convIndex + 1);
01763 } else {
01764
01765 lowEdgeToConv = 0.;
01766 highEdgeToConv = 0.;
01767 }
01768
01769 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01770 << indexToConv << " | " << std::dec << std::setw(3)
01771 << std::left << indexToConv << " |[ " << std::setw(10)
01772 << std::left << lowEdgeToConv << ", |" << std::setw(10)
01773 << std::left << highEdgeToConv << " ) | 0x" << std::setw(6)
01774 << std::hex << std::left << convIndex << " | " << std::dec
01775 << std::setw(6) << convIndex << " |[ " << std::setw(10)
01776 << std::left << convLowEdge << ", |" << std::setw(10)
01777 << std::left << convHighEdge << " ) |" << std::right
01778 << std::endl;
01779 }
01780
01781
01782
01783
01784
01785 myCout << "<p style=\"page-break-before: always\"> </p>";
01786
01787 myCout
01788 << "\n---+++Eta conversion for forward jets to a common central and forward calorimeter eta scale \n"
01789 << std::endl;
01790
01791 size_t lutEtaForJetToCommonCaloSize = m_lutEtaForJetToCommonCalo.size();
01792 myCout << "Size of look-up table = " << lutEtaForJetToCommonCaloSize
01793 << "\n" << std::endl;
01794
01795 myCout << "| *Initial Eta Hardware Index* "
01796 << "|| *Initial Eta Range* ||"
01797 << " *Converted Eta Hardware Index* "
01798 << "|| *Converted Eta Range* ||" << "\n"
01799 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01800 << std::endl;
01801
01802 for (unsigned int indexToConv = 0; indexToConv
01803 < lutEtaForJetToCommonCaloSize; ++indexToConv) {
01804
01805 double lowEdgeToConv = m_l1CaloGeometry->globalEtaBinLowEdge(
01806 m_l1CaloGeometry->globalEtaIndex(
01807 m_l1CaloGeometry->etaBinCenter(indexToConv, false)));
01808 double highEdgeToConv =
01809 m_l1CaloGeometry->globalEtaBinLowEdge(
01810 m_l1CaloGeometry->globalEtaIndex(
01811 m_l1CaloGeometry->etaBinCenter(indexToConv,
01812 false)) + 1);
01813
01814 unsigned int convIndex = m_lutEtaForJetToCommonCalo[indexToConv];
01815
01816 double convLowEdge = 0.;
01817 double convHighEdge = 0.;
01818
01819 if (convIndex != badIndex) {
01820 convLowEdge = m_l1CaloGeometry->globalEtaBinLowEdge(convIndex);
01821 convHighEdge = m_l1CaloGeometry->globalEtaBinLowEdge(convIndex + 1);
01822 } else {
01823
01824 lowEdgeToConv = 0.;
01825 highEdgeToConv = 0.;
01826 }
01827
01828 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01829 << indexToConv << " | " << std::dec << std::setw(3)
01830 << std::left << indexToConv << " |[ " << std::setw(10)
01831 << std::left << lowEdgeToConv << ", |" << std::setw(10)
01832 << std::left << highEdgeToConv << " ) | 0x" << std::setw(6)
01833 << std::hex << std::left << convIndex << " | " << std::dec
01834 << std::setw(6) << convIndex << " |[ " << std::setw(10)
01835 << std::left << convLowEdge << ", |" << std::setw(10)
01836 << std::left << convHighEdge << " ) |" << std::right
01837 << std::endl;
01838 }
01839
01840
01841
01842
01843 myCout << "<p style=\"page-break-before: always\"> </p>";
01844
01845 myCout
01846 << "\n---+++Eta conversion for muons to a common central and forward calorimeter eta scale \n"
01847 << std::endl;
01848
01849 size_t lutEtaMuToCommonCaloSize = m_lutEtaMuToCommonCalo.size();
01850 myCout << "Size of look-up table = " << lutEtaMuToCommonCaloSize << "\n"
01851 << std::endl;
01852
01853 unsigned int nrBinsEtaMuPerHalf =
01854 m_l1MuTriggerScales->getGMTEtaScale()->getNBins();
01855
01856 myCout << "| *Initial Eta Hardware Index* "
01857 << "|| *Initial Eta Range* ||"
01858 << " *Converted Eta Hardware Index* "
01859 << "|| *Converted Eta Range* ||" << "\n"
01860 << "| *hex* | *dec* | ^|^| *hex* | *dec* |^|^|"
01861 << std::endl;
01862
01863 for (unsigned int indexToConv = 0; indexToConv < lutEtaMuToCommonCaloSize; ++indexToConv) {
01864
01865
01866 unsigned int iBinOffset = 0;
01867 double etaSign = 1.;
01868
01869 if (indexToConv > nrBinsEtaMuPerHalf) {
01870 iBinOffset = nrBinsEtaMuPerHalf + 1;
01871 etaSign = -1.;
01872 }
01873
01874 double lowEdgeToConv = etaSign
01875 * m_l1MuTriggerScales->getGMTEtaScale()->getValue(
01876 indexToConv - iBinOffset);
01877 double highEdgeToConv = etaSign
01878 * m_l1MuTriggerScales->getGMTEtaScale()->getValue(
01879 indexToConv + 1 - iBinOffset);
01880
01881 unsigned int convIndex = m_lutEtaMuToCommonCalo[indexToConv];
01882
01883 double convLowEdge = 0.;
01884 double convHighEdge = 0.;
01885
01886 if (convIndex != badIndex) {
01887 convLowEdge = m_l1CaloGeometry->globalEtaBinLowEdge(convIndex);
01888 convHighEdge = m_l1CaloGeometry->globalEtaBinLowEdge(convIndex + 1);
01889 } else {
01890
01891 lowEdgeToConv = 0.;
01892 highEdgeToConv = 0.;
01893 }
01894
01895 myCout << "| 0x" << std::setw(3) << std::hex << std::left
01896 << indexToConv << " | " << std::dec << std::setw(3)
01897 << std::left << indexToConv << " |[ " << std::setw(10)
01898 << std::left << lowEdgeToConv << ", |" << std::setw(10)
01899 << std::left << highEdgeToConv << " ) | 0x" << std::setw(6)
01900 << std::hex << std::left << convIndex << " | " << std::dec
01901 << std::setw(6) << convIndex << " |[ " << std::setw(10)
01902 << std::left << convLowEdge << ", |" << std::setw(10)
01903 << std::left << convHighEdge << " ) |" << std::right
01904 << std::endl;
01905 }
01906
01907 }
01908
01909
01910 const double L1GtEtaPhiConversions::rad2deg(const double& phiRad) const {
01911
01912 if (phiRad < 0.) {
01913 return (phiRad * PiConversion) + 360.;
01914 } else {
01915 return (phiRad * PiConversion);
01916 }
01917 }
01918
01919
01920
01921 const unsigned int L1GtEtaPhiConversions::badIndex = 999999;
01922 const double L1GtEtaPhiConversions::PiConversion = 180. / acos(-1.);
01923