00001 #ifndef QUICK_ANA__ANA_TOOL_CORRECT_H
00002 #define QUICK_ANA__ANA_TOOL_CORRECT_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 AnaToolCorrect : virtual public IAnaTool, public AnaTool
00026 {
00027
00028
00029
00030
00031 ASG_TOOL_CLASS (AnaToolCorrect, 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
00047 public:
00048 AnaToolCorrect (const std::string& name);
00049
00050
00052 public:
00053 virtual StatusCode
00054 setObjectType (ObjectType type, const std::string& workingPoint) override;
00055
00056
00058 public:
00059 virtual AnalysisStep step () const override;
00060
00061
00063 public:
00064 virtual unsigned inputTypes () const override;
00065
00066
00068 public:
00069 virtual unsigned outputTypes () const override;
00070
00071
00073 public:
00074 virtual StatusCode
00075 useConfiguration (const InternalConfiguration& configuration)
00076 override;
00077
00078
00080 public:
00081 virtual StatusCode execute (IEventObjects& objects) override;
00082
00083
00091 public:
00092 virtual StatusCode correctObject (XAODObject& object) = 0;
00093
00094
00101 public:
00102 void registerCut (SelectionStep step, const std::string& name,
00103 SelectionCut& cut);
00104
00105
00106
00107
00108
00109
00110
00112 private:
00113 ObjectType m_type;
00114
00116 private:
00117 SelectionData m_selection;
00118 };
00119 }
00120
00121 #include <QuickAna/AnaToolCorrect.icc>
00122
00123 #endif