37 assert(psfsiTech==psfsiPhys);
38 if ( (errorTech==0) && (errorPhys==0) &&
39 (psfsiTech>=0) && (psfsiPhys>=0) && (psfsiTech==psfsiPhys) ) {
44 <<
" Error in determining HLT prescale set index from L1 data using L1GtUtils: "
45 <<
" Tech/Phys error = " << errorTech <<
"/" << errorPhys
46 <<
" Tech/Phys psfsi = " << psfsiTech <<
"/" << psfsiPhys;
68 std::pair<int,int>
result(std::pair<int,int>(0,0));
81 if (nL1GTSeedModules==0) {
84 }
else if (nL1GTSeedModules==1) {
91 <<
" Error in determining L1T prescale for HLT path: '" << trigger
92 <<
"' with L1T seed: '" << l1tname
93 <<
"' using L1GtUtils: error code = " << l1error <<
"." << std::endl
94 <<
" Note: for this method ('prescaleValues'), only a single L1T name (and not a bit number) is allowed as seed!"
96 <<
" For seeds being complex logical expressions, try the new method 'prescaleValuesInDetail'."<< std::endl;
102 for (
unsigned int i=1;
i!=nL1GTSeedModules; ++
i) {
106 <<
" Error in determining L1T prescale for HLT path: '" << trigger
107 <<
"' has multiple L1GTSeed modules, " << nL1GTSeedModules
108 <<
", with L1 seeds: " <<
dump
109 <<
". (Note: at most one L1GTSeed module is allowed for a proper determination of the L1T prescale!)";
116 std::pair<std::vector<std::pair<std::string,int> >,
int>
121 std::pair<std::vector<std::pair<std::string,int> >,
int>
result;
122 result.first.clear();
135 if (nL1GTSeedModules==0) {
137 result.first.clear();
138 }
else if (nL1GTSeedModules==1) {
142 l1Logical.logicalExpressionRunUpdate(iEvent.
getRun(),iSetup,l1tname);
143 const std::vector<std::pair<std::string, int> >& errorCodes(l1Logical.errorCodes(iEvent));
144 result.first = l1Logical.prescaleFactors();
145 int l1error(l1Logical.isValid() ? 0 : 1);
146 for (
unsigned int i=0;
i<errorCodes.size(); ++
i) {
152 <<
" Error in determining L1T prescales for HLT path: '" << trigger
153 <<
"' with complex L1T seed: '" << l1tname
154 <<
"' using L1GtUtils: " << std::endl
155 <<
" isValid=" << l1Logical.isValid()
156 <<
" l1tname/error/prescale " << errorCodes.size()
158 for (
unsigned int i=0;
i< errorCodes.size(); ++
i) {
159 message <<
" " <<
i <<
":" << errorCodes[
i].first <<
"/" << errorCodes[
i].second <<
"/"
160 << result.first[
i].second;
164 result.first.clear();
169 for (
unsigned int i=1;
i!=nL1GTSeedModules; ++
i) {
173 <<
" Error in determining L1T prescale for HLT path: '" << trigger
174 <<
"' has multiple L1GTSeed modules, " << nL1GTSeedModules
175 <<
", with L1 seeds: " <<
dump
176 <<
". (Note: at most one L1GTSeed module is allowed for a proper determination of the L1T prescale!)";
177 result.first.clear();
HLTConfigProvider hltConfigProvider_
std::pair< std::vector< std::pair< std::string, int > >, int > prescaleValuesInDetail(const edm::Event &iEvent, const edm::EventSetup &iSetup, const std::string &trigger)
const int prescaleFactorSetIndex(const edm::Event &iEvent, const TriggerCategory &trigCategory, int &errorCode) const
const std::vector< std::vector< std::pair< bool, std::string > > > & hltL1GTSeeds() const
Run const & getRun() const
U second(std::pair< T, U > const &p)
unsigned int prescaleValue(unsigned int set, const std::string &trigger) const
HLT prescale value in specific prescale set for a specific trigger path.
static const bool useL1GtTriggerMenuLite(false)
Abs< T >::type abs(const T &t)
int prescaleSet(const edm::Event &iEvent, const edm::EventSetup &iSetup)
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
std::pair< int, int > prescaleValues(const edm::Event &iEvent, const edm::EventSetup &iSetup, const std::string &trigger)
Combined L1T (pair.first) and HLT (pair.second) prescales per HLT path.
void getL1GtRunCache(const edm::Run &, const edm::EventSetup &, const bool, const bool)
get all the run-constant quantities for L1 trigger and cache them
unsigned int prescaleValue(const edm::Event &iEvent, const edm::EventSetup &iSetup, const std::string &trigger)
combining the two methods above
static const bool useL1EventSetup(true)
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
const int prescaleFactor(const edm::Event &iEvent, const std::string &nameAlgoTechTrig, int &errorCode) const
return prescale factor for a given algorithm or technical trigger