00001 #ifndef QUICK_ANA__ANA_TOOL_H 00002 #define QUICK_ANA__ANA_TOOL_H 00003 00004 // Copyright Iowa State University 2014. 00005 // Author: Nils Krumnack 00006 // Distributed under the Boost Software License, Version 1.0. 00007 // (See accompanying file LICENSE_1_0.txt or copy at 00008 // http://www.boost.org/LICENSE_1_0.txt) 00009 00010 // Please feel free to contact me (nils.erik.krumnack@cern.ch) for bug 00011 // reports, feature suggestions, praise and complaints. 00012 00013 00014 // This module still needs to be documented. The interface provided 00015 // in this module is intended for experts only. The module is 00016 // considered to be in the pre-alpha stage. 00017 00018 00019 00020 #include <QuickAna/Global.h> 00021 00022 #include <AsgTools/AsgTool.h> 00023 #include <QuickAna/IAnaTool.h> 00024 00025 namespace ana 00026 { 00033 class AnaTool : virtual public IAnaTool, virtual public asg::AsgTool 00034 { 00035 // 00036 // public interface 00037 // 00038 00039 ASG_TOOL_CLASS (AnaTool, ana::IAnaTool) 00040 00041 00042 00043 00044 00045 public: 00046 void testInvariant () const; 00047 00048 00054 public: 00055 AnaTool (const std::string& name); 00056 00057 00058 00059 // 00060 // protected interface 00061 // 00062 00072 protected: 00073 void registerTool (CP::ISystematicsTool *tool); 00074 00081 protected: 00082 void registerTool (IAsgTool *tool); 00083 00084 00085 00086 // 00087 // inherited interface 00088 // 00089 00090 public: 00091 virtual bool 00092 isAffectedBySystematic (const CP::SystematicVariation& systematic) const 00093 override; 00094 00095 public: 00096 virtual CP::SystematicSet 00097 affectingSystematics () const override; 00098 00099 public: 00100 virtual CP::SystematicSet 00101 recommendedSystematics () const override; 00102 00103 public: 00104 virtual CP::SystematicCode 00105 applySystematicVariation (const CP::SystematicSet& systConfig) override; 00106 00107 public: 00108 virtual void 00109 fillEventDataSource (EventData& event) const override; 00110 00111 public: 00112 virtual StatusCode 00113 useConfiguration (const InternalConfiguration& configuration) 00114 override; 00115 00116 public: 00117 virtual StatusCode 00118 getInitialConfiguration (InternalConfiguration& conf) override; 00119 00120 public: 00121 virtual StatusCode 00122 useInitialConfiguration (const InternalConfiguration& conf) override; 00123 00124 00125 00126 // 00127 // private interface 00128 // 00129 00131 private: 00132 std::vector<CP::ISystematicsTool*> m_systematicsTools; 00133 }; 00134 } 00135 00136 #endif