00001 #ifndef TAUANALYSISTOOLS_COMMONSMEARINGTOOL_H
00002 #define TAUANALYSISTOOLS_COMMONSMEARINGTOOL_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "AsgTools/AsgMetadataTool.h"
00016 #include "AsgTools/AnaToolHandle.h"
00017
00018
00019 #include "xAODTau/TauJet.h"
00020 #include "xAODTruth/TruthParticle.h"
00021 #include "PATInterfaces/CorrectionCode.h"
00022
00023 #include "tauRecTools/CombinedP4FromRecoTaus.h"
00024
00025
00026 #include "TauAnalysisTools/Enums.h"
00027 #include "TauAnalysisTools/ITauSmearingTool.h"
00028 #include "TauAnalysisTools/HelperFunctions.h"
00029
00030
00031 #include "TROOT.h"
00032 #include "TClass.h"
00033 #include "TFile.h"
00034 #include "TH1F.h"
00035 #include "TKey.h"
00036
00037
00038
00039 #include "tauRecTools/ITauToolBase.h"
00040
00041 namespace TauAnalysisTools
00042 {
00043
00044 class CommonSmearingTool
00045 : public virtual ITauSmearingTool
00046 , public asg::AsgMetadataTool
00047 {
00049 ASG_TOOL_CLASS( CommonSmearingTool, TauAnalysisTools::ITauSmearingTool )
00050
00051 public:
00052
00053 CommonSmearingTool(std::string sName);
00054
00055 ~CommonSmearingTool();
00056
00057 virtual StatusCode initialize();
00058
00059
00060
00061
00063 virtual CP::CorrectionCode applyCorrection( xAOD::TauJet& xTau );
00065 virtual CP::CorrectionCode correctedCopy( const xAOD::TauJet& xTau,
00066 xAOD::TauJet*& xTauCopy);
00067
00069 virtual bool isAffectedBySystematic( const CP::SystematicVariation& systematic ) const;
00070
00072 virtual CP::SystematicSet affectingSystematics() const;
00073
00075 virtual CP::SystematicSet recommendedSystematics() const;
00076
00080 virtual CP::SystematicCode applySystematicVariation ( const CP::SystematicSet& sSystematicSet);
00081
00082
00083 protected:
00084
00085 std::string ConvertProngToString(const int& iProngness);
00086
00087 typedef std::map<std::string, TH1F*> SFMAP;
00088 SFMAP* m_mSF;
00089 std::unordered_map < CP::SystematicSet, std::string > m_mSystematicSets;
00090 const CP::SystematicSet* m_sSystematicSet;
00091 std::map<std::string, int> m_mSystematics;
00092 std::map<std::string, std::string> m_mSystematicsHistNames;
00093
00094
00095 double (*m_fX)(const xAOD::TauJet& xTau);
00096 double (*m_fY)(const xAOD::TauJet& xTau);
00097
00098 template<class T>
00099 void ReadInputs(TFile* fFile, std::map<std::string, T>* mMap);
00100 virtual CP::CorrectionCode getValue(const std::string& sHistName,
00101 const xAOD::TauJet& xTau,
00102 double& dEfficiencyScaleFactor) const;
00103 e_TruthMatchedParticleType checkTruthMatch(const xAOD::TauJet& xTau) const;
00104 void generateSystematicSets();
00105
00106 std::string m_sInputFilePath;
00107 std::string m_sInputFileName;
00108 bool m_bIsData;
00109 bool m_bIsConfigured;
00110 bool m_bSkipTruthMatchCheck;
00111 bool m_bApplyFading;
00112 bool m_bApplyMVATES;
00113 bool m_bApplyCombinedTES;
00114 bool m_bApplyMVATESQualityCheck;
00115
00116 asg::AnaToolHandle<ITauToolBase> m_tMvaTESVariableDecorator;
00117 asg::AnaToolHandle<ITauToolBase> m_tMvaTESEvaluator;
00118 asg::AnaToolHandle<ITauToolBase> m_tCombinedP4FromRecoTaus;
00119
00120 e_TruthMatchedParticleType m_eCheckTruth;
00121 bool m_bNoMultiprong;
00122 CP::SystematicSet m_sAffectingSystematics;
00123 CP::SystematicSet m_sRecommendedSystematics;
00124
00125 bool m_bPtFinalCalibIsAvailable;
00126 bool m_bPtFinalCalibIsAvailableIsChecked;
00127 bool m_bPtTauEtaCalibIsAvailable;
00128 bool m_bPtTauEtaCalibIsAvailableIsChecked;
00129
00130 private:
00131
00132
00133 virtual StatusCode beginEvent();
00134
00135 };
00136 }
00137
00138 #endif // TAUANALYSISTOOLS_COMMONEFFICIENCYTOOL_H