CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
HLTScalers Class Reference

#include <HLTScalers.h>

Inheritance diagram for HLTScalers:
one::DQMEDAnalyzer< T > one::dqmimplementation::DQMBaseClass< T... >

Public Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
void beginLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (const edm::Run &run, const edm::EventSetup &c) override
 
void endLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override
 DQM Client Diagnostic should be performed here: More...
 
void endRun (const edm::Run &run, const edm::EventSetup &c) override
 
 HLTScalers (const edm::ParameterSet &ps)
 
 ~HLTScalers () override=default
 
- Public Member Functions inherited from one::DQMEDAnalyzer< T >
 DQMEDAnalyzer ()=default
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > &&)=delete
 
 ~DQMEDAnalyzer () override=default
 

Private Attributes

int currentRun_
 
MonitorElementdetailedScalers_
 
MonitorElementdiagnostic_
 
std::string folderName_
 
MonitorElementhltBx_
 
MonitorElementhltBxVsPath_
 
HLTConfigProvider hltConfig_
 
MonitorElementhltCorrelations_
 
MonitorElementhltOverallScaler_
 
MonitorElementhltOverallScalerN_
 
bool monitorDaemon_
 
int nev_
 
int nLumi_
 
MonitorElementnLumiBlock_
 
MonitorElementnProc_
 
std::vector< std::pair< std::string, std::vector< std::string > > > pairPDPaths_
 
std::string processname_
 
bool resetMe_
 
MonitorElementscalers_
 
MonitorElementscalersException_
 
MonitorElementscalersN_
 
MonitorElementscalersPD_
 
bool sentPaths_
 
edm::EDGetTokenT< edm::TriggerResultstrigResultsSource_
 

Detailed Description

Definition at line 66 of file HLTScalers.h.

Constructor & Destructor Documentation

HLTScalers::HLTScalers ( const edm::ParameterSet ps)

Definition at line 79 of file HLTScalers.cc.

References LogDebug.

81  "HLT/HLTScalers_EvF")),
82  processname_(ps.getParameter<std::string>("processname")),
83  pairPDPaths_(),
84  trigResultsSource_(consumes<TriggerResults>(
85  ps.getParameter<edm::InputTag>("triggerResults"))),
86  scalersN_(nullptr),
87  scalersException_(nullptr),
88  hltCorrelations_(nullptr),
89  detailedScalers_(nullptr),
90  nProc_(nullptr),
91  nLumiBlock_(nullptr),
92  hltBx_(nullptr),
93  hltBxVsPath_(nullptr),
94  hltOverallScaler_(nullptr),
95  hltOverallScalerN_(nullptr),
96  diagnostic_(nullptr),
97  sentPaths_(false),
98  monitorDaemon_(ps.getUntrackedParameter<bool>("MonitorDaemon", false)),
99  nev_(0),
100  nLumi_(0) {
101  LogDebug("HLTScalers") << "HLTScalers: constructor....";
102 }
#define LogDebug(id)
std::vector< std::pair< std::string, std::vector< std::string > > > pairPDPaths_
Definition: HLTScalers.h:86
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * scalersN_
Definition: HLTScalers.h:91
MonitorElement * detailedScalers_
Definition: HLTScalers.h:94
std::string processname_
Definition: HLTScalers.h:85
MonitorElement * hltOverallScaler_
Definition: HLTScalers.h:98
MonitorElement * diagnostic_
Definition: HLTScalers.h:100
MonitorElement * hltBxVsPath_
Definition: HLTScalers.h:97
MonitorElement * hltCorrelations_
Definition: HLTScalers.h:93
MonitorElement * scalersException_
Definition: HLTScalers.h:92
MonitorElement * nLumiBlock_
Definition: HLTScalers.h:96
MonitorElement * hltOverallScalerN_
Definition: HLTScalers.h:99
bool sentPaths_
Definition: HLTScalers.h:102
std::string folderName_
Definition: HLTScalers.h:84
bool monitorDaemon_
Definition: HLTScalers.h:102
MonitorElement * hltBx_
Definition: HLTScalers.h:97
MonitorElement * nProc_
Definition: HLTScalers.h:95
edm::EDGetTokenT< edm::TriggerResults > trigResultsSource_
Definition: HLTScalers.h:87
HLTScalers::~HLTScalers ( )
overridedefault

