28 #include <boost/cstdint.hpp>
40 #include "L1Trigger/L1TGlobal/src/L1TMenuEditor/L1TriggerMenu.hxx"
42 #include "tmEventSetup/tmEventSetup.hh"
43 #include "tmEventSetup/esTriggerMenu.hh"
44 #include "tmEventSetup/esAlgorithm.hh"
45 #include "tmEventSetup/esCondition.hh"
46 #include "tmEventSetup/esObject.hh"
47 #include "tmEventSetup/esCut.hh"
48 #include "tmEventSetup/esScale.hh"
49 #include "tmGrammar/Algorithm.hh"
56 m_triggerMenuName(
"NULL"), m_triggerMenuImplementation(
"NULL"), m_scaleDbKey(
"NULL")
75 const unsigned int& numberConditionChipsValue) {
77 m_numberConditionChips = numberConditionChipsValue;
84 m_pinsOnConditionChip = pinsOnConditionChipValue;
91 const std::vector<int>& orderConditionChipValue) {
93 m_orderConditionChip = orderConditionChipValue;
99 const unsigned int& numberPhysTriggersValue) {
101 m_numberPhysTriggers = numberPhysTriggersValue;
118 m_conditionMap = condMap;
123 m_triggerMenuInterface = menuInterface;
127 m_triggerMenuName = menuName;
131 m_triggerMenuImplementation = menuImplementation;
136 m_scaleDbKey = scaleKey;
141 const std::vector<std::vector<MuonTemplate> >& vecMuonTempl) {
143 m_vecMuonTemplate = vecMuonTempl;
147 const std::vector<std::vector<CaloTemplate> >& vecCaloTempl) {
149 m_vecCaloTemplate = vecCaloTempl;
153 const std::vector<std::vector<EnergySumTemplate> >& vecEnergySumTempl) {
155 m_vecEnergySumTemplate = vecEnergySumTempl;
161 const std::vector<std::vector<ExternalTemplate> >& vecExternalTempl) {
163 m_vecExternalTemplate = vecExternalTempl;
168 const std::vector<std::vector<CorrelationTemplate> >& vecCorrelationTempl) {
170 m_vecCorrelationTemplate = vecCorrelationTempl;
176 const std::vector<std::vector<MuonTemplate> >& corMuonTempl) {
178 m_corMuonTemplate = corMuonTempl;
182 const std::vector<std::vector<CaloTemplate> >& corCaloTempl) {
184 m_corCaloTemplate = corCaloTempl;
188 const std::vector<std::vector<EnergySumTemplate> >& corEnergySumTempl) {
190 m_corEnergySumTemplate = corEnergySumTempl;
198 m_algorithmMap = algoMap;
203 m_algorithmAliasMap = algoMap;
220 XERCES_CPP_NAMESPACE_USE
224 m_conditionMap.resize(m_numberConditionChips);
226 m_vecMuonTemplate.resize(m_numberConditionChips);
227 m_vecCaloTemplate.resize(m_numberConditionChips);
228 m_vecEnergySumTemplate.resize(m_numberConditionChips);
229 m_vecExternalTemplate.resize(m_numberConditionChips);
231 m_vecCorrelationTemplate.resize(m_numberConditionChips);
232 m_corMuonTemplate.resize(m_numberConditionChips);
233 m_corCaloTemplate.resize(m_numberConditionChips);
234 m_corEnergySumTemplate.resize(m_numberConditionChips);
241 m_triggerMenuName = defXmlFile;
242 size_t xmlPos = m_triggerMenuName.find_last_of(
"/");
243 m_triggerMenuName.erase(m_triggerMenuName.begin(), m_triggerMenuName.begin()
246 xmlPos = m_triggerMenuName.find_last_of(
".");
247 m_triggerMenuName.erase(m_triggerMenuName.begin() + xmlPos, m_triggerMenuName.end());
252 std::auto_ptr<l1t::L1TriggerMenu> tm(l1t::l1TriggerMenu(defXmlFile));
254 LogTrace(
"TriggerMenuXmlParser") <<
"\nOpening XML-File: \n " << defXmlFile << std::endl;
256 l1t::ConditionList conditions = tm->conditions();
274 m_conditionMap.resize(m_numberConditionChips);
276 m_vecMuonTemplate.resize(m_numberConditionChips);
277 m_vecCaloTemplate.resize(m_numberConditionChips);
278 m_vecEnergySumTemplate.resize(m_numberConditionChips);
279 m_vecExternalTemplate.resize(m_numberConditionChips);
281 m_vecCorrelationTemplate.resize(m_numberConditionChips);
282 m_corMuonTemplate.resize(m_numberConditionChips);
283 m_corCaloTemplate.resize(m_numberConditionChips);
284 m_corEnergySumTemplate.resize(m_numberConditionChips);
290 m_triggerMenuName = defXmlFile;
291 size_t xmlPos = m_triggerMenuName.find_last_of(
"/");
292 m_triggerMenuName.erase(m_triggerMenuName.begin(), m_triggerMenuName.begin()
295 xmlPos = m_triggerMenuName.find_last_of(
".");
296 m_triggerMenuName.erase(m_triggerMenuName.begin() + xmlPos, m_triggerMenuName.end());
303 LogDebug(
"TriggerMenuXmlParser") <<
"\nOpening XML-File V2: \n " << defXmlFile << std::endl;
305 using namespace tmeventsetup;
306 using namespace Algorithm;
308 const esTriggerMenu*
menu = tmeventsetup::getTriggerMenu(defXmlFile);
312 m_triggerMenuDescription =
menu->getComment();
313 m_triggerMenuDate =
menu->getDatetime();
314 m_triggerMenuImplementation =
menu->getFirmwareUuid();
315 m_triggerMenuName =
menu->getName();
316 m_triggerMenuInterface =
menu->getVersion();
318 const std::map<std::string, esAlgorithm>& algoMap =
menu->getAlgorithmMap();
319 const std::map<std::string, esCondition>& condMap =
menu->getConditionMap();
320 const std::map<std::string, esScale>& scaleMap =
menu->getScaleMap();
323 m_gtScales.setScalesName(
menu->getScaleSetName() );
324 parseScales(scaleMap);
328 for (std::map<std::string, esAlgorithm>::const_iterator cit = algoMap.begin();
329 cit != algoMap.end(); cit++)
335 const esAlgorithm&
algo = cit->second;
338 parseAlgorithmV2(algo,chipNr);
341 const std::vector<std::string>& rpn_vec = algo.getRpnVector();
342 for (
size_t ii = 0;
ii < rpn_vec.size();
ii++)
345 if (isGate(token))
continue;
347 const esCondition& condition = condMap.find(token)->second;
350 if ((m_conditionMap[chipNr]).
count(condition.getName()) == 0) {
353 if(condition.getType() == esConditionType::SingleEgamma ||
354 condition.getType() == esConditionType::DoubleEgamma ||
355 condition.getType() == esConditionType::TripleEgamma ||
356 condition.getType() == esConditionType::QuadEgamma ||
357 condition.getType() == esConditionType::SingleTau ||
358 condition.getType() == esConditionType::DoubleTau ||
359 condition.getType() == esConditionType::TripleTau ||
360 condition.getType() == esConditionType::QuadTau ||
361 condition.getType() == esConditionType::SingleJet ||
362 condition.getType() == esConditionType::DoubleJet ||
363 condition.getType() == esConditionType::TripleJet ||
364 condition.getType() == esConditionType::QuadJet )
366 parseCaloV2(condition,chipNr,
false);
369 }
else if(condition.getType() == esConditionType::TotalEt ||
370 condition.getType() == esConditionType::TotalHt ||
371 condition.getType() == esConditionType::MissingEt ||
372 condition.getType() == esConditionType::MissingHt )
374 parseEnergySumV2(condition,chipNr,
false);
379 condition.getType() == esConditionType::TripleMuon ||
380 condition.getType() == esConditionType::QuadMuon )
382 parseMuonV2(condition,chipNr,
false);
386 }
else if(condition.getType() == esConditionType::MuonMuonCorrelation ||
387 condition.getType() == esConditionType::MuonEsumCorrelation ||
388 condition.getType() == esConditionType::CaloMuonCorrelation ||
389 condition.getType() == esConditionType::CaloCaloCorrelation ||
390 condition.getType() == esConditionType::CaloEsumCorrelation ||
393 parseCorrelationV2(condition,chipNr);
396 }
else if(condition.getType() == esConditionType::Externals )
398 parseExternalV2(condition,chipNr);
417 m_triggerMenuInterfaceDate = val;
423 m_triggerMenuInterfaceAuthor = val;
429 m_triggerMenuInterfaceDescription = val;
436 m_triggerMenuDate = val;
442 m_triggerMenuAuthor = val;
448 m_triggerMenuDescription = val;
454 m_algorithmImplementation = val;
473 XERCES_CPP_NAMESPACE_USE
477 XMLPlatformUtils::Initialize();
479 catch (
const XMLException& toCatch) {
483 <<
"Error during Xerces-c initialization! :"
484 << message << std::endl;
490 XercesDOMParser*
parser =
new XercesDOMParser();
491 parser->setValidationScheme(XercesDOMParser::Val_Always);
492 parser->setDoNamespaces(
false);
494 if (m_xmlErrHandler == 0) {
495 m_xmlErrHandler = (ErrorHandler*)
new HandlerBase();
500 parser->setErrorHandler(m_xmlErrHandler);
504 parser->parse(xmlFile.c_str());
506 catch(
const XMLException &toCatch) {
510 <<
"Exception while parsing XML: \n"
511 << message << std::endl;
515 delete m_xmlErrHandler;
519 catch (
const DOMException &toCatch) {
523 <<
"DOM-Exception while parsing XML: \n"
524 << message << std::endl;
528 delete m_xmlErrHandler;
535 <<
"Unexpected Exception while parsing XML!"
539 delete m_xmlErrHandler;
549 XERCES_CPP_NAMESPACE::DOMNode* startChild,
const std::string& tagName,
bool beginOnly,
552 XERCES_CPP_NAMESPACE_USE
556 DOMNode *n1 = startChild;
561 if ( !tagName.empty() ) {
566 while (XMLString::compareIString(nodeName, tagName.c_str())) {
569 n1 = n1->getNextSibling();
579 while (XMLString::compareNIString(nodeName, tagName.c_str(), tagName.length())) {
581 n1 = n1->getNextSibling();
588 if (n1 != 0 && rest != 0) {
589 *rest =
std::string(nodeName).substr(tagName.length(), strlen(nodeName) - tagName.length());
594 while (n1->getNodeType() != DOMNode::ELEMENT_NODE) {
595 n1 = n1->getNextSibling();
601 if (n1 != 0 && rest != 0) {
625 XERCES_CPP_NAMESPACE_USE
630 DOMNamedNodeMap* attributes = node->getAttributes();
631 if (attributes == 0) {
637 DOMNode* attribNode = attributes->getNamedItem(attrName);
640 if (attribNode == 0) {
661 XERCES_CPP_NAMESPACE_USE
670 const XMLCh* retXmlCh = n1->getTextContent();
676 XMLString::trim(retCstr);
698 static const std::string valid_hex_start(
"0123456789ABCDEFabcdef");
701 static const std::string valid_hex_end(
"0123456789ABCDEFabcdef");
706 unsigned int hexStart = tempStr.find_first_of(valid_hex_start);
707 unsigned int hexEnd = tempStr.find_first_not_of(valid_hex_end, hexStart);
709 if (hexStart == hexEnd) {
711 LogDebug(
"TriggerMenuXmlParser") <<
"No hex value found in: " << tempStr << std::endl;
716 tempStr = tempStr.substr(hexStart, hexEnd - hexStart);
718 if (tempStr.empty() ) {
720 LogDebug(
"TriggerMenuXmlParser") <<
"Empty value in " << __PRETTY_FUNCTION__
729 if (tempStr.length() > 16) {
730 tempStrL = tempStr.substr(tempStr.length()-16, 16);
731 tempStrH = tempStr.substr(0, tempStr.length()-16);
739 char* endPtr = (
char*) tempStrL.c_str();
744 LogDebug(
"TriggerMenuXmlParser") <<
"Unable to convert " << tempStr <<
" to hex."
751 endPtr = (
char*) tempStrH.c_str();
756 LogDebug(
"TriggerMenuXmlParser") <<
"Unable to convert " << tempStr <<
" to hex."
783 LogDebug(
"TriggerMenuXmlParser") <<
"node == 0 in " << __PRETTY_FUNCTION__ << std::endl;
791 if ( !hexString2UInt128(tempStr, tempUIntL, tempUIntH) ) {
807 if ( !hexString2UInt128(tempStr, tempUIntL, tempUIntH) ) {
834 if ( !getXMLHexTextValue128Old(node, tempUInt, dummyH) ) {
839 edm::LogError(
"TriggerMenuXmlParser") <<
"Too large hex-value!" << std::endl;
854 if ( !getXMLHexTextValue128( childName, tempUInt, dummyH) ) {
859 edm::LogError(
"TriggerMenuXmlParser") <<
"Too large hex-value!" << std::endl;
881 XERCES_CPP_NAMESPACE_USE
890 if ( !hexString2UInt128(maxString, maxBitsL, maxBitsH) ) {
905 while (maxBitsL != 0) {
907 if ( (maxBitsL & 1) == 0) {
910 <<
" Confused by not continous set bits for max value " << maxString
920 if ( (maxBitsH != 0) && (counter != 64)) {
923 <<
" Confused by not continous set bits for max value " << maxString
929 while (maxBitsH != 0) {
931 if ( (maxBitsH & 1) == 0) {
934 <<
" Confused by not continous set bits for max value " << maxString
962 const std::string& childName,
unsigned int num, std::vector<boost::uint64_t>& dst) {
964 XERCES_CPP_NAMESPACE_USE
969 <<
"node == 0 in " << __PRETTY_FUNCTION__
975 DOMNode* n1 = findXMLChild(node->getFirstChild(), childName);
980 LogDebug(
"TriggerMenuXmlParser") <<
"Child of condition not found ( " << childName
995 n1 = findXMLChild(n1->getFirstChild(), m_xmlTagValue);
996 for (
unsigned int i = 0;
i <
num;
i++) {
999 LogDebug(
"TriggerMenuXmlParser") <<
"Not enough values in condition child ( "
1000 << childName <<
")" << std::endl;
1005 if ( !getXMLHexTextValueOld(n1, dst[
i]) ) {
1007 edm::LogError(
"TriggerMenuXmlParser") <<
"Error converting condition child ( "
1008 << childName <<
") value." << std::endl;
1013 n1 = findXMLChild(n1->getNextSibling(), m_xmlTagValue);
1028 XERCES_CPP_NAMESPACE_USE
1034 if (m_xmlErrHandler != 0) {
1035 delete m_xmlErrHandler;
1036 m_xmlErrHandler = 0;
1039 XMLPlatformUtils::Terminate();
1058 XERCES_CPP_NAMESPACE_USE
1060 DOMDocument* doc = parser->getDocument();
1061 DOMNode* n1 = doc->getFirstChild();
1065 edm::LogError(
"TriggerMenuXmlParser") <<
"Error: Found no XML child" << std::endl;
1071 n1 = findXMLChild(n1, m_xmlTagVme);
1074 edm::LogError(
"TriggerMenuXmlParser") <<
"Error: No vme tag found." << std::endl;
1078 n1 = n1->getFirstChild();
1080 unsigned int chipCounter = 0;
1082 while (chipCounter < m_numberConditionChips) {
1084 n1 = findXMLChild(n1, m_xmlTagChip,
true);
1095 n1 = n1->getNextSibling();
1111 for (std::vector<ConditionMap>::iterator itCondOnChip = m_conditionMap.begin(); itCondOnChip
1112 != m_conditionMap.end(); itCondOnChip++) {
1116 itCondOnChip->clear();
1121 m_algorithmMap.clear();
1131 <<
" Trying to insert condition \"" << cName <<
"\" in the condition map." ;
1134 if ((m_conditionMap[chipNr]).
count(cName) != 0) {
1135 LogTrace(
"TriggerMenuXmlParser") <<
" Condition " << cName
1136 <<
" already exists - not inserted!" << std::endl;
1140 (m_conditionMap[chipNr])[cName] = &cond;
1142 <<
" OK - condition inserted!"
1159 if (m_algorithmMap.count(algName) != 0) {
1160 LogTrace(
"TriggerMenuXmlParser") <<
" Algorithm \"" << algName
1161 <<
"\"already exists in the algorithm map- not inserted!" << std::endl;
1165 if (m_algorithmAliasMap.count(algAlias) != 0) {
1166 LogTrace(
"TriggerMenuXmlParser") <<
" Algorithm alias \"" << algAlias
1167 <<
"\"already exists in the algorithm alias map- not inserted!" << std::endl;
1173 if ((bitNumber < 0) || (bitNumber >= static_cast<int>(m_numberPhysTriggers))) {
1174 LogTrace(
"TriggerMenuXmlParser") <<
" Bit number " << bitNumber
1175 <<
" outside allowed range [0, " << m_numberPhysTriggers
1176 <<
") - algorithm not inserted!" << std::endl;
1181 if (m_algorithmMap.size() >= m_numberPhysTriggers) {
1182 LogTrace(
"TriggerMenuXmlParser") <<
" More than maximum allowed "
1183 << m_numberPhysTriggers <<
" algorithms in the algorithm map - not inserted!"
1189 int chipNr = alg.
algoChipNumber(static_cast<int>(m_numberConditionChips),
1190 static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
1192 if ((chipNr < 0) || (chipNr > static_cast<int>(m_numberConditionChips))) {
1193 LogTrace(
"TriggerMenuXmlParser") <<
" Chip number " << chipNr
1194 <<
" outside allowed range [0, " << m_numberConditionChips
1195 <<
") - algorithm not inserted!" << std::endl;
1200 int outputPin = alg.
algoOutputPin(static_cast<int>(m_numberConditionChips),
1201 static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
1203 if ((outputPin < 0) || (outputPin > static_cast<int>(m_pinsOnConditionChip))) {
1204 LogTrace(
"TriggerMenuXmlParser") <<
" Output pin " << outputPin
1205 <<
" outside allowed range [0, " << m_pinsOnConditionChip
1206 <<
"] - algorithm not inserted!" << std::endl;
1211 for (
CItAlgo itAlgo = m_algorithmMap.begin(); itAlgo != m_algorithmMap.end(); itAlgo++) {
1213 int iPin = (itAlgo->second).algoOutputPin( static_cast<int>(m_numberConditionChips),
1214 static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
1216 int iChip = (itAlgo->second).algoChipNumber(static_cast<int>(m_numberConditionChips),
1217 static_cast<int>(m_pinsOnConditionChip), m_orderConditionChip);
1219 if ( (outputPin == iPin) && (chipNr == iChip)) {
1220 LogTrace(
"TriggerMenuXmlParser") <<
" Output pin " << outputPin
1221 <<
" is the same as for algorithm " << iName
1222 <<
"\n from the same chip number " << chipNr <<
" - algorithm not inserted!"
1230 m_algorithmMap[algName] = alg;
1231 m_algorithmAliasMap[algAlias] = alg;
1312 if (type == m_xmlConditionAttrType1s) {
1316 if (type == m_xmlConditionAttrType2s) {
1320 if (type == m_xmlConditionAttrType3s) {
1324 if (type == m_xmlConditionAttrType4s) {
1328 if (type == m_xmlConditionAttrType2wsc) {
1332 if (type == m_xmlConditionAttrType2cor) {
1350 if (type == m_xmlConditionAttrType1s) {
1354 if (type == m_xmlConditionAttrType2s) {
1358 if (type == m_xmlConditionAttrType3s) {
1362 if (type == m_xmlConditionAttrType4s) {
1366 if (type == m_xmlConditionAttrType2wsc) {
1370 if (type == m_xmlConditionAttrType2cor) {
1387 if (getXMLAttribute(node, m_xmlAttrMode) != m_xmlAttrModeBit) {
1389 edm::LogError(
"TriggerMenuXmlParser") <<
"Invalid mode for single bit" << std::endl;
1395 if (tmpStr ==
"0") {
1398 else if (tmpStr ==
"1") {
1402 edm::LogError(
"TriggerMenuXmlParser") <<
"Bad bit value (" << tmpStr <<
")"
1420 XERCES_CPP_NAMESPACE_USE
1425 <<
"node == 0 in " << __PRETTY_FUNCTION__
1432 DOMNode* n1 = node->getFirstChild();
1433 n1 = findXMLChild(n1, nodeName);
1436 n1 = findXMLChild(n1->getFirstChild(), m_xmlTagGEq);
1439 LogDebug(
"TriggerMenuXmlParser") <<
"No \"greater or equal\" tag found"
1445 return getBitFromNode(n1);
1468 unsigned int num, std::vector<bool>& mipDst, std::vector<bool>& isoEnDst,
1469 std::vector<bool>& isoReqDst) {
1471 XERCES_CPP_NAMESPACE_USE
1478 DOMNode* n1 = findXMLChild(node->getFirstChild(), m_xmlTagPtLowThreshold);
1485 n1 = findXMLChild(n1->getFirstChild(), m_xmlTagValue);
1487 for (
unsigned int i = 0;
i <
num;
i++) {
1495 DOMNode* bitnode = findXMLChild(n1->getFirstChild(), m_xmlTagEnableMip);
1500 int tmpint = getBitFromNode(bitnode);
1505 mipDst[
i] = (tmpint != 0);
1513 bitnode = findXMLChild(n1->getFirstChild(), m_xmlTagEnableIso);
1518 tmpint = getBitFromNode(bitnode);
1523 isoEnDst[
i] = (tmpint != 0);
1530 bitnode = findXMLChild(n1->getFirstChild(), m_xmlTagRequestIso);
1535 tmpint = getBitFromNode(bitnode);
1540 isoReqDst[
i] = (tmpint != 0);
1547 n1 = findXMLChild(n1->getNextSibling(), m_xmlTagValue);
1555 std::stringstream
ss;
1560 std::stringstream
ss;
1561 ss << std::setfill(
'0');
1562 ss << std::setw(4) << date.year() <<
"-" << std::setw(2) << date.month() <<
"-" << std::setw(2) << date.day() <<
"T";
1563 ss << std::setw(2) << date.hours() <<
":" << std::setw(2) << date.minutes() <<
":" << std::setw(2) << date.seconds();
1568 std::stringstream
ss;
1575 std::stringstream
ss;
1592 using namespace tmeventsetup;
1605 for (std::map<std::string, esScale>::const_iterator cit = scaleMap.begin();
1606 cit != scaleMap.end(); cit++)
1608 const esScale&
scale = cit->second;
1612 else if (scale.getObjectType() == esObjectType::Egamma) scaleParam = &egScales;
1619 else scaleParam = 0;
1621 if(scaleParam != 0) {
1622 switch(scale.getScaleType()) {
1623 case esScaleType::EtScale: {
1624 scaleParam->
etMin = scale.getMinimum();
1625 scaleParam->
etMax = scale.getMaximum();
1626 scaleParam->
etStep = scale.getStep();
1629 const std::vector<esBin> binsV = scale.getBins();
1630 for(
unsigned int i=0;
i<binsV.size();
i++) {
1631 const esBin&
bin = binsV.at(
i);
1632 std::pair<double, double> binLimits(bin.minimum, bin.maximum);
1633 scaleParam->
etBins.push_back(binLimits);
1641 scaleParam->
etaMin = -1.;
1642 scaleParam->
etaMax = -1.;
1645 scaleParam->
phiMin = -1.;
1646 scaleParam->
phiMax = -1.;
1652 case esScaleType::EtaScale: {
1653 scaleParam->
etaMin = scale.getMinimum();
1654 scaleParam->
etaMax = scale.getMaximum();
1655 scaleParam->
etaStep = scale.getStep();
1658 const std::vector<esBin> binsV = scale.getBins();
1659 for(
unsigned int i=0;
i<binsV.size();
i++) {
1660 const esBin&
bin = binsV.at(
i);
1661 std::pair<double, double> binLimits(bin.minimum, bin.maximum);
1662 scaleParam->
etaBins.push_back(binLimits);
1666 case esScaleType::PhiScale: {
1667 scaleParam->
phiMin = scale.getMinimum();
1668 scaleParam->
phiMax = scale.getMaximum();
1669 scaleParam->
phiStep = scale.getStep();
1672 const std::vector<esBin> binsV = scale.getBins();
1673 for(
unsigned int i=0;
i<binsV.size();
i++) {
1674 const esBin&
bin = binsV.at(
i);
1675 std::pair<double, double> binLimits(bin.minimum, bin.maximum);
1676 scaleParam->
phiBins.push_back(binLimits);
1688 m_gtScales.setMuonScales(muScales);
1689 m_gtScales.setEGScales(egScales);
1690 m_gtScales.setTauScales(tauScales);
1691 m_gtScales.setJetScales(jetScales);
1692 m_gtScales.setETTScales(ettScales);
1693 m_gtScales.setETMScales(etmScales);
1694 m_gtScales.setHTTScales(httScales);
1695 m_gtScales.setHTMScales(htmScales);
1714 unsigned int chipNr,
const bool corrFlag) {
1716 XERCES_CPP_NAMESPACE_USE
1724 if( particle==
"mu" ) particle =
"muon";
1726 if( type==
"double_wsc" ) type =
"2_wsc";
1727 else if( type==
"single" ) type =
"1_s";
1728 else if( type==
"double" ) type =
"2_s";
1729 else if( type==
"triple" ) type =
"3";
1730 else if( type==
"quad" ) type =
"4";
1733 <<
"\n ****************************************** "
1735 <<
"\n condition = " << condition
1736 <<
"\n particle = " << particle
1737 <<
"\n type = " << type
1738 <<
"\n name = " << name
1741 if (particle != m_xmlConditionAttrObjectMu) {
1742 edm::LogError(
"TriggerMenuXmlParser") <<
"Wrong particle for muon-condition ("
1743 << particle <<
")" << std::endl;
1748 std::string str_etComparison = l1t2string( condMu.comparison_operator() );
1750 int nrObj = getNumFromType(type);
1752 edm::LogError(
"TriggerMenuXmlParser") <<
"Unknown type for muon-condition (" << type
1753 <<
")" <<
"\nCan not determine number of trigger objects. " << std::endl;
1758 int intGEq = ( str_etComparison==
"ge" ) ? 1 : 0;
1760 edm::LogError(
"TriggerMenuXmlParser") <<
"Error getting \"greater or equal\" flag"
1765 bool gEq = (intGEq != 0);
1770 std::vector<MuonTemplate::ObjectParameter> objParameter(nrObj);
1774 std::vector<boost::uint64_t> tmpValues((nrObj > 2) ? nrObj : 2);
1775 tmpValues.reserve( nrObj );
1777 if(
int(condMu.objectRequirements().objectRequirement().size())!=nrObj ){
1778 edm::LogError(
"TriggerMenuXmlParser") <<
" condMu objects: nrObj = " << nrObj
1779 <<
"condMu.objectRequirements().objectRequirement().size() = "
1780 << condMu.objectRequirements().objectRequirement().size()
1786 std::string str_chargeCorrelation = l1t2string( condMu.requestedChargeCorr() );
1788 unsigned int chargeCorrelation = 0;
1789 if( str_chargeCorrelation==
"ig" ) chargeCorrelation = 1;
1790 else if( str_chargeCorrelation==
"ls" ) chargeCorrelation = 2;
1791 else if( str_chargeCorrelation==
"os" ) chargeCorrelation = 4;
1800 for( l1t::MuonObjectRequirements::objectRequirement_const_iterator objPar = condMu.objectRequirements().objectRequirement().begin();
1801 objPar != condMu.objectRequirements().objectRequirement().end(); ++objPar ){
1804 str_condMu = l1t2string( objPar->ptThreshold() );
1805 if( !getXMLHexTextValue(str_condMu, dst) )
return false;
1809 objParameter[cnt].ptHighThreshold = objPar->ptThreshold();
1810 objParameter[cnt].ptLowThreshold = objPar->ptThreshold();
1815 str_condMu =
"7f7f";
1817 if( !getXMLHexTextValue(str_condMu, dst) )
return false;
1818 if( cnt<nrObj ) objParameter[cnt].etaRange = dst;
1821 str_condMu =
"3ffff";
1822 if( !getXMLHexTextValue(str_condMu, dst) )
return false;
1824 getXMLHexTextValue(
"8f", dst);
1825 objParameter[cnt].phiHigh = dst;
1826 objParameter[cnt].phiLow = dst;
1828 objParameter[cnt].enableMip =
false;
1829 objParameter[cnt].enableIso =
false;
1830 objParameter[cnt].requestIso =
false;
1832 std::string str_charge = l1t2string( objPar->requestedCharge() );
1834 if( str_charge==
"ign" ) charge = -1;
1835 else if( str_charge==
"pos" ) charge = 0;
1836 else if( str_charge==
"neg" ) charge = 1;
1838 objParameter[cnt].charge =
charge;
1842 for( l1t::MuonQualityLUT::quality_const_iterator iQualFlag = objPar->qualityLut().quality().begin();
1843 iQualFlag != objPar->qualityLut().quality().end(); ++iQualFlag ){
1845 bool flag = (*iQualFlag);
1847 qualityLUT |= (flag << cntQual);
1850 <<
"\n quality flag " << cntQual <<
" = " << flag
1851 <<
"\n qualityLUT = " << qualityLUT
1857 objParameter[cnt].qualityLUT = qualityLUT;
1861 int isolationLUT = 0;
1862 for( l1t::MuonIsolationLUT::isolation_const_iterator iIsoFlag = objPar->isolationLut().isolation().begin();
1863 iIsoFlag != objPar->isolationLut().isolation().end(); ++iIsoFlag ){
1865 bool flag = (*iIsoFlag);
1867 isolationLUT |= (flag << cntIso);
1870 <<
"\n isolation flag " << cntIso <<
" = " << flag
1871 <<
"\n isolationLUT = " << isolationLUT
1877 objParameter[cnt].isolationLUT = isolationLUT;
1881 unsigned int etaWindow1Lower=-1, etaWindow1Upper=-1, etaWindow2Lower=-1, etaWindow2Upper=-1;
1883 for( l1t::MuonObjectRequirement::etaWindow_const_iterator etaWindow =objPar->etaWindow().begin();
1884 etaWindow != objPar->etaWindow().end(); ++etaWindow ){
1887 <<
"\n etaWindow lower = " << etaWindow->lower()
1888 <<
"\n etaWindow upper = " << etaWindow->upper()
1890 if( cntEta==0 ){ etaWindow1Lower = etaWindow->lower(); etaWindow1Upper = etaWindow->upper(); }
1891 else if( cntEta==1 ){ etaWindow2Lower = etaWindow->lower(); etaWindow2Upper = etaWindow->upper(); }
1896 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
1897 for( l1t::MuonObjectRequirement::phiWindow_const_iterator phiWindow =objPar->phiWindow().begin();
1898 phiWindow != objPar->phiWindow().end(); ++phiWindow ){
1901 <<
"\n phiWindow begin = " << phiWindow->lower()
1902 <<
"\n phiWindow end = " << phiWindow->upper()
1905 if( cntPhi==0 ){ phiWindow1Lower = phiWindow->lower(); phiWindow1Upper = phiWindow->upper(); }
1906 else if( cntPhi==1 ){ phiWindow2Lower = phiWindow->lower(); phiWindow2Upper = phiWindow->upper(); }
1910 objParameter[cnt].etaWindow1Lower = etaWindow1Lower;
1911 objParameter[cnt].etaWindow1Upper = etaWindow1Upper;
1912 objParameter[cnt].etaWindow2Lower = etaWindow2Lower;
1913 objParameter[cnt].etaWindow2Upper = etaWindow2Upper;
1915 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
1916 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
1917 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
1918 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
1923 <<
"\n Muon PT high threshold (hex) for muon object " << cnt <<
" = "
1924 << std::hex << objParameter[cnt].ptHighThreshold
1925 <<
"\n etaWindow Lower / Upper for muon object " << cnt <<
" = 0x"
1926 << objParameter[cnt].etaWindow1Lower <<
" / 0x" << objParameter[cnt].etaWindow1Upper
1927 <<
"\n etaWindowVeto Lower / Upper for muon object " << cnt <<
" = 0x"
1928 << objParameter[cnt].etaWindow2Lower <<
" / 0x" << objParameter[cnt].etaWindow2Upper
1929 <<
"\n phiWindow Lower / Upper for muon object " << cnt <<
" = 0x"
1930 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
1931 <<
"\n phiWindowVeto Lower / Upper for muon object " << cnt <<
" = 0x"
1932 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper <<
std::dec
1941 bool wscVal = (type == m_xmlConditionAttrType2wsc );
1945 xsd::cxx::tree::optional<l1t::DeltaRequirement> condRanges = condMu.deltaRequirement();
1947 <<
"\t condRanges->deltaEtaRange().lower() = " << condRanges->deltaEtaRange().lower()
1948 <<
"\n\t condRanges->deltaEtaRange().upper() = " << condRanges->deltaEtaRange().upper()
1949 <<
"\n\t condRanges->deltaPhiRange().lower() = " << condRanges->deltaPhiRange().lower()
1950 <<
"\n\t condRanges->deltaPhiRange().upper() = " << condRanges->deltaPhiRange().upper()
1964 str_condMu =
"0003";
1965 if ( !hexString2UInt128(str_condMu, tempUIntL, tempUIntH) ) {
1968 if( tempUIntH != 0 ){
1969 edm::LogError(
"TriggerMenuXmlParser") <<
"Too large hex-value!" << std::endl;
1976 if ( !hexString2UInt128(str_condMu, tempUIntL, tempUIntH) ) {
1979 if( tempUIntH != 0 ){
1980 edm::LogError(
"TriggerMenuXmlParser") <<
"Too large hex-value!" << std::endl;
1990 unsigned int maxbits = 0;
1992 if ( !countConditionChildMaxBits(maxString, maxbits) ) {
1998 <<
" deltaPhiMaxbits (dec) = " << maxbits
2012 <<
"Type for muon condition id l1t::TypeNull - it means not defined in the XML file."
2013 <<
"\nNumber of trigger objects is set to zero. " << std::endl;
2018 std::vector<L1GtObject> objType(nrObj,
Mu);
2022 int relativeBx = l1t2int( condMu.relativeBx() );
2029 muonCond.setCondType(cType);
2030 muonCond.setObjectType(objType);
2031 muonCond.setCondGEq(gEq);
2032 muonCond.setCondChipNr(chipNr);
2033 muonCond.setCondRelativeBx(relativeBx);
2035 muonCond.setConditionParameter(objParameter, corrParameter);
2038 std::ostringstream myCoutStream;
2039 muonCond.print(myCoutStream);
2040 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
2044 if ( !insertConditionIntoMap(muonCond, chipNr)) {
2046 <<
" Error: duplicate condition (" << name <<
")"
2052 (m_corMuonTemplate[chipNr]).push_back(muonCond);
2055 (m_vecMuonTemplate[chipNr]).push_back(muonCond);
2062 <<
"\n intGEq = " << intGEq
2063 <<
" nrObj = " << nrObj
2064 <<
"\n ****************************************** "
2083 unsigned int chipNr,
const bool corrFlag) {
2087 using namespace tmeventsetup;
2102 }
else if (condMu.getType() == esConditionType::TripleMuon) {
2105 }
else if (condMu.getType() == esConditionType::QuadMuon) {
2109 edm::LogError(
"TriggerMenuXmlParser") <<
"Wrong type for muon-condition ("
2110 <<
type <<
")" << std::endl;
2116 edm::LogError(
"TriggerMenuXmlParser") <<
"Unknown type for muon-condition (" <<
type
2117 <<
")" <<
"\nCan not determine number of trigger objects. " << std::endl;
2122 <<
"\n ****************************************** "
2124 <<
"\n condition = " << condition
2125 <<
"\n particle = " << particle
2126 <<
"\n type = " <<
type
2127 <<
"\n name = " <<
name
2135 std::vector<MuonTemplate::ObjectParameter> objParameter(nrObj);
2141 std::vector<boost::uint64_t> tmpValues((nrObj > 2) ? nrObj : 2);
2142 tmpValues.reserve( nrObj );
2144 if(
int(condMu.getObjects().size())!=nrObj ){
2145 edm::LogError(
"TriggerMenuXmlParser") <<
" condMu objects: nrObj = " << nrObj
2146 <<
"condMu.getObjects().size() = "
2147 << condMu.getObjects().size()
2154 unsigned int chargeCorrelation = 1;
2155 const std::vector<esCut>&
cuts = condMu.getCuts();
2159 if(cut.getCutType() == esCutType::ChargeCorrelation) {
2160 if( cut.getData()==
"ls" ) chargeCorrelation = 2;
2161 else if( cut.getData()==
"os" ) chargeCorrelation = 4;
2162 else chargeCorrelation = 1;
2167 corrParameter.chargeCorrelation = chargeCorrelation;
2178 const std::vector<esObject>& objects = condMu.getObjects();
2179 for (
size_t jj = 0;
jj < objects.size();
jj++) {
2181 const esObject
object = objects.at(
jj);
2185 relativeBx =
object.getBxOffset();
2188 int upperThresholdInd = -1;
2189 int lowerThresholdInd = 0;
2191 unsigned int etaWindow1Lower=-1, etaWindow1Upper=-1, etaWindow2Lower=-1, etaWindow2Upper=-1;
2193 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
2194 int isolationLUT = 0xF;
2196 int qualityLUT = 0xFFFF;
2198 const std::vector<esCut>&
cuts =
object.getCuts();
2199 for (
size_t kk = 0;
kk < cuts.size();
kk++)
2201 const esCut
cut = cuts.at(
kk);
2203 switch(cut.getCutType()){
2204 case esCutType::Threshold:
2205 lowerThresholdInd = cut.getMinimum().index;
2206 upperThresholdInd = cut.getMaximum().index;
2212 etaWindow1Lower = cut.getMinimum().index;
2213 etaWindow1Upper = cut.getMaximum().index;
2214 }
else if(cntEta == 1) {
2215 etaWindow2Lower = cut.getMinimum().index;
2216 etaWindow2Upper = cut.getMaximum().index;
2218 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Eta Cuts for muon-condition ("
2219 << particle <<
")" << std::endl;
2229 phiWindow1Lower = cut.getMinimum().index;
2230 phiWindow1Upper = cut.getMaximum().index;
2231 }
else if(cntPhi == 1) {
2232 phiWindow2Lower = cut.getMinimum().index;
2233 phiWindow2Upper = cut.getMaximum().index;
2235 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Phi Cuts for muon-condition ("
2236 << particle <<
")" << std::endl;
2243 case esCutType::Charge:
2244 std::cout <<
"Found Charge Cut " << std::endl;
2245 if( cut.getData()==
"positive" ) charge = 0;
2246 else if( cut.getData()==
"negative" ) charge = 1;
2251 qualityLUT = l1tstr2int(cut.getData());
2254 case esCutType::Isolation: {
2256 isolationLUT = l1tstr2int(cut.getData());
2267 objParameter[cnt].ptHighThreshold = upperThresholdInd;
2268 objParameter[cnt].ptLowThreshold = lowerThresholdInd;
2270 objParameter[cnt].etaWindow1Lower = etaWindow1Lower;
2271 objParameter[cnt].etaWindow1Upper = etaWindow1Upper;
2272 objParameter[cnt].etaWindow2Lower = etaWindow2Lower;
2273 objParameter[cnt].etaWindow2Upper = etaWindow2Upper;
2275 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
2276 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
2277 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
2278 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
2281 objParameter[cnt].enableMip =
false;
2282 objParameter[cnt].enableIso =
false;
2283 objParameter[cnt].requestIso =
false;
2285 objParameter[cnt].charge =
charge;
2286 objParameter[cnt].qualityLUT = qualityLUT;
2287 objParameter[cnt].isolationLUT = isolationLUT;
2304 <<
"Type for muon condition id l1t::TypeNull - it means not defined in the XML file."
2305 <<
"\nNumber of trigger objects is set to zero. " << std::endl;
2310 std::vector<L1GtObject> objType(nrObj,
Mu);
2326 std::ostringstream myCoutStream;
2327 muonCond.
print(myCoutStream);
2328 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
2332 if ( !insertConditionIntoMap(muonCond, chipNr)) {
2334 <<
" Error: duplicate condition (" <<
name <<
")"
2339 LogDebug(
"TriggerMenuXmlParser") <<
"Added Condition " <<
name <<
" to the ConditionMap" << std::endl;
2342 (m_corMuonTemplate[chipNr]).push_back(muonCond);
2345 LogDebug(
"TriggerMenuXmlParser") <<
"Added Condition " <<
name <<
" to the vecMuonTemplate vector" << std::endl;
2346 (m_vecMuonTemplate[chipNr]).push_back(muonCond);
2357 unsigned int chipNr) {
2361 using namespace tmeventsetup;
2374 edm::LogError(
"TriggerMenuXmlParser") <<
"Unknown type for muon-condition (" <<
type
2375 <<
")" <<
"\nCan not determine number of trigger objects. " << std::endl;
2380 <<
"\n ****************************************** "
2382 <<
"\n condition = " << condition
2383 <<
"\n particle = " << particle
2384 <<
"\n type = " <<
type
2385 <<
"\n name = " <<
name
2393 std::vector<MuonTemplate::ObjectParameter> objParameter(nrObj);
2399 std::vector<boost::uint64_t> tmpValues((nrObj > 2) ? nrObj : 2);
2400 tmpValues.reserve( nrObj );
2406 unsigned int chargeCorrelation = 0;
2407 if( str_chargeCorrelation==
"ig" ) chargeCorrelation = 1;
2408 else if( str_chargeCorrelation==
"ls" ) chargeCorrelation = 2;
2409 else if( str_chargeCorrelation==
"os" ) chargeCorrelation = 4;
2412 corrParameter.chargeCorrelation = chargeCorrelation;
2425 relativeBx = corrMu->getBxOffset();
2428 int upperThresholdInd = -1;
2429 int lowerThresholdInd = 0;
2431 unsigned int etaWindow1Lower=-1, etaWindow1Upper=-1, etaWindow2Lower=-1, etaWindow2Upper=-1;
2433 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
2434 int isolationLUT = 0xF;
2436 int qualityLUT = 0xFFFF;
2438 const std::vector<esCut>&
cuts = corrMu->getCuts();
2443 switch(cut.getCutType()){
2444 case esCutType::Threshold:
2445 lowerThresholdInd = cut.getMinimum().index;
2446 upperThresholdInd = cut.getMaximum().index;
2452 etaWindow1Lower = cut.getMinimum().index;
2453 etaWindow1Upper = cut.getMaximum().index;
2454 }
else if(cntEta == 1) {
2455 etaWindow2Lower = cut.getMinimum().index;
2456 etaWindow2Upper = cut.getMaximum().index;
2458 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Eta Cuts for muon-condition ("
2459 << particle <<
")" << std::endl;
2469 phiWindow1Lower = cut.getMinimum().index;
2470 phiWindow1Upper = cut.getMaximum().index;
2471 }
else if(cntPhi == 1) {
2472 phiWindow2Lower = cut.getMinimum().index;
2473 phiWindow2Upper = cut.getMaximum().index;
2475 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Phi Cuts for muon-condition ("
2476 << particle <<
")" << std::endl;
2483 case esCutType::Charge:
2484 std::cout <<
"Found Charge Cut " << std::endl;
2485 if( cut.getData()==
"positive" )
charge = 0;
2486 else if( cut.getData()==
"negative" )
charge = 1;
2491 qualityLUT = l1tstr2int(cut.getData());
2494 case esCutType::Isolation: {
2496 isolationLUT = l1tstr2int(cut.getData());
2507 objParameter[0].ptHighThreshold = upperThresholdInd;
2508 objParameter[0].ptLowThreshold = lowerThresholdInd;
2510 objParameter[0].etaWindow1Lower = etaWindow1Lower;
2511 objParameter[0].etaWindow1Upper = etaWindow1Upper;
2512 objParameter[0].etaWindow2Lower = etaWindow2Lower;
2513 objParameter[0].etaWindow2Upper = etaWindow2Upper;
2515 objParameter[0].phiWindow1Lower = phiWindow1Lower;
2516 objParameter[0].phiWindow1Upper = phiWindow1Upper;
2517 objParameter[0].phiWindow2Lower = phiWindow2Lower;
2518 objParameter[0].phiWindow2Upper = phiWindow2Upper;
2521 objParameter[0].enableMip =
false;
2522 objParameter[0].enableIso =
false;
2523 objParameter[0].requestIso =
false;
2525 objParameter[0].charge =
charge;
2526 objParameter[0].qualityLUT = qualityLUT;
2527 objParameter[0].isolationLUT = isolationLUT;
2541 <<
"Type for muon condition id l1t::TypeNull - it means not defined in the XML file."
2542 <<
"\nNumber of trigger objects is set to zero. " << std::endl;
2547 std::vector<L1GtObject> objType(nrObj,
Mu);
2560 std::ostringstream myCoutStream;
2561 muonCond.
print(myCoutStream);
2562 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
2566 if ( !insertConditionIntoMap(muonCond, chipNr)) {
2568 <<
" Error: duplicate condition (" <<
name <<
")"
2573 LogDebug(
"TriggerMenuXmlParser") <<
"Added Condition " <<
name <<
" to the ConditionMap" << std::endl;
2574 (m_corMuonTemplate[chipNr]).push_back(muonCond);
2595 unsigned int chipNr,
const bool corrFlag) {
2597 XERCES_CPP_NAMESPACE_USE
2602 std::string particle = l1t2string( condCalo.objectType() );
2607 <<
"\n ****************************************** "
2608 <<
"\n DARRENS TEST OUTPUT (in parseCalo) "
2609 <<
"\n condition = " << condition
2610 <<
"\n particle = " << particle
2611 <<
"\n type = " << type
2612 <<
"\n name = " << name
2619 if (particle == m_xmlConditionAttrObjectNoIsoEG) {
2622 else if (particle == m_xmlConditionAttrObjectIsoEG) {
2623 caloObjType =
IsoEG;
2625 else if (particle == m_xmlConditionAttrObjectCenJet) {
2628 else if (particle == m_xmlConditionAttrObjectTauJet) {
2631 else if (particle == m_xmlConditionAttrObjectForJet) {
2635 edm::LogError(
"TriggerMenuXmlParser") <<
"Wrong particle for calo-condition ("
2636 << particle <<
")" << std::endl;
2640 if( type==
"double_wsc" ) type =
"2_wsc";
2641 else if( type==
"single" ) type =
"1_s";
2642 else if( type==
"double" ) type =
"2_s";
2643 else if( type==
"triple" ) type =
"3";
2644 else if( type==
"quad" ) type =
"4";
2647 std::string str_etComparison = l1t2string( condCalo.comparison_operator() );
2649 int nrObj = getNumFromType(type);
2651 edm::LogError(
"TriggerMenuXmlParser") <<
"Unknown type for calo-condition (" << type
2652 <<
")" <<
"\nCan not determine number of trigger objects. " << std::endl;
2657 int intGEq = ( str_etComparison==
"ge" ) ? 1 : 0;
2659 edm::LogError(
"TriggerMenuXmlParser") <<
"Error getting \"greater or equal\" flag"
2664 bool gEq = (intGEq != 0);
2669 std::vector<CaloTemplate::ObjectParameter> objParameter(nrObj);
2673 std::vector<boost::uint64_t> tmpValues((nrObj > 1) ? nrObj : 1);
2674 tmpValues.reserve( nrObj );
2676 if(
int(condCalo.objectRequirements().objectRequirement().size())!=nrObj ){
2677 edm::LogError(
"TriggerMenuXmlParser") <<
" condCalo objects: nrObj = " << nrObj
2678 <<
"condCalo.objectRequirements().objectRequirement().size() = "
2679 << condCalo.objectRequirements().objectRequirement().size()
2689 for( l1t::CalorimeterObjectRequirements::objectRequirement_const_iterator objPar = condCalo.objectRequirements().objectRequirement().begin();
2690 objPar != condCalo.objectRequirements().objectRequirement().end(); ++objPar ){
2693 str_condCalo = l1t2string( objPar->etThreshold() );
2694 if( !getXMLHexTextValue(str_condCalo, dst) )
return false;
2698 objParameter[cnt].etLowThreshold = objPar->etThreshold();
2699 objParameter[cnt].etHighThreshold = 999;
2704 str_condCalo =
"7f7f";
2706 if( !getXMLHexTextValue(str_condCalo, dst) )
return false;
2707 if( cnt<nrObj ) objParameter[cnt].etaRange = dst;
2710 str_condCalo =
"3ffff";
2711 if( !getXMLHexTextValue(str_condCalo, dst) )
return false;
2712 if( cnt<nrObj ) objParameter[cnt].phiRange = dst;
2716 int isolationLUT = 0;
2717 for( l1t::CalorimeterIsolationLUT::isolation_const_iterator iIsoFlag = objPar->isolationLut().isolation().begin();
2718 iIsoFlag != objPar->isolationLut().isolation().end(); ++iIsoFlag ){
2720 bool flag = (*iIsoFlag);
2722 isolationLUT |= (flag << cntIso);
2725 <<
"\n isolation flag " << cntIso <<
" = " << flag
2726 <<
"\n isolationLUT = " << isolationLUT
2732 objParameter[cnt].isolationLUT = isolationLUT;
2736 unsigned int etaWindow1Lower=-1, etaWindow1Upper=-1, etaWindow2Lower=-1, etaWindow2Upper=-1;
2738 for( l1t::CalorimeterObjectRequirement::etaWindow_const_iterator etaWindow =objPar->etaWindow().begin();
2739 etaWindow != objPar->etaWindow().end(); ++etaWindow ){
2742 <<
"\n etaWindow lower = " << etaWindow->lower()
2743 <<
"\n etaWindow upper = " << etaWindow->upper()
2745 if( cntEta==0 ){ etaWindow1Lower = etaWindow->lower(); etaWindow1Upper = etaWindow->upper(); }
2746 else if( cntEta==1 ){ etaWindow2Lower = etaWindow->lower(); etaWindow2Upper = etaWindow->upper(); }
2751 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
2752 for( l1t::CalorimeterObjectRequirement::phiWindow_const_iterator phiWindow =objPar->phiWindow().begin();
2753 phiWindow != objPar->phiWindow().end(); ++phiWindow ){
2756 <<
"\n phiWindow begin = " << phiWindow->lower()
2757 <<
"\n phiWindow end = " << phiWindow->upper()
2760 if( cntPhi==0 ){ phiWindow1Lower = phiWindow->lower(); phiWindow1Upper = phiWindow->upper(); }
2761 else if( cntPhi==1 ){ phiWindow2Lower = phiWindow->lower(); phiWindow2Upper = phiWindow->upper(); }
2765 objParameter[cnt].etaWindow1Lower = etaWindow1Lower;
2766 objParameter[cnt].etaWindow1Upper = etaWindow1Upper;
2767 objParameter[cnt].etaWindow2Lower = etaWindow2Lower;
2768 objParameter[cnt].etaWindow2Upper = etaWindow2Upper;
2770 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
2771 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
2772 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
2773 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
2778 <<
"\n Calo ET high threshold (hex) for calo object " << cnt <<
" = "
2779 << std::hex << objParameter[cnt].etLowThreshold
2780 <<
"\n etaWindow Lower / Upper for calo object " << cnt <<
" = 0x"
2781 << objParameter[cnt].etaWindow1Lower <<
" / 0x" << objParameter[cnt].etaWindow1Upper
2782 <<
"\n etaWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
2783 << objParameter[cnt].etaWindow2Lower <<
" / 0x" << objParameter[cnt].etaWindow2Upper
2784 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
2785 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
2786 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
2787 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper <<
std::dec
2796 bool wscVal = (type == m_xmlConditionAttrType2wsc );
2800 xsd::cxx::tree::optional<l1t::DeltaRequirement> condRanges = condCalo.deltaRequirement();
2802 <<
"\t condRanges->deltaEtaRange().lower() = " << condRanges->deltaEtaRange().lower()
2803 <<
"\n\t condRanges->deltaEtaRange().upper() = " << condRanges->deltaEtaRange().upper()
2804 <<
"\n\t condRanges->deltaPhiRange().lower() = " << condRanges->deltaPhiRange().lower()
2805 <<
"\n\t condRanges->deltaPhiRange().upper() = " << condRanges->deltaPhiRange().upper()
2819 str_condCalo =
"0003";
2820 if ( !hexString2UInt128(str_condCalo, tempUIntL, tempUIntH) ) {
2823 if( tempUIntH != 0 ){
2824 edm::LogError(
"TriggerMenuXmlParser") <<
"Too large hex-value!" << std::endl;
2830 str_condCalo =
"003";
2831 if ( !hexString2UInt128(str_condCalo, tempUIntL, tempUIntH) ) {
2834 if( tempUIntH != 0 ){
2835 edm::LogError(
"TriggerMenuXmlParser") <<
"Too large hex-value!" << std::endl;
2845 unsigned int maxbits = 0;
2847 if ( !countConditionChildMaxBits(maxString, maxbits) ) {
2853 <<
" deltaPhiMaxbits (dec) = " << maxbits
2863 <<
" Condition type (enum value) = " << cType
2868 <<
"Type for calo condition id l1t::TypeNull - it means not defined in the XML file."
2869 <<
"\nNumber of trigger objects is set to zero. " << std::endl;
2874 std::vector<L1GtObject> objType(nrObj, caloObjType);
2877 int relativeBx = l1t2int( condCalo.relativeBx() );
2882 caloCond.setCondType(cType);
2883 caloCond.setObjectType(objType);
2884 caloCond.setCondGEq(gEq);
2885 caloCond.setCondChipNr(chipNr);
2886 caloCond.setCondRelativeBx(relativeBx);
2888 caloCond.setConditionParameter(objParameter, corrParameter);
2892 std::ostringstream myCoutStream;
2893 caloCond.print(myCoutStream);
2894 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
2899 if ( !insertConditionIntoMap(caloCond, chipNr)) {
2902 <<
" Error: duplicate condition (" << name <<
")"
2910 (m_corCaloTemplate[chipNr]).push_back(caloCond);
2913 (m_vecCaloTemplate[chipNr]).push_back(caloCond);
2919 <<
"\n intGEq = " << intGEq
2920 <<
" nrObj = " << nrObj
2921 <<
"\n ****************************************** "
2942 unsigned int chipNr,
const bool corrFlag) {
2946 using namespace tmeventsetup;
2956 <<
"\n ****************************************** "
2957 <<
"\n (in parseCaloV2) "
2958 <<
"\n condition = " << condition
2959 <<
"\n particle = " << particle
2960 <<
"\n type = " <<
type
2961 <<
"\n name = " <<
name
2970 if (condCalo.getType() == esConditionType::SingleEgamma) {
2974 }
else if (condCalo.getType() == esConditionType::DoubleEgamma) {
2978 }
else if (condCalo.getType() == esConditionType::TripleEgamma) {
2982 }
else if (condCalo.getType() == esConditionType::QuadEgamma) {
2986 }
else if (condCalo.getType() == esConditionType::SingleJet) {
2990 }
else if (condCalo.getType() == esConditionType::DoubleJet) {
2994 }
else if (condCalo.getType() == esConditionType::TripleJet) {
2998 }
else if (condCalo.getType() == esConditionType::QuadJet) {
3002 }
else if (condCalo.getType() == esConditionType::SingleTau) {
3006 }
else if (condCalo.getType() == esConditionType::DoubleTau) {
3010 }
else if (condCalo.getType() == esConditionType::TripleTau) {
3014 }
else if (condCalo.getType() == esConditionType::QuadTau) {
3019 edm::LogError(
"TriggerMenuXmlParser") <<
"Wrong particle for calo-condition ("
3020 << particle <<
")" << std::endl;
3027 edm::LogError(
"TriggerMenuXmlParser") <<
"Unknown type for calo-condition (" <<
type
3028 <<
")" <<
"\nCan not determine number of trigger objects. " << std::endl;
3035 std::vector<CaloTemplate::ObjectParameter> objParameter(nrObj);
3041 std::vector<boost::uint64_t> tmpValues((nrObj > 1) ? nrObj : 1);
3042 tmpValues.reserve( nrObj );
3045 if(
int(condCalo.getObjects().size())!=nrObj ){
3046 edm::LogError(
"TriggerMenuXmlParser") <<
" condCalo objects: nrObj = " << nrObj
3047 <<
"condCalo.getObjects().size() = "
3048 << condCalo.getObjects().size()
3064 const std::vector<esObject>& objects = condCalo.getObjects();
3065 for (
size_t jj = 0;
jj < objects.size();
jj++) {
3067 const esObject
object = objects.at(
jj);
3071 relativeBx =
object.getBxOffset();
3074 int upperThresholdInd = -1;
3075 int lowerThresholdInd = 0;
3077 unsigned int etaWindow1Lower=-1, etaWindow1Upper=-1, etaWindow2Lower=-1, etaWindow2Upper=-1;
3079 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
3080 int isolationLUT = 0xF;
3081 int qualityLUT = 0xF;
3084 const std::vector<esCut>&
cuts =
object.getCuts();
3085 for (
size_t kk = 0;
kk < cuts.size();
kk++)
3087 const esCut
cut = cuts.at(
kk);
3089 switch(cut.getCutType()){
3090 case esCutType::Threshold:
3091 lowerThresholdInd = cut.getMinimum().index;
3092 upperThresholdInd = cut.getMaximum().index;
3097 etaWindow1Lower = cut.getMinimum().index;
3098 etaWindow1Upper = cut.getMaximum().index;
3099 }
else if(cntEta == 1) {
3100 etaWindow2Lower = cut.getMinimum().index;
3101 etaWindow2Upper = cut.getMaximum().index;
3103 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Eta Cuts for calo-condition ("
3104 << particle <<
")" << std::endl;
3114 phiWindow1Lower = cut.getMinimum().index;
3115 phiWindow1Upper = cut.getMaximum().index;
3116 }
else if(cntPhi == 1) {
3117 phiWindow2Lower = cut.getMinimum().index;
3118 phiWindow2Upper = cut.getMaximum().index;
3120 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Phi Cuts for calo-condition ("
3121 << particle <<
")" << std::endl;
3128 case esCutType::Charge: {
3130 edm::LogError(
"TriggerMenuXmlParser") <<
"No charge cut for calo-condition ("
3131 << particle <<
")" << std::endl;
3137 qualityLUT = l1tstr2int(cut.getData());
3140 case esCutType::Isolation: {
3142 isolationLUT = l1tstr2int(cut.getData());
3152 objParameter[cnt].etHighThreshold = upperThresholdInd;
3153 objParameter[cnt].etLowThreshold = lowerThresholdInd;
3154 objParameter[cnt].etaWindow1Lower = etaWindow1Lower;
3155 objParameter[cnt].etaWindow1Upper = etaWindow1Upper;
3156 objParameter[cnt].etaWindow2Lower = etaWindow2Lower;
3157 objParameter[cnt].etaWindow2Upper = etaWindow2Upper;
3158 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
3159 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
3160 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
3161 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
3162 objParameter[cnt].isolationLUT = isolationLUT;
3163 objParameter[cnt].qualityLUT = qualityLUT;
3167 <<
"\n Calo ET high thresholds (hex) for calo object " << caloObjType <<
" " << cnt <<
" = "
3168 << std::hex << objParameter[cnt].etLowThreshold <<
" - " << objParameter[cnt].etHighThreshold
3169 <<
"\n etaWindow Lower / Upper for calo object " << cnt <<
" = 0x"
3170 << objParameter[cnt].etaWindow1Lower <<
" / 0x" << objParameter[cnt].etaWindow1Upper
3171 <<
"\n etaWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
3172 << objParameter[cnt].etaWindow2Lower <<
" / 0x" << objParameter[cnt].etaWindow2Upper
3173 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
3174 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
3175 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
3176 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper
3177 <<
"\n Isolation LUT for calo object " << cnt <<
" = 0x"
3178 << objParameter[cnt].isolationLUT
3179 <<
"\n Quality LUT for calo object " << cnt <<
" = 0x"
3180 << objParameter[cnt].qualityLUT <<
std::dec
3192 <<
" Condition type (enum value) = " << cType
3197 <<
"Type for calo condition id l1t::TypeNull - it means not defined in the XML file."
3198 <<
"\nNumber of trigger objects is set to zero. " << std::endl;
3203 std::vector<L1GtObject> objType(nrObj, caloObjType);
3225 std::ostringstream myCoutStream;
3226 caloCond.
print(myCoutStream);
3227 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
3233 if ( !insertConditionIntoMap(caloCond, chipNr)) {
3236 <<
" Error: duplicate condition (" <<
name <<
")"
3244 (m_corCaloTemplate[chipNr]).push_back(caloCond);
3247 (m_vecCaloTemplate[chipNr]).push_back(caloCond);
3271 unsigned int chipNr) {
3275 using namespace tmeventsetup;
3285 <<
"\n ****************************************** "
3286 <<
"\n (in parseCaloV2) "
3287 <<
"\n condition = " << condition
3288 <<
"\n particle = " << particle
3289 <<
"\n type = " <<
type
3290 <<
"\n name = " <<
name
3301 if (corrCalo->getType() == esObjectType::Egamma) {
3308 edm::LogError(
"TriggerMenuXmlParser") <<
"Wrong particle for calo-condition ("
3309 << particle <<
")" << std::endl;
3317 edm::LogError(
"TriggerMenuXmlParser") <<
"Unknown type for calo-condition (" <<
type
3318 <<
")" <<
"\nCan not determine number of trigger objects. " << std::endl;
3325 std::vector<CaloTemplate::ObjectParameter> objParameter(nrObj);
3331 std::vector<boost::uint64_t> tmpValues((nrObj > 1) ? nrObj : 1);
3332 tmpValues.reserve( nrObj );
3344 relativeBx = corrCalo->getBxOffset();
3347 int upperThresholdInd = -1;
3348 int lowerThresholdInd = 0;
3350 unsigned int etaWindow1Lower=-1, etaWindow1Upper=-1, etaWindow2Lower=-1, etaWindow2Upper=-1;
3352 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
3353 int isolationLUT = 0xF;
3354 int qualityLUT = 0xF;
3357 const std::vector<esCut>&
cuts = corrCalo->getCuts();
3362 switch(cut.getCutType()){
3363 case esCutType::Threshold:
3364 lowerThresholdInd = cut.getMinimum().index;
3365 upperThresholdInd = cut.getMaximum().index;
3370 etaWindow1Lower = cut.getMinimum().index;
3371 etaWindow1Upper = cut.getMaximum().index;
3372 }
else if(cntEta == 1) {
3373 etaWindow2Lower = cut.getMinimum().index;
3374 etaWindow2Upper = cut.getMaximum().index;
3376 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Eta Cuts for calo-condition ("
3377 << particle <<
")" << std::endl;
3387 phiWindow1Lower = cut.getMinimum().index;
3388 phiWindow1Upper = cut.getMaximum().index;
3389 }
else if(cntPhi == 1) {
3390 phiWindow2Lower = cut.getMinimum().index;
3391 phiWindow2Upper = cut.getMaximum().index;
3393 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Phi Cuts for calo-condition ("
3394 << particle <<
")" << std::endl;
3401 case esCutType::Charge: {
3403 edm::LogError(
"TriggerMenuXmlParser") <<
"No charge cut for calo-condition ("
3404 << particle <<
")" << std::endl;
3410 qualityLUT = l1tstr2int(cut.getData());
3413 case esCutType::Isolation: {
3415 isolationLUT = l1tstr2int(cut.getData());
3425 objParameter[0].etLowThreshold = lowerThresholdInd;
3426 objParameter[0].etHighThreshold = upperThresholdInd;
3427 objParameter[0].etaWindow1Lower = etaWindow1Lower;
3428 objParameter[0].etaWindow1Upper = etaWindow1Upper;
3429 objParameter[0].etaWindow2Lower = etaWindow2Lower;
3430 objParameter[0].etaWindow2Upper = etaWindow2Upper;
3431 objParameter[0].phiWindow1Lower = phiWindow1Lower;
3432 objParameter[0].phiWindow1Upper = phiWindow1Upper;
3433 objParameter[0].phiWindow2Lower = phiWindow2Lower;
3434 objParameter[0].phiWindow2Upper = phiWindow2Upper;
3435 objParameter[0].isolationLUT = isolationLUT;
3436 objParameter[0].qualityLUT = qualityLUT;
3440 <<
"\n Calo ET high threshold (hex) for calo object " << caloObjType <<
" " <<
" = "
3441 << std::hex << objParameter[0].etLowThreshold <<
" - " << objParameter[0].etHighThreshold
3442 <<
"\n etaWindow Lower / Upper for calo object " <<
" = 0x"
3443 << objParameter[0].etaWindow1Lower <<
" / 0x" << objParameter[0].etaWindow1Upper
3444 <<
"\n etaWindowVeto Lower / Upper for calo object " <<
" = 0x"
3445 << objParameter[0].etaWindow2Lower <<
" / 0x" << objParameter[0].etaWindow2Upper
3446 <<
"\n phiWindow Lower / Upper for calo object " <<
" = 0x"
3447 << objParameter[0].phiWindow1Lower <<
" / 0x" << objParameter[0].phiWindow1Upper
3448 <<
"\n phiWindowVeto Lower / Upper for calo object " <<
" = 0x"
3449 << objParameter[0].phiWindow2Lower <<
" / 0x" << objParameter[0].phiWindow2Upper
3450 <<
"\n Isolation LUT for calo object " <<
" = 0x"
3451 << objParameter[0].isolationLUT
3452 <<
"\n Quality LUT for calo object " <<
" = 0x"
3453 << objParameter[0].qualityLUT <<
std::dec
3462 <<
" Condition type (enum value) = " << cType
3467 <<
"Type for calo condition id l1t::TypeNull - it means not defined in the XML file."
3468 <<
"\nNumber of trigger objects is set to zero. " << std::endl;
3473 std::vector<L1GtObject> objType(nrObj, caloObjType);
3495 std::ostringstream myCoutStream;
3496 caloCond.
print(myCoutStream);
3497 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
3503 if ( !insertConditionIntoMap(caloCond, chipNr)) {
3506 <<
" Error: duplicate condition (" <<
name <<
")"
3512 (m_corCaloTemplate[chipNr]).push_back(caloCond);
3534 unsigned int chipNr,
const bool corrFlag) {
3536 XERCES_CPP_NAMESPACE_USE
3545 <<
"\n ****************************************** "
3546 <<
"\n DARRENS TEST OUTPUT (in parseEnergySum) "
3547 <<
"\n condition = " << condition
3548 <<
"\n type = " << type
3549 <<
"\n name = " << name
3556 if( type == m_xmlConditionAttrObjectETM ){
3557 energySumObjType =
ETM;
3560 else if( type == m_xmlConditionAttrObjectETT ){
3561 energySumObjType =
ETT;
3564 else if( type == m_xmlConditionAttrObjectHTT ){
3565 energySumObjType =
HTT;
3568 else if( type == m_xmlConditionAttrObjectHTM ){
3569 energySumObjType =
HTM;
3574 <<
"Wrong type for energy-sum condition (" << type
3575 <<
")" << std::endl;
3584 std::string str_etComparison = l1t2string( condEnergySum.comparison_operator() );
3587 int intGEq = ( str_etComparison==
"ge" ) ? 1 : 0;
3590 <<
"Error getting \"greater or equal\" flag"
3595 bool gEq = (intGEq != 0);
3601 std::vector<EnergySumTemplate::ObjectParameter> objParameter(nrObj);
3606 l1t::EnergySumsObjectRequirement objPar = condEnergySum.objectRequirement();
3609 objParameter[cnt].etLowThreshold = objPar.etThreshold();
3610 objParameter[cnt].etLowThreshold = 999;
3613 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
3614 for( l1t::EnergySumsObjectRequirement::phiWindow_const_iterator phiWindow =objPar.phiWindow().begin();
3615 phiWindow != objPar.phiWindow().end(); ++phiWindow ){
3618 <<
"\n phiWindow begin = " << phiWindow->lower()
3619 <<
"\n phiWindow end = " << phiWindow->upper()
3622 if( cntPhi==0 ){ phiWindow1Lower = phiWindow->lower(); phiWindow1Upper = phiWindow->upper(); }
3623 else if( cntPhi==1 ){ phiWindow2Lower = phiWindow->lower(); phiWindow2Upper = phiWindow->upper(); }
3627 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
3628 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
3629 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
3630 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
3635 <<
"\n EnergySum ET high threshold (hex) for energy sum object " << cnt <<
" = "
3636 << std::hex << objParameter[cnt].etLowThreshold <<
" - " << objParameter[cnt].etHighThreshold << std::hex
3637 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
3638 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
3639 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
3640 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper <<
std::dec
3646 int relativeBx = l1t2int( condEnergySum.relativeBx() );
3649 std::vector<L1GtObject> objType(nrObj, energySumObjType);
3665 std::ostringstream myCoutStream;
3666 energySumCond.
print(myCoutStream);
3667 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
3672 if ( !insertConditionIntoMap(energySumCond, chipNr)) {
3675 <<
" Error: duplicate condition (" << name <<
")"
3683 (m_corEnergySumTemplate[chipNr]).push_back(energySumCond);
3687 (m_vecEnergySumTemplate[chipNr]).push_back(energySumCond);
3800 unsigned int chipNr,
const bool corrFlag) {
3804 using namespace tmeventsetup;
3813 <<
"\n ****************************************** "
3814 <<
"\n (in parseEnergySumV2) "
3815 <<
"\n condition = " << condition
3816 <<
"\n type = " <<
type
3817 <<
"\n name = " <<
name
3826 if( condEnergySum.getType() == esConditionType::MissingEt ){
3830 else if( condEnergySum.getType() == esConditionType::TotalEt ){
3834 else if( condEnergySum.getType() == esConditionType::TotalHt ){
3838 else if( condEnergySum.getType() == esConditionType::MissingHt ){
3844 <<
"Wrong type for energy-sum condition (" <<
type
3845 <<
")" << std::endl;
3859 std::vector<EnergySumTemplate::ObjectParameter> objParameter(nrObj);
3871 const std::vector<esObject>& objects = condEnergySum.getObjects();
3872 for (
size_t jj = 0;
jj < objects.size();
jj++) {
3874 const esObject
object = objects.at(
jj);
3878 relativeBx =
object.getBxOffset();
3881 int lowerThresholdInd = 0;
3882 int upperThresholdInd = -1;
3884 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
3887 const std::vector<esCut>&
cuts =
object.getCuts();
3888 for (
size_t kk = 0;
kk < cuts.size();
kk++)
3890 const esCut
cut = cuts.at(
kk);
3892 switch(cut.getCutType()){
3893 case esCutType::Threshold:
3894 lowerThresholdInd = cut.getMinimum().index;
3895 upperThresholdInd = cut.getMaximum().index;
3904 phiWindow1Lower = cut.getMinimum().index;
3905 phiWindow1Upper = cut.getMaximum().index;
3906 }
else if(cntPhi == 1) {
3907 phiWindow2Lower = cut.getMinimum().index;
3908 phiWindow2Upper = cut.getMaximum().index;
3910 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Phi Cuts for esum-condition ("
3911 <<
type <<
")" << std::endl;
3928 objParameter[cnt].etLowThreshold = lowerThresholdInd;
3929 objParameter[cnt].etHighThreshold = upperThresholdInd;
3930 objParameter[cnt].phiWindow1Lower = phiWindow1Lower;
3931 objParameter[cnt].phiWindow1Upper = phiWindow1Upper;
3932 objParameter[cnt].phiWindow2Lower = phiWindow2Lower;
3933 objParameter[cnt].phiWindow2Upper = phiWindow2Upper;
3938 <<
"\n EnergySum ET high threshold (hex) for energy sum object " << cnt <<
" = "
3939 << std::hex << objParameter[cnt].etLowThreshold <<
" - " << objParameter[cnt].etHighThreshold
3940 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
3941 << objParameter[cnt].phiWindow1Lower <<
" / 0x" << objParameter[cnt].phiWindow1Upper
3942 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
3943 << objParameter[cnt].phiWindow2Lower <<
" / 0x" << objParameter[cnt].phiWindow2Upper <<
std::dec
3950 std::vector<L1GtObject> objType(nrObj, energySumObjType);
3966 std::ostringstream myCoutStream;
3967 energySumCond.
print(myCoutStream);
3968 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
3973 if ( !insertConditionIntoMap(energySumCond, chipNr)) {
3976 <<
" Error: duplicate condition (" <<
name <<
")"
3984 (m_corEnergySumTemplate[chipNr]).push_back(energySumCond);
3988 (m_vecEnergySumTemplate[chipNr]).push_back(energySumCond);
4012 unsigned int chipNr) {
4016 using namespace tmeventsetup;
4025 <<
"\n ****************************************** "
4026 <<
"\n (in parseEnergySumV2) "
4027 <<
"\n condition = " << condition
4028 <<
"\n type = " <<
type
4029 <<
"\n name = " <<
name
4048 <<
"Wrong type for energy-sum correclation condition (" <<
type
4049 <<
")" << std::endl;
4063 std::vector<EnergySumTemplate::ObjectParameter> objParameter(nrObj);
4078 relativeBx = corrESum->getBxOffset();
4081 int lowerThresholdInd = 0;
4082 int upperThresholdInd = -1;
4084 unsigned int phiWindow1Lower=-1, phiWindow1Upper=-1, phiWindow2Lower=-1, phiWindow2Upper=-1;
4087 const std::vector<esCut>&
cuts = corrESum->getCuts();
4092 switch(cut.getCutType()){
4093 case esCutType::Threshold:
4094 lowerThresholdInd = cut.getMinimum().index;
4095 upperThresholdInd = cut.getMaximum().index;
4104 phiWindow1Lower = cut.getMinimum().index;
4105 phiWindow1Upper = cut.getMaximum().index;
4106 }
else if(cntPhi == 1) {
4107 phiWindow2Lower = cut.getMinimum().index;
4108 phiWindow2Upper = cut.getMaximum().index;
4110 edm::LogError(
"TriggerMenuXmlParser") <<
"Too Many Phi Cuts for esum-condition ("
4111 <<
type <<
")" << std::endl;
4128 objParameter[0].etLowThreshold = lowerThresholdInd;
4129 objParameter[0].etHighThreshold = upperThresholdInd;
4130 objParameter[0].phiWindow1Lower = phiWindow1Lower;
4131 objParameter[0].phiWindow1Upper = phiWindow1Upper;
4132 objParameter[0].phiWindow2Lower = phiWindow2Lower;
4133 objParameter[0].phiWindow2Upper = phiWindow2Upper;
4138 <<
"\n EnergySum ET high threshold (hex) for energy sum object " << cnt <<
" = "
4139 << std::hex << objParameter[0].etLowThreshold <<
" - " << objParameter[0].etLowThreshold
4140 <<
"\n phiWindow Lower / Upper for calo object " << cnt <<
" = 0x"
4141 << objParameter[0].phiWindow1Lower <<
" / 0x" << objParameter[0].phiWindow1Upper
4142 <<
"\n phiWindowVeto Lower / Upper for calo object " << cnt <<
" = 0x"
4143 << objParameter[0].phiWindow2Lower <<
" / 0x" << objParameter[0].phiWindow2Upper <<
std::dec
4148 std::vector<L1GtObject> objType(nrObj, energySumObjType);
4164 std::ostringstream myCoutStream;
4165 energySumCond.
print(myCoutStream);
4166 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
4171 if ( !insertConditionIntoMap(energySumCond, chipNr)) {
4174 <<
" Error: duplicate condition (" <<
name <<
")"
4181 (m_corEnergySumTemplate[chipNr]).push_back(energySumCond);
4206 unsigned int chipNr) {
4209 using namespace tmeventsetup;
4220 <<
"\n ****************************************** "
4221 <<
"\n (in parseExternalV2) "
4222 <<
"\n condition = " << condition
4223 <<
"\n particle = " << particle
4224 <<
"\n type = " <<
type
4225 <<
"\n name = " <<
name
4234 unsigned int channelID = 0;
4237 const std::vector<esObject>& objects = condExt.getObjects();
4238 for (
size_t jj = 0;
jj < objects.size();
jj++) {
4240 const esObject
object = objects.at(
jj);
4241 if(
object.getType() == esObjectType::EXT) {
4242 relativeBx =
object.getBxOffset();
4243 channelID =
object.getExternalChannelId();
4261 << externalCond <<
"\n" << std::endl;
4264 if ( !insertConditionIntoMap(externalCond, chipNr)) {
4267 <<
" Error: duplicate condition (" <<
name
4268 <<
")" << std::endl;
4273 (m_vecExternalTemplate[chipNr]).push_back(externalCond);
4368 unsigned int chipNr) {
4370 XERCES_CPP_NAMESPACE_USE
4376 if ( !insertConditionIntoMap(correlationCond, chipNr)) {
4379 <<
" Error: duplicate correlation condition (" << name <<
")"
4708 tmeventsetup::esCondition corrCond,
4709 unsigned int chipNr) {
4711 using namespace tmeventsetup;
4718 LogDebug(
"TriggerMenuXmlParser") <<
" ****************************************** " << std::endl
4719 <<
" (in parseCorrelation) " << std::endl
4720 <<
" condition = " << condition << std::endl
4721 <<
" particle = " << particle << std::endl
4722 <<
" type = " <<
type << std::endl
4723 <<
" name = " <<
name << std::endl;
4732 if ( !insertConditionIntoMap(correlationCond, chipNr)) {
4735 <<
" Error: duplicate correlation condition (" <<
name <<
")"
4748 const int nrObj = 2;
4751 int intGEq[nrObj] = { -1, -1 };
4752 std::vector<L1GtObject> objType(nrObj);
4753 std::vector<GtConditionCategory> condCateg(nrObj);
4756 const bool corrFlag =
true;
4757 int corrIndexVal[nrObj] = { -1, -1 };
4766 const std::vector<esCut>&
cuts = corrCond.getCuts();
4770 std::cout <<
" cut name = " << cut.getName() <<
"\n";
4771 std::cout <<
" cut target = " << cut.getObjectType() <<
"\n";
4772 std::cout <<
" cut type = " << cut.getCutType() <<
"\n";
4773 std::cout <<
" cut min. value index = " << cut.getMinimum().value <<
" " << cut.getMinimum().index <<
"\n";
4774 std::cout <<
" cut max. value index = " << cut.getMaximum().value <<
" " << cut.getMaximum().index <<
"\n";
4775 std::cout <<
" cut data = " << cut.getData() <<
"\n";
4778 if(cut.getCutType() == esCutType::ChargeCorrelation) {
4779 if( cut.getData()==
"ls" ) corrParameter.chargeCorrelation = 2;
4780 else if( cut.getData()==
"os" ) corrParameter.chargeCorrelation = 4;
4781 else corrParameter.chargeCorrelation = 1;
4784 corrParameter.corrCutType = cut.getCutType();
4785 corrParameter.minCutValue = cut.getMinimum().value;
4786 corrParameter.maxCutValue = cut.getMaximum().value;
4793 const std::vector<esObject>& objects = corrCond.getObjects();
4794 if(objects.size() != 2) {
4796 <<
"incorrect number of objects for the correlation condition " <<
name <<
" corrFlag " << corrFlag << std::endl;
4801 for (
size_t jj = 0;
jj < objects.size();
jj++)
4803 const esObject
object = objects.at(
jj);
4815 if ((m_conditionMap[chipNr]).
count(
object.getName()) == 0) {
4817 parseMuonCorr(&
object,chipNr);
4820 LogDebug(
"TriggerMenuXmlParser") <<
"Not Adding Correlation Muon Condition." << std::endl;
4827 corrIndexVal[
jj] = (m_corMuonTemplate[chipNr]).
size() - 1;
4831 }
else if(
object.getType() == esObjectType::Egamma ||
4837 if ((m_conditionMap[chipNr]).count(
object.getName()) == 0) {
4839 parseCaloCorr(&
object,chipNr);
4842 LogDebug(
"TriggerMenuXmlParser") <<
"Not Adding Correlation Calo Condition." << std::endl;
4848 switch(
object.getType()) {
4849 case esObjectType::Egamma: {
4866 corrIndexVal[
jj] = (m_corCaloTemplate[chipNr]).
size() - 1;
4874 if ((m_conditionMap[chipNr]).count(
object.getName()) == 0) {
4876 parseEnergySumCorr(&
object,chipNr);
4879 LogDebug(
"TriggerMenuXmlParser") <<
"Not Adding Correlation EtSum Condition." << std::endl;
4885 switch(
object.getType()) {
4899 corrIndexVal[
jj] = (m_corEnergySumTemplate[chipNr]).
size() - 1;
4904 <<
"Illegal Object Type "
4905 <<
" for the correlation condition " <<
name << std::endl;
4915 if (intGEq[0] != intGEq[1]) {
4917 <<
"Inconsistent GEq flags for sub-conditions "
4918 <<
" for the correlation condition " <<
name << std::endl;
4923 gEq = (intGEq[0] != 0);
4944 std::ostringstream myCoutStream;
4945 correlationCond.
print(myCoutStream);
4946 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n"
4954 (m_vecCorrelationTemplate[chipNr]).push_back(correlationCond);
4973 XERCES_CPP_NAMESPACE_USE
5151 m_triggerMenuInterface = l1t2string( meta.name() );
5152 m_triggerMenuInterfaceDate =
"2013-010-24T15:33:24";
5153 m_triggerMenuInterfaceAuthor =
"Darren Puigh";
5154 m_triggerMenuInterfaceDescription = l1t2string( meta.comment() );
5158 m_triggerMenuDescription = l1t2string( meta.comment() );
5159 m_scaleDbKey = l1t2string( meta.scale_set() );
5163 for( l1t::RevisionList::revision_const_iterator revision = meta.revisions().revision().begin();
5164 revision != meta.revisions().revision().end(); ++revision ){
5167 <<
"\t Revision " << cnt
5168 <<
"\t\t author = " << l1t2string( revision->author() )
5169 <<
"\t\t datetime = " << l1tDateTime2string( revision->datetime() )
5173 m_triggerMenuDate = l1tDateTime2string( revision->datetime() );
5174 m_triggerMenuAuthor = l1t2string( revision->author() );
5181 <<
"\n Parsed values from XML file DRULES"
5182 <<
"\nL1 MenuInterface: " << m_triggerMenuInterface
5183 <<
"\nL1 MenuInterface - Creation date: " << m_triggerMenuInterfaceDate
5184 <<
"\nL1 MenuInterface - Creation author: " << m_triggerMenuInterfaceAuthor
5185 <<
"\nL1 MenuInterface - Description: " << m_triggerMenuInterfaceDescription
5187 <<
"\nAlgorithm implementation tag: " << m_algorithmImplementation
5189 <<
"\nL1 Menu - Creation date: " << m_triggerMenuDate
5190 <<
"\nL1 Menu - Creation author: " << m_triggerMenuAuthor
5191 <<
"\nL1 Menu - Description: " << m_triggerMenuDescription
5199 std::string menuName = m_triggerMenuInterface +
"/" + m_scaleDbKey +
"/" + m_algorithmImplementation;
5201 if (menuName != m_triggerMenuName) {
5203 LogDebug(
"TriggerMenuXmlParser") <<
"\n Warning: Inconsistent L1 menu name:"
5204 <<
"\n from XML file name: " << m_triggerMenuName
5205 <<
"\n from XML tag: " << menuName << std::endl;
5207 if (m_triggerMenuInterface !=
"") {
5208 if (m_scaleDbKey ==
"NULL") {
5209 m_triggerMenuName = m_triggerMenuInterface;
5211 m_triggerMenuName = menuName;
5214 LogTrace(
"TriggerMenuXmlParser") <<
"\n L1 menu name set to value from XML tag!"
5215 <<
"\n L1 Menu name: " << m_triggerMenuName << std::endl;
5218 LogTrace(
"TriggerMenuXmlParser") <<
"\n L1 menu name set to file name!"
5219 <<
"\n L1 Menu name: " << m_triggerMenuName << std::endl;
5242 XERCES_CPP_NAMESPACE_USE
5245 std::string condition = getXMLAttribute(node, m_xmlConditionAttrCondition);
5246 std::string particle = getXMLAttribute(node, m_xmlConditionAttrObject);
5250 <<
"\n ****************************************** "
5251 <<
"\n workCondition "
5252 <<
"\n condition = " << condition
5253 <<
"\n particle = " << particle
5254 <<
"\n type = " << type
5255 <<
"\n name = " << name
5258 if (condition.empty() || particle.empty() || type.empty() ) {
5260 edm::LogError(
"TriggerMenuXmlParser") <<
"Missing attributes for condition " << name
5313 XERCES_CPP_NAMESPACE_USE
5315 LogTrace(
"TriggerMenuXmlParser") <<
"\nParsing conditions" << std::endl;
5318 LogDebug(
"TriggerMenuXmlParser") <<
" ====> condCalorimeter" << std::endl;
5319 for (l1t::ConditionList::condCalorimeter_const_iterator condCalo = conditions.condCalorimeter().begin();
5320 condCalo != conditions.condCalorimeter().end(); ++condCalo ){
5323 << condCalo->name() <<
" {"
5324 <<
" comment: " << condCalo->comment()
5325 <<
" locked: " << condCalo->locked()
5329 l1t::CalorimeterCondition condition = (*condCalo);
5331 parseCalo( condition, chipNr );
5334 LogDebug(
"TriggerMenuXmlParser") <<
" ====> condMuon " << std::endl;
5335 for (l1t::ConditionList::condMuon_const_iterator condMu = conditions.condMuon().begin();
5336 condMu != conditions.condMuon().end(); ++condMu ){
5339 << condMu->name() <<
" {"
5340 <<
" comment: " << condMu->comment()
5341 <<
" locked: " << condMu->locked()
5345 l1t::MuonCondition condition = (*condMu);
5347 parseMuon( condition, chipNr );
5350 LogDebug(
"TriggerMenuXmlParser") <<
" ====> condEnergySums " << std::endl;
5351 for (l1t::ConditionList::condEnergySums_const_iterator condEnergySums = conditions.condEnergySums().begin();
5352 condEnergySums != conditions.condEnergySums().end(); ++condEnergySums ){
5355 << condEnergySums->name() <<
" {"
5356 <<
" comment: " << condEnergySums->comment()
5357 <<
" locked: " << condEnergySums->locked()
5361 l1t::EnergySumsCondition condition = (*condEnergySums);
5363 parseEnergySum( condition, chipNr );
5383 unsigned int chipNr) {
5386 using namespace tmeventsetup;
5387 using namespace Algorithm;
5394 if (algAlias ==
"") {
5397 <<
"\n No alias defined for algorithm. Alias set to algorithm name."
5398 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
5402 LogDebug(
"TriggerMenuXmlParser") <<
"\n Alias defined for algorithm."
5403 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
5408 std::string logExpression = algorithm.getExpressionInCondition();
5411 <<
" Logical expression: " << logExpression
5412 <<
" Chip number: " << chipNr
5416 int outputPin = algorithm.getIndex();
5420 LogDebug(
"TriggerMenuXmlParser") <<
" Output pin: " << outputPin
5426 int bitNumber = outputPin;
5429 LogDebug(
"TriggerMenuXmlParser") <<
" Bit number: " << bitNumber
5439 std::ostringstream myCoutStream;
5440 alg.
print(myCoutStream);
5441 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
5446 if ( !insertAlgorithmIntoMap(alg)) {
5468 unsigned int chipNr) {
5470 XERCES_CPP_NAMESPACE_USE
5481 std::string algAlias = l1t2string( algorithm.name() );
5482 std::string algName = l1t2string( algorithm.name() );
5484 if (algAlias ==
"") {
5487 <<
"\n No alias defined for algorithm. Alias set to algorithm name."
5488 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
5492 LogDebug(
"TriggerMenuXmlParser") <<
"\n Alias defined for algorithm."
5493 <<
"\n Algorithm name: " << algName <<
"\n Algorithm alias: " << algAlias
5498 std::string logExpression = l1t2string( algorithm.logical_expression() );
5501 <<
" Logical expression: " << logExpression
5502 <<
" Chip number: " << chipNr
5506 std::string pinString = l1t2string( algorithm.index() );
5509 std::istringstream opStream(pinString);
5511 if ((opStream >> outputPin).
fail()) {
5513 <<
" Unable to convert pin string " << pinString
5514 <<
" to int for algorithm : " << algName
5522 LogDebug(
"TriggerMenuXmlParser") <<
" Output pin: " << outputPin
5528 int bitNumber = outputPin;
5531 LogDebug(
"TriggerMenuXmlParser") <<
" Bit number: " << bitNumber
5541 std::ostringstream myCoutStream;
5542 alg.
print(myCoutStream);
5543 LogTrace(
"TriggerMenuXmlParser") << myCoutStream.str() <<
"\n" << std::endl;
5548 if ( !insertAlgorithmIntoMap(alg)) {
5572 XERCES_CPP_NAMESPACE_USE
5574 LogTrace(
"TriggerMenuXmlParser") <<
"\nParsing algorithms" << std::endl;
5577 LogDebug(
"TriggerMenuXmlParser") <<
" ====> algorithms " << std::endl;
5578 for( l1t::AlgorithmList::algorithm_const_iterator
i = algorithms.algorithm().begin();
5579 i != algorithms.algorithm().end(); ++
i ){
5583 << algorithm.name() <<
" {"
5584 <<
" index: " << algorithm.index()
5585 <<
" equation: " << algorithm.logical_expression()
5586 <<
" comment: " << algorithm.comment()
5587 <<
" locked: " << algorithm.locked()
5592 workAlgorithm( algorithm, chipNr );
5757 XERCES_CPP_NAMESPACE_USE
5763 l1t::Meta meta = tm->meta();
5764 l1t::ConditionList conditions = tm->conditions();
5765 l1t::AlgorithmList algorithms = tm->algorithms();
5768 if ( !parseId( meta ) ) {
5773 if ( !parseConditions( conditions ) ) {
5778 if ( !parseAlgorithms( algorithms ) ) {
std::vector< std::pair< double, double > > phiBins
tuple ret
prodAgent to be discontinued
unsigned int deltaPhiMaxbits
unsigned int deltaEtaRangeLower
void setCond0Index(const int &)
void setAlgoAlias(const std::string &algoAliasValue)
virtual void print(std::ostream &myCout) const
print the condition
virtual void print(std::ostream &myCout) const
print condition
unsigned int chargeCorrelation
void setCondType(const l1t::GtConditionType &cType)
unsigned long long deltaEtaRange
void setCorrelationParameter(const CorrelationParameter &corrParameter)
const std::string algoName() const
get / set algorithm name
unsigned long long deltaPhiRange
void setCondGEq(const bool &cGEq)
unsigned int deltaPhiRangeLower
virtual void print(std::ostream &myCout) const
print the condition
virtual void print(std::ostream &myCout) const
print the condition
std::string const & algoAlias() const
get / set algorithm alias
VDouble InvariantMass(Tau)
void setAlgoChipNumber(const int algoChipNumberValue)
unsigned long long deltaPhiRange
std::vector< std::pair< double, double > > etBins
AlgorithmMap::const_iterator CItAlgo
iterators through map containing the algorithms
void setExternalChannel(unsigned int extCh)
set functions
unsigned int deltaEtaRangeUpper
unsigned int deltaPhiRangeLower
const int algoOutputPin(const int numberConditionChips, const int pinsOnConditionChip, const std::vector< int > &orderConditionChip) const
get the output pin on the condition chip for the algorithm
void setCond1Category(const l1t::GtConditionCategory &)
XMLCh * transcode(const T &fInput)
void setConditionParameter(const std::vector< ObjectParameter > &objParameter, const CorrelationParameter &corrParameter)
set functions
int algoBitNumber() const
get / set algorithm bit number
unsigned int deltaPhiRangeUpper
std::map< std::string, L1GtAlgorithm > AlgorithmMap
map containing the algorithms
typedef for a single object template
unsigned int deltaPhiMaxbits
unsigned int deltaPhiRangeUpper
const std::string & condName() const
get / set condition name
unsigned long long uint64_t
void setCond0Category(const l1t::GtConditionCategory &)
bool xmlFile(const std::string fParam)
void setCondChipNr(const int &cChipNr)
void setConditionParameter(const std::vector< ObjectParameter > &objParameter, const CorrelationParameter &corrParameter)
set functions
typedef for correlation parameters
unsigned long long deltaEtaRange
void setObjectType(const std::vector< L1GtObject > &objType)
const int algoChipNumber() const
get / set algorithm bit number
static std::atomic< unsigned int > counter
std::vector< std::pair< double, double > > etaBins
void setCondRelativeBx(const int &cRelativeBx)
typedef for correlation parameters
virtual void print(std::ostream &myCout) const
print the condition
unsigned int chargeCorrelation
tuple size
Write out results.
unsigned int deltaEtaRangeLower
void setConditionParameter(const std::vector< ObjectParameter > &)
set functions
void setCond1Index(const int &)
unsigned int deltaEtaRangeUpper