00001 #ifndef QUICK_ANA__ZZ4l_MUON_TOOL_H
00002 #define QUICK_ANA__ZZ4l_MUON_TOOL_H
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #include <QuickAna/Global.h>
00021 
00022 
00023 
00024 #include <QuickAna/AnaToolSelect.h>
00025 #include <AsgTools/AnaToolHandle.h>
00026 #include <QuickAna/SelectionCut.h>
00027 
00028 namespace CP
00029 {
00030   class IIsolationSelectionTool;
00031 }
00032 class IAsgElectronLikelihoodTool;
00033 
00034 namespace WPType{
00035    enum {
00036       _HZZ4l,
00037       _SMZZ4l,
00038       _ZHinv
00039    };
00040 }
00041 
00042 namespace ana
00043 {
00044 
00045   class HZZElectronTool : public AnaToolSelect<xAOD::ElectronContainer>
00046   { 
00047 
00048   ASG_TOOL_CLASS (HZZElectronTool, ana::IAnaTool)
00049 
00050 
00051   public:
00052     HZZElectronTool (const std::string& name);
00053 
00054 
00055   public:
00056     StatusCode initialize() override;
00057 
00058 
00059   public:
00060     virtual StatusCode
00061     selectObject (xAOD::Electron& electron) override;
00062 
00063   public:
00064     std::string m_selection;
00065     int m_wp;
00066     std::string m_isoStr;
00067 
00069   public:
00070     asg::AnaToolHandle<IAsgElectronLikelihoodTool> m_selectionTool;
00071     asg::AnaToolHandle<CP::IIsolationSelectionTool> m_isolationTool;
00072 
00073   private:
00074     SelectionCut cut_Pt;
00075     SelectionCut cut_Eta;
00076     SelectionCut cut_OQ;
00077     SelectionCut cut_selectionTool;
00078     SelectionCut cut_Z0;
00079     SelectionCut cut_D0;
00080     SelectionCut cut_Iso;
00081   };
00082 
00083   StatusCode makeHZZElectronTool(DefinitionArgs& args,
00084                                  const std::string& selection = "LooseLLH",
00085                                  int WP = WPType::_HZZ4l,
00086                                  const std::string& isolationWPString = "FixedCutLoose" );
00087 
00088 
00089 
00090 }
00091 
00092 #endif