00001 #ifndef QUICK_ANA__ANA_TOOL_SELECT_COMBINE_H
00002 #define QUICK_ANA__ANA_TOOL_SELECT_COMBINE_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <QuickAna/Global.h>
00016
00017 #include <AthContainers/AuxElement.h>
00018 #include <QuickAna/AnaTool.h>
00019
00020 namespace ana
00021 {
00024
00025 class AnaToolSelectCombine : virtual public IAnaTool, public AnaTool
00026 {
00027
00028
00029
00030
00031 ASG_TOOL_CLASS (AnaToolSelectCombine, ana::IAnaTool)
00032
00033
00034
00035
00036
00037
00038
00039 public:
00040 AnaToolSelectCombine (const std::string& name);
00041
00042
00048 public:
00049 AnaToolSelectCombine (const std::string& name, const std::vector<std::string>& workingPoints);
00050
00051
00053 public:
00054 virtual StatusCode
00055 setObjectType (ObjectType type, const std::string& workingPoint) override;
00056
00057
00059 public:
00060 virtual AnalysisStep step () const override;
00061
00062
00064 public:
00065 virtual unsigned inputTypes () const override;
00066
00067
00069 public:
00070 virtual unsigned outputTypes () const override;
00071
00072
00074 public:
00075 virtual StatusCode
00076 useConfiguration (const InternalConfiguration& configuration)
00077 override;
00078
00079
00081 public:
00082 virtual StatusCode execute (IEventObjects& objects) override;
00083
00084
00086 public:
00087 std::vector<std::string> m_workingPoints;
00088
00089
00090
00091
00092
00093
00094
00096 private:
00097 ObjectType m_type;
00098
00100 private:
00101 struct Data
00102 {
00104 public:
00105 SG::AuxElement::Accessor<SelectType> select;
00106
00108 public:
00109 std::vector<SG::AuxElement::ConstAccessor<SelectType>> inputSelect;
00110
00111 Data (const InternalConfiguration& configuration,
00112 const std::vector<std::string>& workingPoints,
00113 SelectionStep step);
00114 };
00115
00117 private:
00118 std::vector<Data> m_data;
00119 };
00120 }
00121
00122 #endif