00001 #ifndef QUICK_ANA__MET_TOOL_H
00002 #define QUICK_ANA__MET_TOOL_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <QuickAna/Global.h>
00023
00024 #include <AthContainers/AuxElement.h>
00025 #include <QuickAna/AnaTool.h>
00026 #include <AsgTools/AnaToolHandle.h>
00027
00028 class IMETMaker;
00029 class IMETSystematicsTool;
00030
00031 namespace ana
00032 {
00033
00036 class MetTool : virtual public AnaTool
00037 {
00038
00039
00040
00041
00042 ASG_TOOL_CLASS (MetTool, ana::IAnaTool)
00043
00044 public:
00045
00049 MetTool (const std::string& name);
00050
00052 virtual StatusCode
00053 setObjectType (ObjectType type, const std::string& workingPoint) override;
00054
00057 virtual AnalysisStep step () const override;
00058
00060 virtual unsigned inputTypes () const override;
00061
00063 virtual unsigned outputTypes () const override;
00064
00066 virtual StatusCode
00067 useInitialConfiguration (const InternalConfiguration& conf) override;
00068
00072 StatusCode initialize() override;
00073
00075 virtual StatusCode
00076 useConfiguration (const InternalConfiguration& configuration) override;
00077
00081 virtual StatusCode execute (IEventObjects& objects) override;
00082
00083 private:
00084
00086
00088 bool m_isData = false;
00090 bool m_isAF2 = false;
00092 std::string m_jetContainer;
00093
00095 private:
00096 ObjectType m_type = OBJECT_MET;
00097
00099
00100 bool m_includeTauTerm;
00101 bool m_doTST;
00102 bool m_doJVTCut;
00103 bool m_doTrackMET;
00104 bool m_doORCaloTaggedMuons;
00105 bool m_doMuJetEMScale;
00106 std::string m_jetSelection;
00107 double m_uniqueFrac;
00108 double m_jetCut;
00109
00110 private:
00111
00113 asg::AnaToolHandle<IMETMaker> m_metutil;
00114 asg::AnaToolHandle<IMETSystematicsTool> m_metSystTool;
00115
00117 SG::AuxElement::Accessor<SelectType> m_accessor;
00118 };
00119
00120 }
00121
00122 #endif