00001 #ifndef TRIGRESRATEMON_H
00002 #define TRIGRESRATEMON_H
00003
00004
00005
00006
00007
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <memory>
00025 #include <unistd.h>
00026
00027
00028
00029 #include "FWCore/Framework/interface/Frameworkfwd.h"
00030 #include "FWCore/Framework/interface/EDAnalyzer.h"
00031
00032 #include "FWCore/Framework/interface/Event.h"
00033 #include "FWCore/Framework/interface/MakerMacros.h"
00034 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00035 #include "DataFormats/Common/interface/TriggerResults.h"
00036 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
00037
00038 #include "DQMServices/Core/interface/DQMStore.h"
00039 #include "DQMServices/Core/interface/MonitorElement.h"
00040 #include "FWCore/ServiceRegistry/interface/Service.h"
00041 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00042 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00043
00044
00045 #include "FWCore/Framework/interface/EDAnalyzer.h"
00046 #include "DataFormats/Common/interface/Handle.h"
00047 #include "FWCore/Framework/interface/Run.h"
00048 #include "FWCore/Framework/interface/MakerMacros.h"
00049 #include "FWCore/Framework/interface/ESHandle.h"
00050
00051 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00052
00053 #include "DataFormats/HLTReco/interface/TriggerObject.h"
00054 #include "DataFormats/Common/interface/TriggerResults.h"
00055 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00056 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
00057 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
00058 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
00059
00060
00061
00062
00063
00064 #include "DataFormats/HLTReco/interface/TriggerEventWithRefs.h"
00065 #include "DataFormats/JetReco/interface/JetFloatAssociation.h"
00066
00067 #include "DataFormats/Math/interface/deltaR.h"
00068 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
00069
00070 #include "DQMServices/Core/interface/MonitorElement.h"
00071
00072
00073
00074 #include <iostream>
00075 #include <fstream>
00076 #include <vector>
00077
00078 namespace edm {
00079 class TriggerNames;
00080 }
00081
00082
00083
00084
00085 class TrigResRateMon : public edm::EDAnalyzer {
00086
00087 public:
00088 explicit TrigResRateMon(const edm::ParameterSet&);
00089 ~TrigResRateMon();
00090
00091
00092
00093 edm::Handle<trigger::TriggerEvent> fTriggerObj;
00094
00095
00096 private:
00097 virtual void beginJob() ;
00098 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00099 virtual void endJob() ;
00100
00101
00102 void beginRun(const edm::Run& run, const edm::EventSetup& c);
00103
00104
00105 void endRun(const edm::Run& run, const edm::EventSetup& c);
00106 void setupHltMatrix(const std::string& label, std::vector<std::string> & paths);
00107 void setupStreamMatrix(const std::string& label, std::vector<std::string> & paths);
00108 void setupHltLsPlots();
00109 void setupHltBxPlots();
00110 void countHLTPathHitsEndLumiBlock(const int & lumi);
00111 void countHLTGroupHitsEndLumiBlock(const int & lumi);
00112 void countHLTGroupL1HitsEndLumiBlock(const int & lumi);
00113 void countHLTGroupBXHitsEndLumiBlock(const int & lumi);
00114
00115 void fillHltMatrix(const edm::TriggerNames & triggerNames);
00116 void normalizeHLTMatrix();
00117
00118 int getTriggerTypeParsePathName(const std::string & pathname);
00119 const std::string getL1ConditionModuleName(const std::string & pathname);
00120 bool hasL1Passed(const std::string & pathname, const edm::TriggerNames & triggerNames);
00121 bool hasHLTPassed(const std::string & pathname, const edm::TriggerNames& triggerNames);
00122 int getThresholdFromName(const std::string & pathname);
00123
00124
00125 void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& c);
00126 void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& c);
00127
00128
00129 int nev_;
00130 DQMStore * dbe_;
00131 bool fLumiFlag;
00132 bool fIsSetup;
00133
00134
00135
00136
00137
00138
00139 MonitorElement* ME_HLTAll_LS;
00140 MonitorElement* ME_HLT_BX;
00141 MonitorElement* ME_HLT_CUSTOM_BX;
00142 std::vector<MonitorElement*> v_ME_HLTAll_LS;
00143 std::vector<MonitorElement*> v_ME_Total_BX;
00144 std::vector<MonitorElement*> v_ME_Total_BX_Norm;
00145
00146 std::vector<MonitorElement*> v_ME_HLTPassPass;
00147 std::vector<MonitorElement*> v_ME_HLTPassPass_Normalized;
00148 std::vector<MonitorElement*> v_ME_HLTPass_Normalized_Any;
00149
00150 std::string pathsSummaryFolder_;
00151 std::string pathsSummaryStreamsFolder_;
00152 std::string pathsSummaryHLTCorrelationsFolder_;
00153 std::string pathsSummaryFilterEfficiencyFolder_;
00154 std::string pathsSummaryFilterCountsFolder_;
00155 std::string pathsSummaryHLTPathsPerLSFolder_;
00156 std::string pathsIndividualHLTPathsPerLSFolder_;
00157 std::string pathsSummaryHLTPathsPerBXFolder_;
00158 std::string fCustomBXPath;
00159
00160 std::vector<std::string> fGroupName;
00161
00162
00163 unsigned int nLS_;
00164 double LSsize_ ;
00165 double thresholdFactor_ ;
00166 unsigned int referenceBX_;
00167 unsigned int Nbx_;
00168
00169 bool plotAll_;
00170 bool doCombineRuns_;
00171 bool doVBTFMuon_;
00172 int currentRun_;
00173
00174 unsigned int nBins_;
00175 unsigned int nBins2D_;
00176 unsigned int nBinsDR_;
00177 unsigned int nBinsOneOverEt_;
00178 double ptMin_ ;
00179 double ptMax_ ;
00180 double dRMax_ ;
00181 double dRMaxElectronMuon_ ;
00182
00183 double electronEtaMax_;
00184 double electronEtMin_;
00185 double electronDRMatch_;
00186 double electronL1DRMatch_;
00187 double muonEtaMax_;
00188 double muonEtMin_;
00189 double muonDRMatch_;
00190 double muonL1DRMatch_;
00191 double tauEtaMax_;
00192 double tauEtMin_;
00193 double tauDRMatch_;
00194 double tauL1DRMatch_;
00195 double jetEtaMax_;
00196 double jetEtMin_;
00197 double jetDRMatch_;
00198 double jetL1DRMatch_;
00199 double bjetEtaMax_;
00200 double bjetEtMin_;
00201 double bjetDRMatch_;
00202 double bjetL1DRMatch_;
00203 double photonEtaMax_;
00204 double photonEtMin_;
00205 double photonDRMatch_;
00206 double photonL1DRMatch_;
00207 double trackEtaMax_;
00208 double trackEtMin_;
00209 double trackDRMatch_;
00210 double trackL1DRMatch_;
00211 double metEtaMax_;
00212 double metMin_;
00213 double metDRMatch_;
00214 double metL1DRMatch_;
00215 double htEtaMax_;
00216 double htMin_;
00217 double htDRMatch_;
00218 double htL1DRMatch_;
00219 double sumEtMin_;
00220
00221
00222 double dxyCut_;
00223 double normalizedChi2Cut_;
00224 int trackerHitsCut_;
00225 int pixelHitsCut_;
00226 int muonHitsCut_;
00227 bool isAlsoTrackerMuon_;
00228 int nMatchesCut_;
00229
00230 std::vector<std::pair<std::string, std::string> > custompathnamepairs_;
00231
00232 std::vector <std::vector <std::string> > triggerFilters_;
00233 std::vector <std::vector <uint> > triggerFilterIndices_;
00234 std::vector <std::pair<std::string, float> > fPathTempCountPair;
00235 std::vector <std::pair<std::string, std::vector<int> > > fPathBxTempCountPair;
00236 std::vector <std::pair<std::string, float> > fGroupTempCountPair;
00237 std::vector <std::pair<std::string, float> > fGroupL1TempCountPair;
00238 std::vector <std::pair<std::string, std::vector<std::string> > > fGroupNamePathsPair;
00239
00240 std::vector<std::string> specialPaths_;
00241
00242 std::string dirname_;
00243 std::string processname_;
00244 std::string muonRecoCollectionName_;
00245 bool monitorDaemon_;
00246 int theHLTOutputType;
00247 edm::InputTag triggerSummaryLabel_;
00248 edm::InputTag triggerResultsLabel_;
00249 edm::InputTag recHitsEBTag_, recHitsEETag_;
00250 HLTConfigProvider hltConfig_;
00251
00252 MonitorElement* scalersSelect;
00253
00254
00255 edm::Handle<edm::TriggerResults> triggerResults_;
00256
00257 class PathInfo {
00258
00259 PathInfo():
00260 pathIndex_(-1), denomPathName_("unset"), pathName_("unset"), l1pathName_("unset"), filterName_("unset"), processName_("unset"), objectType_(-1) {};
00261
00262 public:
00263
00264 void setFilterHistos(MonitorElement* const filters)
00265 {
00266 filters_ = filters;
00267 }
00268
00269 void setHistos(
00270
00271 MonitorElement* const NOn,
00272 MonitorElement* const onEtOn,
00273 MonitorElement* const onOneOverEtOn,
00274 MonitorElement* const onEtavsonPhiOn,
00275 MonitorElement* const NOff,
00276 MonitorElement* const offEtOff,
00277 MonitorElement* const offEtavsoffPhiOff,
00278 MonitorElement* const NL1,
00279 MonitorElement* const l1EtL1,
00280 MonitorElement* const l1Etavsl1PhiL1,
00281 MonitorElement* const NL1On,
00282 MonitorElement* const l1EtL1On,
00283 MonitorElement* const l1Etavsl1PhiL1On,
00284 MonitorElement* const NL1Off,
00285 MonitorElement* const offEtL1Off,
00286 MonitorElement* const offEtavsoffPhiL1Off,
00287 MonitorElement* const NOnOff,
00288 MonitorElement* const offEtOnOff,
00289 MonitorElement* const offEtavsoffPhiOnOff,
00290 MonitorElement* const NL1OnUM,
00291 MonitorElement* const l1EtL1OnUM,
00292 MonitorElement* const l1Etavsl1PhiL1OnUM,
00293 MonitorElement* const NL1OffUM,
00294 MonitorElement* const offEtL1OffUM,
00295 MonitorElement* const offEtavsoffPhiL1OffUM,
00296 MonitorElement* const NOnOffUM,
00297 MonitorElement* const offEtOnOffUM,
00298 MonitorElement* const offEtavsoffPhiOnOffUM,
00299 MonitorElement* const offDRL1Off,
00300 MonitorElement* const offDROnOff,
00301 MonitorElement* const l1DRL1On)
00302 {
00303
00304 NOn_ = NOn;
00305 onEtOn_ = onEtOn;
00306 onOneOverEtOn_ = onOneOverEtOn;
00307 onEtavsonPhiOn_ = onEtavsonPhiOn;
00308 NOff_ = NOff;
00309 offEtOff_ = offEtOff;
00310 offEtavsoffPhiOff_ = offEtavsoffPhiOff;
00311 NL1_ = NL1;
00312 l1EtL1_ = l1EtL1;
00313 l1Etavsl1PhiL1_ = l1Etavsl1PhiL1;
00314 NL1On_ = NL1On;
00315 l1EtL1On_ = l1EtL1On;
00316 l1Etavsl1PhiL1On_ = l1Etavsl1PhiL1On;
00317 NL1Off_ = NL1Off;
00318 offEtL1Off_ = offEtL1Off;
00319 offEtavsoffPhiL1Off_ = offEtavsoffPhiL1Off;
00320 NOnOff_ = NOnOff;
00321 offEtOnOff_ = offEtOnOff;
00322 offEtavsoffPhiOnOff_ = offEtavsoffPhiOnOff;
00323 NL1OnUM_ = NL1OnUM;
00324 l1EtL1OnUM_ = l1EtL1OnUM;
00325 l1Etavsl1PhiL1OnUM_ = l1Etavsl1PhiL1OnUM;
00326 NL1OffUM_ = NL1OffUM;
00327 offEtL1OffUM_ = offEtL1OffUM;
00328 offEtavsoffPhiL1OffUM_ = offEtavsoffPhiL1OffUM;
00329 NOnOffUM_ = NOnOffUM;
00330 offEtOnOffUM_ = offEtOnOffUM;
00331 offEtavsoffPhiOnOffUM_ = offEtavsoffPhiOnOffUM;
00332 offDRL1Off_ = offDRL1Off;
00333 offDROnOff_ = offDROnOff;
00334 l1DRL1On_ = l1DRL1On;
00335
00336 }
00337
00338 MonitorElement * getNOnHisto() {
00339 return NOn_;
00340 }
00341 MonitorElement * getOnEtOnHisto() {
00342 return onEtOn_;
00343 }
00344 MonitorElement * getOnOneOverEtOnHisto() {
00345 return onOneOverEtOn_;
00346 }
00347 MonitorElement * getOnEtaVsOnPhiOnHisto() {
00348 return onEtavsonPhiOn_;
00349 }
00350 MonitorElement * getNOffHisto() {
00351 return NOff_;
00352 }
00353 MonitorElement * getOffEtOffHisto() {
00354 return offEtOff_;
00355 }
00356 MonitorElement * getOffEtaVsOffPhiOffHisto() {
00357 return offEtavsoffPhiOff_;
00358 }
00359 MonitorElement * getNL1Histo() {
00360 return NL1_;
00361 }
00362 MonitorElement * getL1EtL1Histo() {
00363 return l1EtL1_;
00364 }
00365 MonitorElement * getL1EtaVsL1PhiL1Histo() {
00366 return l1Etavsl1PhiL1_;
00367 }
00368 MonitorElement * getNL1OnHisto() {
00369 return NL1On_;
00370 }
00371 MonitorElement * getL1EtL1OnHisto() {
00372 return l1EtL1On_;
00373 }
00374 MonitorElement * getL1EtaVsL1PhiL1OnHisto() {
00375 return l1Etavsl1PhiL1On_;
00376 }
00377 MonitorElement * getNL1OffHisto() {
00378 return NL1Off_;
00379 }
00380 MonitorElement * getOffEtL1OffHisto() {
00381 return offEtL1Off_;
00382 }
00383 MonitorElement * getOffEtaVsOffPhiL1OffHisto() {
00384 return offEtavsoffPhiL1Off_;
00385 }
00386 MonitorElement * getNOnOffHisto() {
00387 return NOnOff_;
00388 }
00389 MonitorElement * getOffEtOnOffHisto() {
00390 return offEtOnOff_;
00391 }
00392 MonitorElement * getOffEtaVsOffPhiOnOffHisto() {
00393 return offEtavsoffPhiOnOff_;
00394 }
00395 MonitorElement * getNL1OnUMHisto() {
00396 return NL1OnUM_;
00397 }
00398 MonitorElement * getL1EtL1OnUMHisto() {
00399 return l1EtL1OnUM_;
00400 }
00401 MonitorElement * getL1EtaVsL1PhiL1OnUMHisto() {
00402 return l1Etavsl1PhiL1OnUM_;
00403 }
00404 MonitorElement * getNL1OffUMHisto() {
00405 return NL1OffUM_;
00406 }
00407 MonitorElement * getOffEtL1OffUMHisto() {
00408 return offEtL1OffUM_;
00409 }
00410 MonitorElement * getOffEtaVsOffPhiL1OffUMHisto() {
00411 return offEtavsoffPhiL1OffUM_;
00412 }
00413 MonitorElement * getNOnOffUMHisto() {
00414 return NOnOffUM_;
00415 }
00416 MonitorElement * getOffEtOnOffUMHisto() {
00417 return offEtOnOffUM_;
00418 }
00419 MonitorElement * getOffEtaVsOffPhiOnOffUMHisto() {
00420 return offEtavsoffPhiOnOffUM_;
00421 }
00422 MonitorElement * getOffDRL1OffHisto() {
00423 return offDRL1Off_;
00424 }
00425 MonitorElement * getOffDROnOffHisto() {
00426 return offDROnOff_;
00427 }
00428 MonitorElement * getL1DROnL1Histo() {
00429 return l1DRL1On_;
00430 }
00431 MonitorElement * getFiltersHisto() {
00432 return filters_;
00433 }
00434 const std::string getLabel(void ) const {
00435 return filterName_;
00436 }
00437 void setLabel(std::string labelName){
00438 filterName_ = labelName;
00439 return;
00440 }
00441 const std::string & getPath(void ) const {
00442 return pathName_;
00443 }
00444 const std::string & getl1Path(void ) const {
00445 return l1pathName_;
00446 }
00447 const int getL1ModuleIndex(void ) const {
00448 return l1ModuleIndex_;
00449 }
00450 const std::string & getDenomPath(void ) const {
00451 return denomPathName_;
00452 }
00453 const std::string & getProcess(void ) const {
00454 return processName_;
00455 }
00456 const int getObjectType(void ) const {
00457 return objectType_;
00458 }
00459
00460 const edm::InputTag getTag(void) const{
00461 edm::InputTag tagName(filterName_,"",processName_);
00462 return tagName;
00463 }
00464
00465 ~PathInfo() {};
00466
00467 PathInfo(std::string denomPathName, std::string pathName, std::string l1pathName, int l1ModuleIndex, std::string filterName, std::string processName, size_t type, float ptmin, float ptmax, float hltThreshold, float l1Threshold):
00468
00469 denomPathName_(denomPathName),
00470 pathName_(pathName),
00471 l1pathName_(l1pathName),
00472 l1ModuleIndex_(l1ModuleIndex),
00473 filterName_(filterName),
00474 processName_(processName),
00475 objectType_(type),
00476 NOn_(0), onEtOn_(0), onOneOverEtOn_(0), onEtavsonPhiOn_(0),
00477 NOff_(0), offEtOff_(0), offEtavsoffPhiOff_(0),
00478 NL1_(0), l1EtL1_(0), l1Etavsl1PhiL1_(0),
00479 NL1On_(0), l1EtL1On_(0), l1Etavsl1PhiL1On_(0),
00480 NL1Off_(0), offEtL1Off_(0), offEtavsoffPhiL1Off_(0),
00481 NOnOff_(0), offEtOnOff_(0), offEtavsoffPhiOnOff_(0),
00482 NL1OnUM_(0), l1EtL1OnUM_(0), l1Etavsl1PhiL1OnUM_(0),
00483 NL1OffUM_(0), offEtL1OffUM_(0), offEtavsoffPhiL1OffUM_(0),
00484 NOnOffUM_(0), offEtOnOffUM_(0), offEtavsoffPhiOnOffUM_(0),
00485 offDRL1Off_(0), offDROnOff_(0), l1DRL1On_(0), filters_(0),
00486 ptmin_(ptmin), ptmax_(ptmax),
00487 hltThreshold_(hltThreshold), l1Threshold_(l1Threshold)
00488
00489 {
00490 };
00491
00492 PathInfo(std::string denomPathName, std::string pathName, std::string l1pathName, std::string filterName, std::string processName, size_t type,
00493 MonitorElement *NOn,
00494 MonitorElement *onEtOn,
00495 MonitorElement *onOneOverEtOn,
00496 MonitorElement *onEtavsonPhiOn,
00497 MonitorElement *NOff,
00498 MonitorElement *offEtOff,
00499 MonitorElement *offEtavsoffPhiOff,
00500 MonitorElement *NL1,
00501 MonitorElement *l1EtL1,
00502 MonitorElement *l1Etavsl1PhiL1,
00503 MonitorElement *NL1On,
00504 MonitorElement *l1EtL1On,
00505 MonitorElement *l1Etavsl1PhiL1On,
00506 MonitorElement *NL1Off,
00507 MonitorElement *offEtL1Off,
00508 MonitorElement *offEtavsoffPhiL1Off,
00509 MonitorElement *NOnOff,
00510 MonitorElement *offEtOnOff,
00511 MonitorElement *offEtavsoffPhiOnOff,
00512 MonitorElement *NL1OnUM,
00513 MonitorElement *l1EtL1OnUM,
00514 MonitorElement *l1Etavsl1PhiL1OnUM,
00515 MonitorElement *NL1OffUM,
00516 MonitorElement *offEtL1OffUM,
00517 MonitorElement *offEtavsoffPhiL1OffUM,
00518 MonitorElement *NOnOffUM,
00519 MonitorElement *offEtOnOffUM,
00520 MonitorElement *offEtavsoffPhiOnOffUM,
00521 MonitorElement *offDRL1Off,
00522 MonitorElement *offDROnOff,
00523 MonitorElement *l1DRL1On,
00524 MonitorElement *filters,
00525 float ptmin, float ptmax
00526 ):
00527
00528 denomPathName_(denomPathName),
00529 pathName_(pathName), l1pathName_(l1pathName),
00530 filterName_(filterName), processName_(processName), objectType_(type),
00531 NOn_(NOn), onEtOn_(onEtOn), onOneOverEtOn_(onOneOverEtOn), onEtavsonPhiOn_(onEtavsonPhiOn),
00532 NOff_(NOff), offEtOff_(offEtOff), offEtavsoffPhiOff_(offEtavsoffPhiOff),
00533 NL1_(NL1), l1EtL1_(l1EtL1), l1Etavsl1PhiL1_(l1Etavsl1PhiL1),
00534 NL1On_(NL1On), l1EtL1On_(l1EtL1On), l1Etavsl1PhiL1On_(l1Etavsl1PhiL1On),
00535 NL1Off_(NL1Off), offEtL1Off_(offEtL1Off), offEtavsoffPhiL1Off_(offEtavsoffPhiL1Off),
00536 NOnOff_(NOnOff), offEtOnOff_(offEtOnOff), offEtavsoffPhiOnOff_(offEtavsoffPhiOnOff),
00537 NL1OnUM_(NL1OnUM), l1EtL1OnUM_(l1EtL1OnUM), l1Etavsl1PhiL1OnUM_(l1Etavsl1PhiL1OnUM),
00538 NL1OffUM_(NL1OffUM), offEtL1OffUM_(offEtL1OffUM), offEtavsoffPhiL1OffUM_(offEtavsoffPhiL1OffUM),
00539 NOnOffUM_(NOnOffUM), offEtOnOffUM_(offEtOnOffUM), offEtavsoffPhiOnOffUM_(offEtavsoffPhiOnOffUM),
00540 offDRL1Off_(offDRL1Off),
00541 offDROnOff_(offDROnOff),
00542 l1DRL1On_(l1DRL1On),
00543 filters_(filters),
00544 ptmin_(ptmin), ptmax_(ptmax)
00545 {
00546 };
00547
00548 bool operator==(const std::string& v)
00549 {
00550 return v==filterName_;
00551 }
00552
00553 bool operator!=(const std::string& v)
00554 {
00555 return v!=filterName_;
00556 }
00557
00558 float getPtMin() const { return ptmin_; }
00559 float getPtMax() const { return ptmax_; }
00560 float getHltThreshold() const { return hltThreshold_; }
00561 float getL1Threshold() const { return l1Threshold_; }
00562
00563 std::vector< std::pair<std::string,unsigned int> > filtersAndIndices;
00564
00565
00566 private:
00567
00568 int pathIndex_;
00569 std::string denomPathName_;
00570 std::string pathName_;
00571 std::string l1pathName_;
00572 int l1ModuleIndex_;
00573 std::string filterName_;
00574 std::string processName_;
00575 int objectType_;
00576
00577
00578 MonitorElement *NOn_, *onEtOn_, *onOneOverEtOn_, *onEtavsonPhiOn_;
00579 MonitorElement *NOff_, *offEtOff_, *offEtavsoffPhiOff_;
00580 MonitorElement *NL1_, *l1EtL1_, *l1Etavsl1PhiL1_;
00581 MonitorElement *NL1On_, *l1EtL1On_, *l1Etavsl1PhiL1On_;
00582 MonitorElement *NL1Off_, *offEtL1Off_, *offEtavsoffPhiL1Off_;
00583 MonitorElement *NOnOff_, *offEtOnOff_, *offEtavsoffPhiOnOff_;
00584 MonitorElement *NL1OnUM_, *l1EtL1OnUM_, *l1Etavsl1PhiL1OnUM_;
00585 MonitorElement *NL1OffUM_, *offEtL1OffUM_, *offEtavsoffPhiL1OffUM_;
00586 MonitorElement *NOnOffUM_, *offEtOnOffUM_, *offEtavsoffPhiOnOffUM_;
00587 MonitorElement *offDRL1Off_, *offDROnOff_, *l1DRL1On_;
00588 MonitorElement *filters_;
00589
00590 float ptmin_, ptmax_;
00591 float hltThreshold_, l1Threshold_;
00592
00593 const int index() {
00594 return pathIndex_;
00595 }
00596 const int type() {
00597 return objectType_;
00598 }
00599
00600
00601 };
00602
00603
00604 public:
00605
00606
00607 class PathInfoCollection: public std::vector<PathInfo> {
00608 public:
00609
00610 PathInfoCollection(): std::vector<PathInfo>()
00611 {};
00612 std::vector<PathInfo>::iterator find(std::string pathName) {
00613 return std::find(begin(), end(), pathName);
00614 }
00615 };
00616
00617 PathInfoCollection hltPaths_;
00618
00619 PathInfoCollection hltPathsDiagonal_;
00620
00621 };
00622
00623
00624
00625
00626
00627 #endif