00001
00002
00003 #ifndef MUONSELECTORTOOLS_MUONSELECTIONTOOL_H
00004 #define MUONSELECTORTOOLS_MUONSELECTIONTOOL_H
00005
00006
00007 #include "AsgTools/AsgTool.h"
00008 #include "PATCore/IAsgSelectionTool.h"
00009 #include "TFile.h"
00010 #include "TH2D.h"
00011 #include "TSystem.h"
00012
00013
00014 #include "MuonSelectorTools/IMuonSelectionTool.h"
00015
00016 namespace CP {
00017
00028 class MuonSelectionTool : public virtual IAsgSelectionTool,
00029 public virtual IMuonSelectionTool,
00030 public asg::AsgTool {
00031
00033 ASG_TOOL_CLASS2( MuonSelectionTool, IAsgSelectionTool,
00034 CP::IMuonSelectionTool )
00035
00036 public:
00038 MuonSelectionTool( const std::string& name = "MuonSelection");
00039
00040 virtual ~MuonSelectionTool();
00041
00044
00046 virtual StatusCode initialize();
00047
00049
00052
00054 virtual const Root::TAccept& getTAccept() const;
00055
00057 virtual const Root::TAccept& accept( const xAOD::IParticle* p ) const;
00058
00060
00063
00065 virtual const Root::TAccept& accept( const xAOD::Muon& mu ) const;
00066
00068 void setPassesIDCuts(xAOD::Muon&) const;
00069
00071 virtual void setPassesHighPtCuts( xAOD::Muon& mu ) const;
00072
00074 void setQuality( xAOD::Muon& mu ) const;
00075
00077 bool passedIDCuts(const xAOD::Muon&) const;
00078
00080 bool passedMuonCuts(const xAOD::Muon&) const;
00081
00083 bool passedIDCuts(const xAOD::TrackParticle&) const;
00084
00086 bool passedHighPtCuts(const xAOD::Muon&) const;
00087
00089 bool isBadMuon(const xAOD::Muon&) const;
00090
00092 xAOD::Muon::Quality getQuality( const xAOD::Muon& mu ) const;
00093
00095 bool passedCaloTagQuality (const xAOD::Muon& mu) const;
00096
00098 bool passTight(const xAOD::Muon& mu, float rho, float oneOverPSig) const;
00100
00101
00102 private:
00103
00104 MuonSelectionTool & operator=(const MuonSelectionTool &right);
00105 MuonSelectionTool( const MuonSelectionTool& toCopy );
00106 const std::string m_name;
00108 double m_maxEta;
00110 int m_quality;
00111 bool m_isSimulation;
00112
00114 mutable Root::TAccept m_accept;
00115
00116 bool m_toroidOff;
00117 bool m_developMode;
00118 bool m_TrtCutOff;
00119 bool m_SctCutOff;
00120 bool m_PixCutOff;
00121 bool m_SiHolesCutOff;
00122 bool m_TurnOffMomCorr;
00123
00125 StatusCode getHist( TFile* file, const char* histName, TH2D*& hist );
00126
00127 std::string m_tightWP_rootFile;
00128 TH2D* m_tightWP_lowPt_rhoCuts;
00129 TH2D* m_tightWP_lowPt_qOverPCuts;
00130 TH2D* m_tightWP_mediumPt_rhoCuts;
00131 TH2D* m_tightWP_highPt_rhoCuts;
00132
00133
00134 std::string m_calibration_version;
00135
00136 std::string m_custom_dir;
00137
00138 };
00139
00140 }
00141
00142 #endif // CPTOOLTESTS_MUONSELECTIONTOOL_H