Member Function Documentation

void HLTScalers::analyze ( const edm::Event e,
const edm::EventSetup c 
)
override

Definition at line 194 of file HLTScalers.cc.

References accept(), edm::HLTGlobalStatus::accept(), b, edm::EventBase::bunchCrossing(), detailedScalers_, diagnostic_, Exception, MonitorElement::Fill(), plotBeamSpotDB::first, edm::Event::getByToken(), MonitorElement::getTH1(), hltBx_, hltBxVsPath_, hltCorrelations_, hltOverallScaler_, hltOverallScalerN_, SelectingProcedure_cff::hltResults, mps_fire::i, edm::HLTGlobalStatus::index(), checklumidiff::l, LogDebug, names, nev_, nProc_, pairPDPaths_, Pass, lumiQueryAPI::q, scalers_, scalersException_, scalersN_, scalersPD_, edm::second(), sentPaths_, MonitorElement::setBinContent(), edm::HLTGlobalStatus::size(), edm::HLTGlobalStatus::state(), AlCaHLTBitMon_QueryRunRegistry::string, edm::TriggerNames::triggerIndex(), edm::TriggerNames::triggerNames(), edm::Event::triggerNames(), trigNames, and trigResultsSource_.

194  {
195  nProc_->Fill(++nev_);
196  diagnostic_->setBinContent(1, 1); // this ME is never touched -
197  // it just tells you how the merging is doing.
198 
200  bool b = e.getByToken(trigResultsSource_, hltResults);
201  if ( !b ) {
202  Labels l;
203  labelsForToken(trigResultsSource_, l);
204 
205  edm::LogInfo("HLTScalers") << "getByLabel for TriggerResults failed"
206  << " with label " << l.module;
207  return;
208  }
209  int npath = hltResults->size();
210  unsigned int nPD = pairPDPaths_.size();
212 
213  const edm::TriggerNames& trigNames = e.triggerNames(*hltResults);
214  // for some reason this doesn't appear to work on the first event sometimes
215  if (!sentPaths_) {
216  const edm::TriggerNames& names = e.triggerNames(*hltResults);
217 
218  // save path names in DQM-accessible format
219  int q = 0;
220  for (TriggerNames::Strings::const_iterator j = names.triggerNames().begin();
221  j != names.triggerNames().end(); ++j) {
222  LogDebug("HLTScalers") << q << ": " << *j;
223  ++q;
224  scalers_->getTH1()->GetXaxis()->SetBinLabel(q, j->c_str());
225  }
226 
227  for (unsigned int i = 0; i < nPD; i++) {
228  LogDebug("HLTScalers") << i << ": " << pairPDPaths_[i].first << std::endl;
229  scalersPD_->getTH1()->GetXaxis()->SetBinLabel(
230  i + 1, pairPDPaths_[i].first.c_str());
231  }
232 
233  sentPaths_ = true;
234  }
235 
236  bool accept = false;
237  int bx = e.bunchCrossing();
238  for (int i = 0; i < npath; ++i) {
239  // state returns 0 on ready, 1 on accept, 2 on fail, 3 on exception.
240  // these are defined in HLTEnums.h
241  for (unsigned int j = 0; j < hltResults->index(i); ++j) {
242  detailedScalers_->Fill(i, j);
243  }
244  if (hltResults->state(i) == hlt::Pass) {
245  scalers_->Fill(i);
246  scalersN_->Fill(i);
247  hltBxVsPath_->Fill(bx, i);
248  accept = true;
249  for (int j = i + 1; j < npath; ++j) {
250  if (hltResults->state(j) == hlt::Pass) {
251  hltCorrelations_->Fill(i, j); // fill
252  hltCorrelations_->Fill(j, i);
253  }
254  }
255  } else if (hltResults->state(i) == hlt::Exception) {
257  }
258  }
259  if (accept) {
260  hltOverallScaler_->Fill(1.0);
261  hltOverallScalerN_->Fill(1.0);
262  hltBx_->Fill(int(bx));
263  }
264 
265  bool anyGroupPassed = false;
266  for (unsigned int mi = 0; mi < pairPDPaths_.size(); mi++) {
267  bool groupPassed = false;
268 
269  for (unsigned int i = 0; i < pairPDPaths_[mi].second.size(); i++) {
270  // string hltPathName = hist_2d->GetXaxis()->GetBinLabel(i);
271  std::string hltPathName = pairPDPaths_[mi].second[i];
272 
273  // check if this is hlt path name
274  // unsigned int pathByIndex = triggerNames.triggerIndex(hltPathName);
275  unsigned int pathByIndex =
276  trigNames.triggerIndex(pairPDPaths_[mi].second[i]);
277  if (pathByIndex >= hltResults->size()) continue;
278 
279  // check if its L1 passed
280  // comment out below but set groupL1Passed to true always
281  // if(hasL1Passed(hltPathName,triggerNames)) groupL1Passed = true;
282  // groupL1Passed = true;
283 
284  // Fill HLTPassed Matrix and HLTPassFail Matrix
285  // --------------------------------------------------------
286 
287  if (hltResults->accept(pathByIndex)) {
288  groupPassed = true;
289  break;
290  }
291  }
292 
293  if (groupPassed) {
294  scalersPD_->Fill(mi);
295  anyGroupPassed = true;
296  }
297  }
298 
299  if (anyGroupPassed) scalersPD_->Fill(pairPDPaths_.size() - 1);
300 }
#define LogDebug(id)
std::vector< std::pair< std::string, std::vector< std::string > > > pairPDPaths_
Definition: HLTScalers.h:86
void setBinContent(int binx, double content)
set content of bin (1-D)
Definition: hltDiff.cc:290
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
MonitorElement * scalersN_
Definition: HLTScalers.h:91
MonitorElement * detailedScalers_
Definition: HLTScalers.h:94
bool accept() const
Has at least one path accepted the event?
TH1 * getTH1() const
int bunchCrossing() const
Definition: EventBase.h:66
MonitorElement * hltOverallScaler_
Definition: HLTScalers.h:98
MonitorElement * scalers_
Definition: HLTScalers.h:90
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:30
MonitorElement * diagnostic_
Definition: HLTScalers.h:100
Strings const & triggerNames() const
Definition: TriggerNames.cc:24
const std::string names[nVars_]
void Fill(long long x)
U second(std::pair< T, U > const &p)
MonitorElement * hltBxVsPath_
Definition: HLTScalers.h:97
unsigned int triggerIndex(std::string const &name) const
Definition: TriggerNames.cc:32
unsigned int size() const
Get number of paths stored.
unsigned int index(const unsigned int i) const
Get index (slot position) of module giving the decision of the ith path.
MonitorElement * hltCorrelations_
Definition: HLTScalers.h:93
static const char *const trigNames[]
Definition: EcalDumpRaw.cc:74
MonitorElement * scalersException_
Definition: HLTScalers.h:92
MonitorElement * hltOverallScalerN_
Definition: HLTScalers.h:99
double b
Definition: hdecay.h:120
bool sentPaths_
Definition: HLTScalers.h:102
MonitorElement * hltBx_
Definition: HLTScalers.h:97
MonitorElement * nProc_
Definition: HLTScalers.h:95
MonitorElement * scalersPD_
Definition: HLTScalers.h:89
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:301
hlt::HLTState state(const unsigned int i) const
Get status of ith path.
edm::EDGetTokenT< edm::TriggerResults > trigResultsSource_
Definition: HLTScalers.h:87
void HLTScalers::beginLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
)
override

