00001 #ifndef QUICK_ANA__TAU_TOOL_H
00002 #define QUICK_ANA__TAU_TOOL_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00018
00019 #include <QuickAna/Global.h>
00020
00021 #include <QuickAna/AnaToolCorrect.h>
00022 #include <AsgTools/AnaToolHandle.h>
00023 #include <QuickAna/AnaToolSelect.h>
00024 #include <QuickAna/AnaToolWeight.h>
00025 #include <QuickAna/SelectionCut.h>
00026
00028 namespace TauAnalysisTools
00029 {
00030 class ITauSmearingTool;
00031 class ITauSelectionTool;
00032 class ITauEfficiencyCorrectionsTool;
00033 class ITauTruthMatchingTool;
00034 }
00035
00036 namespace ana
00037 {
00038
00045 class TauToolCorrect : virtual public AnaToolCorrect<xAOD::TauJetContainer>
00046 {
00047
00049 ASG_TOOL_CLASS(TauToolCorrect, ana::IAnaTool)
00050
00051 public:
00052
00053
00055 TauToolCorrect(const std::string& name);
00056
00059 StatusCode initialize() override;
00060
00063 virtual StatusCode
00064 correctObject(xAOD::TauJet& tau) override;
00065
00066 private:
00067
00068
00070 asg::AnaToolHandle<TauAnalysisTools::ITauSmearingTool> m_smearTool;
00071
00073 SelectionCut cut_smear_tool;
00074
00075 };
00076
00077
00078
00083 class TauToolSelect : virtual public AnaToolSelect<xAOD::TauJetContainer>
00084 {
00085
00087 ASG_TOOL_CLASS(TauToolSelect, ana::IAnaTool)
00088
00089 public:
00090
00091
00093 TauToolSelect(const std::string& name);
00094
00097 StatusCode initialize() override;
00098
00101 virtual StatusCode
00102 selectObject(xAOD::TauJet& tau) override;
00103
00104 private:
00105
00108
00110 std::string m_configFile;
00111
00113
00115 asg::AnaToolHandle<TauAnalysisTools::ITauSelectionTool> m_selectionTool;
00116
00118 SelectionCut m_selectionToolCut;
00119
00120 };
00121
00122
00123
00127 class TauToolWeight : virtual public AnaToolWeight<xAOD::TauJetContainer>
00128 {
00129
00131 ASG_TOOL_CLASS(TauToolWeight, ana::IAnaTool)
00132
00133 public:
00134
00135
00137 TauToolWeight(const std::string& name);
00138
00141 StatusCode initialize() override;
00142
00145 virtual StatusCode
00146 objectWeight(const xAOD::TauJet& tau, float& weight) override;
00147
00148 private:
00149
00152
00155
00156
00158
00161
00163 asg::AnaToolHandle<TauAnalysisTools::ITauSelectionTool> m_selectionTool;
00164
00166 asg::AnaToolHandle<TauAnalysisTools::ITauEfficiencyCorrectionsTool> m_effTool;
00167
00169
00170 };
00171
00172
00173
00183 class TauToolTruth : virtual public AnaTool, virtual public IAnaTool
00184 {
00185
00187 ASG_TOOL_CLASS(TauToolTruth, ana::IAnaTool)
00188
00189 public:
00190
00192 TauToolTruth(const std::string& name);
00193
00195 virtual StatusCode
00196 setObjectType(ObjectType type, const std::string& workingPoint) override;
00197
00199 virtual AnalysisStep step() const override;
00200
00202 virtual unsigned inputTypes() const override;
00204 virtual unsigned outputTypes() const override;
00205
00207 virtual StatusCode initialize() override;
00208
00210 virtual StatusCode execute(IEventObjects& objects) override;
00211
00212 protected:
00213
00215
00216
00217 private:
00218
00221 mutable unsigned long long m_lastEventNumber;
00222
00223
00224
00226 bool m_writeTruthTaus;
00227
00228
00229
00231 asg::AnaToolHandle<TauAnalysisTools::ITauTruthMatchingTool> m_truthTool;
00232
00233 };
00234
00235 }
00236
00237 #endif