00001
00002 #ifndef TAUANALYSISTOOLS_SELECTIONCUTS_H
00003 #define TAUANALYSISTOOLS_SELECTIONCUTS_H
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "xAODTau/TauJet.h"
00017 #include "PATCore/TAccept.h"
00018
00019
00020 #include "TH1F.h"
00021
00022
00023 #include "xAODMuon/MuonContainer.h"
00024
00025 namespace TauAnalysisTools
00026 {
00027
00028 class TauSelectionTool;
00029
00030 class SelectionCut
00031 {
00032
00033 public:
00034 SelectionCut(std::string sName, TauAnalysisTools::TauSelectionTool* tTST);
00035 virtual ~SelectionCut();
00036
00037 void writeControlHistograms();
00038 void fillHistogramCutPre(const xAOD::TauJet& xTau);
00039 void fillHistogramCut(const xAOD::TauJet& xTau);
00040 virtual bool accept(const xAOD::TauJet& xTau) = 0;
00041 TH1F* CreateControlPlot(const char* sName, const char* sTitle, int iBins, double dXLow, double dXUp);
00042
00043 std::string getName()
00044 {
00045 return m_sName;
00046 };
00047
00048 void setProperty(const std::string& name, const std::string& value);
00049
00050 protected:
00051 std::string m_sName;
00052
00053 TH1F* m_hHistCutPre;
00054 TH1F* m_hHistCut;
00055
00056 TauSelectionTool* m_tTST;
00057
00058 void declareProperty(const std::string& name, std::string& loc);
00059 std::map<std::string, std::string&> m_mProperties;
00060 std::string getProperty(const std::string& name);
00061
00062 private:
00063 virtual void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist) = 0;
00064 };
00065
00066 class SelectionCutPt
00067 : public SelectionCut
00068 {
00069 public:
00070 SelectionCutPt(TauSelectionTool* tTST);
00071 bool accept(const xAOD::TauJet& xTau);
00072 private:
00073 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00074 };
00075
00076 class SelectionCutAbsEta
00077 : public SelectionCut
00078 {
00079 public:
00080 SelectionCutAbsEta(TauSelectionTool* tTST);
00081 bool accept(const xAOD::TauJet& xTau);
00082 private:
00083 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00084 };
00085
00086 class SelectionCutAbsCharge
00087 : public SelectionCut
00088 {
00089 public:
00090 SelectionCutAbsCharge(TauSelectionTool* tTST);
00091 bool accept(const xAOD::TauJet& xTau);
00092 private:
00093 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00094 };
00095
00096 class SelectionCutNTracks
00097 : public SelectionCut
00098 {
00099 public:
00100 SelectionCutNTracks(TauSelectionTool* tTST);
00101 bool accept(const xAOD::TauJet& xTau);
00102 private:
00103 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00104 };
00105
00106 class SelectionCutBDTJetScore
00107 : public SelectionCut
00108 {
00109 public:
00110 SelectionCutBDTJetScore(TauSelectionTool* tTST);
00111 bool accept(const xAOD::TauJet& xTau);
00112 private:
00113 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00114 };
00115
00116 class SelectionCutJetIDWP
00117 : public SelectionCut
00118 {
00119 public:
00120 SelectionCutJetIDWP(TauSelectionTool* tTST);
00121 bool accept(const xAOD::TauJet& xTau);
00122 private:
00123 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00124 };
00125
00126 class SelectionCutBDTEleScore
00127 : public SelectionCut
00128 {
00129 public:
00130 SelectionCutBDTEleScore(TauSelectionTool* tTST);
00131 bool accept(const xAOD::TauJet& xTau);
00132 private:
00133 std::string m_sEleBDTDecorationName;
00134 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00135 };
00136
00137 class SelectionCutEleBDTWP
00138 : public SelectionCut
00139 {
00140 public:
00141 SelectionCutEleBDTWP(TauSelectionTool* tTST);
00142 bool accept(const xAOD::TauJet& xTau);
00143 private:
00144 std::string m_sEleBDTDecorationName;
00145 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00146 };
00147
00148 class SelectionCutEleOLR
00149 : public SelectionCut
00150 {
00151 public:
00152 SelectionCutEleOLR(TauSelectionTool* tTST);
00153 bool accept(const xAOD::TauJet& xTau);
00154 ~SelectionCutEleOLR();
00155
00156 bool getEvetoPass(const xAOD::TauJet& xTau);
00157 private:
00158 #ifndef XAODTAU_VERSIONS_TAUJET_V3_H
00159 bool m_bCheckEleMatchPassAvailable;
00160 bool m_bEleMatchPassAvailable;
00161 #endif // not XAODTAU_VERSIONS_TAUJET_V3_H
00162
00163 std::string m_sEleOlrPassDecorationName;
00164
00165 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00166 std::string m_sEleOlrLhScoreDecorationName;
00167 };
00168
00169 class SelectionCutMuonVeto
00170 : public SelectionCut
00171 {
00172 public:
00173 SelectionCutMuonVeto(TauSelectionTool* tTST);
00174 bool accept(const xAOD::TauJet& xTau);
00175 private:
00176 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00177 };
00178
00179
00180
00181 class SelectionCutMuonOLR
00182 : public SelectionCut
00183 {
00184 public:
00185 SelectionCutMuonOLR(TauSelectionTool* tTST);
00186 bool accept(const xAOD::TauJet& xTau);
00187 private:
00188 bool m_bTauMuonOLR;
00189 const xAOD::MuonContainer* m_xMuonContainer;
00190 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00191 };
00192
00193
00194 }
00195
00196 #endif // TAUANALYSISTOOLS_SELECTIONCUTS_H