64 map<string,string>
out;
73 const vector<int>& refPrescaleFactors = (*m_prescaleFactorsAlgoTrig).at(IndexRefPrescaleFactors);
77 map<string,SingleObjectCondition> myConditions;
79 for(
unsigned int a=0 ;
a<vMuonConditions->size() ;
a++){
80 for(
unsigned int b=0 ;
b<(*vMuonConditions)[
a].size() ;
b++){
97 myConditions[MuonCondition->
condName()] = tCondition;
103 for(
unsigned int a=0 ;
a<vCaloConditions->size() ;
a++){
104 for(
unsigned int b=0 ;
b<(*vCaloConditions)[
a].size() ;
b++){
120 myConditions[CaloCondition->
condName()] = tCondition;
126 for(
unsigned int a=0 ;
a<vEnergySumConditions->size() ;
a++){
127 for(
unsigned int b=0 ;
b<(*vEnergySumConditions)[
a].size() ;
b++){
135 ) && EnergySumCondition->
nrObjects() == 1){
147 myConditions[EnergySumCondition->
condName()] = tCondition;
153 for (
CItAlgo iAlgo = theAlgoMap->begin(); iAlgo!=theAlgoMap->end(); ++iAlgo){
157 bool algoIsValid =
true;
158 unsigned int maxThreshold = 0;
159 int tAlgoMask = myUtils.triggerMask(iAlgo->first,error);
161 unsigned int tQuality = 0;
162 unsigned int tEtaRange = 0;
166 bool isNoIsoEG =
false;
167 bool isIsoEG =
false;
168 bool isCenJet =
false;
169 bool isForJet =
false;
170 bool isTauJet =
false;
195 map<string,SingleObjectCondition>::const_iterator ciCond = myConditions.find(AlgoCondition);
199 if(ciCond == myConditions.end()){
207 if(maxThreshold < (*ciCond).second.threshold){
208 maxThreshold = (*ciCond).second.threshold;
209 tObject = (*ciCond).second.object;
210 tQuality = (*ciCond).second.quality;
211 tEtaRange = (*ciCond).second.etaRange;
214 if ((*ciCond).second.object ==
Mu) {isMu =
true;}
215 else if((*ciCond).second.object ==
NoIsoEG){isNoIsoEG =
true;}
216 else if((*ciCond).second.object ==
IsoEG) {isIsoEG =
true;}
217 else if((*ciCond).second.object ==
CenJet) {isCenJet =
true;}
218 else if((*ciCond).second.object ==
ForJet) {isForJet =
true;}
219 else if((*ciCond).second.object ==
TauJet) {isTauJet =
true;}
220 else if((*ciCond).second.object ==
ETM) {isETM =
true;}
221 else if((*ciCond).second.object ==
ETT) {isETT =
true;}
222 else if((*ciCond).second.object ==
HTT) {isHTT =
true;}
223 else if((*ciCond).second.object ==
HTM) {isHTM =
true;}
233 tTrigger.
alias = iAlgo->first;
234 tTrigger.
bit = (iAlgo->second).algoBitNumber();
235 tTrigger.
prescale = refPrescaleFactors[tTrigger.
bit];
237 tTrigger.
object = tObject;
244 if(isNoIsoEG){nCond++;}
245 if(isIsoEG) {nCond++;}
246 if(isCenJet) {nCond++;}
247 if(isForJet) {nCond++;}
248 if(isTauJet) {nCond++;}
256 if (nCond==1 && isMu ==
true){
260 else if(nCond==2 && isNoIsoEG==
true && isIsoEG ==
true) {
m_vTrigEG .push_back(tTrigger);}
261 else if(nCond==1 && isIsoEG ==
true) {
m_vTrigIsoEG .push_back(tTrigger);}
262 else if(nCond==3 && isCenJet ==
true && isForJet==
true && isTauJet==
true){
m_vTrigJet .push_back(tTrigger);}
263 else if(nCond==1 && isCenJet ==
true) {
m_vTrigCenJet.push_back(tTrigger);}
264 else if(nCond==1 && isForJet ==
true) {
m_vTrigForJet.push_back(tTrigger);}
265 else if(nCond==1 && isTauJet ==
true) {
m_vTrigTauJet.push_back(tTrigger);}
266 else if(nCond==1 && isETT ==
true) {
m_vTrigETT .push_back(tTrigger);}
267 else if(nCond==1 && isETM ==
true) {
m_vTrigETM .push_back(tTrigger);}
268 else if(nCond==1 && isHTT ==
true) {
m_vTrigHTT .push_back(tTrigger);}
269 else if(nCond==1 && isHTM ==
true) {
m_vTrigHTM .push_back(tTrigger);}
281 string selTrigMu =
"Undefined";
282 string selTrigEG =
"Undefined";
283 string selTrigIsoEG =
"Undefined";
284 string selTrigJet =
"Undefined";
285 string selTrigCenJet =
"Undefined";
286 string selTrigForJet =
"Undefined";
287 string selTrigTauJet =
"Undefined";
288 string selTrigETT =
"Undefined";
289 string selTrigETM =
"Undefined";
290 string selTrigHTT =
"Undefined";
291 string selTrigHTM =
"Undefined";
305 auto check = [](
const map<string,bool>& cats,
const char*
key) ->
bool {
306 auto it = cats.find(
key);
307 if (it != cats.end())
313 if (
check(iCategories,
"Mu" )) {out[
"Mu"] = selTrigMu;}
314 if (
check(iCategories,
"EG" )) {out[
"EG"] = selTrigEG;}
315 if (
check(iCategories,
"IsoEG" )) {out[
"IsoEG"] = selTrigIsoEG;}
316 if (
check(iCategories,
"Jet" )) {out[
"Jet"] = selTrigJet;}
317 if (
check(iCategories,
"CenJet")) {out[
"CenJet"] = selTrigCenJet;}
318 if (
check(iCategories,
"ForJet")) {out[
"ForJet"] = selTrigForJet;}
319 if (
check(iCategories,
"TauJet")) {out[
"TauJet"] = selTrigTauJet;}
320 if (
check(iCategories,
"ETT" )) {out[
"ETT"] = selTrigETT;}
321 if (
check(iCategories,
"ETM" )) {out[
"ETM"] = selTrigETM;}
322 if (
check(iCategories,
"HTT" )) {out[
"HTT"] = selTrigHTT;}
323 if (
check(iCategories,
"HTM" )) {out[
"HTM"] = selTrigHTM;}
L1GtConditionCategory conditionCategory
const int nrObjects() const
get number of trigger objects
const std::string & condName() const
get / set condition name
L1GtConditionType conditionType
const std::vector< L1GtObject > & objectType() const
get / set the trigger object type(s) in the condition
const std::vector< L1GtLogicParser::TokenRPN > & algoRpnVector() const
return the RPN vector
const std::vector< ObjectParameter > * objectParameter() const
const L1GtConditionType & condType() const
get / set the type of the condition (1s, etc)
const std::vector< ObjectParameter > * objectParameter() const
const L1GtConditionCategory & condCategory() const
get / set the category of the condition
const std::vector< ObjectParameter > * objectParameter() const