Definition at line 186 of file HLTScalers.cc.

References hltOverallScalerN_, LogDebug, MonitorElement::Reset(), and scalersN_.

187  {
188  LogDebug("HLTScalers") << "Start of luminosity block.";
189  // reset the N guys
190  if (scalersN_) scalersN_->Reset();
192 }
#define LogDebug(id)
MonitorElement * scalersN_
Definition: HLTScalers.h:91
void Reset()
reset ME (ie. contents, errors, etc)
MonitorElement * hltOverallScalerN_
Definition: HLTScalers.h:99
void HLTScalers::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  ,
edm::EventSetup const &   
)
override

Definition at line 140 of file HLTScalers.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::bookInt(), detailedScalers_, diagnostic_, folderName_, hltBx_, hltBxVsPath_, hltConfig_, hltCorrelations_, hltOverallScaler_, hltOverallScalerN_, nLumiBlock_, nProc_, pairPDPaths_, scalers_, scalersException_, scalersN_, scalersPD_, DQMStore::IBooker::setCurrentFolder(), HLTConfigProvider::size(), and AlCaHLTBitMon_QueryRunRegistry::string.

141  {
142  std::string rawdir(folderName_ + "/raw");
143  iBooker.setCurrentFolder(rawdir);
144 
145  nProc_ = iBooker.bookInt("nProcessed");
146  nLumiBlock_ = iBooker.bookInt("nLumiBlock");
147  diagnostic_ = iBooker.book1D("hltMerge", "HLT merging diagnostic", 1, 0.5, 1.5);
148  // fill for ever accepted event
150  iBooker.book1D("hltOverallScaler", "HLT Overall Scaler", 1, 0.5, 1.5);
151  hltOverallScalerN_ = iBooker.book1D("hltOverallScalerN",
152  "Reset HLT Overall Scaler", 1, 0.5, 1.5);
153 
154  // DQM: Previously the number of trigger paths was determined on the first
155  // event, by taking the size of the htlResults to book the histogram.
156  // Now we use the size of the hltConfig instead.
157  int npath = hltConfig_.size();
158  unsigned int nPD = pairPDPaths_.size();
159 
160  // need to get maxModules dynamically
161  int maxModules = 200;
162 
163  scalersPD_ = iBooker.book1D("pdScalers", "PD scalers (stream A)", nPD, -0.5,
164  nPD - 0.5);
166  iBooker.book2D("detailedHltScalers", "HLT Scalers", npath, -0.5,
167  npath - 0.5, maxModules, 0, maxModules - 1);
168  scalers_ =
169  iBooker.book1D("hltScalers", "HLT scalers", npath, -0.5, npath - 0.5);
170  scalersN_ = iBooker.book1D("hltScalersN", "Reset HLT scalers", npath, -0.5,
171  npath - 0.5);
172  scalersException_ = iBooker.book1D("hltExceptions", "HLT Exception scalers",
173  npath, -0.5, npath - 0.5);
175  iBooker.book2D("hltCorrelations", "HLT Scalers", npath, -0.5, npath - 0.5,
176  npath, -0.5, npath - 0.5);
177 
178  // these two belong in top-level
179  iBooker.setCurrentFolder(folderName_);
180  hltBxVsPath_ = iBooker.book2D("hltBxVsPath", "HLT Accept vs Bunch Number",
181  3600, -0.5, 3599.5, npath, -0.5, npath - 0.5);
182  hltBx_ =
183  iBooker.book1D("hltBx", "Bx of HLT Accepted Events ", 3600, -0.5, 3599.5);
184 }
unsigned int size() const
number of trigger paths in trigger table
std::vector< std::pair< std::string, std::vector< std::string > > > pairPDPaths_
Definition: HLTScalers.h:86
MonitorElement * scalersN_
Definition: HLTScalers.h:91
MonitorElement * detailedScalers_
Definition: HLTScalers.h:94
MonitorElement * bookInt(Args &&...args)
Definition: DQMStore.h:104
MonitorElement * hltOverallScaler_
Definition: HLTScalers.h:98
MonitorElement * scalers_
Definition: HLTScalers.h:90
MonitorElement * diagnostic_
Definition: HLTScalers.h:100
MonitorElement * hltBxVsPath_
Definition: HLTScalers.h:97
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
MonitorElement * hltCorrelations_
Definition: HLTScalers.h:93
HLTConfigProvider hltConfig_
Definition: HLTScalers.h:83
MonitorElement * scalersException_
Definition: HLTScalers.h:92
MonitorElement * nLumiBlock_
Definition: HLTScalers.h:96
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:109
MonitorElement * hltOverallScalerN_
Definition: HLTScalers.h:99
std::string folderName_
Definition: HLTScalers.h:84
MonitorElement * hltBx_
Definition: HLTScalers.h:97
MonitorElement * nProc_
Definition: HLTScalers.h:95
MonitorElement * scalersPD_
Definition: HLTScalers.h:89
void HLTScalers::dqmBeginRun ( const edm::Run run,
const edm::EventSetup c 
)
override

