43 assert(psfsiTech==psfsiPhys);
44 if ( (errorTech==0) && (errorPhys==0) &&
45 (psfsiTech>=0) && (psfsiPhys>=0) && (psfsiTech==psfsiPhys) ) {
52 <<
" Error in determining HLT prescale set index from L1 data using L1GtUtils: "
53 <<
" Tech/Phys error = " << errorTech <<
"/" << errorPhys
54 <<
" Tech/Phys psfsi = " << psfsiTech <<
"/" << psfsiPhys;
77 std::pair<int,int>
result(std::pair<int,int>(0,0));
90 if (nL1GTSeedModules==0) {
93 }
else if (nL1GTSeedModules==1) {
102 <<
" Error in determining L1T prescale for HLT path: '" << trigger
103 <<
"' with L1T seed: '" << l1tname
104 <<
"' using L1GtUtils: error code = " << l1error <<
"." << std::endl
105 <<
" Note: for this method ('prescaleValues'), only a single L1T name (and not a bit number) is allowed as seed!"
107 <<
" For seeds being complex logical expressions, try the new method 'prescaleValuesInDetail'."<< std::endl;
116 for (
unsigned int i=1;
i!=nL1GTSeedModules; ++
i) {
120 <<
" Error in determining L1T prescale for HLT path: '" << trigger
121 <<
"' has multiple L1GTSeed modules, " << nL1GTSeedModules
122 <<
", with L1 seeds: " <<
dump
123 <<
". (Note: at most one L1GTSeed module is allowed for a proper determination of the L1T prescale!)";
131 std::pair<std::vector<std::pair<std::string,int> >,
int>
136 std::pair<std::vector<std::pair<std::string,int> >,
int>
result;
137 result.first.clear();
150 if (nL1GTSeedModules==0) {
152 result.first.clear();
153 }
else if (nL1GTSeedModules==1) {
157 l1Logical.logicalExpressionRunUpdate(iEvent.
getRun(),iSetup,l1tname);
158 const std::vector<std::pair<std::string, int> >& errorCodes(l1Logical.errorCodes(iEvent));
159 result.first = l1Logical.prescaleFactors();
160 int l1error(l1Logical.isValid() ? 0 : 1);
161 for (
unsigned int i=0;
i<errorCodes.size(); ++
i) {
169 <<
" Error in determining L1T prescales for HLT path: '" << trigger
170 <<
"' with complex L1T seed: '" << l1tname
171 <<
"' using L1GtUtils: " << std::endl
172 <<
" isValid=" << l1Logical.isValid()
173 <<
" l1tname/error/prescale " << errorCodes.size()
175 for (
unsigned int i=0;
i< errorCodes.size(); ++
i) {
176 message <<
" " <<
i <<
":" << errorCodes[
i].first <<
"/" << errorCodes[
i].second <<
"/"
177 << result.first[
i].second;
182 result.first.clear();
189 for (
unsigned int i=1;
i!=nL1GTSeedModules; ++
i) {
193 <<
" Error in determining L1T prescale for HLT path: '" << trigger
194 <<
"' has multiple L1GTSeed modules, " << nL1GTSeedModules
195 <<
", with L1 seeds: " <<
dump
196 <<
". (Note: at most one L1GTSeed module is allowed for a proper determination of the L1T prescale!)";
198 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