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 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00134 };
00135
00136 class SelectionCutEleBDTWP
00137 : public SelectionCut
00138 {
00139 public:
00140 SelectionCutEleBDTWP(TauSelectionTool* tTST);
00141 bool accept(const xAOD::TauJet& xTau);
00142 private:
00143 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00144 };
00145
00146 class SelectionCutEleOLR
00147 : public SelectionCut
00148 {
00149 public:
00150 SelectionCutEleOLR(TauSelectionTool* tTST);
00151 bool accept(const xAOD::TauJet& xTau);
00152 ~SelectionCutEleOLR();
00153
00154 bool getEvetoPass(const xAOD::TauJet& xTau);
00155 private:
00156 #ifndef XAODTAU_VERSIONS_TAUJET_V3_H
00157 bool m_bCheckEleMatchPassAvailable;
00158 bool m_bEleMatchPassAvailable;
00159 #endif // not XAODTAU_VERSIONS_TAUJET_V3_H
00160
00161 std::string m_sEleOlrPassDecorationName;
00162
00163 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00164 std::string m_sEleOlrLhScoreDecorationName;
00165 };
00166
00167 class SelectionCutMuonVeto
00168 : public SelectionCut
00169 {
00170 public:
00171 SelectionCutMuonVeto(TauSelectionTool* tTST);
00172 bool accept(const xAOD::TauJet& xTau);
00173 private:
00174 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00175 };
00176
00177
00178
00179 class SelectionCutMuonOLR
00180 : public SelectionCut
00181 {
00182 public:
00183 SelectionCutMuonOLR(TauSelectionTool* tTST);
00184 bool accept(const xAOD::TauJet& xTau);
00185 private:
00186 bool m_bTauMuonOLR;
00187 const xAOD::MuonContainer* m_xMuonContainer;
00188 void fillHistogram(const xAOD::TauJet& xTau, TH1F& hHist);
00189 };
00190
00191
00192 }
00193
00194 #endif // TAUANALYSISTOOLS_SELECTIONCUTS_H