diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h index d73d85c9e57da89e8a4a308298f0fde41466413c..9fb96acc4ebafb7fc95d5adb7b6dca06a001ed75 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/ExpressionParser.h @@ -28,6 +28,9 @@ namespace ExpressionParsing { ExpressionParser(IProxyLoader *proxyLoader, IUnitInterpreter *unitInterpreter); ~ExpressionParser(); + ExpressionParser (const ExpressionParser&) = delete; + ExpressionParser& operator= (const ExpressionParser&) = delete; + bool loadExpression(const std::string &expression); StackElement evaluate(); bool evaluateAsBool(); diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h index da269dfc1162b1d3a9202615da8aa4c83f7b69d0..25038fcf45fc70712bea9a66f35395de16537a85 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/SGxAODProxyLoader.h @@ -55,6 +55,7 @@ namespace ExpressionParsing { : BaseVariableLoader(evtStore), m_containerName(containerName), m_propertyName(propertyName), + m_variableType(), m_elementProxyLoader(NULL), m_initialised(false) { @@ -149,6 +150,7 @@ namespace ExpressionParsing { : BaseVariableLoader(evtStore), m_containerName(containerName), m_propertyName(propertyName), + m_variableType(), m_vectorProxyLoader(NULL), m_initialised(false) { diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h index cb33a13fd4fbec3cbc1c6d25625910b5b6e160f5..051b812195fa81734059570960dccd8f4b821555 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/StackElement.h @@ -36,7 +36,6 @@ namespace ExpressionParsing { StackElement(const std::vector<int> &val); StackElement(const std::vector<double> &val); StackElement(const std::string &val, IProxyLoader *proxyLoader); - StackElement(const StackElement &other); StackElement operator =(const int &rhs); StackElement operator =(const double &rhs); diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h index c78b140465460e99088334b5f2f117a13afb294c..4e79872333e0d91735b703a1a12507f34a3d47ce 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/ExpressionEvaluation/TriggerDecisionProxyLoader.h @@ -10,6 +10,9 @@ // ExpressionParsing library ///////////////////////////////////////////////////////////////// +// ManaCore doesn't currently include the Trigger Service +#ifndef XAOD_ANALYSIS + #ifndef TRIGGERDECISIONPROXYLOADER_H #define TRIGGERDECISIONPROXYLOADER_H @@ -37,3 +40,5 @@ namespace ExpressionParsing { } #endif // TRIGGERDECISIONPROXYLOADER_H + +#endif // XAOD_ANALYSIS diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h index 27d5d8d99828811ac437744580f1dc9eec4133ee..411119331322abe573a72d1562a22695c4e4986b 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/EncapsulatingSingleton.h @@ -54,6 +54,9 @@ namespace ExpressionParsing { } } + EncapsulatingSingleton (const EncapsulatingSingleton&) = delete; + EncapsulatingSingleton& operator= (const EncapsulatingSingleton&) = delete; + T *m_pointer; }; } diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h index d768eece25cee8b2259b1753a58a0d261509bbe6..2179c1f1e77368de530529cdcdc22fd6fe6578c0 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/ParsingInternals.h @@ -16,7 +16,9 @@ //#define BOOST_SPIRIT_QI_DEBUG // on_error template signature changes when using this +#ifndef BOOST_SPIRIT_USE_PHOENIX_V3 #define BOOST_SPIRIT_USE_PHOENIX_V3 +#endif #include <boost/spirit/include/qi.hpp> #include <boost/variant/recursive_variant.hpp> diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx index 7418d7f855d35d675cb8d12eb80d3d96ce5c5b50..34e5d0f209b48b60d396b45725ccfe49bac3da21 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/StackElement.cxx @@ -74,21 +74,52 @@ namespace ExpressionParsing { - StackElement::StackElement() : type(SE_UNK), m_determinedVariableType(false) { } - StackElement::StackElement(unsigned int val) : type(SE_INT), intval(val), m_determinedVariableType(false) { } - StackElement::StackElement(int val) : type(SE_INT), intval(val), m_determinedVariableType(false) { } - StackElement::StackElement(double val) : type(SE_DOUBLE), doubleval(val), m_determinedVariableType(false) { } - StackElement::StackElement(const std::vector<int> &val) : type(SE_VECINT), vecintval(val), m_determinedVariableType(false) { } - StackElement::StackElement(const std::vector<double> &val) : type(SE_VECDOUBLE), vecdoubleval(val), m_determinedVariableType(false) { } - StackElement::StackElement(const std::string &val, IProxyLoader *proxyLoader): type(SE_UNK), varname(val), m_proxyLoader(proxyLoader), m_determinedVariableType(false) { } - StackElement::StackElement(const StackElement &other) - : type(other.type), intval(other.intval), - doubleval(other.doubleval), vecintval(other.vecintval), - vecdoubleval(other.vecdoubleval), varname(other.varname), - m_proxyLoader(other.m_proxyLoader), - m_variableType(other.m_variableType), - m_determinedVariableType(other.m_determinedVariableType) - { } + StackElement::StackElement() + : type(SE_UNK), + intval(0), + doubleval(0), + m_proxyLoader(nullptr), + m_variableType(), + m_determinedVariableType(false) { } + StackElement::StackElement(unsigned int val) + : type(SE_INT), + intval(val), + doubleval(0), + m_proxyLoader(nullptr), + m_determinedVariableType(false) { } + StackElement::StackElement(int val) + : type(SE_INT), + intval(val), + doubleval(0), + m_proxyLoader(nullptr), + m_determinedVariableType(false) { } + StackElement::StackElement(double val) + : type(SE_DOUBLE), + intval(0), + doubleval(val), + m_proxyLoader(nullptr), + m_determinedVariableType(false) { } + StackElement::StackElement(const std::vector<int> &val) + : type(SE_VECINT), + intval(0), + doubleval(0), + vecintval(val), + m_proxyLoader(0), + m_determinedVariableType(false) { } + StackElement::StackElement(const std::vector<double> &val) + : type(SE_VECDOUBLE), + intval(0), + doubleval(0), + vecdoubleval(val), + m_proxyLoader(0), + m_determinedVariableType(false) { } + StackElement::StackElement(const std::string &val, IProxyLoader *proxyLoader) + : type(SE_UNK), + intval(0), + doubleval(0), + varname(val), + m_proxyLoader(proxyLoader), + m_determinedVariableType(false) { } StackElement StackElement::operator =(const int &rhs) { diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx index 01f07efa2f7081e8c3c3bfa26959b79f157e6f2a..66657a8230b4a35d4238eb76203607b4a91899b5 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/Root/xAODVariableProxyLoaders.cxx @@ -15,6 +15,7 @@ return VT_PREFIX ## VT_TYPE; \ } else if (accWrap) { \ accessorNotAvailableForThisContainer = true; \ + delete accWrap; \ } \ } \ } while(0) @@ -145,14 +146,14 @@ namespace ExpressionParsing { TMethodCollectionWrapper::TMethodCollectionWrapper(const std::type_info &containerTypeinfo, const std::string &methodName) - : m_methodCall(NULL), m_valid(false) + : m_collectionProxy(nullptr), + m_methodCall(NULL), m_valid(false) { TClass *containerClass = TClass::GetClass(containerTypeinfo); if (!containerClass) { containerClass = TClass::GetClass(SG::normalizedTypeinfoName(containerTypeinfo).c_str()); if (!containerClass) return; } - if (!containerClass) return; m_collectionProxy = containerClass->GetCollectionProxy(); if (!m_collectionProxy) return; diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements index 0a7a2973dd2896ccdb1ad0bbd97f038fc1b111ba..cff8a6fd1eb2119de402368f127e8b0af0f16cb5 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/cmt/requirements @@ -7,7 +7,7 @@ use GaudiInterface GaudiInterface-* External use SGTools SGTools-* Control use AtlasROOT AtlasROOT-* External use StoreGate StoreGate-* Control -use TrigDecisionTool TrigDecisionTool-* Trigger/TrigAnalysis +use_unless pkg=TrigDecisionTool tag=ManaCore ver=* root=Trigger/TrigAnalysis use AthContainers AthContainers-* Control private @@ -44,4 +44,4 @@ apply_pattern dual_use_library files= " *.cxx ../Root/*.cxx" #apply_pattern declare_joboptions files=" *.py" #apply_pattern declare_python_modules files="*.py" -macro_append use_cppflags "-ftemplate-depth-512" +#macro_append use_cppflags "-ftemplate-depth-512" diff --git a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx index e2d4599978f01da5cc353a7ccbd519c52d6ef550..852fc7c8ed41e4f910d8ceefa03f81ab0574adf3 100644 --- a/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx +++ b/PhysicsAnalysis/CommonTools/ExpressionEvaluation/src/TriggerDecisionProxyLoader.cxx @@ -10,6 +10,9 @@ // ExpressionParsing library ///////////////////////////////////////////////////////////////// +// ManaCore doesn't currently include the Trigger Service +#ifndef XAOD_ANALYSIS + #include "ExpressionEvaluation/TriggerDecisionProxyLoader.h" #include <string> @@ -54,3 +57,5 @@ namespace ExpressionParsing { throw std::runtime_error("Trigger decision can't be vector<double>: check " + varname); } } + +#endif // XAOD_ANALYSIS