Definition at line 104 of file HLTScalers.cc.

References HLTConfigProvider::datasetContent(), hltConfig_, mps_fire::i, edm::RunBase::id(), HLTConfigProvider::init(), LogDebug, pairPDPaths_, processname_, HLTConfigProvider::streamContent(), HLTConfigProvider::streamIndex(), and HLTConfigProvider::streamNames().

104  {
105  LogDebug("HLTScalers") << "HLTScalers::beginRun, run " << run.id();
106 
107  // HLT config does not change within runs!
108  bool changed = false;
109 
110  // clear vector pairPDPaths_
111  pairPDPaths_.clear();
112 
113  if (not hltConfig_.init(run, c, processname_, changed)) {
114  edm::LogError("TrigXMonitor") << "HLTConfigProvider failed to initialize.";
115  } else {
116  // check if trigger name in (new) config
117  // cout << "Available TriggerNames are: " << endl;
118  // hltConfig_.dump("Triggers");
119 
120  if (hltConfig_.streamIndex("A") < hltConfig_.streamNames().size()) {
121  // get hold of PD names and constituent path names
122  const std::vector<std::string>& PD = hltConfig_.streamContent("A");
123 
124  for (unsigned int i = 0; i < PD.size(); i++) {
125  const std::vector<std::string>& datasetPaths =
127  pairPDPaths_.push_back(make_pair(PD[i], datasetPaths));
128  }
129 
130  // push stream A and its PDs
131  pairPDPaths_.push_back(make_pair("A", PD));
132 
133  } else {
134  LogDebug("HLTScalers")
135  << "HLTScalers::beginRun, steamm A not in the HLT menu ";
136  }
137  }
138 }
#define LogDebug(id)
std::vector< std::pair< std::string, std::vector< std::string > > > pairPDPaths_
Definition: HLTScalers.h:86
RunID const & id() const
Definition: RunBase.h:39
std::string processname_
Definition: HLTScalers.h:85
unsigned int streamIndex(const std::string &stream) const
index of stream with name
const std::vector< std::string > & streamNames() const
const std::vector< std::string > & streamContent(unsigned int stream) const
names of datasets in stream with index i
HLTConfigProvider hltConfig_
Definition: HLTScalers.h:83
const std::vector< std::string > & datasetContent(unsigned int dataset) const
names of trigger paths in dataset with index i
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
void HLTScalers::endLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
)
override

