00001 #ifndef QUICK_ANA__OPTIMIZER_SCHEDULER_H
00002 #define QUICK_ANA__OPTIMIZER_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/IToolScheduler.h>
00024
00025 namespace ana
00026 {
00027
00032 class OptimizedScheduler : virtual public IToolScheduler, virtual public asg::AsgTool
00033 {
00034
00035
00036
00037
00038 ASG_TOOL_CLASS (OptimizedScheduler, ana::IToolScheduler)
00039
00040
00041
00042
00043 public:
00044 void testInvariant () const;
00045
00046
00050 public:
00051 OptimizedScheduler (const std::string& name);
00052
00053
00060 public:
00061 ~OptimizedScheduler ();
00062
00063
00064
00065
00066
00067
00068
00069 public:
00070 virtual StatusCode initialize() override;
00071
00072 public:
00073 virtual StatusCode addTool (IAnaTool *tool) override;
00074
00075 public:
00076 virtual CP::SystematicSet affectingSystematics () const override;
00077
00078 public:
00079 virtual CP::SystematicSet recommendedSystematics() const override;
00080
00081 public:
00082 virtual StatusCode
00083 applySystematicVariation (const CP::SystematicSet& systConfig) override;
00084
00085 public:
00086 virtual StatusCode
00087 fillEventObjects (IEventObjects*& object) override;
00088
00089 public:
00090 virtual const std::vector<CP::SystematicSet>&
00091 systematics () const override;
00092
00093 public:
00094 virtual StatusCode
00095 setSystematics (const std::vector<CP::SystematicSet>& val_systematics)
00096 override;
00097
00098 public:
00099 virtual EventData getEventData () const override;
00100
00101
00102
00103
00104
00105
00106
00108 private:
00109 std::vector<std::unique_ptr<OptimizedTool>> m_tools;
00110
00112 private:
00113 std::unique_ptr<OptimizedStore> m_master;
00114
00117 private:
00118 std::vector<CP::SystematicSet> m_targetSystematics;
00119
00121 private:
00122 std::map<CP::SystematicSet,std::unique_ptr<OptimizedObjects>> m_objectsMap;
00123
00125 private:
00126 OptimizedObjects *m_currentObjects;
00127
00128
00133 private:
00134 uint32_t m_runNumber;
00135
00136
00141 private:
00142 uint32_t m_eventNumber;
00143
00144
00150 private:
00151 bool isNewEvent ();
00152 };
00153 }
00154
00155 #endif