forked from cms-sw/cmssw
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PrescaleWeightProvider.h
99 lines (71 loc) · 3.33 KB
/
PrescaleWeightProvider.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#ifndef CommonTools_TriggerUtils_PrescaleWeightProvider_h
#define CommonTools_TriggerUtils_PrescaleWeightProvider_h
// -*- C++ -*-
//
// Package: CommonTools/TriggerUtils
// Class: PrescaleWeightProvider
//
/**
\class PrescaleWeightProvider PrescaleWeightProvider.h "CommonTools/TriggerUtils/interface/PrescaleWeightProvider.h"
\brief
This class takes a vector of HLT paths and returns a weight based on their
HLT and L1 prescales. The weight is equal to the lowest combined (L1*HLT) prescale
of the selected paths
\author Aram Avetisyan
*/
#include <memory>
#include <string>
#include <vector>
#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/Run.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/ConsumesCollector.h"
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "HLTrigger/HLTcore/interface/HLTPrescaleProvider.h"
class L1GtTriggerMenuLite;
namespace edm {
class ConsumesCollector;
class Event;
class EventSetup;
class ParameterSet;
class Run;
class TriggerResults;
}
class PrescaleWeightProvider {
bool configured_;
bool init_;
std::unique_ptr<HLTPrescaleProvider> hltPrescaleProvider_;
edm::Handle< L1GtTriggerMenuLite > triggerMenuLite_;
std::vector< std::string > l1SeedPaths_;
// configuration parameters
unsigned verbosity_; // optional (default: 0)
edm::InputTag triggerResultsTag_; // optional (default: "TriggerResults::HLT")
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_;
edm::InputTag l1GtTriggerMenuLiteTag_; // optional (default: "l1GtTriggerMenuLite")
edm::EDGetTokenT< L1GtTriggerMenuLite > l1GtTriggerMenuLiteToken_; // optional (default: "l1GtTriggerMenuLite")
std::vector< std::string > hltPaths_;
public:
// The constructor must be called from the ED module's c'tor
template <typename T>
PrescaleWeightProvider( const edm::ParameterSet & config, edm::ConsumesCollector && iC, T& module );
template <typename T>
PrescaleWeightProvider( const edm::ParameterSet & config, edm::ConsumesCollector & iC, T& module );
~PrescaleWeightProvider() {}
void initRun( const edm::Run & run, const edm::EventSetup & setup ); // to be called from the ED module's beginRun() method
int prescaleWeight ( const edm::Event & event, const edm::EventSetup & setup ); // to be called from the ED module's event loop method
private:
PrescaleWeightProvider( const edm::ParameterSet & config, edm::ConsumesCollector & iC );
void parseL1Seeds( const std::string & l1Seeds );
};
template <typename T>
PrescaleWeightProvider::PrescaleWeightProvider( const edm::ParameterSet & config, edm::ConsumesCollector && iC, T& module ) :
PrescaleWeightProvider( config, iC, module ) {
}
template <typename T>
PrescaleWeightProvider::PrescaleWeightProvider( const edm::ParameterSet & config, edm::ConsumesCollector & iC, T& module ) :
PrescaleWeightProvider( config, iC ) {
hltPrescaleProvider_.reset(new HLTPrescaleProvider(config, iC, module));
}
#endif