DQM Client Diagnostic should be performed here:

Definition at line 302 of file HLTScalers.cc.

References MonitorElement::Fill(), edm::LuminosityBlockBase::id(), LogDebug, edm::LuminosityBlockID::luminosityBlock(), and nLumiBlock_.

303  {
304  // put this in as a first-pass for figuring out the rate
305  // each lumi block is 23 seconds in length
306  nLumiBlock_->Fill(lumiSeg.id().luminosityBlock());
307 
308  LogDebug("HLTScalers") << "End of luminosity block.";
309 }
#define LogDebug(id)
LuminosityBlockID id() const
void Fill(long long x)
MonitorElement * nLumiBlock_
Definition: HLTScalers.h:96
LuminosityBlockNumber_t luminosityBlock() const
void HLTScalers::endRun ( const edm::Run run,
const edm::EventSetup c 
)
override

Definition at line 311 of file HLTScalers.cc.

References edm::RunBase::id(), and LogDebug.

311  {
312  LogDebug("HLTScalers") << "HLTScalers::endRun , run " << run.id();
313 }
#define LogDebug(id)
RunID const & id() const
Definition: RunBase.h:39

Member Data Documentation

int HLTScalers::currentRun_
private

Definition at line 106 of file HLTScalers.h.

MonitorElement* HLTScalers::detailedScalers_
private

