Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "TString.h"
00012
00013 #include "FWCore/Framework/interface/EDAnalyzer.h"
00014 #include "FWCore/Framework/interface/ESHandle.h"
00015 #include "FWCore/Framework/interface/Event.h"
00016
00017
00018 #include "HLTrigger/HLTanalyzers/test/RateEff/L1GtLogicParser.h"
00019
00020
00021 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
00022 #include "CondFormats/L1TObjects/interface/L1GtTriggerMenuFwd.h"
00023 #include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
00024
00025
00026 #include "CondFormats/L1TObjects/interface/L1GtPrescaleFactors.h"
00027 #include "CondFormats/DataRecord/interface/L1GtPrescaleFactorsAlgoTrigRcd.h"
00028
00029
00030 #include "CondFormats/L1TObjects/interface/L1GtTriggerMask.h"
00031 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskAlgoTrigRcd.h"
00032
00033
00034
00035 #include "DQM/L1TMonitor/interface/L1TMenuHelper.h"
00036
00037 using namespace edm;
00038 using namespace std;
00039
00040
00041
00042
00043 L1TMenuHelper::L1TMenuHelper(const edm::EventSetup& iSetup){
00044
00045 iSetup.get<L1GtTriggerMenuRcd>() .get(menuRcd);
00046 iSetup.get<L1GtPrescaleFactorsAlgoTrigRcd>().get(l1GtPfAlgo);
00047
00048 const L1GtPrescaleFactors* m_l1GtPfAlgo = l1GtPfAlgo.product();
00049
00050 m_l1GtMenu = menuRcd .product();
00051 m_prescaleFactorsAlgoTrig = &(m_l1GtPfAlgo->gtPrescaleFactors());
00052
00053 myUtils.retrieveL1EventSetup(iSetup);
00054
00055 }
00056
00057
00058
00059
00060
00061 L1TMenuHelper::~L1TMenuHelper(){}
00062
00063
00064
00065
00066
00067 map<string,string> L1TMenuHelper::getLUSOTrigger(map<string,bool> iCategories, int IndexRefPrescaleFactors){
00068
00069 map<string,string> out;
00070
00071
00072 const AlgorithmMap *theAlgoMap = &m_l1GtMenu->gtAlgorithmAliasMap();
00073 const vector< vector<L1GtMuonTemplate> > *vMuonConditions = &m_l1GtMenu->vecMuonTemplate();
00074 const vector< vector<L1GtCaloTemplate> > *vCaloConditions = &m_l1GtMenu->vecCaloTemplate();
00075 const vector< vector<L1GtEnergySumTemplate> > *vEnergySumConditions = &m_l1GtMenu->vecEnergySumTemplate();
00076
00077
00078 const vector<int>& refPrescaleFactors = (*m_prescaleFactorsAlgoTrig).at(IndexRefPrescaleFactors);
00079
00080 AlgorithmMap MyAlgos;
00081
00082 map<string,SingleObjectCondition> myConditions;
00083
00084 for(unsigned int a=0 ; a<vMuonConditions->size() ; a++){
00085 for(unsigned int b=0 ; b<(*vMuonConditions)[a].size() ; b++){
00086
00087 const L1GtMuonTemplate* MuonCondition = &(*vMuonConditions)[a][b];
00088
00089
00090 if(MuonCondition->condType() == Type1s && MuonCondition->nrObjects() == 1){
00091
00092 SingleObjectCondition tCondition;
00093
00094 tCondition.name = MuonCondition->condName();
00095 tCondition.conditionCategory = MuonCondition->condCategory();
00096 tCondition.conditionType = MuonCondition->condType();
00097 tCondition.object = MuonCondition->objectType()[0];
00098 tCondition.threshold = (*MuonCondition->objectParameter())[0].ptHighThreshold;
00099 tCondition.quality = (*MuonCondition->objectParameter())[0].qualityRange;
00100 tCondition.etaRange = (*MuonCondition->objectParameter())[0].etaRange;
00101
00102 myConditions[MuonCondition->condName()] = tCondition;
00103
00104 }
00105 }
00106 }
00107
00108 for(unsigned int a=0 ; a<vCaloConditions->size() ; a++){
00109 for(unsigned int b=0 ; b<(*vCaloConditions)[a].size() ; b++){
00110
00111 const L1GtCaloTemplate* CaloCondition = &(*vCaloConditions)[a][b];
00112
00113 if(CaloCondition->condType() == Type1s && CaloCondition->nrObjects() == 1){
00114
00115 SingleObjectCondition tCondition;
00116
00117 tCondition.name = CaloCondition->condName();
00118 tCondition.conditionCategory = CaloCondition->condCategory();
00119 tCondition.conditionType = CaloCondition->condType();
00120 tCondition.object = CaloCondition->objectType()[0];
00121 tCondition.threshold = (*CaloCondition->objectParameter())[0].etThreshold;
00122 tCondition.quality = 0;
00123 tCondition.etaRange = (*CaloCondition->objectParameter())[0].etaRange;
00124
00125 myConditions[CaloCondition->condName()] = tCondition;
00126
00127 }
00128 }
00129 }
00130
00131 for(unsigned int a=0 ; a<vEnergySumConditions->size() ; a++){
00132 for(unsigned int b=0 ; b<(*vEnergySumConditions)[a].size() ; b++){
00133
00134 const L1GtEnergySumTemplate* EnergySumCondition = &(*vEnergySumConditions)[a][b];
00135
00136 if((EnergySumCondition->condType() == TypeETT ||
00137 EnergySumCondition->condType() == TypeETM ||
00138 EnergySumCondition->condType() == TypeHTT ||
00139 EnergySumCondition->condType() == TypeHTM
00140 ) && EnergySumCondition->nrObjects() == 1){
00141
00142 SingleObjectCondition tCondition;
00143
00144 tCondition.name = EnergySumCondition->condName();
00145 tCondition.conditionCategory = EnergySumCondition->condCategory();
00146 tCondition.conditionType = EnergySumCondition->condType();
00147 tCondition.object = EnergySumCondition->objectType()[0];
00148 tCondition.threshold = (*EnergySumCondition->objectParameter())[0].etThreshold;
00149 tCondition.quality = 0;
00150 tCondition.etaRange = 0;
00151
00152 myConditions[EnergySumCondition->condName()] = tCondition;
00153
00154 }
00155 }
00156 }
00157
00158 for (CItAlgo iAlgo = theAlgoMap->begin(); iAlgo!=theAlgoMap->end(); ++iAlgo){
00159
00160 int error;
00161
00162 bool algoIsValid = true;
00163 unsigned int maxThreshold = 0;
00164 int tAlgoMask = myUtils.triggerMask(iAlgo->first,error);
00165 L1GtObject tObject = Mu;
00166 unsigned int tQuality = 0;
00167 unsigned int tEtaRange = 0;
00168
00169
00170 bool isMu = false;
00171 bool isNoIsoEG = false;
00172 bool isIsoEG = false;
00173 bool isCenJet = false;
00174 bool isForJet = false;
00175 bool isTauJet = false;
00176 bool isETM = false;
00177 bool isETT = false;
00178 bool isHTT = false;
00179 bool isHTM = false;
00180
00181
00182 if(tAlgoMask != 0){
00183 algoIsValid = false;
00184 }
00185 else{
00186
00187 const L1GtAlgorithm *pAlgo = &(iAlgo->second);
00188
00189 for(unsigned int i=0; i<pAlgo->algoRpnVector().size() ; i++){
00190
00191
00192
00193 if(pAlgo->algoRpnVector()[i].operation == L1GtLogicParser::OP_AND){
00194 algoIsValid = false;
00195 break;
00196 }
00197 else if(pAlgo->algoRpnVector()[i].operation == L1GtLogicParser::OP_OPERAND){
00198
00199 string AlgoCondition = pAlgo->algoRpnVector()[i].operand;
00200 map<string,SingleObjectCondition>::const_iterator ciCond = myConditions.find(AlgoCondition);
00201
00202
00203
00204 if(ciCond == myConditions.end()){
00205 algoIsValid = false;
00206 break;
00207 }
00208
00209 else{
00210
00211
00212 if(maxThreshold < (*ciCond).second.threshold){
00213 maxThreshold = (*ciCond).second.threshold;
00214 tObject = (*ciCond).second.object;
00215 tQuality = (*ciCond).second.quality;
00216 tEtaRange = (*ciCond).second.etaRange;
00217 }
00218
00219 if ((*ciCond).second.object == Mu) {isMu = true;}
00220 else if((*ciCond).second.object == NoIsoEG){isNoIsoEG = true;}
00221 else if((*ciCond).second.object == IsoEG) {isIsoEG = true;}
00222 else if((*ciCond).second.object == CenJet) {isCenJet = true;}
00223 else if((*ciCond).second.object == ForJet) {isForJet = true;}
00224 else if((*ciCond).second.object == TauJet) {isTauJet = true;}
00225 else if((*ciCond).second.object == ETM) {isETM = true;}
00226 else if((*ciCond).second.object == ETT) {isETT = true;}
00227 else if((*ciCond).second.object == HTT) {isHTT = true;}
00228 else if((*ciCond).second.object == HTM) {isHTM = true;}
00229
00230 }
00231 }
00232 }
00233 }
00234
00235 if(algoIsValid){
00236
00237 SingleObjectTrigger tTrigger;
00238 tTrigger.alias = iAlgo->first;
00239 tTrigger.bit = (iAlgo->second).algoBitNumber();
00240 tTrigger.prescale = refPrescaleFactors[tTrigger.bit];
00241 tTrigger.threshold = maxThreshold;
00242 tTrigger.object = tObject;
00243 tTrigger.quality = tQuality;
00244 tTrigger.etaRange = tEtaRange;
00245
00246
00247 int nCond = 0;
00248 if(isMu) {nCond++;}
00249 if(isNoIsoEG){nCond++;}
00250 if(isIsoEG) {nCond++;}
00251 if(isCenJet) {nCond++;}
00252 if(isForJet) {nCond++;}
00253 if(isTauJet) {nCond++;}
00254 if(isETM) {nCond++;}
00255 if(isETT) {nCond++;}
00256 if(isHTT) {nCond++;}
00257 if(isHTM) {nCond++;}
00258
00259
00260
00261 if (nCond==1 && isMu ==true){
00262
00263 m_vTrigMu .push_back(tTrigger);
00264 }
00265 else if(nCond==2 && isNoIsoEG==true && isIsoEG ==true) {m_vTrigEG .push_back(tTrigger);}
00266 else if(nCond==1 && isIsoEG ==true) {m_vTrigIsoEG .push_back(tTrigger);}
00267 else if(nCond==3 && isCenJet ==true && isForJet==true && isTauJet==true){m_vTrigJet .push_back(tTrigger);}
00268 else if(nCond==1 && isCenJet ==true) {m_vTrigCenJet.push_back(tTrigger);}
00269 else if(nCond==1 && isForJet ==true) {m_vTrigForJet.push_back(tTrigger);}
00270 else if(nCond==1 && isTauJet ==true) {m_vTrigTauJet.push_back(tTrigger);}
00271 else if(nCond==1 && isETT ==true) {m_vTrigETT .push_back(tTrigger);}
00272 else if(nCond==1 && isETM ==true) {m_vTrigETM .push_back(tTrigger);}
00273 else if(nCond==1 && isHTT ==true) {m_vTrigHTT .push_back(tTrigger);}
00274 else if(nCond==1 && isHTM ==true) {m_vTrigHTM .push_back(tTrigger);}
00275 }
00276
00277 }
00278
00279
00280
00281
00282
00283
00284
00285
00286 string selTrigMu = "Undefined";
00287 string selTrigEG = "Undefined";
00288 string selTrigIsoEG = "Undefined";
00289 string selTrigJet = "Undefined";
00290 string selTrigCenJet = "Undefined";
00291 string selTrigForJet = "Undefined";
00292 string selTrigTauJet = "Undefined";
00293 string selTrigETT = "Undefined";
00294 string selTrigETM = "Undefined";
00295 string selTrigHTT = "Undefined";
00296 string selTrigHTM = "Undefined";
00297
00298 if(m_vTrigMu .size() > 0){sort(m_vTrigMu .begin(),m_vTrigMu .end()); selTrigMu = m_vTrigMu [0].alias;}
00299 if(m_vTrigEG .size() > 0){sort(m_vTrigEG .begin(),m_vTrigEG .end()); selTrigEG = m_vTrigEG [0].alias;}
00300 if(m_vTrigIsoEG .size() > 0){sort(m_vTrigIsoEG .begin(),m_vTrigIsoEG .end()); selTrigIsoEG = m_vTrigIsoEG [0].alias;}
00301 if(m_vTrigJet .size() > 0){sort(m_vTrigJet .begin(),m_vTrigJet .end()); selTrigJet = m_vTrigJet [0].alias;}
00302 if(m_vTrigCenJet.size() > 0){sort(m_vTrigCenJet.begin(),m_vTrigCenJet.end()); selTrigCenJet = m_vTrigCenJet[0].alias;}
00303 if(m_vTrigForJet.size() > 0){sort(m_vTrigForJet.begin(),m_vTrigForJet.end()); selTrigForJet = m_vTrigForJet[0].alias;}
00304 if(m_vTrigTauJet.size() > 0){sort(m_vTrigTauJet.begin(),m_vTrigTauJet.end()); selTrigTauJet = m_vTrigTauJet[0].alias;}
00305 if(m_vTrigETT .size() > 0){sort(m_vTrigETT .begin(),m_vTrigETT .end()); selTrigETT = m_vTrigETT [0].alias;}
00306 if(m_vTrigETM .size() > 0){sort(m_vTrigETM .begin(),m_vTrigETM .end()); selTrigETM = m_vTrigETM [0].alias;}
00307 if(m_vTrigHTT .size() > 0){sort(m_vTrigHTT .begin(),m_vTrigHTT .end()); selTrigHTT = m_vTrigHTT [0].alias;}
00308 if(m_vTrigHTM .size() > 0){sort(m_vTrigHTM .begin(),m_vTrigHTM .end()); selTrigHTM = m_vTrigHTM [0].alias;}
00309
00310 if(iCategories["Mu"]) {out["Mu"] = selTrigMu;}
00311 if(iCategories["EG"]) {out["EG"] = selTrigEG;}
00312 if(iCategories["IsoEG"]) {out["IsoEG"] = selTrigIsoEG;}
00313 if(iCategories["Jet"]) {out["Jet"] = selTrigJet;}
00314 if(iCategories["CenJet"]){out["CenJet"] = selTrigCenJet;}
00315 if(iCategories["ForJet"]){out["ForJet"] = selTrigForJet;}
00316 if(iCategories["TauJet"]){out["TauJet"] = selTrigTauJet;}
00317 if(iCategories["ETT"]) {out["ETT"] = selTrigETT;}
00318 if(iCategories["ETM"]) {out["ETM"] = selTrigETM;}
00319 if(iCategories["HTT"]) {out["HTT"] = selTrigHTT;}
00320 if(iCategories["HTM"]) {out["HTM"] = selTrigHTM;}
00321
00322 return out;
00323
00324 }
00325
00326 map<string,string> L1TMenuHelper::testAlgos(map<string,string> iAlgos){
00327
00328
00329 const AlgorithmMap *theAlgoMap = &m_l1GtMenu->gtAlgorithmAliasMap();
00330
00331 for(map<string,string>::const_iterator i = iAlgos.begin() ; iAlgos.end() != i ; i++){
00332
00333 string tCategory = (*i).first;
00334 string tTrigger = (*i).second;
00335
00336 if(tTrigger == "" ){iAlgos[tCategory] = "Undefined";}
00337 else{
00338 if(theAlgoMap->find(tTrigger) == theAlgoMap->end()){iAlgos[tCategory] = "Undefined (Wrong Name)";}
00339 }
00340
00341 }
00342
00343 return iAlgos;
00344
00345 }
00346
00347
00348
00349
00350
00351 string L1TMenuHelper::enumToStringL1GtObject(L1GtObject iObject){
00352
00353 string out;
00354
00355 switch(iObject){
00356 case Mu: out = "Mu"; break;
00357 case NoIsoEG: out = "NoIsoEG"; break;
00358 case IsoEG: out = "IsoEG"; break;
00359 case CenJet: out = "CenJet"; break;
00360 case ForJet: out = "ForJet"; break;
00361 case TauJet: out = "TauJet"; break;
00362 case ETM: out = "ETM"; break;
00363 case ETT: out = "ETT"; break;
00364 case HTT: out = "HTT"; break;
00365 case HTM: out = "HTM"; break;
00366 case JetCounts: out = "JetCounts"; break;
00367 case HfBitCounts: out = "HfBitCounts"; break;
00368 case HfRingEtSums: out = "HfRingEtSums"; break;
00369 case TechTrig: out = "TechTrig"; break;
00370 case Castor: out = "Castor"; break;
00371 case BPTX: out = "BPTX"; break;
00372 case GtExternal: out = "GtExternal"; break;
00373 default: out = "Unknown"; break;
00374 };
00375
00376 return out;
00377
00378 }
00379
00380
00381
00382
00383
00384 string L1TMenuHelper::enumToStringL1GtConditionType(L1GtConditionType iConditionType){
00385
00386 string out;
00387
00388 switch(iConditionType){
00389 case TypeNull: out = "TypeNull"; break;
00390 case Type1s: out = "Type1s"; break;
00391 case Type2s: out = "Type2s"; break;
00392 case Type2wsc: out = "Type2wsc"; break;
00393 case Type2cor: out = "Type2cor"; break;
00394 case Type3s: out = "Type3s"; break;
00395 case Type4s: out = "Type4s"; break;
00396 case TypeETM: out = "TypeETM"; break;
00397 case TypeETT: out = "TypeETT"; break;
00398 case TypeHTT: out = "TypeHTT"; break;
00399 case TypeHTM: out = "TypeHTM"; break;
00400 case TypeJetCounts: out = "TypeJetCounts"; break;
00401 case TypeCastor: out = "TypeCastor"; break;
00402 case TypeHfBitCounts: out = "TypeHfBitCounts"; break;
00403 case TypeHfRingEtSums: out = "TypeHfRingEtSums"; break;
00404 case TypeBptx: out = "TypeBptx"; break;
00405 case TypeExternal: out = "TypeExternal"; break;
00406 default: out = "Unknown"; break;
00407 };
00408
00409 return out;
00410
00411 }
00412
00413
00414
00415
00416
00417 string L1TMenuHelper::enumToStringL1GtConditionCategory(L1GtConditionCategory iConditionCategory){
00418
00419 string out;
00420
00421 switch(iConditionCategory){
00422 case CondNull: out = "CondNull"; break;
00423 case CondMuon: out = "CondMuon"; break;
00424 case CondCalo: out = "CondCalo"; break;
00425 case CondEnergySum: out = "CondEnergySum"; break;
00426 case CondJetCounts: out = "CondJetCounts"; break;
00427 case CondCorrelation: out = "CondCorrelation"; break;
00428 case CondCastor: out = "CondCastor"; break;
00429 case CondHfBitCounts: out = "CondHfBitCounts"; break;
00430 case CondHfRingEtSums: out = "CondHfRingEtSums"; break;
00431 case CondBptx: out = "CondBptx"; break;
00432 case CondExternal: out = "CondExternal"; break;
00433 default: out = "Unknown"; break;
00434 };
00435
00436 return out;
00437
00438 }
00439
00440
00441 int L1TMenuHelper::getPrescaleByAlias(TString iCategory,TString iAlias){
00442
00443 int out = -1;
00444
00445 if(iCategory == "Mu"){
00446 for(unsigned int i=0 ; i<m_vTrigMu.size() ; i++){if(m_vTrigMu[i].alias==iAlias) {return m_vTrigMu[i].prescale;}}
00447 }else if(iCategory == "EG"){
00448 for(unsigned int i=0 ; i<m_vTrigEG.size() ; i++){if(m_vTrigEG[i].alias==iAlias) {return m_vTrigEG[i].prescale;}}
00449 }else if(iCategory == "IsoEG"){
00450 for(unsigned int i=0 ; i<m_vTrigIsoEG.size() ; i++){if(m_vTrigIsoEG[i].alias==iAlias) {return m_vTrigIsoEG[i].prescale;}}
00451 }else if(iCategory == "Jet"){
00452 for(unsigned int i=0 ; i<m_vTrigJet.size() ; i++){if(m_vTrigJet[i].alias==iAlias) {return m_vTrigJet[i].prescale;}}
00453 }else if(iCategory == "CenJet"){
00454 for(unsigned int i=0 ; i<m_vTrigCenJet.size() ; i++){if(m_vTrigCenJet[i].alias==iAlias){return m_vTrigCenJet[i].prescale;}}
00455 }else if(iCategory == "ForJet"){
00456 for(unsigned int i=0 ; i<m_vTrigForJet.size() ; i++){if(m_vTrigForJet[i].alias==iAlias){return m_vTrigForJet[i].prescale;}}
00457 }else if(iCategory == "TauJet"){
00458 for(unsigned int i=0 ; i<m_vTrigTauJet.size() ; i++){if(m_vTrigTauJet[i].alias==iAlias){return m_vTrigTauJet[i].prescale;}}
00459 }else if(iCategory == "ETT"){
00460 for(unsigned int i=0 ; i<m_vTrigETT.size() ; i++){if(m_vTrigETT[i].alias==iAlias) {return m_vTrigETT[i].prescale;}}
00461 }else if(iCategory == "ETM"){
00462 for(unsigned int i=0 ; i<m_vTrigETM.size() ; i++){if(m_vTrigETM[i].alias==iAlias) {return m_vTrigETM[i].prescale;}}
00463 }else if(iCategory == "HTT"){
00464 for(unsigned int i=0 ; i<m_vTrigHTT.size() ; i++){if(m_vTrigHTT[i].alias==iAlias) {return m_vTrigHTT[i].prescale;}}
00465 }else if(iCategory == "HTM"){
00466 for(unsigned int i=0 ; i<m_vTrigHTM.size() ; i++){if(m_vTrigHTM[i].alias==iAlias) {return m_vTrigHTM[i].prescale;}}
00467 }
00468
00469 return out;
00470
00471 }
00472
00473
00474 unsigned int L1TMenuHelper::getEtaRangeByAlias(TString iCategory,TString iAlias){
00475
00476 unsigned int out = -1;
00477
00478 if(iCategory == "Mu"){
00479 for(unsigned int i=0 ; i<m_vTrigMu.size() ; i++){if(m_vTrigMu[i].alias==iAlias) {return m_vTrigMu[i].etaRange;}}
00480 }else if(iCategory == "EG"){
00481 for(unsigned int i=0 ; i<m_vTrigEG.size() ; i++){if(m_vTrigEG[i].alias==iAlias) {return m_vTrigEG[i].etaRange;}}
00482 }else if(iCategory == "IsoEG"){
00483 for(unsigned int i=0 ; i<m_vTrigIsoEG.size() ; i++){if(m_vTrigIsoEG[i].alias==iAlias) {return m_vTrigIsoEG[i].etaRange;}}
00484 }else if(iCategory == "Jet"){
00485 for(unsigned int i=0 ; i<m_vTrigJet.size() ; i++){if(m_vTrigJet[i].alias==iAlias) {return m_vTrigJet[i].etaRange;}}
00486 }else if(iCategory == "CenJet"){
00487 for(unsigned int i=0 ; i<m_vTrigCenJet.size() ; i++){if(m_vTrigCenJet[i].alias==iAlias){return m_vTrigCenJet[i].etaRange;}}
00488 }else if(iCategory == "ForJet"){
00489 for(unsigned int i=0 ; i<m_vTrigForJet.size() ; i++){if(m_vTrigForJet[i].alias==iAlias){return m_vTrigForJet[i].etaRange;}}
00490 }else if(iCategory == "TauJet"){
00491 for(unsigned int i=0 ; i<m_vTrigTauJet.size() ; i++){if(m_vTrigTauJet[i].alias==iAlias){return m_vTrigTauJet[i].etaRange;}}
00492 }else if(iCategory == "ETT"){
00493 for(unsigned int i=0 ; i<m_vTrigETT.size() ; i++){if(m_vTrigETT[i].alias==iAlias) {return m_vTrigETT[i].etaRange;}}
00494 }else if(iCategory == "ETM"){
00495 for(unsigned int i=0 ; i<m_vTrigETM.size() ; i++){if(m_vTrigETM[i].alias==iAlias) {return m_vTrigETM[i].etaRange;}}
00496 }else if(iCategory == "HTT"){
00497 for(unsigned int i=0 ; i<m_vTrigHTT.size() ; i++){if(m_vTrigHTT[i].alias==iAlias) {return m_vTrigHTT[i].etaRange;}}
00498 }else if(iCategory == "HTM"){
00499 for(unsigned int i=0 ; i<m_vTrigHTM.size() ; i++){if(m_vTrigHTM[i].alias==iAlias) {return m_vTrigHTM[i].etaRange;}}
00500 }
00501
00502 return out;
00503
00504 }
00505
00506
00507 unsigned int L1TMenuHelper::getQualityAlias(TString iCategory,TString iAlias){
00508
00509 unsigned int out = -1;
00510
00511 if(iCategory == "Mu"){
00512 for(unsigned int i=0 ; i<m_vTrigMu.size() ; i++){if(m_vTrigMu[i].alias==iAlias) {return m_vTrigMu[i].quality;}}
00513 }else if(iCategory == "EG"){
00514 for(unsigned int i=0 ; i<m_vTrigEG.size() ; i++){if(m_vTrigEG[i].alias==iAlias) {return m_vTrigEG[i].quality;}}
00515 }else if(iCategory == "IsoEG"){
00516 for(unsigned int i=0 ; i<m_vTrigIsoEG.size() ; i++){if(m_vTrigIsoEG[i].alias==iAlias) {return m_vTrigIsoEG[i].quality;}}
00517 }else if(iCategory == "Jet"){
00518 for(unsigned int i=0 ; i<m_vTrigJet.size() ; i++){if(m_vTrigJet[i].alias==iAlias) {return m_vTrigJet[i].quality;}}
00519 }else if(iCategory == "CenJet"){
00520 for(unsigned int i=0 ; i<m_vTrigCenJet.size() ; i++){if(m_vTrigCenJet[i].alias==iAlias){return m_vTrigCenJet[i].quality;}}
00521 }else if(iCategory == "ForJet"){
00522 for(unsigned int i=0 ; i<m_vTrigForJet.size() ; i++){if(m_vTrigForJet[i].alias==iAlias){return m_vTrigForJet[i].quality;}}
00523 }else if(iCategory == "TauJet"){
00524 for(unsigned int i=0 ; i<m_vTrigTauJet.size() ; i++){if(m_vTrigTauJet[i].alias==iAlias){return m_vTrigTauJet[i].quality;}}
00525 }else if(iCategory == "ETT"){
00526 for(unsigned int i=0 ; i<m_vTrigETT.size() ; i++){if(m_vTrigETT[i].alias==iAlias) {return m_vTrigETT[i].quality;}}
00527 }else if(iCategory == "ETM"){
00528 for(unsigned int i=0 ; i<m_vTrigETM.size() ; i++){if(m_vTrigETM[i].alias==iAlias) {return m_vTrigETM[i].quality;}}
00529 }else if(iCategory == "HTT"){
00530 for(unsigned int i=0 ; i<m_vTrigHTT.size() ; i++){if(m_vTrigHTT[i].alias==iAlias) {return m_vTrigHTT[i].quality;}}
00531 }else if(iCategory == "HTM"){
00532 for(unsigned int i=0 ; i<m_vTrigHTM.size() ; i++){if(m_vTrigHTM[i].alias==iAlias) {return m_vTrigHTM[i].quality;}}
00533 }
00534
00535 return out;
00536
00537 }