55 map<string, string>
out;
64 const vector<int>& refPrescaleFactors = (*m_prescaleFactorsAlgoTrig).at(IndexRefPrescaleFactors);
68 map<string, SingleObjectCondition> myConditions;
70 for (
unsigned int a = 0;
a < vMuonConditions->size();
a++) {
71 for (
unsigned int b = 0;
b < (*vMuonConditions)[
a].size();
b++) {
86 myConditions[MuonCondition->
condName()] = tCondition;
91 for (
unsigned int a = 0;
a < vCaloConditions->size();
a++) {
92 for (
unsigned int b = 0;
b < (*vCaloConditions)[
a].size();
b++) {
111 for (
unsigned int a = 0;
a < vEnergySumConditions->size();
a++) {
112 for (
unsigned int b = 0;
b < (*vEnergySumConditions)[
a].size();
b++) {
133 for (
CItAlgo iAlgo = theAlgoMap->begin(); iAlgo != theAlgoMap->end(); ++iAlgo) {
136 bool algoIsValid =
true;
138 int tAlgoMask = myUtils.triggerMask(iAlgo->first,
error);
140 unsigned int tQuality = 0;
141 unsigned int tEtaRange = 0;
145 bool isNoIsoEG =
false;
146 bool isIsoEG =
false;
147 bool isCenJet =
false;
148 bool isForJet =
false;
149 bool isTauJet =
false;
156 if (tAlgoMask != 0) {
169 map<string, SingleObjectCondition>::const_iterator ciCond = myConditions.find(AlgoCondition);
173 if (ciCond == myConditions.end()) {
182 tObject = (*ciCond).second.object;
183 tQuality = (*ciCond).second.quality;
184 tEtaRange = (*ciCond).second.etaRange;
187 if ((*ciCond).second.object ==
Mu) {
189 }
else if ((*ciCond).second.object ==
NoIsoEG) {
191 }
else if ((*ciCond).second.object ==
IsoEG) {
193 }
else if ((*ciCond).second.object ==
CenJet) {
195 }
else if ((*ciCond).second.object ==
ForJet) {
197 }
else if ((*ciCond).second.object ==
TauJet) {
199 }
else if ((*ciCond).second.object ==
ETM) {
201 }
else if ((*ciCond).second.object ==
ETT) {
203 }
else if ((*ciCond).second.object ==
HTT) {
205 }
else if ((*ciCond).second.object ==
HTM) {
215 tTrigger.
alias = iAlgo->first;
216 tTrigger.
bit = (iAlgo->second).algoBitNumber();
217 tTrigger.
prescale = refPrescaleFactors[tTrigger.
bit];
219 tTrigger.
object = tObject;
258 if (nCond == 1 && isMu ==
true) {
261 }
else if (nCond == 2 && isNoIsoEG ==
true && isIsoEG ==
true) {
263 }
else if (nCond == 1 && isIsoEG ==
true) {
265 }
else if (nCond == 3 && isCenJet ==
true && isForJet ==
true && isTauJet ==
true) {
267 }
else if (nCond == 1 && isCenJet ==
true) {
269 }
else if (nCond == 1 && isForJet ==
true) {
271 }
else if (nCond == 1 && isTauJet ==
true) {
273 }
else if (nCond == 1 && isETT ==
true) {
275 }
else if (nCond == 1 && isETM ==
true) {
277 }
else if (nCond == 1 && isHTT ==
true) {
279 }
else if (nCond == 1 && isHTM ==
true) {
292 string selTrigMu =
"Undefined";
293 string selTrigEG =
"Undefined";
294 string selTrigIsoEG =
"Undefined";
295 string selTrigJet =
"Undefined";
296 string selTrigCenJet =
"Undefined";
297 string selTrigForJet =
"Undefined";
298 string selTrigTauJet =
"Undefined";
299 string selTrigETT =
"Undefined";
300 string selTrigETM =
"Undefined";
301 string selTrigHTT =
"Undefined";
302 string selTrigHTM =
"Undefined";
349 auto check = [](
const map<string, bool>& cats,
const char*
key) ->
bool {
350 auto it = cats.find(
key);
351 if (
it != cats.end())
357 if (
check(iCategories,
"Mu")) {
358 out[
"Mu"] = selTrigMu;
360 if (
check(iCategories,
"EG")) {
361 out[
"EG"] = selTrigEG;
363 if (
check(iCategories,
"IsoEG")) {
364 out[
"IsoEG"] = selTrigIsoEG;
366 if (
check(iCategories,
"Jet")) {
367 out[
"Jet"] = selTrigJet;
369 if (
check(iCategories,
"CenJet")) {
370 out[
"CenJet"] = selTrigCenJet;
372 if (
check(iCategories,
"ForJet")) {
373 out[
"ForJet"] = selTrigForJet;
375 if (
check(iCategories,
"TauJet")) {
376 out[
"TauJet"] = selTrigTauJet;
378 if (
check(iCategories,
"ETT")) {
379 out[
"ETT"] = selTrigETT;
381 if (
check(iCategories,
"ETM")) {
382 out[
"ETM"] = selTrigETM;
384 if (
check(iCategories,
"HTT")) {
385 out[
"HTT"] = selTrigHTT;
387 if (
check(iCategories,
"HTM")) {
388 out[
"HTM"] = selTrigHTM;
L1GtConditionCategory conditionCategory
const L1GtConditionCategory & condCategory() const
get / set the category of the condition
L1GtConditionType conditionType
const std::vector< L1GtLogicParser::TokenRPN > & algoRpnVector() const
return the RPN vector
const std::string & condName() const
get / set condition name
key
prepare the HTCondor submission files and eventually submit them
const std::vector< L1GtObject > & objectType() const
get / set the trigger object type(s) in the condition
const std::vector< ObjectParameter > * objectParameter() const
const L1GtConditionType & condType() const
get / set the type of the condition (1s, etc)
const int nrObjects() const
get number of trigger objects