00001 #ifndef QUICK_ANA__ANA_TOOL_SELECT_SPREAD_H
00002 #define QUICK_ANA__ANA_TOOL_SELECT_SPREAD_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 {
00030
00031 class AnaToolSelectSpread : virtual public IAnaTool, public AnaTool
00032 {
00033
00034
00035
00036
00037 ASG_TOOL_CLASS (AnaToolSelectSpread, ana::IAnaTool)
00038
00039
00040
00041
00042
00043
00044
00045 public:
00046 AnaToolSelectSpread (const std::string& name);
00047
00048
00054 public:
00055 AnaToolSelectSpread (const std::string& name, const std::vector<std::string>& workingPoints, bool first);
00056
00057
00059 public:
00060 virtual StatusCode
00061 setObjectType (ObjectType type, const std::string& workingPoint) override;
00062
00063
00065 public:
00066 virtual AnalysisStep step () const override;
00067
00068
00070 public:
00071 virtual unsigned inputTypes () const override;
00072
00073
00075 public:
00076 virtual unsigned outputTypes () const override;
00077
00078
00080 public:
00081 virtual StatusCode
00082 useConfiguration (const InternalConfiguration& configuration)
00083 override;
00084
00085
00087 public:
00088 virtual StatusCode execute (IEventObjects& objects) override;
00089
00090
00092 public:
00093 std::vector<std::string> m_workingPoints;
00094
00095
00096
00097
00098
00099
00100
00102 private:
00103 ObjectType m_type;
00104
00107 private:
00108 bool m_first;
00109
00111 private:
00112 struct Data
00113 {
00115 public:
00116 SG::AuxElement::ConstAccessor<SelectType> select;
00117
00119 public:
00120 std::vector<SG::AuxElement::Accessor<SelectType>> outputSelect;
00121
00122 Data (const InternalConfiguration& configuration,
00123 const std::vector<std::string>& workingPoints,
00124 SelectionStep step);
00125 };
00126
00128 private:
00129 std::vector<Data> m_data;
00130 };
00131 }
00132
00133 #endif