11 using namespace trigger;
18 LogDebug(
"FourVectorHLTOffline") <<
"constructor...." ;
31 LogInfo(
"FourVectorHLTOffline") <<
"unabel to get DQMStore service?";
67 std::vector<edm::ParameterSet> paths =
68 iConfig.
getParameter<std::vector<edm::ParameterSet> >(
"paths");
70 for(std::vector<edm::ParameterSet>::iterator pathconf = paths.begin() ; pathconf != paths.end(); pathconf++) {
78 pathconf->getParameter<std::string>(
"pathname"),
79 pathconf->getParameter<std::string>(
"denompathname")
242 using namespace trigger;
244 LogDebug(
"FourVectorHLTOffline")<<
" analyze...." ;
281 if(!triggerResults.isValid()) {
283 iEvent.
getByLabel(triggerResultsLabelFU,triggerResults);
284 if(!triggerResults.isValid()) {
285 edm::LogInfo(
"FourVectorHLTOffline") <<
"TriggerResults not found, "
292 int npath = triggerResults->
size();
302 edm::LogInfo(
"FourVectorHLTOffline") <<
"TriggerEvent not found, " "skipping event";
311 if(!muonHandle.isValid())
312 edm::LogInfo(
"FourVectorHLTOffline") <<
"muonHandle not found, ";
318 edm::LogInfo(
"FourVectorHLTOffline") <<
"gsfElectrons not found, ";
323 iEvent.
getByLabel(
"caloRecoTauProducer",tauHandle);
324 if(!tauHandle.isValid())
325 edm::LogInfo(
"FourVectorHLTOffline") <<
"tauHandle not found, ";
330 iEvent.
getByLabel(
"iterativeCone5CaloJets",jetHandle);
331 if(!jetHandle.isValid())
332 edm::LogInfo(
"FourVectorHLTOffline") <<
"jetHandle not found, ";
337 iEvent.
getByLabel(
"jetProbabilityBJetTags", bTagIPHandle);
338 if (!bTagIPHandle.isValid())
339 edm::LogInfo(
"FourVectorHLTOffline") <<
"mTagIPHandle trackCountingHighEffJetTags not found, ";
343 iEvent.
getByLabel(
"softMuonBJetTags", bTagMuHandle);
344 if (!bTagMuHandle.isValid())
345 edm::LogInfo(
"FourVectorHLTOffline") <<
"bTagMuHandle not found, ";
349 if(!metHandle.isValid())
350 edm::LogInfo(
"FourVectorHLTOffline") <<
"metHandle not found, ";
355 if(!photonHandle.isValid())
356 edm::LogInfo(
"FourVectorHLTOffline") <<
"photonHandle not found, ";
361 if(!trackHandle.isValid())
362 edm::LogInfo(
"FourVectorHLTOffline") <<
"trackHandle not found, ";
447 btagIPMon.setBJetsFlag(
true);
460 btagMuMon.setBJetsFlag(
true);
501 std::vector<BaseMonitor*> monitors;
505 monitors.push_back(&muoMon);
506 monitors.push_back(&eleMon);
507 monitors.push_back(&tauMon);
508 monitors.push_back(&phoMon);
509 monitors.push_back(&jetMon);
510 monitors.push_back(&btagMon);
511 monitors.push_back(&metMon);
512 monitors.push_back(&tetMon);
536 LogTrace(
"FourVectorHLTOffline") <<
" unique path " <<
v->getPath() << endl;
538 unsigned int pathByIndex = triggerNames.triggerIndex(
v->getPath());
547 if(triggerResults->accept(pathByIndex)){
549 int pathBinNumber =
ME_HLT_BX->
getTH2F()->GetYaxis()->FindBin(
v->getPath().c_str());
562 unsigned int lastModule = triggerResults->index(pathByIndex);
565 bool hltPathPassed = triggerResults->accept(pathByIndex);
568 for(
unsigned int filt = 0; filt <
v->filtersAndIndices.size(); filt++){
570 int binNumber =
v->getFiltersHisto()->getTH1()->GetXaxis()->FindBin(
v->filtersAndIndices[filt].first.c_str());
577 v->getFiltersHisto()->Fill(binNumber-1);
579 else if(
v->filtersAndIndices[filt].second < lastModule){
580 v->getFiltersHisto()->Fill(binNumber-1);
591 LogTrace(
"FourVectorHLTOffline") <<
" path " <<
v->getPath() << endl;
593 if (
v->getPath().find(
"BTagIP") != std::string::npos ) btagMon = btagIPMon;
594 else btagMon = btagMuMon;
597 if (
v->getPath().find(
"L2Mu") != std::string::npos ||
v->getPath().find(
"L1Mu") != std::string::npos ) muoMon.setL2MuFlag(
true);
598 else muoMon.setL2MuFlag(
false);
603 unsigned int pathByIndex = triggerNames.triggerIndex(
v->getPath());
608 bool denompassed =
false;
610 for(
int i = 0;
i < npath; ++
i) {
612 if (triggerResults->accept(
i) && triggerNames.triggerName(
i).find(
v->getDenomPath()) != std::string::npos && triggerNames.triggerName(
i).find(
"HLT_Mult") == std::string::npos )
629 for(std::vector<BaseMonitor*>::iterator mit = monitors.begin(); mit!= monitors.end(); ++mit ) {
631 if((*mit)->isTriggerType(
v->getObjectType())) {
644 if(!mon) mon = &defMon;
653 triggertype =
v->getObjectType();
661 bool l1accept =
false;
663 const int l1Index =
fTriggerObj->filterIndex(l1testTag);
667 LogTrace(
"FourVectorHLTOffline") <<
"Cannot find L1GTSeed of the path " <<
v->getPath() << endl;
668 LogTrace(
"FourVectorHLTOffline") <<
"\t L1GTSeed name = " <<
v->getl1Path() << endl;
669 LogTrace(
"FourVectorHLTOffline") <<
"\t tried with tag " << l1testTag << endl;
670 LogTrace(
"FourVectorHLTOffline") <<
"\t module index = "<< l1Index << endl;
682 bool numpassed =
false;
685 for(
int i = 0;
i < npath; ++
i) {
687 if ( triggerResults->accept(
i) && triggerNames.triggerName(
i) ==
v->getPath() ) numpassed =
true;
691 if (!numpassed)
continue;
696 <<
"This should not happen. HLT passed, but L1 Seed not passed for hlt path "<< endl
697 <<
"HLT path: " <<
v->getPath() <<
"\t HLTLevel1GTSeed: " <<
v->getl1Path();
707 if (
v->getLabel() ==
"dummy"){
711 for (vector<string>::const_iterator labelIter= filterLabels.begin(); labelIter!=filterLabels.end(); labelIter++) {
718 if ( !(testindex >=
fTriggerObj->sizeFilters()) ) {
721 v->setLabel(*labelIter);}
727 const int hltIndex =
fTriggerObj->filterIndex(filterTag);
730 LogTrace(
"FourVectorHLTOffline") <<
"WTF no index "<< hltIndex <<
" of that name " << filterTag << endl;
771 LogInfo(
"FourVectorHLTOffline") <<
"analyzed " <<
nev_ <<
" events";
780 LogDebug(
"FourVectorHLTOffline") <<
"beginRun, run " << run.
id();
793 LogDebug(
"FourVectorHLTOffline") <<
"HLTConfigProvider failed to initialize.";
816 for (
unsigned int j=0;
j!=
n; ++
j) {
826 for (
unsigned int i=0;
i!=
n; ++
i) {
833 std::string filtername(
"dummy");
836 if (
plotAll_ && denomobjectType == objectType && objectType != 0) {
840 hltPaths_.push_back(
PathInfo(denompathname, pathname, l1pathname, l1ModuleIndex, filtername,
processname_, objectType, ptMin, ptMax, hltThreshold, l1Threshold));
851 for (
unsigned int i=0;
i!=
n; ++
i) {
853 std::string denompathname =
"";
861 std::string filtername(
"dummy");
876 if (objectType != -1 && pathname.find(
"FinalPath") == std::string::npos){
881 hltPaths_.push_back(
PathInfo(denompathname, pathname, l1pathname, l1ModuleIndex, filtername,
processname_, objectType, ptMin, ptMax, hltThreshold, l1Threshold));
883 hltPathsDiagonal_.push_back(
PathInfo(denompathname, pathname, l1pathname, l1ModuleIndex, filtername,
processname_, objectType, ptMin, ptMax, hltThreshold, l1Threshold));
894 std::string numpathname = custompathnamepair->first;
895 std::string denompathname = custompathnamepair->second;
897 if (numpathname != denompathname) {
900 bool founddenominator =
false;
901 for (
unsigned int k=0;
k!=
n; ++
k) {
905 if (n_pathname.find(denompathname) != std::string::npos) {
907 LogDebug(
"FourVectorHLTOffline") <<
"denompathname is selected to be = " << n_pathname << endl;;
908 founddenominator =
true;
915 if (!founddenominator) {
917 edm::LogInfo(
"FourVectorHLTOffline") <<
"denompathname not found, go to the next pair numearator-denominator" << endl;
925 for (
unsigned int j=0;
j!=
n; ++
j) {
926 bool foundnumerator =
false;
930 LogDebug(
"FourVectorHLTOffline") <<
"check if path " << pathname <<
" is numpathname = " << numpathname << endl;
933 LogDebug(
"FourVectorHLTOffline") <<
"pathname is selected to be = " << denompathname << endl;;
934 foundnumerator =
true;
939 if (!foundnumerator) {
941 edm::LogInfo(
"FourVectorHLTOffline") <<
"pathname not found, ignoring " << pathname;
951 std::string filtername(
"dummy");
965 if (objectType != 0) {
968 hltPaths_.push_back(
PathInfo(denompathname, pathname, l1pathname, l1ModuleIndex, filtername,
processname_, objectType, ptMin, ptMax, hltThreshold, l1Threshold));
981 vector<string> allPaths;
988 vector<int> tempCount(5,0);
993 allPaths.push_back(pathName);
1014 for (
unsigned int i=0;
i<datasetNames.size();
i++) {
1047 string moduleName, moduleType;
1048 unsigned int moduleIndex;
1051 vector<string>::const_iterator iDumpModName;
1052 for (iDumpModName = moduleNames.begin();iDumpModName != moduleNames.end();iDumpModName++) {
1054 moduleName = *iDumpModName;
1058 LogTrace (
"FourVectorHLTOffline") <<
"Module " << numModule
1059 <<
" is called " << moduleName
1060 <<
" , type = " << moduleType
1061 <<
" , index = " << moduleIndex
1066 if((moduleType.find(
"Filter") != string::npos && moduleType.find(
"HLTTriggerTypeFilter") == string::npos ) ||
1067 (moduleType.find(
"Associator") != string::npos) ||
1068 (moduleType.find(
"HLTLevel1GTSeed") != string::npos) ||
1069 (moduleType.find(
"HLTGlobalSumsCaloMET") != string::npos) ||
1070 (moduleType.find(
"HLTPrescaler") != string::npos) ||
1078 v->filtersAndIndices.push_back(make_pair(moduleName,moduleIndex));
1088 int nbin_sub =
v->filtersAndIndices.size()+2;
1092 "Filters_" +
v->getPath(),
1093 nbin_sub+1, -0.5, 0.5+(double)nbin_sub);
1095 for(
unsigned int filt = 0; filt <
v->filtersAndIndices.size(); filt++){
1097 filters->
setBinLabel(filt+1, (
v->filtersAndIndices[filt]).first);
1104 v->getPath() +
" count per LS",
1108 v->setFilterHistos(filters);
1122 MonitorElement *NL1OffUM, *offEtL1OffUM, *offEtavsoffPhiL1OffUM=0;
1123 MonitorElement *NOnOffUM, *offEtOnOffUM, *offEtavsoffPhiOnOffUM=0;
1127 std::string labelname(
"dummy");
1128 labelname =
v->getPath() +
"_wrt_" +
v->getDenomPath();
1129 std::string histoname(labelname+
"_NOn");
1130 std::string
title(labelname+
" N online");
1131 double histEtaMax = 2.5;
1167 TString pathfolder =
dirname_ + TString(
"/") +
v->getPath();
1170 NOn = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1173 histoname = labelname+
"_NOff";
1174 title = labelname+
" N Off";
1175 NOff = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1177 histoname = labelname+
"_NL1";
1178 title = labelname+
" N L1";
1179 NL1 = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1181 histoname = labelname+
"_NL1On";
1182 title = labelname+
" N L1On";
1183 NL1On = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1185 histoname = labelname+
"_NL1Off";
1186 title = labelname+
" N L1Off";
1187 NL1Off = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1189 histoname = labelname+
"_NOnOff";
1190 title = labelname+
" N OnOff";
1191 NOnOff = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1194 histoname = labelname+
"_NL1OnUM";
1195 title = labelname+
" N L1OnUM";
1196 NL1OnUM = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1198 histoname = labelname+
"_NL1OffUM";
1199 title = labelname+
" N L1OffUM";
1200 NL1OffUM = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1202 histoname = labelname+
"_NOnOffUM";
1203 title = labelname+
" N OnOffUM";
1204 NOnOffUM = dbe->
book1D(histoname.c_str(), title.c_str(),10, 0.5, 10.5);
1207 histoname = labelname+
"_onEtOn";
1208 title = labelname+
" onE_t online";
1209 onEtOn = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1211 histoname = labelname+
"_onOneOverEtOn";
1212 title = labelname+
" 1 / onE_t online";
1216 histoname = labelname+
"_offEtOff";
1217 title = labelname+
" offE_t offline";
1218 offEtOff = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1220 histoname = labelname+
"_l1EtL1";
1221 title = labelname+
" l1E_t L1";
1222 l1EtL1 = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1224 histoname = labelname+
"_onEtaonPhiOn";
1225 title = labelname+
" on#eta vs on#phi online";
1228 histoname = labelname+
"_offEtaoffPhiOff";
1229 title = labelname+
" off#eta vs off#phi offline";
1232 histoname = labelname+
"_l1Etal1PhiL1";
1233 title = labelname+
" l1#eta vs l1#phi L1";
1236 histoname = labelname+
"_l1EtL1On";
1237 title = labelname+
" l1E_t L1+online";
1238 l1EtL1On = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1240 histoname = labelname+
"_offEtL1Off";
1241 title = labelname+
" offE_t L1+offline";
1242 offEtL1Off = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1244 histoname = labelname+
"_offEtOnOff";
1245 title = labelname+
" offE_t online+offline";
1246 offEtOnOff = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1248 histoname = labelname+
"_l1Etal1PhiL1On";
1249 title = labelname+
" l1#eta vs l1#phi L1+online";
1252 histoname = labelname+
"_offEtaoffPhiL1Off";
1253 title = labelname+
" off#eta vs off#phi L1+offline";
1256 histoname = labelname+
"_offEtaoffPhiOnOff";
1257 title = labelname+
" off#eta vs off#phi online+offline";
1260 histoname = labelname+
"_l1EtL1OnUM";
1261 title = labelname+
" l1E_t L1+onlineUM";
1262 l1EtL1OnUM = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1264 histoname = labelname+
"_offEtL1OffUM";
1265 title = labelname+
" offE_t L1+offlineUM";
1266 offEtL1OffUM = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1268 histoname = labelname+
"_offEtOnOffUM";
1269 title = labelname+
" offE_t online+offlineUM";
1270 offEtOnOffUM = dbe->
book1D(histoname.c_str(), title.c_str(),
nBins_,
v->getPtMin(),
v->getPtMax());
1272 histoname = labelname+
"_l1Etal1PhiL1OnUM";
1273 title = labelname+
" l1#eta vs l1#phi L1+onlineUM";
1276 histoname = labelname+
"_offEtaoffPhiL1OffUM";
1277 title = labelname+
" off#eta vs off#phi L1+offlineUM";
1280 histoname = labelname+
"_offEtaoffPhiOnOffUM";
1281 title = labelname+
" off#eta vs off#phi online+offlineUM";
1287 histoname = labelname+
"_l1DRL1On";
1288 title = labelname+
" l1DR L1+online";
1291 histoname = labelname+
"_offDRL1Off";
1292 title = labelname+
" offDR L1+offline";
1295 histoname = labelname+
"_offDROnOff";
1296 title = labelname+
" offDR online+offline";
1300 v->setHistos( NOn, onEtOn, onOneOverEtOn, onEtavsonPhiOn, NOff, offEtOff, offEtavsoffPhiOff, NL1, l1EtL1, l1Etavsl1PhiL1, NL1On, l1EtL1On, l1Etavsl1PhiL1On, NL1Off, offEtL1Off, offEtavsoffPhiL1Off, NOnOff, offEtOnOff, offEtavsoffPhiOnOff, NL1OnUM, l1EtL1OnUM, l1Etavsl1PhiL1OnUM, NL1OffUM, offEtL1OffUM, offEtavsoffPhiL1OffUM, NOnOffUM, offEtOnOffUM, offEtavsoffPhiOnOffUM, offDRL1Off, offDROnOff, l1DRL1On
1310 "HLT_Any count per LS",
1326 LogDebug(
"FourVectorHLTOffline") <<
"endRun, run " << run.
id();
1334 LogDebug(
"FourVectorHLTOffline") <<
"cleanDRMatchSet(mmset& tempSet) " <<
"size of the set (before CLEANING) = " << tempSet.size() <<
" maps." << endl;
1336 if(tempSet.size() < 2)
return;
1338 if(tempSet.size() > 10) {
1340 LogDebug(
"FourVectorHLTOffline") <<
"size of the set is too large. It will be truncated to 10." << endl;
1341 mmset::iterator it = tempSet.begin();
1342 for (
int i=0;
i<10;
i++) { it++; }
1343 tempSet.erase( it, tempSet.end());
1344 LogDebug(
"FourVectorHLTOffline") <<
"size of the set is now = " << tempSet.size() <<
" maps." << endl;
1348 bool cleanedOneMap =
false;
1352 while(! cleanedOneMap && tempSet.size() > 1) {
1354 cleanedOneMap=
false;
1359 for ( mmset::iterator setIter_i = tempSet.begin( ); setIter_i != tempSet.end( ); setIter_i++ ) {
1361 fimmap tempMap_j = *setIter_i;
1366 for (fimmap::iterator it = tempMap_j.begin(); it != tempMap_j.end(); ++it) {
1377 for ( mmset::iterator setIter_i = tempSet.begin( ); setIter_i != tempSet.end( ); setIter_i++ ) {
1379 fimmap tempMap_i = *setIter_i;
1380 fimmap::iterator it = tempMap_i.begin();
1381 int topValue = (*it).second;
1385 mmset::iterator tempIter_i = setIter_i;
1389 mmset::iterator setIter_j = ++tempIter_i;
1390 while ( setIter_j != tempSet.end( ) ) {
1392 fimmap tempMap_j = *setIter_j;
1395 fimmap::iterator it = tempMap_j.begin();
1396 while ( it != tempMap_j.end() ) {
1398 if(topValue == (*it).second) {
1401 fimmap::iterator tempIt = it;
1403 tempMap_j.erase(tempIt);
1404 cleanedOneMap =
true;
1415 mmset::iterator tempIt = setIter_j;
1417 tempSet.erase(tempIt);
1420 if(! tempMap_j.empty()) tempSet.insert(tempMap_j);
1431 if(cleanedOneMap)
break;
1439 cleanedOneMap=
false;
1455 for ( mmset::iterator setIter_i = tempSet.begin( ); setIter_i != tempSet.end( ); setIter_i++ )
1458 fimmap tempMap_j = *setIter_i;
1463 for (fimmap::iterator it = tempMap_j.begin(); it != tempMap_j.end(); ++it) {
1481 paths.push_back(
"HLT_"+label+
"_L1_Any");
1482 paths.push_back(
"HLT_"+label+
"_Any");
1483 paths.push_back(
"HLT_Any");
1490 h_name=
"HLT_"+label+
"_PassPass";
1491 h_title =
"HLT_"+label+
"_PassPass (x=Pass, y=Pass)";
1493 paths.size(), -0.5, paths.size()-0.5, paths.size(), -0.5, paths.size()-0.5);
1495 h_name=
"HLT_"+label+
"_Pass_Any";
1496 h_title =
"HLT_"+label+
"_Pass (x=Pass, Any=Pass) normalized to HLT_Any Pass";
1498 paths.size(), -0.5, paths.size()-0.5);
1501 h_name=
"HLT_"+label+
"_PassPass_Normalized";
1502 h_title =
"HLT_"+label+
"_PassPass (x=Pass, y=Pass) normalized to xBin=Pass";
1504 paths.size(), -0.5, paths.size()-0.5, paths.size(), -0.5, paths.size()-0.5);
1505 h_name=
"HLT_"+label+
"_Pass_Normalized_Any";
1506 h_title =
"HLT_"+label+
"_Pass (x=Pass, Any=Pass) normalized to HLT_Any Pass";
1508 paths.size(), -0.5, paths.size()-0.5);
1511 h_name=
"HLT_"+label+
"_Total_LS";
1512 h_title = label+
" HLT paths total count combined per LS ";
1516 h_name=
"HLT_"+label+
"_LS";
1517 h_title = label+
" HLT paths count per LS ";
1524 h_name=
"HLT_"+label+
"_BX_LS";
1525 h_title = label+
" HLT paths total count combined per BX ";
1530 h_name=
"HLT_"+label+
"_BX_LS_Norm";
1531 h_title = label+
" HLT paths total count combined per BX Normalized to LS";
1536 for(
unsigned int i = 0;
i < paths.size();
i++){
1538 ME->
getTH2F()->GetXaxis()->SetBinLabel(
i+1, (paths[
i]).c_str());
1539 ME->
getTH2F()->GetYaxis()->SetBinLabel(i+1, (paths[i]).c_str());
1540 ME_Group_LS->
getTH2F()->GetYaxis()->SetBinLabel(i+1, (paths[i]).c_str());
1542 ME_Normalized->
getTH2F()->GetXaxis()->SetBinLabel(i+1, (paths[i]).c_str());
1543 ME_Normalized->
getTH2F()->GetYaxis()->SetBinLabel(i+1, (paths[i]).c_str());
1544 ME_Normalized_Any->
getTH1F()->GetXaxis()->SetBinLabel(i+1, (paths[i]).c_str());
1545 ME_Any->
getTH1F()->GetXaxis()->SetBinLabel(i+1, (paths[i]).c_str());
1553 string fullPathToME;
1559 fullPathToME =
"HLT/FourVector/PathsSummary/HLT_"+
fGroupNamePathsPair[mi].first+
"_PassPass";
1561 fullPathToME =
"HLT/FourVector/PathsSummary/HLT_"+
fGroupNamePathsPair[mi].first+
"_Pass_Any";
1563 if(!ME_2d || !ME_1d) {
1565 LogTrace(
"FourVectorHLTOffline") <<
" ME not valid although I gave full path" << endl;
1570 TH2F * hist_2d = ME_2d->
getTH2F();
1571 TH1F * hist_1d = ME_1d->
getTH1F();
1575 int anyBinNumber = hist_2d->GetXaxis()->FindBin(
"HLT_Any");
1578 int groupBinNumber = hist_2d->GetXaxis()->FindBin(groupBinLabel.c_str());
1583 hist_2d->Fill(anyBinNumber-1,anyBinNumber-1);
1584 hist_1d->Fill(anyBinNumber-1);
1588 bool groupPassed =
false;
1589 bool groupL1Passed =
false;
1617 groupL1Passed =
true;
1619 hist_2d->Fill(i,anyBinNumber-1);
1620 hist_2d->Fill(anyBinNumber-1,i);
1622 hist_2d->Fill(i,groupBinNumber-1);
1623 hist_2d->Fill(groupBinNumber-1,i);
1655 hist_1d->Fill(groupBinNumber-1);
1656 hist_1d->Fill(groupBinNumber-2);
1657 hist_2d->Fill(groupBinNumber-1,groupBinNumber-1);
1658 hist_2d->Fill(anyBinNumber-1,groupBinNumber-1);
1659 hist_2d->Fill(groupBinNumber-1,anyBinNumber-1);
1684 "HLT counts vs Event bx",
1685 Nbx_+1, -0.5,
Nbx_+1-0.5, npaths, -0.5, npaths-0.5);
1696 for(
unsigned int i = 0;
i < npaths;
i++){
1716 "All paths per LS ",
1717 nLS_, 0,
nLS_, npaths+1, -0.5, npaths+1-0.5);
1721 for(
unsigned int i = 0;
i < npaths;
i++){
1727 unsigned int i = npaths;
1730 int nBinsPerLSHisto = 20;
1731 int nLSHistos = npaths/nBinsPerLSHisto;
1732 for (
int nh=0;nh<nLSHistos+1;nh++) {
1737 sprintf(name,
"Group_%d_paths_count_LS",nLSHistos-nh);
1738 sprintf(title,
"Group %d, paths count per LS",nLSHistos-nh);
1741 nLS_, 0,
nLS_, nBinsPerLSHisto+3, -0.5, nBinsPerLSHisto+3-0.5);
1746 for(
int i = nh*nBinsPerLSHisto; i < (nh+1)*nBinsPerLSHisto; i++){
1748 if (i ==
int(npaths))
break;
1758 bin = i % nBinsPerLSHisto;
1766 tempME->
setBinLabel(nBinsPerLSHisto+3,
"HLT_Any", 2);
1767 tempME->
setBinLabel(nBinsPerLSHisto+2,
"HLT_PhysicsDeclared", 2);
1789 LogTrace(
"FourVectorHLTOffline") <<
" end lumiSection number " << lumi << endl;
1802 LogTrace(
"FourVectorHLTOffline") <<
" countHLTGroupBXHitsEndLumiBlock() lumiSection number " << lumi << endl;
1809 std::string pathname = ip->first;
1810 vector<int> prevCount = ip->second;
1813 vector<int> currCount (5,0);
1814 vector<int> diffCount (5,0);
1817 int pathBin = hist_2d_bx->GetYaxis()->FindBin(pathname.c_str());
1819 if(pathBin > hist_2d_bx->GetNbinsY()) {
1821 LogTrace(
"FourVectorHLTOffline") <<
" Cannot find the bin for path " << pathname << endl;
1826 for (
unsigned int b =0;
b<currCount.size();
b++) {
1830 if(bunch < 1) bunch +=
Nbx_ ;
1831 int bxBin = bunch +1;
1834 currCount[
b] = int(hist_2d_bx->GetBinContent(bxBin, pathBin));
1836 LogTrace(
"FourVectorHLTOffline") <<
"currCount = " << currCount[
b] << endl;
1839 diffCount[
b] = currCount[
b] - prevCount[
b];
1841 LogTrace(
"FourVectorHLTOffline") <<
" lumi = " << lumi <<
" path " << pathname <<
"bxOffset = " << bxOffset <<
" count = " << diffCount[
b] << endl;
1846 ip->second = currCount;
1851 LogTrace(
"FourVectorHLTOffline") <<
"Find " << pathname << endl;
1856 bool isMember =
false;
1876 LogTrace(
"FourVectorHLTOffline") <<
"Could not find a group to which the path belongs, path = " << pathname <<
" group = " <<
fGroupNamePathsPair[
j].first << endl;
1890 vector<int> updatedLumiCount(5,0);
1892 float entireBXWindowUpdatedLumiCount = 0;
1894 TH2F* hist_All = ME_2d->
getTH2F();
1896 for (
unsigned int b = 0;
b<diffCount.size();
b++) {
1899 int binNumber =
b+1;
1902 int currentLumiCount = int(hist_All->GetBinContent(lumi+1,binNumber));
1903 updatedLumiCount[
b] = currentLumiCount + diffCount[
b];
1904 hist_All->SetBinContent(lumi+1,binNumber,updatedLumiCount[
b]);
1906 entireBXWindowUpdatedLumiCount += updatedLumiCount[
b];
1919 TH2F* hist_All_Norm = ME_2d_Norm->
getTH2F();
1921 for (
unsigned int b = 0;
b<diffCount.size();
b++) {
1924 int binNumber =
b+1;
1927 if(entireBXWindowUpdatedLumiCount != 0)
1928 hist_All_Norm->SetBinContent(lumi+1,binNumber,
float(updatedLumiCount[
b])/entireBXWindowUpdatedLumiCount);
1941 LogTrace(
"FourVectorHLTOffline") <<
" countHLTGroupL1HitsEndLumiBlock() lumiSection number " << lumi << endl;
1946 string fullPathToME =
"HLT/FourVector/PathsSummary/HLT_" +
fGroupNamePathsPair[
i].first+
"_Pass_Any";
1951 LogTrace(
"FourVectorHLTOffline") <<
" could not find 1d matrix " << fullPathToME << endl;
1957 LogTrace(
"FourVectorHLTOffline") <<
" Looking in histogram " << fullPathToME << endl;
1959 TH1F * hist_1d = ME_1d->
getTH1F();
1964 string pathname = ip->first;
1965 float prevCount = ip->second;
1967 string binLabel =
"HLT_"+pathname+
"_L1_Any";
1969 LogTrace(
"FourVectorHLTOffline") <<
" Looking for binLabel = " << binLabel << endl;
1971 int pathBin = hist_1d->GetXaxis()->FindBin(binLabel.c_str());
1973 LogTrace(
"FourVectorHLTOffline") <<
" pathBin = " << pathBin <<
" out of histogram total number of bins " << hist_1d->GetNbinsX() << endl;
1976 LogTrace(
"FourVectorHLTOffline") <<
" Cannot find the bin for path " << pathname << endl;
1981 float currCount = hist_1d->GetBinContent(pathBin)/
LSsize_;
1984 float diffCount = currCount - prevCount;
1986 LogTrace(
"FourVectorHLTOffline") <<
" lumi = " << lumi <<
" path " << pathname <<
" count " << diffCount << endl;
1989 ip->second = currCount;
2000 float currentLumiCount = ME_1d->
getTH1()->GetBinContent(lumi+1);
2001 float updatedLumiCount = currentLumiCount + diffCount;
2002 ME_1d->
getTH1()->SetBinContent(lumi+1,updatedLumiCount);
2007 LogDebug(
"FourVectorHLTOffline") <<
" cannot find ME " << fullPathToME_count << endl;
2021 LogTrace(
"FourVectorHLTOffline") <<
" countHLTGroupHitsEndLumiBlock() lumiSection number " << lumi << endl;
2025 string fullPathToME =
"HLT/FourVector/PathsSummary/HLT_" +
fGroupNamePathsPair[
i].first +
"_Pass_Any";
2030 LogTrace(
"FourVectorHLTOffline") <<
" could not find 1d matrix " << fullPathToME << endl;
2036 LogTrace(
"FourVectorHLTOffline") <<
" Looking in histogram " << fullPathToME << endl;
2038 TH1F * hist_1d = ME_1d->
getTH1F();
2043 string pathname = ip->first;
2044 float prevCount = ip->second;
2046 string binLabel =
"HLT_"+pathname+
"_Any";
2048 LogTrace(
"FourVectorHLTOffline") <<
" Looking for binLabel = " << binLabel << endl;
2050 int pathBin = hist_1d->GetXaxis()->FindBin(binLabel.c_str());
2052 LogTrace(
"FourVectorHLTOffline") <<
" pathBin = " << pathBin <<
" out of histogram total number of bins " << hist_1d->GetNbinsX() << endl;
2055 LogTrace(
"FourVectorHLTOffline") <<
" Cannot find the bin for path " << pathname << endl;
2060 float currCount = hist_1d->GetBinContent(pathBin)/
LSsize_;
2063 float diffCount = currCount - prevCount;
2065 LogTrace(
"FourVectorHLTOffline") <<
" lumi = " << lumi <<
" path " << pathname <<
" count " << diffCount << endl;
2068 ip->second = currCount;
2079 float currentLumiCount = ME_1d->
getTH1()->GetBinContent(lumi+1);
2080 float updatedLumiCount = currentLumiCount + diffCount;
2081 ME_1d->
getTH1()->SetBinContent(lumi+1,updatedLumiCount);
2086 LogDebug(
"FourVectorHLTOffline") <<
" cannot find ME " << fullPathToME_count << endl;
2100 LogTrace(
"FourVectorHLTOffline") <<
" countHLTPathHitsEndLumiBlock() lumiSection number " << lumi << endl;
2102 string fullPathToME =
"HLT/FourVector/PathsSummary/HLT_All_PassPass";
2107 LogTrace(
"FourVectorHLTOffline") <<
" could not fine 2d matrix " << fullPathToME << endl;
2113 TH2F * hist_2d = ME_2d->
getTH2F();
2118 std::string pathname = ip->first;
2119 float prevCount = ip->second;
2122 float pathBin = hist_2d->GetXaxis()->FindBin(pathname.c_str());
2124 if(pathBin > hist_2d->GetNbinsX()) {
2126 LogTrace(
"FourVectorHLTOffline") <<
" Cannot find the bin for path " << pathname << endl;
2131 float currCount = hist_2d->GetBinContent(pathBin, pathBin)/
LSsize_;
2134 float diffCount = currCount - prevCount;
2136 LogTrace(
"FourVectorHLTOffline") <<
" lumi = " << lumi <<
" path " << pathname <<
" count " << diffCount << endl;
2139 ip->second = currCount;
2149 int pathBinNumber = hist_All->GetYaxis()->FindBin(pathname.c_str());
2152 float currentLumiCount = hist_All->GetBinContent(lumi+1,pathBinNumber);
2153 float updatedLumiCount = currentLumiCount + diffCount;
2154 hist_All->SetBinContent(lumi+1,pathBinNumber,updatedLumiCount);
2159 LogDebug(
"FourVectorHLTOffline") <<
" cannot find ME_HLTAll_LS" << endl;
2169 TH2F* hist_All = tempME->
getTH2F();
2172 int pathBinNumber = hist_All->GetYaxis()->FindBin(pathname.c_str());
2174 float currentLumiCount = hist_All->GetBinContent(lumi+1,pathBinNumber);
2175 float updatedLumiCount = currentLumiCount + diffCount;
2176 hist_All->SetBinContent(lumi+1,pathBinNumber,updatedLumiCount);
2181 LogDebug(
"FourVectorHLTOffline") <<
" cannot find tempME " << endl;
2196 float currentLumiCount = ME_1d->
getTH1()->GetBinContent(lumi+1);
2197 float updatedLumiCount = currentLumiCount + diffCount;
2198 ME_1d->
getTH1()->SetBinContent(lumi+1,updatedLumiCount);
2203 LogDebug(
"FourVectorHLTOffline") <<
" cannot find ME " << fullPathToME_count << endl;
2216 if (pathname.find(
"MET") != std::string::npos)
2218 if (pathname.find(
"SumET") != std::string::npos || pathname.find(
"SumEt") != std::string::npos || pathname.find(
"ETT") != std::string::npos)
2220 if (pathname.find(
"HT") != std::string::npos)
2222 if (pathname.find(
"Jet") != std::string::npos)
2224 if (pathname.find(
"Mu") != std::string::npos)
2226 if (pathname.find(
"Ele") != std::string::npos)
2228 if (pathname.find(
"Photon") != std::string::npos)
2230 if (pathname.find(
"EG") != std::string::npos)
2232 if (pathname.find(
"Tau") != std::string::npos)
2234 if (pathname.find(
"IsoTrack") != std::string::npos)
2236 if (pathname.find(
"BTag") != std::string::npos)
2248 string l1pathname =
"dummy";
2252 for(vector<string>::iterator numpathmodule = numpathmodules.begin();
2253 numpathmodule!= numpathmodules.end(); ++numpathmodule ) {
2257 l1pathname = *numpathmodule;
2273 int l1ModuleIndex = 999;
2277 if(
v->getPath() == pathname ) l1ModuleIndex =
v->getL1ModuleIndex();
2281 unsigned int pathByIndex = triggerNames.
triggerIndex(pathname);
2289 rc = (l1ModuleIndex < lastModule);
2300 unsigned int pathByIndex = triggerNames.
triggerIndex(pathname);
2316 for( reco::MuonCollection::const_iterator iter = muonHandle->begin(), iend = muonHandle->end(); iter != iend; ++iter )
2345 for( reco::GsfElectronCollection::const_iterator iter = eleHandle->begin(), iend = eleHandle->end(); iter != iend; ++iter )
2359 float eleMaxOver3x3 = ( lazyTool.
eMax(*bc) / lazyTool.
e3x3(*bc) );
2366 if(! iter->ecalDriven() )
continue;
2391 else if(iter->isEE()) {
2428 for( reco::PhotonCollection::const_iterator iter = phoHandle->begin(), iend = phoHandle->end(); iter != iend; ++iter )
2434 iter->sigmaIetaIeta() > 0.002 &&
2435 iter->maxEnergyXtal() / iter->e3x3() < 0.9
2460 for( reco::CaloJetCollection::const_iterator iter = jetHandle->begin(), iend = jetHandle->end(); iter != iend; ++iter )
2490 for( reco::CaloMETCollection::const_iterator iter = metHandle->begin(), iend = metHandle->end(); iter != iend; ++iter )
2513 iEvent.
getByLabel(
"shrinkingConePFTauProducer",tauHandle);
2525 for(
unsigned int i=0;
i<tauHandle->size();++
i) {
2530 float outputDiscmnt1 = (*dscrmt1H)[pfTauRef];
2531 float outputDiscmnt2 = (*dscrmt2H)[pfTauRef];
2532 float outputDiscmnt3 = (*dscrmt3H)[pfTauRef];
2534 if(outputDiscmnt1>0.5 && outputDiscmnt2>0.5 && outputDiscmnt3 >0.5) {
2554 std::string pathname =
name;
2559 if(pathname.find(
"L1") != std::string::npos) pathname.replace(pathname.find(
"L1"),2,
"");
2561 if(pathname.find(
"L2") != std::string::npos) pathname.replace(pathname.find(
"L2"),2,
"");
2563 if(pathname.find(
"8E29") != std::string::npos) pathname.replace(pathname.find(
"8E29"),4,
"");
2565 int digitLocation=0;
2566 for (
unsigned int i=0;
i < pathname.length();
i++)
2568 if (isdigit(pathname.at(
i))) {
2577 string hltThresholdString = pathname.substr(digitLocation);
2579 int hltThreshold = 0;
2582 sscanf (hltThresholdString.c_str(),
"%d%*s",&hltThreshold);
2585 return hltThreshold;
2604 double normalizedChi2 = gm->normalizedChi2();
2605 int trackerHits = tk->hitPattern().numberOfValidTrackerHits();
2606 int pixelHits = tk->hitPattern().numberOfValidPixelHits();
2607 int muonHits = gm->hitPattern().numberOfValidMuonHits();
2610 if (fabs(dxy)>
dxyCut_) {
return 0; quality=0;}
float sigmaIetaIetaSpikesEC_
unsigned int size() const
number of trigger paths in trigger table
void setupHltMatrix(const std::string &label, std::vector< std::string > &paths)
reco::helper::JetIDHelper * jetID
LuminosityBlockID id() const
T getParameter(std::string const &) const
float dr04EcalRecHitSumEtEC_
T getUntrackedParameter(std::string const &, T const &) const
bool hasL1Passed(const std::string &pathname, const edm::TriggerNames &triggerNames)
virtual void fillL1Match(FourVectorHLTOffline *fv)=0
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
void selectPhotons(const edm::Handle< reco::PhotonCollection > &phoHandle)
std::vector< PFTau > PFTauCollection
collection of PFTau objects
const std::string moduleType(const std::string &module) const
C++ class name of module.
void countHLTPathHitsEndLumiBlock(const int &lumi)
virtual void monitorOnline(const int hltIndex, const int l1Index, FourVectorHLTOnline *fv)=0
void countHLTGroupBXHitsEndLumiBlock(const int &lumi)
edm::Handle< reco::GsfElectronCollection > fSelElectronsHandle
edm::Handle< reco::CaloMETCollection > fSelMetHandle
const std::string & triggerName(unsigned int triggerIndex) const
float deltaPhiSuperClusterTrackAtVtxEC_
virtual void fillOnlineMatch(const int l1Index, FourVectorHLTOnline *fv)=0
float sigmaIetaIetaSpikesEB_
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
void rmdir(const std::string &fullpath)
std::string pathsSummaryFolder_
reco::CaloMETCollection * fSelectedMet
PathInfoCollection hltPaths_
virtual TrackRef innerTrack() const
enum start value shifted to 81 so as to avoid clashes with PDG codes
std::string muonRecoCollectionName_
reco::PFTauCollection * fSelectedTaus
void endRun(const edm::Run &run, const edm::EventSetup &c)
EndRun.
std::string pathsSummaryHLTPathsPerLSFolder_
bool isTrackerMuon() const
int getTriggerTypeParsePathName(const std::string &pathname)
void fillHltMatrix(const edm::TriggerNames &triggerNames)
std::vector< std::pair< std::string, std::vector< int > > > fPathBxTempCountPair
std::vector< std::string > specialPaths_
FourVectorHLTOffline(const edm::ParameterSet &)
int bunchCrossing() const
void cleanDRMatchSet(mmset &tempSet)
Clean DR Match Set.
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
std::multimap< float, int > fimmap
const std::string moduleEDMType(const std::string &module) const
C++ base class name of module.
edm::Handle< reco::MuonCollection > fSelMuonsHandle
Strings::size_type size() const
edm::Handle< reco::BeamSpot > fBeamSpotHandle
double normalizedChi2Cut_
virtual void monitorOffline(void)=0
edm::Handle< reco::PFTauCollection > fSelTausHandle
float emEnergyFractionJet_
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
std::vector< TPRegexp > filters
edm::InputTag triggerSummaryLabel_
void countHLTGroupL1HitsEndLumiBlock(const int &lumi)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
void setRecoB(edm::Handle< reco::JetTagCollection > offCollB)
PathInfoCollection hltPathsDiagonal_
std::vector< std::pair< std::string, std::string > > custompathnamepairs_
std::vector< Muon > MuonCollection
collection of Muon objects
std::set< fimmap, std::less< fimmap > > mmset
edm::Handle< reco::PhotonCollection > fSelPhotonsHandle
reco::GsfElectronCollection * fSelectedElectrons
U second(std::pair< T, U > const &p)
const std::string * pathName() const
float deltaEtaSuperClusterTrackAtVtxEC_
const std::string getL1ConditionModuleName(const std::string &pathname)
unsigned int moduleIndex(unsigned int trigger, const std::string &module) const
slot position of module on trigger path (0 to size-1)
unsigned int referenceBX_
float deltaEtaSuperClusterTrackAtVtxEB_
unsigned int triggerIndex(std::string const &name) const
void setLimits(float etaMax, float etMin, float drMatch)
edm::Handle< edm::TriggerResults > fTriggerResults
void selectJets(const edm::Event &iEvent, const edm::Handle< reco::CaloJetCollection > &jetHandle)
std::vector< MonitorElement * > v_ME_Total_BX
std::string pathsSummaryHLTPathsPerBXFolder_
std::vector< std::pair< std::string, float > > fPathTempCountPair
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
HLTConfigProvider hltConfig_
std::string fCustomBXPath
virtual void analyze(const edm::Event &, const edm::EventSetup &)
void setVerbose(unsigned level)
reco::PhotonCollection * fSelectedPhotons
std::vector< MonitorElement * > v_ME_Total_BX_Norm
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
void selectTaus(const edm::Event &iEvent)
bool isVBTFMuon(const reco::Muon &muon)
MonitorElement * ME_HLT_BX
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
double electronL1DRMatch_
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
void selectElectrons(const edm::Event &iEvent, const edm::EventSetup &iSetup, const edm::Handle< reco::GsfElectronCollection > &eleHandle)
int numberOfMatches(ArbitrationType type=SegmentAndTrackArbitration) const
get number of chambers with matched segments
reco::MuonCollection * fSelectedMuons
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
edm::InputTag triggerResultsLabel_
std::string tauDscrmtrLabel2_
const std::vector< std::string > & datasetContent(unsigned int dataset) const
names of trigger paths in dataset with index i
virtual void clearSets(void)=0
DetId seed() const
return DetId of seed
void beginRun(const edm::Run &run, const edm::EventSetup &c)
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
MonitorElement * ME_HLT_CUSTOM_BX
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
edm::Handle< reco::CaloJetCollection > fSelJetsHandle
float dr04EcalRecHitSumEtEB_
TH1F * getTH1F(void) const
float dr04HcalTowerSumEtEB_
LuminosityBlockNumber_t luminosityBlock() const
std::vector< Photon > PhotonCollection
collectin of Photon objects
std::vector< std::pair< std::string, float > > fGroupTempCountPair
std::vector< std::pair< std::string, std::vector< std::string > > > fGroupNamePathsPair
unsigned int nBinsOneOverEt_
virtual void setPath(FourVectorHLTOnline::PathInfoCollection::iterator v)=0
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
std::string pathsSummaryHLTCorrelationsFolder_
std::string pathsSummaryFilterCountsFolder_
std::string pathsIndividualHLTPathsPerLSFolder_
void selectMet(const edm::Handle< reco::CaloMETCollection > &metHandle)
float dr04HcalTowerSumEtEC_
edm::InputTag recHitsEBTag_
std::string tauDscrmtrLabel1_
MonitorElement * ME_HLTAll_LS
std::vector< std::string > fGroupName
void countHLTGroupHitsEndLumiBlock(const int &lumi)
virtual void monitorL1(const int l1Index, FourVectorHLTOnline *fv)=0
std::string tauDscrmtrLabel3_
std::vector< std::pair< std::string, float > > fGroupL1TempCountPair
edm::InputTag recHitsEETag_
reco::CaloJetCollection * fSelectedJets
TH2F * getTH2F(void) const
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
int getHltThresholdFromName(const std::string &pathname)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
edm::Handle< trigger::TriggerEvent > fTriggerObj
void setReco(edm::Handle< T > offColl)
MonitorElement * scalersSelect
float deltaPhiSuperClusterTrackAtVtxEB_
std::vector< MonitorElement * > v_ME_HLTAll_LS
tuple size
Write out results.
void setCurrentFolder(const std::string &fullpath)
void calculate(const edm::Event &event, const reco::CaloJet &jet, const int iDbg=0)
const std::vector< std::string > & datasetNames() const
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
Provenance const * provenance() const
void selectMuons(const edm::Handle< reco::MuonCollection > &muonHandle)
bool hasHLTPassed(const std::string &pathname, const edm::TriggerNames &triggerNames)
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector