00001 #ifndef QUICK_ANA__TOOL_SCHEDULER_H
00002 #define QUICK_ANA__TOOL_SCHEDULER_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <QuickAna/Global.h>
00021
00022 #include <AsgTools/AsgTool.h>
00023 #include <QuickAna/EventObjects.h>
00024 #include <QuickAna/IToolScheduler.h>
00025
00026 namespace CP
00027 {
00028 class SystematicSet;
00029 }
00030
00031 namespace ana
00032 {
00034 class ToolScheduler : virtual public IToolScheduler, virtual public asg::AsgTool
00035 {
00036
00037
00038
00039
00040 ASG_TOOL_CLASS (ToolScheduler, ana::IToolScheduler)
00041
00042
00043
00044
00045 public:
00046 void testInvariant () const;
00047
00048
00052 public:
00053 ToolScheduler (const std::string& name);
00054
00055
00062 public:
00063 ~ToolScheduler ();
00064
00065
00066
00067
00068
00069
00070
00071 public:
00072 virtual StatusCode initialize() override;
00073
00074 public:
00075 virtual StatusCode addTool (IAnaTool *tool) override;
00076
00077 public:
00078 virtual CP::SystematicSet affectingSystematics () const override;
00079
00080 public:
00081 virtual CP::SystematicSet recommendedSystematics() const override;
00082
00083 public:
00084 virtual StatusCode
00085 applySystematicVariation (const CP::SystematicSet& systConfig) override;
00086
00087 public:
00088 virtual StatusCode
00089 fillEventObjects (IEventObjects*& object) override;
00090
00092 public:
00093 virtual const std::vector<CP::SystematicSet>& systematics () const override;
00094
00095 public:
00096 virtual StatusCode
00097 setSystematics (const std::vector<CP::SystematicSet>& val_systematics)
00098 override;
00099
00100 public:
00101 virtual EventData getEventData () const override;
00102
00103
00104
00105
00106
00107
00108
00110 private:
00111 std::vector<IAnaTool*> m_tools;
00112
00114 private:
00115 EventObjects m_objects;
00116
00118 private:
00119 std::string m_postfix;
00120
00122 private:
00123 std::vector<CP::SystematicSet> m_systematics;
00124 };
00125 }
00126
00127 #endif