Definition at line 94 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTScalers::diagnostic_
private

Definition at line 100 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

std::string HLTScalers::folderName_
private

Definition at line 84 of file HLTScalers.h.

Referenced by bookHistograms().

MonitorElement* HLTScalers::hltBx_
private

Definition at line 97 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

MonitorElement * HLTScalers::hltBxVsPath_
private

Definition at line 97 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

HLTConfigProvider HLTScalers::hltConfig_
private

Definition at line 83 of file HLTScalers.h.

Referenced by bookHistograms(), and dqmBeginRun().

MonitorElement* HLTScalers::hltCorrelations_
private

Definition at line 93 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTScalers::hltOverallScaler_
private

Definition at line 98 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTScalers::hltOverallScalerN_
private

Definition at line 99 of file HLTScalers.h.

Referenced by analyze(), beginLuminosityBlock(), and bookHistograms().

bool HLTScalers::monitorDaemon_
private

Definition at line 102 of file HLTScalers.h.

int HLTScalers::nev_
private

Definition at line 104 of file HLTScalers.h.

Referenced by analyze().

int HLTScalers::nLumi_
private

Definition at line 105 of file HLTScalers.h.

MonitorElement* HLTScalers::nLumiBlock_
private

Definition at line 96 of file HLTScalers.h.

Referenced by bookHistograms(), and endLuminosityBlock().

MonitorElement* HLTScalers::nProc_
private

Definition at line 95 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

std::vector<std::pair<std::string, std::vector<std::string> > > HLTScalers::pairPDPaths_
private

Definition at line 86 of file HLTScalers.h.

Referenced by analyze(), bookHistograms(), and dqmBeginRun().

std::string HLTScalers::processname_
private

Definition at line 85 of file HLTScalers.h.

Referenced by dqmBeginRun().

bool HLTScalers::resetMe_
private

Definition at line 102 of file HLTScalers.h.

MonitorElement* HLTScalers::scalers_
private

Definition at line 90 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTScalers::scalersException_
private

Definition at line 92 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTScalers::scalersN_
private

Definition at line 91 of file HLTScalers.h.

Referenced by analyze(), beginLuminosityBlock(), and bookHistograms().

MonitorElement* HLTScalers::scalersPD_
private

Definition at line 89 of file HLTScalers.h.

Referenced by analyze(), and bookHistograms().

bool HLTScalers::sentPaths_
private

Definition at line 102 of file HLTScalers.h.

Referenced by analyze().

edm::EDGetTokenT<edm::TriggerResults> HLTScalers::trigResultsSource_
private

Definition at line 87 of file HLTScalers.h.

Referenced by analyze().