00001 #ifndef QUICK_ANA__ANA_TOOL_SELECT_H
00002 #define QUICK_ANA__ANA_TOOL_SELECT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <QuickAna/Global.h>
00016
00017 #include <QuickAna/AnaTool.h>
00018 #include <QuickAna/SelectionData.h>
00019
00020 namespace ana
00021 {
00024 template<class XAODContainer>
00025 class AnaToolSelect : virtual public IAnaTool, public AnaTool
00026 {
00027
00028
00029
00030
00031 ASG_TOOL_CLASS (AnaToolSelect, ana::IAnaTool)
00032
00033
00034
00035 public:
00036 typedef XAODContainer ContainerType;
00037
00038
00040 public:
00041 typedef typename XAODContainer::base_value_type XAODObject;
00042
00043
00045 public:
00046 virtual StatusCode
00047 setObjectType (ObjectType type, const std::string& workingPoint) override;
00048
00049
00055 public:
00056 AnaToolSelect (const std::string& name);
00057
00058
00060 public:
00061 virtual AnalysisStep step () const override;
00062
00063
00065 public:
00066 virtual unsigned inputTypes () const override;
00067
00068
00070 public:
00071 virtual unsigned outputTypes () const override;
00072
00073
00075 public:
00076 virtual StatusCode
00077 useConfiguration (const InternalConfiguration& configuration)
00078 override;
00079
00080
00082 public:
00083 virtual StatusCode execute (IEventObjects& objects) override;
00084
00085
00093 public:
00094 virtual StatusCode
00095 selectObject (XAODObject& object) = 0;
00096
00097
00104 public:
00105 void registerCut (SelectionStep step, const std::string& name,
00106 SelectionCut& cut);
00107
00108
00109
00110
00111
00112
00113
00115 private:
00116 ObjectType m_type;
00117
00120 private:
00121 std::string m_workingPoint;
00122
00124 private:
00125 SelectionData m_selection;
00126 };
00127 }
00128
00129 #include <QuickAna/AnaToolSelect.icc>
00130
00131 #endif