00001
00002
00003 #ifndef DITAUMASSTOOLS_MISSINGMASSTOOL_H
00004 #define DITAUMASSTOOLS_MISSINGMASSTOOL_H
00005
00006
00007 #include "AsgTools/AsgTool.h"
00008
00009
00010 #include "DiTauMassTools/IMissingMassTool.h"
00011 #include "DiTauMassTools/MissingMassCalculator.h"
00012
00013
00014 class MissingMassTool : virtual public IMissingMassTool, virtual public asg::AsgTool
00015 {
00016
00018 ASG_TOOL_CLASS(MissingMassTool, IMissingMassTool)
00019
00020 public:
00021
00023 MissingMassTool(const std::string& name);
00025 MissingMassTool(const MissingMassTool& other);
00026
00028 virtual ~MissingMassTool() { };
00029
00031 virtual StatusCode initialize();
00032
00034 virtual StatusCode finalize();
00035
00036
00037
00038 virtual CP::CorrectionCode apply (const xAOD::EventInfo& ei,
00039 const xAOD::IParticle* part1,
00040 const xAOD::IParticle* part2,
00041 const xAOD::MissingET* met,
00042 const int & njets);
00043
00044
00045
00046
00047 virtual void calculate(const xAOD::EventInfo & ei,
00048 const TLorentzVector & vis_tau1,
00049 const TLorentzVector & vis_tau2,
00050 const int & tau1_decay_type,
00051 const int & tau2_decay_type,
00052 const xAOD::MissingET & met,
00053 const int & njets);
00054
00055
00056 virtual MissingMassCalculator* get() {return m_MMC;}
00057 virtual double GetFitStatus(const int & method) {(void) method; return m_MMC->GetFitStatus();}
00058 virtual double GetFittedMass(const int& method) {return m_MMC->GetFittedMass(method);}
00059 virtual TLorentzVector GetResonanceVec(const int& method) {return m_MMC->GetResonanceVec(method);}
00060 virtual TVector2 GetFittedMetVec(const int& method) {return m_MMC->GetFittedMetVec(method);}
00061 virtual TLorentzVector GetNeutrino4vec(const int& method, const int & index) {return m_MMC->GetNeutrino4vec(method, index);}
00062 virtual TLorentzVector GetTau4vec(const int& method, const int & index) {return m_MMC->GetTau4vec(method, index);}
00063
00064 int mmcType(const xAOD::IParticle* part) const;
00065 CP::CorrectionCode setLFVMode(const xAOD::IParticle* p1, const xAOD::IParticle* p2, int mmcType1=-1, int mmcType2=-1);
00066
00067 private:
00068
00069
00070
00071 MissingMassCalculator* m_MMC;
00072 int m_alg_version;
00073 double m_n_sigma_met;
00074 int m_tail_cleanup;
00075 int m_use_verbose;
00076 int m_use_tau_probability;
00077 int m_niter_fit_2;
00078 int m_niter_fit_3;
00079 int m_use_defaults;
00080 int m_use_efficiency_recovery;
00081 std::string m_calib_set;
00082 std::string m_lfv_mode;
00083 bool m_decorate;
00084 bool m_use_met_param_dphiLL;
00085
00086 };
00087
00088
00089 #endif