00001
00002 #pragma once
00003
00004 #include "InDetTrackSystematicsTools/IJetTrackFilterTool.h"
00005 #include "AsgTools/AsgTool.h"
00006 #include "AsgTools/ToolHandle.h"
00007 #include "PATInterfaces/SystematicVariation.h"
00008 #include "PATInterfaces/SystematicSet.h"
00009 #include "xAODTracking/TrackParticleFwd.h"
00010 #include "xAODJet/JetContainer.h"
00011 #include "InDetTrackSystematicsTools/InDetTrackSystematicsTool.h"
00012
00013 #include <string>
00014
00015 class TH1;
00016 class TH2;
00017 class TRandom3;
00018 class TFile;
00019
00020 namespace InDet {
00021
00025
00026 class JetTrackFilterTool
00027 : public virtual IJetTrackFilterTool
00028 , public virtual InDetTrackSystematicsTool
00029
00030 {
00031
00032
00033 ASG_TOOL_CLASS( JetTrackFilterTool,
00034 InDet::IJetTrackFilterTool )
00035
00036 public:
00037
00038 JetTrackFilterTool( const std::string& name );
00039 virtual ~JetTrackFilterTool() = default;
00040
00041
00042 virtual StatusCode initialize() override;
00043 virtual void prepare() override {};
00044 virtual StatusCode finalize() override;
00045
00046
00047 virtual bool accept( const xAOD::TrackParticle*, const xAOD::Jet* ) const override;
00048 virtual bool accept( const xAOD::TrackParticle*, const xAOD::JetContainer* ) const override;
00049
00051 virtual bool isAffectedBySystematic( const CP::SystematicVariation& ) const;
00053 virtual CP::SystematicSet affectingSystematics() const;
00055 virtual CP::SystematicSet recommendedSystematics() const;
00057 virtual CP::SystematicCode applySystematicVariation( const CP::SystematicSet& );
00058
00059 private:
00060
00061 StatusCode initTIDEEffSystHistogram(float scale, TH1 *&histogram, std::string rootFileName, std::string histogramName) const;
00062 float getFractionDropped(float fDefault, TH1 *histogram, const xAOD::Jet*) const;
00063 float getNomTrkEff(const xAOD::TrackParticle*) const;
00064
00065 int m_seed = 0;
00066 std::unique_ptr<TRandom3> m_rnd;
00067 double m_deltaR = 0.1;
00068 float m_trkEffSystScale = 1.0;
00069
00070 TH1* m_effForJetPt = nullptr;
00071 TH2* m_trkNomEff = nullptr;
00072
00073 };
00074
00075 }